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

我使用CryptQueryObject()找到了该解决方案check for a specific signature。但我仍然找不到找到Thumprint的方法。

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

我知道我需要获取公共(public) key 的哈希值,但是我不知道如何检索公共(public) key 。

如何在C++中做到这一点?有没有办法呢?

最佳答案

找到了怎么做。

您应该使用CryptHashCertificate

像那样:

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

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

关于c++ - 如何在C++中检索证书指纹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13123777/

10-12 20:47