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

谢谢。秋惠

4

2 回答 2

1

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

有一个用于检查签名的 Windows API,CryptQueryObject()。也许还有一个.NET API,但显然没有:Arelated MSDN article with sample code to get revocation list also uses Windows API calls as it looks: How to get information from a CRL (.NET )起点,因为它实现了该函数的包装器)。

于 2010-09-27T06:57:18.897 回答
0

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

于 2010-09-27T07:38:16.067 回答