我的 c# .NET 程序访问 c++ 库。
库使用证书签名,并且与程序位于同一文件夹中。
在运行时,在加载 c++ 库之前,我想确保该库确实是我的并且没有被篡改。
我已经能够从我的dll获取证书并验证证书:
X509Certificate2 cert = new X509Certificate2(X509Certificate.CreateFromSignedFile(filename));
Console.WriteLine(cert.Issuer);`
cert.Verify();`
这告诉我文件证书没问题,但是如果我随后对文件进行十六进制编辑并再次运行我的程序,证书仍然验证正常。
在证书中哪里可以找到库的哈希(不是证书的哈希(,以及如何创建库的哈希来比较它们,以便检测被篡改的文件?
我怀疑它应该很简单,也许我忽略了什么。
调用本机 Windows APIWinVerifyTrust
,由 MSDN 的Microsoft记录,并用 C 语言编写示例。
如果您使用搜索引擎,则可能会有其他人管理的实例。