JcaX509CertificateConverter set无法找到所需的提供者没有这样的提供者BC

时间:2013-11-22 12:02:53

标签: java bouncycastle

我不明白为什么BC在setProvider(“BC”)中没有被识别为提供者。我已经下载了最新的bouncycastle hier http://www.bouncycastle.org/latest_releases.html成功导入了它。但是,当我运行以下代码时:

X509Certificate crt=(X509Certificate)(new JcaX509CertificateConverter().setProvider("BC").getCertificate(crthold)); 

我得到了一个例外,即找不到提供商BC。

有没有人知道如何解决这个问题? 以下是我收到的错误消息

org.bouncycastle.cert.jcajce.JcaX509CertificateConverter$ExCertificateException: cannot find required provider:no such provider: BC
at org.bouncycastle.cert.jcajce.JcaX509CertificateConverter.getCertificate(Unknown Source)
at client.ClientService.genCert(ClientService.java:399)

2 个答案:

答案 0 :(得分:5)

我刚刚添加了BouncyCastleProvider的实例而不是BC,它运行得很好。我正在为那些可能在同一情况下有一天的人添加答案:

X509Certificate crt=(X509Certificate)(new JcaX509CertificateConverter().setProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()).getCertificate(crthold));

答案 1 :(得分:1)

您需要install the Bouncy Castle provider才能按名称检索它。这可以通过java.security属性文件或通过以下方法调用来完成:

Security.addProvider(new BouncyCastleProvider());

然后,您可以BouncyCastleProvider.PROVIDER_NAME引用此提供商。