相关疑难解决方法(0)

在c#中使用ECDSA生成证书

我正在尝试使用ECDSA生成带有私钥的(自签名)证书.目标是获得与使用openssl时"相同"(pkcs12)的证书:

openssl ecparam -genkey -name secp256r1 -out mykey.key
openssl req -new -key mykey.key -out myreq.csr
openssl req -x509 -days 7 -key mykey.key -in myreq.csr -out mycert.crt
openssl pkcs12 -export -out mycert.pfx -inkey mykey.key -in mycert.crt
Run Code Online (Sandbox Code Playgroud)

我已经使用BouncyCastle来帮助我创建基于RSA的证书,因此接下来的步骤或多或少都遵循我用来创建RSA证书的方式.

(请注意,BC前缀用于BouncyCastle的类,MS适用于.NET类)

1生成密钥对:私钥和公钥

BC.IAsymmetricCipherKeyPairGenerator bcKpGen = BC.GeneratorUtilities.GetKeyPairGenerator("ECDSA");
bcKpGen.Init(new BC.ECKeyGenerationParameters(BC.SecObjectIdentifiers.SecP256r1, new BC.SecureRandom()));
BC.AsymmetricCipherKeyPair bcSubjKeys = bcKpGen.GenerateKeyPair();
Run Code Online (Sandbox Code Playgroud)

2使用私钥对公钥进行签名,并附加一些额外数据(主题,有效期等)

BC.X509V3CertificateGenerator bcXgen = new BC.X509V3CertificateGenerator();
// .. set subject, validity period etc
bcXgen.SetPublicKey(bcSubjKeys.Public);
BC.ISignatureFactory bcSigFac = new BC.Asn1SignatureFactory("SHA256WITHECDSA", bcSubjKeys.Private);
BC.X509Certificate bcCert = bcXgen.Generate(bcSigFac); …
Run Code Online (Sandbox Code Playgroud)

c# certificate ecdsa

3
推荐指数
1
解决办法
2869
查看次数

标签 统计

c# ×1

certificate ×1

ecdsa ×1