Opc.Ua.Configuration.ConfigUtils.CreateCertificateForApplication C# (CSharp) Method

CreateCertificateForApplication() private static method

Creates a new certificate for application.
private static CreateCertificateForApplication ( InstalledApplication application ) : X509Certificate2
application InstalledApplication The application.
return System.Security.Cryptography.X509Certificates.X509Certificate2
        private static X509Certificate2 CreateCertificateForApplication(InstalledApplication application)
        {
            // build list of domains.
            List<string> domains = new List<string>();

            if (application.BaseAddresses != null)
            {
                foreach (string baseAddress in application.BaseAddresses)
                {
                    Uri uri = Utils.ParseUri(baseAddress);

                    if (uri != null)
                    {
                        string domain = uri.DnsSafeHost;

                        if (String.Compare(domain, "localhost", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            domain = System.Net.Dns.GetHostName();
                        }

                        if (!Utils.FindStringIgnoreCase(domains, domain))
                        {
                            domains.Add(domain);
                        }
                    }
                }
            }

            // must at least of the localhost.
            if (domains.Count == 0)
            {
                domains.Add(System.Net.Dns.GetHostName());
            }

            // create the certificate.
            X509Certificate2 certificate = Opc.Ua.CertificateFactory.CreateCertificate(
                application.ApplicationCertificate.StoreType,
                application.ApplicationCertificate.StorePath,
                application.ApplicationUri,
                application.ApplicationName,
                Utils.Format("CN={0}/DC={1}", application.ApplicationName, domains[0]),
                domains,
                1024,
                300);

            CertificateIdentifier applicationCertificate = Opc.Ua.Security.SecuredApplication.FromCertificateIdentifier(application.ApplicationCertificate);
            return applicationCertificate.LoadPrivateKey(null);
        }