Bouncycastle:X509CertificateHolder到X509Certificate?

Ste*_*eil 38 bouncycastle certificate deprecated x509

在r146之前的版本中,可以X509Certificate直接创建对象.现在该API已弃用,新的​​API仅提供X509CertificateHolder对象.

我找不到将a转换为的X509CertificateHolder方法X509Certificate.

如何才能做到这一点?

Ste*_*eil 71

我会回答我自己的问题,但不要删除它,以防其他人遇到同样的问题:

return new JcaX509CertificateConverter().setProvider( "BC" )
  .getCertificate( certificateHolder );
Run Code Online (Sandbox Code Playgroud)

对于属性证书:

return new X509V2AttributeCertificate( attributeCertificateHolder.getEncoded() );
Run Code Online (Sandbox Code Playgroud)

不好,因为它是编码和解码,但它的工作原理.

  • 我认为您应该删除`.setProvider(“ BC”)`方法调用,因为它不是严格要求的。 (3认同)

Die*_*mar 5

另一种选择是这个:)

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream in = new ByteArrayInputStream(certificateHolder.getEncoded());
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(in);
Run Code Online (Sandbox Code Playgroud)