代码之家  ›  专栏  ›  技术社区  ›  Brian Gillespie

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

  •  16
  • Brian Gillespie  · 技术社区  · 17 年前

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

    该功能需要:

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

    因为这是在安装程序中,而且因为这需要在旧的Win2k安装上运行,我 do not 的常用口语形式 希望依赖CAPICOM.dll,因为它可能不在目标系统上。

    这个 WinVerifyTrust API很好地解决了(A)。

    我需要找到一种方法,将已知的证书(或其中的属性)与签署所讨论的EXE的证书进行比较。

    2 回复  |  直到 17 年前
        1
  •  24
  •   dee-see Tom Ritsema    10 年前

    你应该使用 CryptQueryObject .

    这篇知识库文章演示了使用方法: How To Get Information from Authenticode Signed Executables .

    对于询问如何在没有Windows API的情况下完成它的评论者,我不知道有任何库可以做到这一点,但格式记录在这里: Windows Authenticode Portable Executable Signature Format

        2
  •  0
  •   MSalters    17 年前

    如果签名有效,其证书链将包含您的证书。 CertGetCertificateChain 会得到那条链子。