使用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());
感谢。 秋江
答案 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(签名和验证)的组件。