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)); }
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); } }
/// <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)); }
/// <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)); }
public CertificateAuthorityService(CertificateWithKey signerCertificate, RandomService randomService) { SignerCertificate = signerCertificate; this.randomService = randomService; builderFactory = (random, issuer) => new CertificateBuilder2(random); }