我不明白为什么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)
答案 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
引用此提供商。