在没有CAPICOM的EXE - C ++上验证Authenticode签名

时间:2008-11-19 04:56:14

标签: c++ winapi cryptography authenticode

我正在为安装程序DLL编写一个函数来验证已安装在系统上的EXE文件的Authenticode签名。

该功能需要:

  

A)验证签名是否有效   B)验证签名者是我们的组织。

因为这是在安装程序中,并且因为这需要在较旧的Win2k安装上运行,所以我想要依赖CAPICOM.dll,因为它可能不在目标系统上。

WinVerifyTrust API非常适合解决(A)。

我需要找到一种方法来比较已知证书(或其中的属性)与签署有关EXE的证书。

2 个答案:

答案 0 :(得分:25)

您应该使用CryptQueryObject

此知识库文章演示了如何使用:How To Get Information from Authenticode Signed Executables

对于询问如何在没有Windows-API的情况下执行此操作的评论者,我不知道任何可以执行此操作的库,但此处记录了格式:Windows Authenticode Portable Executable Signature Format

答案 1 :(得分:0)

如果签名有效,其证书链将包含您的证书。 CertGetCertificateChain将获得该链。