in Vault/Explorer/MainForm.cs [377:412]
private async void uxMenuItemAddSecret_Click(object sender, EventArgs e)
{
SecretDialog nsDlg = null;
// Add secret
using (var dtf = new DeleteTempFileInfo())
{
if ((sender == uxAddSecret) || (sender == uxAddSecret2))
{
nsDlg = new SecretDialog(this);
}
// Add certificate from file or configuration file
if ((sender == uxAddCertFromFile) || (sender == uxAddCertFromFile2) || (sender == uxAddFile) || (sender == uxAddFile2))
{
dtf.FileInfoObject = GetFileInfo(sender, e);
if (dtf.FileInfoObject == null) return;
nsDlg = new SecretDialog(this, dtf.FileInfoObject);
}
// Add certificate from store
if ((sender == uxAddCertFromUserStore) || (sender == uxAddCertFromUserStore2) || (sender == uxAddCertFromMachineStore) || (sender == uxAddCertFromMachineStore2))
{
var cert = Utils.SelectCertFromStore(StoreName.My, (sender == uxAddCertFromUserStore) || (sender == uxAddCertFromUserStore2) ? StoreLocation.CurrentUser : StoreLocation.LocalMachine, CurrentVaultAlias.Alias, Handle);
if (cert == null) return;
nsDlg = new SecretDialog(this, cert);
}
// DialogResult.Cancel is when user clicked cancel during password prompt from the ctor(), if OK was clicked, check for duplication by Name and Md5
if ((nsDlg != null) && (nsDlg.DialogResult != DialogResult.Cancel) && (nsDlg.ShowDialog() == DialogResult.OK) && ListViewItemBase.VerifyDuplication(this, null, nsDlg.PropertyObject))
{
using (var op = NewUxOperationWithProgress(uxButtonAdd, uxMenuItemAdd))
{
ListViewItemSecret lvis = null;
await op.Invoke("add secret to", async () => lvis = await ListViewItemSecret.NewAsync(this, nsDlg.PropertyObject, op.CancellationToken));
AddOrReplaceItemInListView(lvis);
}
}
}
}