当我们签名时,exe会发生什么?

时间:2010-09-27 06:42:39

标签: .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());

感谢。 秋江

2 个答案:

答案 0 :(得分:1)

Windows Authenticode Portable Executable Signature Format可能会为您提供有关二进制格式的一些信息。

有一个用于检查签名的Windows API CryptQueryObject()。也许还有一个.NET API,但显然不是:一个相关的MSDN文章,带有获取撤销列表的示例代码也使用Windows API调用:How to get information from a CRL (.NET)(可能是一个很好的起点,因为它实现了该函数的包装器。)

答案 1 :(得分:0)

如上所述,它是Authenticode签名格式。据我所知,我们的PKIBlackbox组件是唯一支持.NET中Authenticode(签名和验证)的组件。

相关问题