我有证书和 ECDSA(在 p-256 上)签名。现在我想使用提供的证书验证这个签名。我使用 c++(在 Windows 上)。无法使用托管代码 (.NET)。我发现 CryptoAPI 不支持 ECDSA,所以我应该使用 CryptoAPI NG (CNG)。但是我找不到如何将公钥从证书导入到 CNG。
你能帮我解决我的问题吗?谢谢
我有证书和 ECDSA(在 p-256 上)签名。现在我想使用提供的证书验证这个签名。我使用 c++(在 Windows 上)。无法使用托管代码 (.NET)。我发现 CryptoAPI 不支持 ECDSA,所以我应该使用 CryptoAPI NG (CNG)。但是我找不到如何将公钥从证书导入到 CNG。
你能帮我解决我的问题吗?谢谢
问题已解决。为此,我使用 OpenSSL。
“ CryptImportPublicKeyInfoEx2函数将公钥导入 CNG 非对称提供程序......”
我的 C 可能有点偏离,但我相信它类似于
BCRYPT_KEY_HANDLE hKey;
BOOL imported = CryptImportPublicKeyInfoEx2(
X509_ASN_ENCODING,
&(pCertContext->pCertInfo->SubjectPublicKeyInfo),
0,
NULL,
&hKey);
if (!imported)
goto :err;