certificate - org - bouncy castle java
Bouncycastle: X509CertificateHolder a X509Certificate? (3)
En versiones anteriores a r146, era posible crear objetos X509Certificate
directamente. Ahora que la API está en desuso y la nueva solo entrega un objeto X509CertificateHolder
.
No puedo encontrar una forma de transformar un X509CertificateHolder
a X509Certificate
.
¿Cómo puede hacerse esto?
Esta es una posibilidad de obtener X509CertificateHolder
a X509Certificate
y toString
. (La primera frase del código es irrelevante)
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());
........
Otra opción es esta :)
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream in = new ByteArrayInputStream(certificateHolder.getEncoded());
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(in);
Responderé a mis propias preguntas, pero no las eliminaré, en caso de que alguien más tenga los mismos problemas:
return new JcaX509CertificateConverter().setProvider( "BC" )
.getCertificate( certificateHolder );
Y para certificados de atributos:
return new X509V2AttributeCertificate( attributeCertificateHolder.getEncoded() );
No es agradable, ya que es codificación y decodificación, pero funciona.