示例#1
0
        // previous code found to cause a NullPointerException
        private void nullPointerTest()
        {
            IAsymmetricCipherKeyPairGenerator keyGen = GeneratorUtilities.GetKeyPairGenerator("RSA");

            keyGen.Init(new KeyGenerationParameters(new SecureRandom(), 1024));

            AsymmetricCipherKeyPair pair = keyGen.GenerateKeyPair();

            IList oids   = new ArrayList();
            IList values = new ArrayList();

            oids.Add(X509Extensions.BasicConstraints);
            values.Add(new X509Extension(true, new DerOctetString(new BasicConstraints(true))));
            oids.Add(X509Extensions.KeyUsage);
            values.Add(new X509Extension(true, new DerOctetString(
                                             new KeyUsage(KeyUsage.KeyCertSign | KeyUsage.CrlSign))));
            SubjectKeyIdentifier subjectKeyIdentifier = new SubjectKeyIdentifierStructure(pair.Public);
            X509Extension        ski = new X509Extension(false, new DerOctetString(subjectKeyIdentifier));

            oids.Add(X509Extensions.SubjectKeyIdentifier);
            values.Add(ski);

            AttributePkcs attribute = new AttributePkcs(PkcsObjectIdentifiers.Pkcs9AtExtensionRequest,
                                                        new DerSet(new X509Extensions(oids, values)));

            Pkcs10CertificationRequest p1 = new Pkcs10CertificationRequest(
                "SHA1WithRSA", new X509Name("cn=csr"), pair.Public, new DerSet(attribute), pair.Private);
            Pkcs10CertificationRequest p2 = new Pkcs10CertificationRequest(
                "SHA1WithRSA", new X509Name("cn=csr"), pair.Public, new DerSet(attribute), pair.Private);

            if (!p1.Equals(p2))
            {
                Fail("cert request comparison failed");
            }
        }