private void MergeTrustListBTN_Click(object sender, EventArgs e)
{
try
{
// get application.
ManagedApplication application = ApplicationToManageCTRL.GetSelectedApplication();;
if (application == null)
{
return;
}
// load the configuration.
application.Reload();
CertificateStoreIdentifier store = GetDefaultStore(application, false);
// chose trust list to import.
CertificateStoreDlg dialog = new CertificateStoreDlg();
dialog.Text = "Select Certificate Trust List to use as Source";
CertificateStoreIdentifier id = dialog.ShowDialog(store);
if (id == null)
{
return;
}
if (String.Compare(application.TrustList.StorePath, id.StorePath, StringComparison.OrdinalIgnoreCase) == 0)
{
MessageBox.Show("Selected Certificate Store is already the same as the Application Trust List", "Merge Trust List", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// check for private keys.
StringBuilder buffer = new StringBuilder();
buffer.Append("This operation will add all of the certificates in the selected trust list to ");
buffer.Append("the application trust list.");
buffer.Append("\r\n");
buffer.Append("\r\n");
buffer.Append("Do you wish to proceed?\r\n");
buffer.Append("\r\n");
buffer.Append("Current Application Trust List = ");
buffer.Append(application.TrustList.ToString());
buffer.Append("\r\n");
buffer.Append("Selected Trust List = ");
buffer.Append(id.ToString());
DialogResult result = new YesNoDlg().ShowDialog(buffer.ToString(), "Merge Trust List");
if (result != DialogResult.Yes)
{
return;
}
// delete existing certificates.
ICertificateStore targetStore = application.TrustList.OpenStore();
// add the certificates.
ICertificateStore sourceStore = id.OpenStore();
foreach (X509Certificate2 certificate in sourceStore.Enumerate())
{
if (targetStore.FindByThumbprint(certificate.Thumbprint) == null)
{
targetStore.Add(new X509Certificate2(certificate.RawData));
}
}
EditTrustListBTN_Click(sender, e);
}
catch (Exception exception)
{
GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
}
}