SDK viafirma platform

Obtener PEM de un certificado después de una autenticación o firma

Con el siguiente código hacemos que en la respuesta de la autenticación (cuando es válida) nos devuelva el certificado X509 en formato pem:

Java

ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();
viafirmaClient.addOptionalRequest(OptionalRequest.PEM_X509);

// Iniciamos la autenticación indicando la uri de retorno.
viafirmaClient.solicitarAutenticacion(request, response,"/viafirmaClientResponseServlet");

//Para recuperarlo en el método del servlet de vuelta  authenticateOK(UsuarioGenericoViafirma, HttpServletRequest, HttpServletResponse)  haremos lo siguiente:

String pem = usuarioGenericoViafirma.getProperties().get("pem")

//Para convertir ese PEM a un X509Certificate se puede utilizar un código como el siguiente (ya teniendo la variable 'pem'):

java.security.cert.CertificateFactory cf = java.security.cert.CertificateFactory.getInstance("X509");
java.security.cert.X509Certificate x509 = cf.generateCertificate(new java.io.ByteArrayInputStream(pem.getBytes()));

El resultado es que la variable pem es un string con el certificado en formato .pem. El valor de este string debería de ser algo parecido a esto:

MIIFbDCCBFSgAwIBAgIIP+3SprFWtmwwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UE BhMCRE8xGjAYBgNVBAcMEVdXVy5BVkFOU0kuQ09NLkRPMSYwJAYDVQQKDB1BVkFO U0kgUy5SLkwuIC0gUk5DIDEzMDIyMjUwOTEmMCQGA1UEAwwdQVZBTlNJIENFUlRJ RklDQURPUyBESUdJVEFMRVMwHhcNMTUwNDA4MDgxMTQxWhcNMTcwNDA3MDgxMTQx WjCBlTELMAkGA1UEBhMCRE8xEzARBgNVBAQMCkRFVkVMT1BFUlMxETAPBgNVBCoM CFZJQUZJUk1BMQ0wCwYDVQQFEwQyMjU1MRwwGgYDVQQDDBNWSUFGSVJNQSBERVZF TE9QRVJTMTEwLwYKKwYBBAGB1gMIAQwhQ0VSVElGSUNBRE8gREUgUEVSU09OQSBJ TkRJVklEVUFMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvQUEmTVM ViO3K1rzYu4eL4QarT3sLw7iyqGINY/cDxTQBl/iBQiRfNkHaFoa66rr145Lgc0/ wbTDR/Yllfy9nfaKXCdSs3kGp6Zty2Nv1a4zRPsKmQdcWAWdwjBXrylaKtd9tdnc JN5xVvaesSVK/q1l/CU4lyhlRZBDiSikzV/B+f2IzHdKx0X3PHA7ehWYblZOXcec Va6MFijlkZ+smCkHEb98lAavUxXpu0oHwDMT6bYGCU6VcrNSeffAqmAT+P60FtVV DyT5BEVZoJNxlVGwVhcvNBQxhFkEnfB1m/Q+boMLZO1lJNovEo4OElNYXYigqkpl iZfztBtClr1wiQIDAQABo4IB2TCCAdUwNQYIKwYBBQUHAQEEKTAnMCUGCCsGAQUF BzABhhlodHRwOi8vb2NzcC5hdmFuc2kuY29tLmRvMB0GA1UdDgQWBBRs7PQLmuoj xRCUbiIHIiKosIEpaDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFCHCDuOFfstM EU4JWywVimxAHg7hMIGVBgNVHSAEgY0wgYowgYcGCysGAQQBgdYDBgIEMHgwJAYI KwYBBQUHAgEWGGh0dHA6Ly9jcHMuYXZhbnNpLmNvbS5kbzBQBggrBgEFBQcCAjBE HkIAQwBFAFIAVABJAEYASQBDAEEARABPACAARABFACAAUABFAFIAUwBPAE4AQQAg AEkATgBEAEkAVgBJAEQAVQBBAEwwZgYDVR0fBF8wXTAsoCqgKIYmaHR0cDovL2Ny bC5hdmFuc2kuY29tLmRvL2F2YW5zaXN1Yi5jcmwwLaAroCmGJ2h0dHA6Ly9jcmwy LmF2YW5zaS5jb20uZG8vYXZhbnNpc3ViLmNybDAOBgNVHQ8BAf8EBAMCA/gwHQYD VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB8GA1UdEQQYMBaBFFNPUE9SVEVA VklBRklSTUEuQ09NMA0GCSqGSIb3DQEBBQUAA4IBAQBXM27tsgtsmXxiasef3bv9 nSP+cQBZCufUIf9kzi9kYHzMa0L7xK5GMG9kvD/SJRH7bM+gEUhSayhzCiCgNqMU nSLp7lD8uM0T5u1Glshcb66/P6RrLbD1XUEWLq+lJMY+2WSuk3xnEIFLBD8Kre52 98OVmKJrVHCPf8rpJGH4FedlXDpRCnrJ4pHK/ewZFWYEBvfHipmNP99GkjdSSZXD zg9h5DdpQlMPKcZFHCBZu3lcwZiDwGUN1ZNaH4ZU9L9hs4AFzARWnMD9yUvWsAvZ OcTvExZka3fePcbVYsFsQWtklmJpy86+gjuYQEpogK+H2X1d2hPtFf/d7slu3RpZ

Para firma utilizamos el mismo método addOptionalRequest con el mismo resultado.