SDK viafirma platform

Firma con intervención de usuario

Como parte de las distintas operaciones que se pueden llevar a cabo en viafirma platform, desde las sdk podremos invocar métodos con parámetros de configuración para realizar una firma con intervención de usuario (firma en cliente) con la aplicación que deseemos integrar.

Preparación de la firma

Antes de invocar a la página de selección de certificados, debemos indicarle a la SDK la operación que vamos a realizar y las diferentes opciones de firma que deseamos llevar a cabo.

Java

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

//Tipo de formato de firma
TypeFormatSign format = TypeFormatSign.PAdES_BASIC;
//Tipo de fichero a firmar
TypeFile typeFile = TypeFile.PDF;
//Tipo de firma
TypeSign typeSign = TypeSign.ENVELOPED;

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

//Creamos la política de firma definiendo los valores obligatorios mínimos
Policy policy = new Policy();
policy.setTypeFormatSign(format);
policy.setTypeSign(typeSign);

//Generamos el objeto documento, donde incluiremos el byte[] del fichero a firmar
Documento documento = new Documento("firmado.pdf", datosAFirmar, typeFile, format);

// Este método será el encargado de avisar a viafirma platform de que estamos preparando una firma, donde le pasamos las políticas de la misma y el documento a firmar
// Este identificador temporal no es necesario que sea almacenado ya que sólo tiene validez durante el proceso de firma.
String idTemporalFirma=viafirmaClient.prepareSignWithPolicy(policy, documento);

.Net

//Recuperamos la instancia del cliente
ViafirmaClient clienteViafirma = ViafirmaClientFactory.GetInstance();

//Tipo de formato de firma
typeFormatSign format = typeFormatSign.PAdES_BASIC;
//Tipo de fichero a firmar
typeFile typeFile = typeFile.PDF;
//Tipo de firma
typeSign typeSign = typeSign.ENVELOPED;

// Recuperamos el documento a firmar.
Assembly assembly = Assembly.GetExecutingAssembly();
Stream fs = assembly.GetManifestResourceStream("EjemploWebViafirmaClientDotNet.resources.exampleSign.pdf");
byte[] datos_a_firmar = new byte[fs.Length];
fs.Read(datos_a_firmar, 0, datos_a_firmar.Length);

//Creamos la política de firma definiendo los valores obligatorios mínimos
policy pol = PolicyUtil.newPolicy(typeFormatSign.PAdES_BASIC, typeSign.ATTACHED);

//Creamos el objeto documento con los datos a firmar
documento doc = new documento();
doc.nombre = "firmado.pdf";
doc.datos = datos_a_firmar;
doc.typeFormatSign = format;
doc.tipo = typeFile;

// Registramos el documento que deseamos firmar. Obteniendo un identificador temporal.
// Este identificador temporal no es necesario que sea almacenado ya que sólo tiene validez durante el proceso de firma.
string idTemporalFirma = clienteViafirma.PrepareSignWithPolicy(pol, doc);

Políticas de firma

En todos los casos, a la política de firma (policy) le podemos añadir diferentes opciones de firma; como puede ser, por ejemplo, filtrar los certificados a mostrar a la hora de seleccionar uno para realizar el proceso de firmado. Este parámetro de política de firma y otras más, se detallan en el apartado de Policy.

Peticiones opcionales

Existen parámetros que se le pueden pasar de manera opcional a la plataforma de viafirma platform para modificar el comportamiento de la operación. Se detallan en el apartado Optional Request.

Solicitar firma

Con el identificador temportal de firma (idTemporalFirma) que se ha obtenido en la operación de preparación de firma, podemos solicitar la operación de firma, la cual mostrará las distintas aplicaciones disponibles para seleccionar el certificado con el que realizar la firma.

Java

//Solicitamos la firma
viafirmaClient.solicitarFirma(idTemporal,request, response,
"/viafirmaClientResponseServlet");

La plataforma validará y tratará el certificado del cliente y retornará el resultado de la firma a la aplicación cliente que estamos desarrollando. En el ejemplo le indicamos a viafirma platform que la url de retorno (donde viafirma debe mandarnos el resultado de la firma) es /viafirmaClientResponseServlet .

En esta ubicación la aplicación que estamos integrando deberá tener un un servlet escuchando la respuesta que nos retornará viafirma platform para su correspondiente procesado. Podemos encontrar un ejemplo de ese servlet en la aplicación de ejemplo, donde, en este caso, el método signOK es el que recuperaría los datos de la firma. En el subapartado de procesar respuesta firma Java se explica detalladamente cada método.

.Net

// Iniciamos el proceso de firma redireccionando al usuario a Viafirma..
clienteViafirma.Sign(idTemporalFirma);

Con este simple código ya conseguimos que nuestra aplicación ASP.NET utilice viafirma platform para que sea ésta la responsable de solicitar, validar, recuperar el certificado del usuario y firmar.

Una vez que el proceso termine, viafirma platform devolverá el control a la aplicación ASP.NET retornando todos los datos de la firma.

Una vez que viafirma platform obtenga los datos de la firma, invocará al método ProcessResponseSign, que se encuentra en el fichero Default.aspx dentro del directorio viafirma. Lo único que tendremos que hacer es sobreescribir dicho método con el comportamiento deseado y recuperar todos los datos de firma. Podemos encontrar un ejemplo del fichero Default.aspx en la aplicación de ejemplo. En el subapartado de procesar respuesta firma .Net se explica detalladamente cada método.