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

UpdateApplicationCertificate() private method

private UpdateApplicationCertificate ( Opc application, CertificateStoreIdentifier store, X509Certificate2 certificate ) : void
application Opc
store CertificateStoreIdentifier
certificate System.Security.Cryptography.X509Certificates.X509Certificate2
return void
        private void UpdateApplicationCertificate(Opc.Ua.Security.SecuredApplication application, CertificateStoreIdentifier store, X509Certificate2 certificate)
        {
            if (!certificate.HasPrivateKey)
            {
                MessageBox.Show("Cannot use a certificate without an accessible private key.", "Import Certificate", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            // check if the old certificate should be deleted.
            Opc.Ua.Security.CertificateIdentifier oldId = application.ApplicationCertificate;

            if (oldId != null)
            {
                X509Certificate2 oldCertificate = oldId.Find();

                if (oldCertificate != null && oldCertificate.Thumbprint != certificate.Thumbprint)
                {
                    if (new YesNoDlg().ShowDialog("Would you like to delete the old certificate?", "Delete Certificate") == DialogResult.Yes)
                    {
                        DeleteApplicationCertificate(application, oldCertificate);
                    }
                }
            }

            // set the application name.
            List<string> subjectName = Utils.ParseDistinguishedName(certificate.Subject);

            foreach (string subjectField in subjectName)
            {
                if (subjectField.StartsWith("CN="))
                {
                    application.ApplicationName = subjectField.Substring(3);
                    break;
                }
            }

            // set the application uri.
            string applicationUri = Utils.GetApplicationUriFromCertficate(certificate);

            if (applicationUri != null)
            {
                application.ApplicationUri = applicationUri;
            }

            // update the certificate.
            application.ApplicationCertificate = new Opc.Ua.Security.CertificateIdentifier();
            application.ApplicationCertificate.StorePath = store.StorePath;
            application.ApplicationCertificate.StoreType = store.StoreType;
            application.ApplicationCertificate.SubjectName = certificate.Subject;
            application.ApplicationCertificate.Thumbprint = certificate.Thumbprint;

            // save the configuration.
            new Opc.Ua.Security.SecurityConfigurationManager().WriteConfiguration(application.ConfigurationFile, application);
        }