2012-05-11 197 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