如何在C ++中检索证书指纹

时间:2012-10-29 14:38:56

标签: c++ certificate

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

我使用CryptQueryObject()找到了这个解决方案check for a specific signature。但我仍然无法找到检索Thumprint的方法。

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

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

我如何在C ++中这样做?有没有办法呢?

1 个答案:

答案 0 :(得分:9)

找到了怎么做。

你应该使用CryptHashCertificate

就像那样:

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

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