gpt4 book ai didi

c# - BouncyCaSTLe PrivateKey 到 X509Certificate2 PrivateKey

转载 作者:可可西里 更新时间:2023-11-01 08:08:30 24 4
gpt4 key购买 nike

我使用 BouncyCaSTLe 创建证书

        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。有什么想法吗?

谢谢。

最佳答案

详细一点,这是在创建 X509Certificate2 证书后添加的完整代码:

RSA rsaPriv = DotNetUtilities.ToRSA(keypair.Private as RsaPrivateCrtKeyParameters);
certificate.PrivateKey = rsaPriv;

(当然可以优化成一行。)

关于c# - BouncyCaSTLe PrivateKey 到 X509Certificate2 PrivateKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6128541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com