private static X509Crl CreateCrl(
            X509CertificateWithKeyInfo issuerCert,
            BigInteger version,
            X509Certificate2 revokedCertificate = null)
        {
            var bcIssuerCert = DotNetUtilities.FromX509Certificate(issuerCert.Certificate);
            var crlGen       = new X509V2CrlGenerator();

            crlGen.SetIssuerDN(bcIssuerCert.SubjectDN);
            crlGen.SetThisUpdate(DateTime.Now);
            crlGen.SetNextUpdate(DateTime.Now.AddYears(1));
            crlGen.AddExtension(X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure(bcIssuerCert));
            crlGen.AddExtension(X509Extensions.CrlNumber, false, new CrlNumber(version));

            if (revokedCertificate != null)
            {
                var bcRevokedCert = DotNetUtilities.FromX509Certificate(revokedCertificate);
                crlGen.AddCrlEntry(bcRevokedCert.SerialNumber, DateTime.Now, CrlReason.PrivilegeWithdrawn);
            }

            var random           = new SecureRandom();
            var issuerPrivateKey = DotNetUtilities.GetKeyPair(issuerCert.KeyPair).Private;
            var signatureFactory = new Asn1SignatureFactory(bcIssuerCert.SigAlgOid, issuerPrivateKey, random);
            var crl = crlGen.Generate(signatureFactory);

            return(crl);
        }
        public static CertificateRevocationList CreateCrl(
            X509CertificateWithKeyInfo issuerCert,
            string crlLocalUri)
        {
            var version = BigInteger.One;
            var crl     = CreateCrl(issuerCert, version);

            return(new CertificateRevocationList()
            {
                Crl = crl,
                IssuerCert = issuerCert,
                CrlLocalPath = Path.Combine(crlLocalUri, $"{issuerCert.Certificate.Subject}.crl"),
                Version = version
            });
        }
 public static CertificateRevocationList CreateCrl(X509CertificateWithKeyInfo certCA, string crlLocalUri)
 {
     throw new NotImplementedException();
 }