SDK viafirma platform

Upgrade de firma XAdES

La plataforma permite realizar la actualización de una firma a un formato superior, por ejemplo podemos pasar de una firma XAdES_BES a una firma XAdES_A

El método a utilizar para realizar esta acción es:

Java

viafirmaClient.upgradeSignature(pol, documento);

Un ejemplo de integración utilizando este método es el siguiente:

Java

ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();

Policy pol = new Policy();
pol.setTypeFormatSign(TypeFormatSign.XADES_A_ENVELOPED);
pol.setTypeSign(TypeSign.ENVELOPED);

byte[] documentToUpgrade = getDocumentToUpgrade();
Documento documento = new Documento("original.pdf", documentToUpgrade, TypeFile.XML, TypeFormatSign.XADES_BES);

idFirma_A = viafirmaClient.upgradeSignature(pol, documento);
byte[] xades_XL_upgraded_to_A = viafirmaClient.getDocumentoCustodiado(idFirma_A);

En la primera línea del snippet de código se instancia el cliente de viafirma.

A continuación se crea el objeto 'Policy' en el que se configurará el formato de firma al que actualizar, este formato tiene que ser del mismo tipo y con un nivel superior a la firma con la que está firmado el documento, en este caso utilizaremos un formato XAdES_A, se informará también el tipo de envoltura que deberá coincidir con la de la firma previa, en este caso usamos ENVELOPED.

Seguidamente se crea el objeto 'Documento' cuyos parámetros son:

  • String con el nombre del documento (incluir también la extensión del documento)
  • byte[] del documento al que le queremos realizar el upgrade
  • 'TypeFile' del documento
  • 'TypeFormatSign' con el que está firmado el documento actualmente

En la siguiente línea se hace uso del método upgradeSignature(pol, documento) donde se tiene que pasar como parámetros el objeto 'Policy' y el objeto 'Documento' que creamos anteriormente. Este método nos devuelve un String con el id de firma y que, con la última linea del snnipet de código, obtenemos el byte[] del documento con la firma actualizada.

Existe una forma específica de realizar el resellado de firmas XAdES_XL o XAdES_A que podemos considerar un tipo especial de upgrade de firma (también se puede realizar el resellado con el método anterior)

Java

byte[] viafirmaClient.xadesAResign(byte[] XL_or_A);

La peculiaridad sobre este método es que solo se pueden indicar documentos firmados en XAdES_XL y XAdES_A además de obtener como resultado el byte[] del documento firmado y no el id de firma, por lo que, utilizando este método, el documento no es custodiado por el servidor de viafirma platform, deberá ser el integrador el encargado de guardar el documento donde considere oportuno.