5

我正在开发一个 C++ 应用程序,我需要检查证书的指纹。

我发现此解决方案使用 CryptQueryObject()检查特定签名。但我仍然找不到检索指纹的方法。

在 C# 中,我可以使用GetCertHashString方法来获取哈希(这是我需要的)或使用属性X509Certificate.Thumbprint

我知道我需要获取公钥的哈希值,但我不知道如何检索公钥..

我如何在 C++ 中做到这一点?有办法吗?

4

1 回答 1

12

找到了怎么做。

你应该使用CryptHashCertificate

像那样:

DWORD* thumbPrintSize;
BYTE* thumbPrint;   
if (!CryptHashCertificate(0, hashAlg, 0,pCertContext->pbCertEncoded,
     pCertContext->cbCertEncoded, thumbPrint, thumbPrintSize)) {
        return false;
}

其中pCertContext是证书,hashAlg是哈希算法(通常是sha-1)

于 2012-10-29T19:46:20.197 回答