我的c#.NET程序访问c ++库。
图书馆使用证书签名,并与程序位于同一文件夹中。
在运行时,在加载c ++库之前,我想确保该库真的是我的并且没有被篡改过。
我已经能够从我的dll获取证书并验证证书:
X509Certificate2 cert = new X509Certificate2(X509Certificate.CreateFromSignedFile(filename));
Console.WriteLine(cert.Issuer);`
cert.Verify();`
这告诉我文件证书没问题,但如果我再对我的文件进行hexedit并再次运行我的程序,那么证书仍然可以正常验证。
我在哪里可以在证书中找到我的库的哈希值(而不是证书的哈希值)以及如何创建我的库的哈希值来比较它们以便我可以检测到被篡改的文件?
我怀疑它应该很简单,也许我忽略了一些东西。
答案 0 :(得分:0)
PInvoke本机Windows API WinVerifyTrust
,由Microsoft在MSDN处记录,其中包含C中的示例。
如果您使用搜索引擎,可能会有其他人管理的示例。