2012-05-11 109 views
8

我正在编写一个程序集信息应用程序,用于我们的软件构建过程,并试图从已签名的.Net程序集中读取数字签名信息。如何从已签名的.Net程序集中读取数字签名信息?

我想通过右键单击已签名的程序集并选择“数字签名”选项卡,然后单击“详细信息”按钮,在我的C#代码中执行Windows资源管理器的操作。例如

Windows 7 Explorer can do by right-clicking file properties

Digital signature details

有没有人有一个想法如何在C#编程方式做到这一点?我目前使用Mono Cecil library来从程序集中获取其余的信息。我们将非常感谢您的帮助。

+1

您显示的是'Authenticode'签名,适用于所有PE文件。还有'strongnaming',.NET特定的签名格式。强化是使用密钥对而不是证书来完成的,因此你不能从强名称组合中提取任何有用的信息。在StackOverflow上搜索'Authenticode'会为你提供大量有用的信息。 –

+1

[可能](http://stackoverflow.com/questions/301024/validate-authenticode-signature-on-exe-c-without-capicom)[相关](http://stackoverflow.com/questions/3281057/get -time-stamp-time-sign-in-net)问题。 – shambulator

+1

可能重复[如何从已签名的C#exe文件读取公钥](http://stackoverflow.com/questions/3722610/how-do-i-read-the-public-key-from-a-signed -c-sharp-exe) –

回答

5

Mono项目提供了signcodechktrust的源代码,您可以在自己的应用程序(开源,MIT X11许可)内重复使用该源代码。

两者都使用Mono.Security.dll程序集(它在Windows下工作,不仅仅是Linux和OSX)并且包含一个相当complete Authenticode support