Opc.Ua.Configuration.CreateCertificateDlg.OkBTN_Click C# (CSharp) Method

OkBTN_Click() private method

private OkBTN_Click ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        private void OkBTN_Click(object sender, EventArgs e)
        {
            try
            {
                string storeType = null;
                string storePath = null;
                string applicationName = ApplicationNameTB.Text.Trim();
                string applicationUri = ApplicationUriTB.Text.Trim();
                string subjectName = SubjectNameTB.Text.Trim();
                string[] domainNames = null;

                string issuerKeyFilePath = IssuerKeyFilePathTB.Text.Trim();
                string issuerKeyFilePassword = IssuerPasswordTB.Text.Trim();

                if (!String.IsNullOrEmpty(issuerKeyFilePath))
                {
                    // verify certificate.
                    X509Certificate2 issuer = new X509Certificate2(
                        issuerKeyFilePath,
                        issuerKeyFilePassword,
                        X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);

                    if (!issuer.HasPrivateKey)
                    {
                        throw new ApplicationException("Issuer certificate does not have a private key.");
                    }

                    // determine certificate type.
                    foreach (X509Extension extension in issuer.Extensions)
                    {
                        X509BasicConstraintsExtension basicContraints = extension as X509BasicConstraintsExtension;

                        if (basicContraints != null)
                        {
                            if (!basicContraints.CertificateAuthority)
                            {
                                throw new ApplicationException("Certificate cannot be used to issue new certificates.");
                            }
                        }
                    }
                }

                if (!String.IsNullOrEmpty(CertificateStoreCTRL.StorePath))
                {
                    storeType = CertificateStoreCTRL.StoreType;
                    storePath = CertificateStoreCTRL.StorePath;
                }

                domainNames = DomainsTB.Text.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);

                if (String.IsNullOrEmpty(storePath))
                {
                    throw new ApplicationException("Please specify a store path.");
                }

                if (String.IsNullOrEmpty(applicationName))
                {
                    throw new ApplicationException("Please specify an application name.");
                }

                X509Certificate2 certificate = Opc.Ua.CertificateFactory.CreateCertificate(
                    storeType,
                    storePath,
                    null,
                    applicationUri,
                    applicationName,
                    subjectName,
                    domainNames,
                    Convert.ToUInt16(KeySizeCB.SelectedItem.ToString()),
                    DateTime.MinValue,
                    (ushort)LifeTimeInMonthsUD.Value,
                    0,
                    false,
                    (string)KeyFormatCB.SelectedItem == "PEM",
                    issuerKeyFilePath,
                    issuerKeyFilePassword);

                m_certificate = new CertificateIdentifier();
                m_certificate.StoreType = storeType;
                m_certificate.StorePath = storePath;
                m_certificate.Certificate = certificate;
                
                // close the dialog.
                DialogResult = DialogResult.OK;
            }
            catch (Exception exception)
            {
                GuiUtils.HandleException(this.Text, System.Reflection.MethodBase.GetCurrentMethod(), exception);
            }
        }