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

Bri*_*pie 15 c++ winapi cryptography authenticode

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

该功能需要:

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

因为这是在安装程序,因为这需要运行在旧的Win2k设施,我想要依靠的CAPICOM.dll,因为它可能不是在目标系统上.

的WinVerifyTrust API的伟大工程,以解决(A).

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

Ras*_*ber 25

你应该使用CryptQueryObject.

这篇KB文章演示了如何使用:如何从Authenticode签名的可执行文件中获取信息.

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