.net - 当我们签署它时,exe会发生什么?

标签 .net cryptography digital-signature digital-certificate

使用 VeriSign 对 exe 进行签名后,如果我们右键单击 exe,我们可以看到“数字签名”选项卡,其中提供了有关证书的信息。这些信息将存储在哪里?我的意思是操作系统如何知道哪个证书与哪个文件相关?签名时是否在exe中嵌入了任何内容?如何编写 c# 代码以从签名的 exe 中提取证书?

任何帮助是极大的赞赏。

更新 :
我解决了问题,但我无法找到与程序集存储的证书关系究竟如何。我们可以通过传递程序集路径来创建 X509Certificate 对象。我的任务是获取序列号和所有者。下面是我为此编写的代码。

 X509Certificate cert = X509Certificate.CreateFromSignedFile("Solo4Orchestra.exe");
            MessageBox.Show(cert.Subject.Split(new char[1]{','})[3].Replace("O=",""));
            MessageBox.Show(cert.GetSerialNumberString());

谢谢。
明江

最佳答案

Windows Authenticode Portable Executable Signature Format可能会给你一些关于二进制格式的信息。
有一个用于检查签名的 Windows API,CryptQueryObject() .也许也有一个 .NET API,但显然不是:Arelated MSDN article with sample code to get revocation list 似乎也使用 Windows API 调用:How to get information from a CRL (.NET) (可能是一个很好的起点,因为它实现了该函数的包装器)。

关于.net - 当我们签署它时,exe会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3801614/

相关文章:

c# 在不使用调度程序的情况下访问 Task 中的 ui 元素

python - 如何将字符串中的base64值更改为字节?

C# SHA-256 与 Java SHA-256。不同的结果?

java - 无法从 CMSSigned 数据获取 SignerCertificate

java - 访问已安装认证签名

c# - 获取 Windows 服务的完整路径

.net - 创建应用程序包时出错

.net - 为什么我的 .NET Standard NuGet 包会触发这么多依赖项?

c - 为什么 RSA_size 会崩溃?

c# itextsharp 如何获取数字签名图像