【问题标题】:How to retrieve a certificate thumbprint in C++如何在 C++ 中检索证书指纹
【发布时间】:2012-10-29 14:38:56
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: c++ certificate


【解决方案1】:

找到了方法。

你应该使用CryptHashCertificate

这样:

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

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

【讨论】:

  • 它是否从证书中计算或检索它?
  • @MustafaChelik 它计算指纹,因为指纹没有存储在证书中。
  • CryptHashCertificate 已被弃用,但 CryptHashCertificate2 非常相似。但是,我的指纹似乎与使用属性中的 DigitalSignature 选项卡看到的指纹不匹配。
猜你喜欢
  • 2010-11-19
  • 2020-12-26
  • 2012-06-22
  • 1970-01-01
  • 2019-12-27
  • 2013-12-03
  • 1970-01-01
  • 2012-04-02
  • 2013-08-09
相关资源
最近更新 更多