Bouncycastle: X509CertificateHolder to X509Certificate?

蹲街弑〆低调 提交于 2019-11-27 14:19:53

问题


In versions prior to r146 it was possible to create X509Certificate objects directly. Now that API is deprecated and the new one only deliveres a X509CertificateHolder object.

I cannot find a way to transform a X509CertificateHolder to X509Certificate.

How can this be done?


回答1:


I will answer to my own questions, but not delete it, in case someone else got the same problems:

return new JcaX509CertificateConverter().setProvider( "BC" )
  .getCertificate( certificateHolder );

And for attribute certificates:

return new X509V2AttributeCertificate( attributeCertificateHolder.getEncoded() );

Not nice, as it is encoding and decoding, but it works.




回答2:


Another option is this one :)

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



回答3:


This is an possibility to get the X509CertificateHolder to X509Certificate and toString. (first sentence of the code is irrelevant)

X509CertificateHolder selfSignedCertificate = CertificateUtils.selfSignCertificate(certificationRequest, keyPair.getPrivate());
byte[] content = selfSignedCertificate.getEncoded();
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) certificateFactory.generateCertificate(new ByteArrayInputStream(content));
logger.debug("cert: {}", cert.toString());

........



来源:https://stackoverflow.com/questions/6370368/bouncycastle-x509certificateholder-to-x509certificate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!