0

我收到一个指向包含文件的内存的指针,我需要检查该文件是否具有嵌入式证书(数字签名)并且它是否有效。过去,我使用 winverifytrust 使用 WINTRUST_ACTION_GENERIC_VERIFY_V2 标志检查这一点,但这仅适用于磁盘上的文件(我在将内存写入磁盘之前从驱动程序获取指向内存的指针)。我想过使用带有 WINTRUST_BLOB_INFO 结构的 winverifytrust,根据这个

在调用 WinVerifyTrust 来验证内存 BLOB 时使用。

但不幸的是,文档指出:

注意以下收件箱文件格式当前不支持此结构。除了这些格式之外,可能还有其他格式不受支持。可移植的可执行文件(例如 .exe、.dll、.ocx) Cab 文件 (.cab) 目录文件 (.cat)

我能够使用 C# 中的X509Certificate(byte[])构造函数获取文件的证书,甚至使用X509chain.Build(X509Certificate2)函数检查链,但是 winverifytrust 所做的更多验证不包含在其中检查(例如:检查文件自签名后是否被篡改)。

4

0 回答 0