Promoción (upgrade) de firma

Como parte de las distintas operaciones que se pueden llevar a cabo en viafirma platform, es posible realizar la promoción de firmas para los distintos formatos de firmas conocidos, de ésta forma resulta muy sencillo realizar, por ejemplo, la promoción de una firma XAdES BES a XAdES XL y luego dicha firma XAdES XL promocionarla a XAdES A.

Preparación de la firma

En el siguiente ejemplo se realiza una firma XAdES BES en servidor de un documento XML, luego se recupera el documento firmado para promocionar su firma a XAdES A.

Java

//Instanciamos el cliente
ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();

// Datos documento a firmar
byte[] datosAFirmar = IOUtils.toByteArray(getClass().getResourceAsStream("/prueba.xml"));

Policy pol = new Policy();
pol.setTypeFormatSign(TypeFormatSign.XADES_BES);
Documento documento = new Documento("original.xml", datosAFirmar, TypeFile.XML, TypeFormatSign.XADES_BES);

// Iniciamos la firma enviando alias y pass
String idFirma = ViafirmaClientFactory.getInstance().signByServerWithPolicy(pol, documento, alias, pass);

pol = new Policy();
pol.setTypeFormatSign(TypeFormatSign.XADES_A_ENVELOPED);
documento = new Documento("signed.xml", viafirmaClient.getDocumentoCustodiado(idFirma), TypeFile.XML, TypeFormatSign.XADES_A_ENVELOPED);

// Se promociona la firrma previa XAdES BES al formato XAdES A
viafirmaClient.upgradeSignature(pol, documento);

Existen igualmente métodos específicos para la promoción de firmas PAdES y XAdES.

En el caso de las firmas PAdES, las mismas pueden promocionarse utilizando el método addPadesLTV, tal y como se muestra a continuación:

Java

//Instanciamos el cliente
ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();

// Datos documento a firmar
byte[] signedPdf = IOUtils.toByteArray(getClass().getResourceAsStream("/toupgrade.pdf"));

String signId = viafirmaClient.addPadesLTV(signedPdf);

Para la promoción de firmas XAdES al formato XAdES A se puede utilizar el método xadesAResign como se muestra a cotinuación:

Java

//Instanciamos el cliente
ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();

// Datos documento a firmar
byte[] signedXml = IOUtils.toByteArray(getClass().getResourceAsStream("/toupgrade.xml"));

byte[] xadesAResigned = viafirmaClient.xadesAResign(signedXml);

A partir de la versión 2.17.0 del SDK Java se sobrecarga este método, devolviendo un ID de firma, tal cual como se muestra a continuación:

Java

//Instanciamos el cliente
ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();

// Datos documento a firmar
byte[] signedXml = IOUtils.toByteArray(getClass().getResourceAsStream("/toupgrade.xml"));
Documento xmlDoc = new Documento();
xmlDoc.setDatos(signedXml);
xmlDoc.setTypeFormatSign(TypeFormatSign.XADES_A_ENVELOPED);
String xadesAResignedId = viafirmaClient.xadesAResign(xmlDoc);
byte[] xadesAResealed = viafirmaClient.getDocumentoCustodiado(xadesAResignedId);

Este método tiene como peculiaridad que solamente se pueden promocionar documentos previamente firmados en XAdES XL y/o XAdES A, además de obtener como resultado el byte[] del documento firmado y no el identificador de firma, por lo que, utilizando este método, el documento no es custodiado por el servidor de Viafirma Platform, sino que deberá ser el integrador el encargado de guardar el documento donde considere oportuno.

results matching ""

    No results matching ""