我想验证一个签名的可执行文件。要求是验证可执行文件本身是否有效以及它来自哪里(可能来自证书的主题)。证书类型是 PKCS。
我在这里找到了类似的帖子, Validate Authenticode signature on EXE - C++ without CAPICOM
Microsoft 文档等似乎指向 CertGetCertificateChain,但这些示例倾向于使用商店中的证书。有谁知道如何使用 CertGetCertificateChain 和相关 API 验证签名的可执行文件?
我想验证一个签名的可执行文件。要求是验证可执行文件本身是否有效以及它来自哪里(可能来自证书的主题)。证书类型是 PKCS。
我在这里找到了类似的帖子, Validate Authenticode signature on EXE - C++ without CAPICOM
Microsoft 文档等似乎指向 CertGetCertificateChain,但这些示例倾向于使用商店中的证书。有谁知道如何使用 CertGetCertificateChain 和相关 API 验证签名的可执行文件?
你能详细说明吗?您链接到的问题似乎提供了您应该需要的所有答案。
您说“这些示例倾向于使用存储中的证书”,我认为这意味着可执行文件需要使用链接到机器受信任存储中的根证书的证书进行签名。
这是真实的; 没有办法解决这个问题,否则无法相信签名者就是他所说的那个人,如果证书被欺诈性使用,提供者也无法撤销证书。
因此,WinVerifyTrust 是验证签名可执行文件的正确方法。这是一个糟糕的 API,所以要小心。CryptQueryObject 和相关 api 将为您提供更多信息,例如颁发证书的个人或公司的名称。
我前段时间问过这个问题。我有你的确切要求。那里有示例代码可以帮助您。玩得开心!!