如何在C ++中使用多个签名者实体验证PKCS7签名

时间:2014-04-17 16:20:26

标签: c++ cryptography pkcs#7

我使用CryptVerifyDetachedMessageSignature和CryptVerifyMessageSignature函数检查PKCS7签名。 他们都可以使用我在PCCERT_CONTEXT结构中提供的证书来验证pkcs7文件。我使用CertCreateCertificateContext函数获得了PCCERT_CONTEXT。

但现在我还有其他任务。我必须从pkcs7文件中提取certiticateS并验证所有这些的签名。 你能帮我理解我怎么做这件事:

  1. 从pkcs7(多个)中提取证书;
  2. 用它们验证pkcs7签名。
  3. 我必须使用C ++和CryptoApi来完成这项任务。

1 个答案:

答案 0 :(得分:1)

如果我查看API,您似乎可以使用dwSignerIndex来验证所有签名。用于创建签名的证书将在ppSignerCert中返回。

API说明以下关于dwSignerIndex

的内容
  

所需签名的索引。可以有多个签名。可以重复调用CryptVerifyMessageSignature,每次递增dwSignerIndex。对于第一个签名者,或者如果只有一个签名者,将此参数设置为零。如果函数返回FALSE,并且GetLastError返回CRYPT_E_NO_SIGNER,则前一个调用处理了消息的最后一个签名者。