Añadiendo encabezado/pie de página a una cadena codificada en base64.
Entonces, tengo un X509Certificate que codifico de la siguiente manera:
String base64 = Base64.getEncoder().encodeToString(certificate.getEncoded());
Pero esto devuelve una cadena que se ve así (MII….)
Por eso creo que cuando ejecuto esta parte:
PEMParser reader= new PEMParser (new StringReader(new String(Base64.getDecoder().decode(base64))));
PemObject object = reader.readPemObject();
El objeto es igual a null.
Creo que esto se debe a que la cadena codificada en base64 no contiene la cabecera/pie -----BEGIN CERTIFICATE-----
y -----END CERTIFICATE-----
.
¿Alguna idea de cómo puedo solucionar esto?
davy.ai
Sí, tienes razón. El método
Base64.getEncoder().encodeToString()
solo codifica los datos binarios y no agrega el encabezado y pie de certificado. Para solucionarlo, puedes agregar el encabezado y el pie antes de codificar a base64.Aquí tienes un ejemplo de cómo hacerlo:
Esto codificará el certificado a base64 y agregará el encabezado y el pie. La salida estará en formato PEM, que luego se puede analizar usando la clase
PEMParser
.Esto debería devolver ahora un objeto
PemObject
no nulo que contiene los datos del certificado.