在 .dll 的 C# 代码中,我想验证调用我的 .dll 的 .exe 的数字签名。我正在寻找一种方法来从代码中执行类似
SignTool Verify [...]
的操作。
我要检查的数字签名显示在 Windows 文件资源管理器的数字签名选项卡上。作为示例,以下是此选项卡的示例屏幕截图。
如何从 C# 代码访问 .exe 的数字签名?最好的方法是什么?有人有例子吗
我使用 System.Security.Cryptography.X509Certificates 来做到这一点。
X509Certificate2 cert = new X509Certificate2(X509Certificate.CreateFromSignedFile(fileInfo.FullName));
if (!cert.Verify())
{
Console.WriteLine("invalid cert: " + fileInfo.Name);
}
else
{
Console.WriteLine("Cert for file is valid: " + fileInfo.FullName);
}
我使用反射来比较证书。 示例如下:
string dllPath = "";
Assembly assembly = Assembly.LoadFile(dllPath);
var modules = assembly.GetModules();
var cert = modules[0].GetSignerCertificate();