2011-09-05 51 views
2

我從PFX文件中提取公鑰時遇到問題。我使用的第一件事是X509Certificate2。然而,以這種方式接收到的公鑰是加密的,我想讓這個密鑰與 InternalsVisibleTo Attribute兼容 - 在示例部分有一個這樣的密鑰的樣本。有沒有辦法以兼容的形式提取這個鍵(與InternalsVisibleTo兼容)。從pfx文件中提取公鑰(Assembly a like)

+0

你想驗證Authenticode簽名或什麼?如果您需要驗證authenticode,那麼驗證過程與比較公鑰不同。它涉及(a)檢查簽名,和(b)驗證證書。 –

+0

嗨尤金。我正在嘗試獲取公鑰,因爲我需要編寫自動將InternalsVisibleTo屬性添加到AssemblyInfo文件的過程。不幸的是,當我沒有* .proj生成的程序集時,我需要考慮場景,但是我有一個pfx來簽署這個程序集(並且幫助我想提取這個公鑰)。 – MichaelMocko

+0

可以使用密鑰對(使用sn.exe進行.NET簽名)並使用Authenticode(在這種情況下可以涉及PFX文件)對程序集進行簽名。你正在尋找的是.NET簽名,但它不涉及PFX。所以這裏有一些關於這個過程的混淆。 –

回答

2

它的只是格式問題,即X509Certificate2應該返回您解密的公鑰(或失敗,例如錯誤的密碼)。

我建議您遵循Mono對強名稱程序集的規定,即它自己的sn工具。雖然Mono的sn.exe不能直接讀取PKCS#12文件,但它可以從密鑰容器中讀取,因此在這兩種情況下,您最終都會得到一個RSACryptoServiceProvider

只要鑽入source代碼,它都是C#並且不是很長,並且您會在那裏找到您需要的內容(或者在涉及的少數幫助程序類之一中)。

+0

就是這樣。公鑰從X509Certificate2需要被轉換爲InternalsVisibleTo可接受的。通過sn.exe(單聲道)和通過[StrongName]源(https://github.com/mono/mono/blob/master/mcs/class/Mono.Security/Mono.Security/StrongName.cs)進行挖掘。和[CryptoConvert](https://github.com/mono/mono/blob/master/mcs/class/Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs)幫助了我的情況。萬分感謝。 – MichaelMocko