如何使用证书中的公钥检查 ECDSA(在 p-256 上)签名
Posted
技术标签:
【中文标题】如何使用证书中的公钥检查 ECDSA(在 p-256 上)签名【英文标题】:How to check ECDSA (on p-256) signature using public key from certificate 【发布时间】:2014-10-14 11:53:40 【问题描述】:我有证书和 ECDSA(在 p-256 上)签名。现在我想使用提供的证书验证这个签名。我使用 c++(在 Windows 上)。无法使用托管代码 (.NET)。我发现 CryptoAPI 不支持 ECDSA,所以我应该使用 CryptoAPI NG (CNG)。但是我找不到如何将公钥从证书导入 CNG。
你能帮我解决我的问题吗? 谢谢
【问题讨论】:
【参考方案1】:问题已解决。为此,我使用 OpenSSL。
【讨论】:
【参考方案2】:“CryptImportPublicKeyInfoEx2 函数将公钥导入 CNG 非对称提供程序...”
我的 C 可能有点偏离,但我相信它是这样的
BCRYPT_KEY_HANDLE hKey;
BOOL imported = CryptImportPublicKeyInfoEx2(
X509_ASN_ENCODING,
&(pCertContext->pCertInfo->SubjectPublicKeyInfo),
0,
NULL,
&hKey);
if (!imported)
goto :err;
【讨论】:
以上是关于如何使用证书中的公钥检查 ECDSA(在 p-256 上)签名的主要内容,如果未能解决你的问题,请参考以下文章
如何从 R 中的散列消息和签名中正确恢复 ECDSA 公钥 ||小号 || V格式?