Example #1
0
        public CertificateWithKey GetRootCertificate()
        {
            string rootCertificatePath = GetRootCertificatePath();

            if (File.Exists(rootCertificatePath))
            {
                byte[]             rawData = File.ReadAllBytes(rootCertificatePath);
                CertificateWithKey result  = Convert(rawData);
                return(result);
            }

            byte[] newRawData = GenerateRootCertificate();
            Directory.CreateDirectory(Path.GetDirectoryName(rootCertificatePath));
            File.WriteAllBytes(rootCertificatePath, newRawData);
            return(Convert(newRawData));
        }
Example #2
0
        private CertificateWithKey Convert(byte[] pfxCertificate)
        {
            using (var stream = new MemoryStream(pfxCertificate))
            {
                var store = new Pkcs12Store();
                store.Load(stream, Password.ToCharArray());
                string alias = store.Aliases.OfType <string>().Single();
                X509CertificateEntry certificateEntry = store.GetCertificate(alias);
                AsymmetricKeyEntry   keyEntry         = store.GetKey(alias);

                var result = new CertificateWithKey
                {
                    Certificate = new X509Certificate2(certificateEntry.Certificate.GetEncoded()),
                    KeyPair     = new AsymmetricCipherKeyPair(certificateEntry.Certificate.GetPublicKey(), keyEntry.Key)
                };
                return(result);
            }
        }
Example #3
0
 /// <summary>
 /// Convert certificate to zip archive with certificate and key in PEM format.
 /// </summary>
 /// <param name="certificate"><seecref name="CerficateWithKey"/>.</param>
 /// <param name="filename">Filename.</param>
 /// <returns></returns>
 public byte[] ConvertToPemArchive(CertificateWithKey certificate, string filename)
 {
     return(ConvertToPemArchiveCore(certificate.Certificate, certificate.KeyPair.Private));
 }
Example #4
0
 /// <summary>
 /// Convert certificate to pfx file.
 /// </summary>
 /// <param name="certificate"><seecref name="certificate"/></param>
 /// <param name="password">Password for pfx file.</param>
 /// <returns>Pfx file as a byte array.</returns>
 public byte[] ConvertToPfx(CertificateWithKey certificate, string password)
 {
     return(ConvertToPfxCore(certificate.Certificate, (RsaPrivateCrtKeyParameters)certificate.KeyPair?.Private, password));
 }
Example #5
0
 public CertificateAuthorityService(CertificateWithKey signerCertificate, RandomService randomService)
 {
     SignerCertificate  = signerCertificate;
     this.randomService = randomService;
     builderFactory     = (random, issuer) => new CertificateBuilder2(random);
 }