在我的 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
解决方案,如果确切的那部分缺失,我会感到惊讶。 (对于证书,这可以只使用 X509Certificate.CreateFromSignedFile
,验证这也是可能的)
我不想把50%的工作混合起来 P/Invoke
代码或一个大的不同的库。
我发现了一个 AuthenticodeSignatureInformation
class,没有关于为给定可执行文件使用它的信息。