我正在寻找一种读取文件属性的方法,以便可以以编程方式验证文件是否来自特定公司。我只想执行诸如“是否已签名”和“谁签名”之类的基本检查-右键单击文件并选择“数字签名”即可获取的信息。我无法调用任何特定于操作系统的工具(例如signtool --verify),并且理想情况下是要避免使用任何第三方库,因为我们对使用它们具有严格的政策。
最初将在使用GoLang的Windows上使用,并将用于验证某些已签名的msi文件。我当时以为可以加载其中一个OS dll来提供帮助,但不确定是否可以提供该信息。如果有人可以向我指出正确的方向,那么我应该采取解决这个问题的方法,或者提供一个简短的例子,说明类似的事情会很棒。
答案 0 :(得分:2)
听起来您想调用WinVerifyTrust,WinVerifyTrustEx或某些类似功能。搜索golang WinVerifyTrust,似乎存在一些示例go代码,您可以参考这些示例来调用系统的wintrust.dll。假设您愿意编写仅适用于Windows的代码,那可能就是我推荐的方向。
从更跨平台的角度来看,您可以寻找OpenSSL包装器或实现。据报道,Windows PE数字签名是based on PKCS#7,OpenSSL应该能够用足够的粘合代码来支持。