【发布时间】:2012-03-13 22:07:25
【问题描述】:
我使用 BouncyCastle 为椭圆曲线 DSA 签名创建了密钥对,并设法使用符合 RFC4050 的 XMLString 将公钥导入 ECDsaCng。现在我也想移动私钥并且没有设法找到解决方案。我得到的最接近的是使用 CngKey.Import。
CngKey.Import 支持 PKCS#8 格式,因此如果您可以将密钥转换为有效的 pkcs8,那么它应该可以工作。不幸的是,下面的代码并不能很好地工作。
var privatekey = (ECPrivateKeyParameters) keyPair.Private;
var pkinfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privatekey);
byte[] pkcs8Blob = pkinfo.GetDerEncoded();
var importedKey = CngKey.Import(pkcs8Blob, CngKeyBlobFormat.Pkcs8PrivateBlob);
这会引发异常:
System.Security.Cryptography.CryptographicException: ASN1 bad tag value met.
据我所知,GetDerEncoded 应该返回一个有效的 Pkcs8 blob。
如何在 ECDsaCng 对象中使用通过 BouncyCastle 创建的私钥?
【问题讨论】:
标签: .net cryptography bouncycastle elliptic-curve