Bouncycastle: X509CertificateHolder to X509Certificate?

Solution 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.

Solution 2:

Another option is this one :)

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