使用CertGetCertificateChain验证EXE上的签名

时间:2009-07-14 19:47:45

标签: winapi exec certificate

我想验证已签名的可执行文件。要求是验证可执行文件本身是否有效以及它来自何处(可能来自证书的主题)。证书类型是PKCS。

我在这里发现了类似的帖子, Validate Authenticode signature on EXE - C++ without CAPICOM

Microsoft文档等似乎指向CertGetCertificateChain,但这些示例往往适用于商店中的证书。有谁知道如何使用CertGetCertificateChain和相关API验证签名的可执行文件?

2 个答案:

答案 0 :(得分:0)

你能详细说明吗?您链接的问题似乎提供了您应该需要的所有答案。

您声明“示例倾向于使用存储中的证书”,我认为这意味着可执行文件需要使用链接到计算机的受信任存储中的根证书的证书进行签名。

这是真的;没有办法解决这个问题,否则没有办法可以相信签名者就是他所说的那个人,并且如果提供者被欺诈性使用,也无法撤销证书。

因此,WinVerifyTrust是验证签名可执行文件的正确方法。这是一个糟糕的API所以要小心。 CryptQueryObject和相关的apis将为您提供更多信息,例如颁发证书的人员或公司的名称。

答案 1 :(得分:0)

我问了这个问题some time ago。我有你的确切要求。那里有示例代码可以帮助您。玩得开心!!