我如何在bouncyCastle中进行此操作(获取已安装的证书)?

问题描述 投票:5回答:3

[好吧,我对bouncyCastle的加密世界来说还很陌生,也许是一个精神障碍,我似乎找不到(/ google)等效于:

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

我认为这可能是最简单,最愚蠢的事情,但是如何使用充气城堡访问Windows安装的证书?

或者,如果我不能,我该如何转换我的System.Security.Cryptography.X509Certificates.X509Certificate2Org.BouncyCastle.X509.X509Certificate

c# x509certificate bouncycastle
3个回答
10
投票

Bouncycastle无权访问Windows证书存储,这是Microsoft .NET类的角色。要在.NET证书及其等效Bouncycastle之间进行转换,请查看Org.BouncyCastle.Security.DotNetUtilities类中的方法,尤其是ToX509CertificateFromX509Certificate方法。


1
投票

我使用以下方法将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();

}

0
投票

初始化证书:

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,因此,这应该很好用。

© www.soinside.com 2019 - 2024. All rights reserved.