2011-07-01 18 views
4

好吧,我是很新的BouncyCastle的的加密世界,也許是一個心理障礙,我似乎無法找到(/谷歌的)相當於:如何在bouncyCastle中執行此操作(獲取已安裝的證書)?

X509Store store = 
new X509Store(StoreName.My, StoreLocation.CurrentUser); 
store.Open(OpenFlags.ReadOnly); 

我想這可能是最簡單和最愚蠢的事情,但我怎樣才能使用彈性城堡訪問安裝了Windows的證書?

或者,如果我不能,我怎麼能轉換我System.Security.Cryptography.X509Certificates.X509Certificate2Org.BouncyCastle.X509.X509Certificate

回答

9

Bouncycastle無權訪問Windows證書存儲區,這就是Microsoft .NET類的作用。要在.NET證書和它們的Bouncycastle等效項之間進行轉換,請查看Org.BouncyCastle.Security.DotNetUtilities類中的方法,特別是ToX509CertificateFromX509Certificate方法。

+0

真棒,伴侶。非常感謝你!如果我能給我兩個ups –

+0

我有一個密碼保護的證書。我從X509Store獲得了這個證書。當我試圖使用DotNetUtilities.GetKeyPair(cert.PrivateKey)轉換密鑰對時,出現錯誤 「密鑰在指定狀態下無效」。 –

1

我轉換System.Security.Cryptography.X509Certificates.X509Certificate2Org.BouncyCastle.X509.X509Certificate使用以下方法

public static org.bouncycastle.x509.X509Certificate 
     convertToBCX509Certificate(X509Certificate2 cert) { 

    X509CertificateParser parser = 
      new X509CertificateParser(cert.Export(X509ContentType.Cert)); 
    return parser.ReadCertificate(); 

}