2010-09-27 70 views
4

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

谢谢。 Akie

+0

按照更新解决。 – Akie 2010-09-28 06:06:47

回答

0

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

+0

这个免费的替代方案当然是制作Windows API的包装。 – Archimedix 2010-09-27 09:04:26

+0

@Archimedix当然,可以使用P/Invoke,但主要任务不是检查签名,而是*正确*验证证书。证书验证是非常复杂的过程(涉及检查CRL,OCSP服务器,验证次要证书链等)。而且没有可用的.NET OCSP客户端(除了我们的PKIBlackbox)。 – 2010-09-27 09:09:58

相关问题