Загрузите сертификат, используя X509Certificate2 с открытым ключом ECC
Это вопрос новичка. Я пытаюсь загрузить сертификат.der с помощью:
X509Certificate2 cert = new X509Certificate2(@"c:\temp\mycert.der");
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PublicKey.Key
Но я получаю ошибку "Алгоритм ключа сертификата не поддерживается" во 2-й строке. Когда я импортирую этот сертификат в MMC, я вижу открытый ключ, например ,
Это действительно? Как мне получить это в коде?
1 ответ
До.NET 4.6.1 ключи ECDSA не поддерживались. По причинам наследства / совместимости (например, здесь приведен пример, где вы конвертируете в RSACryptoServiceProvider), свойство PublicKey.Key и свойство X509Certificate2.PrivateKey по-прежнему не могут ECDSA. Вместо этого есть новый, более безопасный для типов путь:
using (ECDsa ecdsa = cert.GetECDsaPublicKey())
{
if (ecdsa != null)
{
// I had to do something with it in this example...
bool verified = ecdsa.VerifyData(data, signature, HashAlgorithmName.SHA256);
}
}