如何在 Go 中读取文件属性

How to read file properties in Go

我正在寻找一种方法来读取文件的属性,以便我可以通过编程方式验证文件是否来自特定公司。我只想执行基本检查,例如 'is it signed' 和 'who signed it' - 右键单击​​文件时可以获得的信息和 select 'Digital Signatures'。我不能调用任何 OS 特定工具(例如 signtool --verify)并且理想情况下希望避免使用任何第三方库,因为我们在使用它们方面有非常严格的政策。

这最初将在 windows 上使用 GoLang 进行,并将用于验证一些已签名的 msi 文件。我在想我可以加载 OS dll 之一来提供帮助,但不确定哪个能够提供该信息。如果有人能指出我应该采取的正确方向以解决这个问题,或者提供一个类似的简短示例,那就太好了。

听起来您想调用 WinVerifyTrust, WinVerifyTrustEx 或一些类似的功能。搜索 golang WinVerifyTrust,似乎存在一些您可以参考的示例 go 代码以调用系统的 wintrust.dll。假设您愿意编写仅适用于 Windows 的代码,这可能是我推荐的方向。

从更跨平台的角度来看,您可以改为寻找 OpenSSL 包装器或实现。据报道,Windows PE数字签​​名是based on PKCS#7,OpenSSL应该能够支持足够的胶水代码。