Exemple #1
0
        /// <summary>
        /// Reads a certificate from a file
        /// </summary>
        /// <param name="cfg"></param>
        /// <returns></returns>
        private static X509Certificate2 ReadCertificateFromFile(CertificateConfig cfg)
        {
            X509Certificate2 cert = null;

            cert = !string.IsNullOrEmpty(cfg.Password) ?
                   new X509Certificate2(cfg.FilePath.SolvePath(), cfg.Password, X509KeyStorageFlags.MachineKeySet)
                : new X509Certificate2(cfg.FilePath.SolvePath(), string.Empty, X509KeyStorageFlags.MachineKeySet);

            return(cert);
        }
Exemple #2
0
        /// <summary>
        /// Reads a cretificate from an embedded resource
        /// </summary>
        /// <param name="cfg"></param>
        /// <returns></returns>
        private static X509Certificate2 GetEmbeddedCertificate(CertificateConfig cfg)
        {
            X509Certificate2 cert = null;

            byte[] certData;
            var    assembly = typeof(Certificate).Assembly;

            using (var stream = assembly.GetManifestResourceStream(cfg.NameSpace))
            {
                certData = ReadStream(stream);
            }

            cert = !string.IsNullOrEmpty(cfg.Password) ?
                   new X509Certificate2(certData, cfg.Password, X509KeyStorageFlags.MachineKeySet)
                : new X509Certificate2(certData, string.Empty, X509KeyStorageFlags.MachineKeySet);

            return(cert);
        }
Exemple #3
0
        /// <summary>
        /// Reads certificate from Personal certificates
        /// </summary>
        /// <param name="cfg"></param>
        /// <returns></returns>
        private static X509Certificate2 GetCertificateFromStore(CertificateConfig cfg)
        {
            X509Certificate2 cert = null;

            var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

            store.Open(OpenFlags.ReadOnly);

            var certs = store.Certificates.Find(X509FindType.FindBySubjectName, cfg.Subject, true); //true so only valid certs are removed

            if (certs.Count > 0)
            {
                cert = certs[0];
            }

            store.Close();

            return(cert);
        }
Exemple #4
0
        /// <summary>
        /// Gets a signing certificate
        /// </summary>
        /// <returns></returns>
        public static X509Certificate2 Get(CertificateConfig cfg = null)
        {
            X509Certificate2 cert = null;

            //read the cfg off the web.config if necessary
            if (cfg == null)
            {
                var appCfg = Cartomatic.Utils.NetCoreConfig.GetNetCoreConfig();

                cfg = new CertificateConfig();
                appCfg.GetSection("CertificateConfig").Bind(cfg);
            }

            if (cfg == null)
            {
                throw new InvalidOperationException("Certificate configuration object missing.");
            }


            switch (cfg.StorageType)
            {
            case CertificateStorageType.File:
                cert = ReadCertificateFromFile(cfg);
                break;

            case CertificateStorageType.Embedded:
                cert = GetEmbeddedCertificate(cfg);
                break;

            case CertificateStorageType.Store:
                cert = GetCertificateFromStore(cfg);
                break;
            }

            return(cert);
        }