在我的C#
/.NET
应用程序中,我必须检查给定的可执行文件是否经过数字签名 (最好未经Exception
测试。)
然后我需要检查其证书是否有效 (基于已安装的根证书)以及文件内容是否对签名有效。
中的类太多了BCL
,我不知道从哪里开始以及使用什么,到目前为止我发现的任何东西都不能消除我的困惑......
我想做这样的事情,如果 P/Invoke
可能的话:
bool IsSignedFile(string path);
Cert GetCertificateFromSignedFile(string path);
bool IsValidCertificate(Cert cert)
Sig GetSignatureFromSignedFile(string path);
bool IsValidSignature(string path, Sig sig, Cert cert);
补充说明:
我目前遇到的一个大问题是我没有找到一种简单的方法来获取此类文件的签名。仍然希望有一个提供的、托管的BCL
解决方案,因为如果这部分确实丢失了,我会感到惊讶。(对于证书,这可以通过 just 来完成,也可以X509Certificate.CreateFromSignedFile
验证)
我不希望将 50% 的工作与P/Invoke
代码或其他大型库混合。
我找到了一个AuthenticodeSignatureInformation
类,但没有关于将它用于给定可执行文件的信息。