我正在尝试验证已使用 ECDsa 算法签名的 XML 签名。我的工作基于 XmlDSigEx 库,我必须稍微修改一下以满足我的需要。我目前的问题与从证书中获取公钥并将其用作 CngKey 有关。我用了:
// var cert = X509Certificate2 ...
var key = CngKey.Import(cert.GetPublicKey(), CngKeyBlobFormat.EccPublicBlob);
抛出“参数不正确”。我找不到任何信息,预计哪种格式的公钥会作为密钥传递。因此,我恳请有关此问题的帮助:如何将存储在 X509Certificate 中的公钥传递给 CngKey?
TIA,阿洛伊斯
PS:我考虑使用 BouncyCastle 来提取公钥。我试过BC的
X509Certificate.CertificateStructure.SubjectPublicKeyInfo.GetEncoded()
也
X509Certificate.CertificateStructure.SubjectPublicKeyInfo.PublicKeyData.GetBytes()
将密钥传递给 CngKey;但是会发生相同的错误。