我创建使用BouncyCastle的BouncyCastle的专用密钥要X509Certificate2专用密钥
var keypairgen = new RsaKeyPairGenerator();
keypairgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024));
var keypair = keypairgen.GenerateKeyPair();
var gen = new X509V3CertificateGenerator();
var CN = new X509Name("CN=" + certName);
var SN = BigInteger.ProbablePrime(120, new Random());
gen.SetSerialNumber(SN);
gen.SetSubjectDN(CN);
gen.SetIssuerDN(CN);
gen.SetNotAfter(DateTime.Now.AddYears(1));
gen.SetNotBefore(DateTime.Now.Subtract(new TimeSpan(7,0,0,0)));
gen.SetSignatureAlgorithm("MD5WithRSA");
gen.SetPublicKey(keypair.Public);
gen.AddExtension(
X509Extensions.AuthorityKeyIdentifier.Id,
false,
new AuthorityKeyIdentifier(
SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keypair.Public),
new GeneralNames(new GeneralName(CN)),
SN
));
gen.AddExtension(
X509Extensions.ExtendedKeyUsage.Id,
false,
new ExtendedKeyUsage(new ArrayList()
{
new DerObjectIdentifier("1.3.6.1.5.5.7.3.1")
}));
var newCert = gen.Generate(keypair.Private);
这一端的证书与
X509Certificate2 certificate = new X509Certificate2(DotNetUtilities.ToX509Certificate((Org.BouncyCastle.X509.X509Certificate)newCert));
现在,因为我的任务告诉我,来存储证书和专用密钥在X509Certificate2对象我需要一种方法将keypair.Private转换为X509Certificate2.Private。有任何想法吗?
谢谢。
什么类型是keypair.private?你看过AsymmetricAlgorithm.Create()吗? – 2011-05-25 20:34:54
编辑:嗯,.Create()可以工作,但在keypair.private上使用时会返回null。它的类型为AsymmetricKeyParameter – barjed 2011-05-25 20:38:51
嘿。感谢您提供有关如何创建X509Certificate2的可用代码!这非常有帮助! – 2012-02-12 15:33:23