Opc.Ua.Configuration.MainForm.MergeTrustListBTN_Click C# (CSharp) Method

MergeTrustListBTN_Click() private method

private MergeTrustListBTN_Click ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        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);
            }
        }