예제 #1
0
 public void SetSignatureAlgorithm(string signatureAlgorithm)
 {
     this.signatureAlgorithm = signatureAlgorithm;
     try
     {
         sigOID = Org.BouncyCastle.X509.X509Utilities.GetAlgorithmOid(signatureAlgorithm);
     }
     catch (Exception)
     {
         throw new ArgumentException("Unknown signature type requested", "signatureAlgorithm");
     }
     sigAlgId = Org.BouncyCastle.X509.X509Utilities.GetSigAlgID(sigOID, signatureAlgorithm);
     tbsGen.SetSignature(sigAlgId);
 }
 public void SetSignatureAlgorithm(string signatureAlgorithm)
 {
     //IL_0020: Unknown result type (might be due to invalid IL or missing references)
     this.signatureAlgorithm = signatureAlgorithm;
     try
     {
         sigOID = X509Utilities.GetAlgorithmOid(signatureAlgorithm);
     }
     catch (global::System.Exception)
     {
         throw new ArgumentException("Unknown signature type requested", "signatureAlgorithm");
     }
     sigAlgId = X509Utilities.GetSigAlgID(sigOID, signatureAlgorithm);
     tbsGen.SetSignature(sigAlgId);
 }
예제 #3
0
        /// <summary>
        /// Generate a new X509Certificate using the passed in SignatureCalculator.
        /// </summary>
        /// <param name="signatureCalculatorFactory">A signature calculator factory with the necessary algorithm details.</param>
        /// <returns>An X509Certificate.</returns>
        public X509Certificate Generate(ISignatureFactory <AlgorithmIdentifier> signatureCalculatorFactory)
        {
            tbsGen.SetSignature((AlgorithmIdentifier)signatureCalculatorFactory.AlgorithmDetails);

            TbsCertificateStructure tbsCert = tbsGen.GenerateTbsCertificate();

            IStreamCalculator <IBlockResult> streamCalculator = signatureCalculatorFactory.CreateCalculator();

            byte[] encoded = tbsCert.GetDerEncoded();

            streamCalculator.Stream.Write(encoded, 0, encoded.Length);

            Platform.Dispose(streamCalculator.Stream);

            return(GenerateJcaObject(tbsCert, (AlgorithmIdentifier)signatureCalculatorFactory.AlgorithmDetails, ((IBlockResult)streamCalculator.GetResult()).Collect()));
        }
예제 #4
0
        private void TbsV1CertGenerate()
        {
            V1TbsCertificateGenerator gen = new V1TbsCertificateGenerator();
            DateTime startDate            = MakeUtcDateTime(1970, 1, 1, 0, 0, 1);
            DateTime endDate = MakeUtcDateTime(1970, 1, 1, 0, 0, 12);

            gen.SetSerialNumber(new DerInteger(1));

            gen.SetStartDate(new Time(startDate));
            gen.SetEndDate(new Time(endDate));

            gen.SetIssuer(new X509Name("CN=AU,O=Bouncy Castle"));
            gen.SetSubject(new X509Name("CN=AU,O=Bouncy Castle,OU=Test 1"));

            gen.SetSignature(new AlgorithmIdentifier(PkcsObjectIdentifiers.MD5WithRsaEncryption, DerNull.Instance));

            SubjectPublicKeyInfo info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(PkcsObjectIdentifiers.RsaEncryption, DerNull.Instance),
                                                                 new RsaPublicKeyStructure(BigInteger.One, BigInteger.Two));

            gen.SetSubjectPublicKeyInfo(info);

            TbsCertificateStructure tbs = gen.GenerateTbsCertificate();

            if (!Arrays.AreEqual(tbs.GetEncoded(), v1Cert))
            {
                Fail("failed v1 cert generation");
            }

            //
            // read back test
            //
            Asn1InputStream aIn = new Asn1InputStream(v1Cert);
            Asn1Object      o   = aIn.ReadObject();

            if (!Arrays.AreEqual(o.GetEncoded(), v1Cert))
            {
                Fail("failed v1 cert read back test");
            }
        }