我已经使用BouncyCastle为椭圆曲线DSA签名创建了密钥对,并使用XMLString根据RFC4050设法将公钥导入ECDsaCng。现在我想要移动私钥并且没有设法找到解决方案。我得到的最接近的是使用CngKey.Import。从BouncyCastle导出EC私钥并导入到CngKey或ECDsaCng中?
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坏标记值。
GetDerEncoded应该返回一个有效的Pkcs8 blob,据我所知。
如何使用在ECDsaCng对象中使用BouncyCastle创建的私钥?