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

ExportApplicationCertificateBTN_Click() private method

private ExportApplicationCertificateBTN_Click ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        private void ExportApplicationCertificateBTN_Click(object sender, EventArgs e)
        {
            try
            {
                const string caption = "Export Application Certificate";

                ManagedApplication application = ManageApplicationSecurityCTRL.GetSelectedApplication();

                if (application == null)
                {
                    return;
                }

                application.Reload();

                if (application.Certificate == null)
                {
                    MessageBox.Show(this, "Certificate is not specified.", caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                X509Certificate2 certificate = application.Certificate.Find(false);

                if (certificate == null)
                {
                    MessageBox.Show(this, "Certificate does not exist.", caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                string displayName = null;

                foreach (string element in Utils.ParseDistinguishedName(certificate.Subject))
                {
                    if (element.StartsWith("CN="))
                    {
                        displayName = element.Substring(3);
                        break;
                    }
                }

                StringBuilder filePath = new StringBuilder();

                if (!String.IsNullOrEmpty(displayName))
                {
                    filePath.Append(displayName);
                    filePath.Append(" ");
                }

                filePath.Append("[");
                filePath.Append(certificate.Thumbprint);
                filePath.Append("].der");

                SaveFileDialog dialog = new SaveFileDialog();

                dialog.CheckFileExists = false;
                dialog.CheckPathExists = true;
                dialog.DefaultExt = ".pfx";
                dialog.Filter = "Certificate Files (*.der)|*.der|All Files (*.*)|*.*";
                dialog.ValidateNames = true;
                dialog.Title = "Save Certificate File";
                dialog.FileName = filePath.ToString();
                dialog.InitialDirectory = m_currentDirectory;

                if (dialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                FileInfo fileInfo = new FileInfo(dialog.FileName);
                m_currentDirectory = fileInfo.DirectoryName;

                using (Stream ostrm = File.Open(fileInfo.FullName, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
                {
                    byte[] data = certificate.RawData;
                    ostrm.Write(data, 0, data.Length);
                }
            }
            catch (Exception exception)
            {
                GuiUtils.HandleException(this.Text, MethodBase.GetCurrentMethod(), exception);
            }
        }