繁体   English   中英

我怎样才能在 bouncyCastle 中做到这一点(获取已安装的证书)?

[英]How can I do that in bouncyCastle (get installed certificates)?

好的,我对 bouncyCastle 的加密世界很陌生,也许是一个心理障碍,我似乎找不到(/google for)相当于:

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 class 中的方法,特别是ToX509CertificateFromX509Certificate方法。

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

伪代码,作为一个例子,因为我远离我的工作机器 atm,但是,这应该可以很好地工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM