这是一个新手问题。我正在尝试使用以下方式加载.der证书:
X509Certificate2 cert = new X509Certificate2(@"c:\temp\mycert.der");
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PublicKey.Key
但我在第二行收到“不支持证书密钥算法”错误。当我将此证书导入MMC时,我可以看到像这样的公钥。
有效吗?我如何在代码中获取它?
答案 0 :(得分:3)
在.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);
}
}