我正在为安装程序DLL编写一个函数来验证已安装在系统上的EXE文件的Authenticode签名。
该功能需要:
A)验证签名是否有效 B)验证签名者是我们的组织。
因为这是在安装程序中,并且因为这需要在较旧的Win2k安装上运行,所以我不想要依赖CAPICOM.dll,因为它可能不在目标系统上。
WinVerifyTrust API非常适合解决(A)。
我需要找到一种方法来比较已知证书(或其中的属性)与签署有关EXE的证书。
答案 0 :(得分:25)
您应该使用CryptQueryObject。
此知识库文章演示了如何使用:How To Get Information from Authenticode Signed Executables。
对于询问如何在没有Windows-API的情况下执行此操作的评论者,我不知道任何可以执行此操作的库,但此处记录了格式:Windows Authenticode Portable Executable Signature Format
答案 1 :(得分:0)
如果签名有效,其证书链将包含您的证书。 CertGetCertificateChain将获得该链。