使用 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/