我已经使用openssl创建了一个自签名的ECDSA证书。我需要获取它的私钥信息和证书信息(以base64字节为单位)。后者很容易。第一个似乎很困难。我知道我做错了,因为私钥的长度为256。我知道了它的长度,因为我已经创建了它,并使用以下命令验证了它:
openssl ec -in C:\OpenSSLx64\flir\newcerts\ecd.key.pem -text -noout
我所有的尝试都产生不同的字节长度。他们在这里:
X509Certificate2 certificate = new X509Certificate2(certificateBytes, password, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.EphemeralKeySet);
if (certificate.GetECDsaPrivateKey() is ECDsaCng ecdKeyWrapper)
{
CngKey key = ecdKeyWrapper.Key;
key.SetProperty(pty);
ECParameters parameters = ecdKeyWrapper.ExportParameters(true);
privateKey = parameters.D;
byte[] otherPKey = key.Export(CngKeyBlobFormat.GenericPrivateBlob);
byte[] otherPKey2 = key.Export(CngKeyBlobFormat.EccPrivateBlob);
byte[] otherPKey3 = key.Export(CngKeyBlobFormat.EccFullPrivateBlob);
byte[] otherPKey4 = key.Export(CngKeyBlobFormat.Pkcs8PrivateBlob);
}
我知道使用RSA和DSA可以使用bouncyCastle,但是在这里无法使用:
keyPair = DotNetUtilities.GetKeyPair(dsaKeyWrapper);
所以我想我有两个问题: