У меня есть частный ECC и файл сертификата, который включает в себя открытый ключ.Я могу получить их в формате PEM или DER.
Я могу прочитать сертификат в X509Certificate
с этим кодом:
var certbytes = File.ReadAllBytes("certificate.pem");
var cert = new X509Certificate2(certbytes);
Но я не могу загрузить закрытый ключ,Я пробовал этот код:
var keyContent = File.ReadAllBytes("certificate_private_key.pem");
var key = CngKey.Import(keyContent, CngKeyBlobFormat.EccPrivateBlob);
Он выдает Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: 'An error occurred during encode or decode operation'
.
Я также пробовал другие значения параметра CngKeyBlobFormat
.С этим методом также происходит сбой.
openssl может прочитать файл и выдает следующую информацию о нем:
openssl ec -in certificate_private_key.pem -text
read EC key
Private-Key: (256 bit)
priv:
44:<cut>:68
pub:
04:<cut>:13
ASN1 OID: prime256v1
NIST CURVE: P-256
writing EC key
-----BEGIN EC PRIVATE KEY-----
MHcC <cut here>
-----END EC PRIVATE KEY-----
Есть ли встроенный API в .NET или.NET Core, который может сделать это?Или есть сторонние библиотеки, которые могут это сделать и как?