Extraer certificado firmante de una firma CMS/CAdES
En el siguiente ejemplo obtenemos el primer certificado (será de tipo X509CertificateHolder) de almacén del CMS firmado, que será el certificado firmante y lo convertimos a X509Certificate para, de él, extraer la PublicKey.
Java
//recuperamos el cms firmado
byte[] signed = ViafirmaClientFactory.getInstance().getDocumentoCustodiado(idFirma);
//Lo convertimos al tipo CMSSignedData
CMSSignedData cms = new CMSSignedData(signed);
//Obtenemos el almacen donde estan los certificados
Store store = cms.getCertificates();
// Obtenemos un Iterator para recorrerlos.
// Pasando null en getMatches(...) se recuperan todos los certifcados, el tipo para cada cert será X509CertificateHolder
Iterator i = store.getMatches(null).iterator();
// El primer elemento del iterador se corresponde siempre con el certificado firmante, el resto serán la cadena de confianza
ByteArrayInputStream certBytes = new ByteArrayInputStream(((org.bouncycastle.cert.X509CertificateHolder)i.next()).getEncoded());
//Convertimos a X509Certificate
X509Certificate x509 = (X509Certificate)(CertificateFactory.getInstance("X509").generateCertificate(certBytes));
//Obtenemos la clave publica
PublicKey pubKey = x509.getPublicKey();
results matching ""
No results matching ""