[好吧,我对bouncyCastle的加密世界来说还很陌生,也许是一个精神障碍,我似乎找不到(/ google)等效于:
X509Store store =
new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
我认为这可能是最简单,最愚蠢的事情,但是如何使用充气城堡访问Windows安装的证书?
或者,如果我不能,我该如何转换我的System.Security.Cryptography.X509Certificates.X509Certificate2
到Org.BouncyCastle.X509.X509Certificate
?
Bouncycastle无权访问Windows证书存储,这是Microsoft .NET类的角色。要在.NET证书及其等效Bouncycastle之间进行转换,请查看Org.BouncyCastle.Security.DotNetUtilities
类中的方法,尤其是ToX509Certificate
和FromX509Certificate
方法。
我使用以下方法将System.Security.Cryptography.X509Certificates.X509Certificate2
转换为Org.BouncyCastle.X509.X509Certificate
public static org.bouncycastle.x509.X509Certificate
convertToBCX509Certificate(X509Certificate2 cert) {
X509CertificateParser parser =
new X509CertificateParser(cert.Export(X509ContentType.Cert));
return parser.ReadCertificate();
}
初始化证书:
Org.BouncyCastle.X509.X509Certificate certificate = new Certificate...
然后:
System.Security.Cryptography.X509Certificates.X509Store CertificateStore = new System.Security.Cryptography.X509Certificates.X509Store(StoreName.CertificateAuthority, StoreLocation.LocalMachine);
CertificateStore.Open(OpenFlags.ReadWrite);
CertificateStore.Add(new System.Security.Cryptography.X509Certificates.X509Certificate2(certificate));
CertificateStore.Close();
伪代码,例如,由于我远离正在工作的Machine atm,因此,这应该很好用。