예제 #1
0
 public Certificate(CertificateRequest request, CertificateIssuer issuer)
 {
     _subject = request.Dn;
     _subjectPublicKey = request.PublicKey;
     _issuer = issuer.DistinguishedName;
     _cert = Create(request, issuer.Key.PrivateAsymmetricKey);
 }
예제 #2
0
        private X509Certificate Create(CertificateRequest request, AsymmetricKeyParameter key)
        {
            try
            {
                var certGen = new X509V3CertificateGenerator();

                certGen.SetSerialNumber(BigInteger.ProbablePrime(128, new SecureRandom()));

                certGen.SetIssuerDN(new X509Name(_issuer));

                certGen.SetNotBefore(request.NotBefore);
                certGen.SetNotAfter(request.NotAfter);

                certGen.SetSubjectDN(new X509Name(_subject));
                certGen.SetPublicKey(_subjectPublicKey.PublicAsymmetricKey);

                certGen.SetSignatureAlgorithm("SHA1WITHRSA");

                certGen.AddExtension(X509Extensions.BasicConstraints, false, new BasicConstraints(true));

                return certGen.Generate(key);
            }
            catch (Exception e)
            {
                throw new SecularException("Error generating certificate: " + e.Message, e);
            }
        }
예제 #3
0
        public Certificate(Action<CertificateRequest> r, Action<CertificateIssuer> i)
        {
            var request = new CertificateRequest();
            var issuer = new CertificateIssuer();
            r(request);
            i(issuer);

            _subject = request.Dn;
            _subjectPublicKey = request.PublicKey;
            _issuer = issuer.DistinguishedName;
            _cert = Create(request, issuer.Key.PrivateAsymmetricKey);
        }