在 C# 中以编程方式验证 .exe 的数字签名

问题描述 投票:0回答:2

在 .dll 的 C# 代码中,我想验证调用我的 .dll 的 .exe 的数字签名。我正在寻找一种方法来从代码中执行类似

SignTool Verify [...]
的操作。

我要检查的数字签名显示在 Windows 文件资源管理器的数字签名选项卡上。作为示例,以下是此选项卡的示例屏幕截图。

enter image description here

如何从 C# 代码访问 .exe 的数字签名?最好的方法是什么?有人有例子吗

c# dll exe digital-signature
2个回答
0
投票

我使用 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);
}

-1
投票

我使用反射来比较证书。 示例如下:

string dllPath = "";
Assembly assembly = Assembly.LoadFile(dllPath);
var modules = assembly.GetModules();
var cert = modules[0].GetSignerCertificate();
© www.soinside.com 2019 - 2024. All rights reserved.