SDK viafirma platform

Firma en lote

Como parte de las distintas operaciones que se pueden llevar a cabo en viafirma platform, es posible realizar la firma simultánea de un conjunto de documentos (lote). La firma en lotes puede realizarse tanto desde una firma con intervención de usuario como en servidor, si intervención.

Preparación de la firma

Debemos indicarle a la SDK la operación que vamos a realizar una firma de un lote de documentos.

Java

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

// Documentos a firmar
byte[] datosAFirmarTXT = IOUtils.toByteArray(getClass().getResourceAsStream("/ejemplo.txt"));
byte[] datosAFirmarXML = IOUtils.toByteArray(getClass().getResourceAsStream("/prueba.xml"));
byte[] datosAFirmarPDF = IOUtils.toByteArray(getClass().getResourceAsStream("/exampleSign.pdf"));

// Indicamos a la plataforma que deseamos iniciar una firma en lote
String idLote = viafirmaClient.iniciarFirmaEnLotes(TypeFormatSign.XADES_EPES_ENVELOPED);

// Agregamos los documentos al lote
String idDoc1 = viafirmaClient.addDocumentoFirmaEnLote(idTemporalLote, "Documento 1.txt",TypeFile.TXT, datosAFirmarTXT);
String idDoc2 = viafirmaClient.addDocumentoFirmaEnLote(idTemporalLote, "Documento 2.xml",TypeFile.XML, datosAFirmarXML);
String idDoc3 = viafirmaClient.addDocumentoFirmaEnLote(idTemporalLote, "Documento 3.pdf",TypeFile.PDF, datosAFirmarPDF);

// Iniciamos la firma enviando al usuario a Viafirma indicando la uri de retorno.
viafirmaClient.solicitarFirma(idLote, request, response,"/viafirmaClientResponseServlet");

.Net

//Instanciamos el cliente
ViafirmaClient clienteViafirma = ViafirmaClientFactory.GetInstance();

// Documentos a firmar
Assembly assembly = Assembly.GetExecutingAssembly();
Stream fs = assembly.GetManifestResourceStream("ejemplo.txt");
byte[] datos_a_firmar1 = new byte[fs.Length];
fs.Read(datos_a_firmar1, 0, datos_a_firmar1.Length);

assembly.GetManifestResourceStream("/prueba.xml");
byte[] datos_a_firmar2 = new byte[fs.Length];
fs.Read(datos_a_firmar2, 0, datos_a_firmar2.Length);

assembly.GetManifestResourceStream("/exampleSign.pdf");
byte[] datos_a_firmar3 = new byte[fs.Length];
fs.Read(datos_a_firmar3, 0, datos_a_firmar3.Length);

// Generamos un id temporal de lote para añadir documentos en él
string idLote = clienteViafirma.iniciarFirmaEnLotes(typeFormatSign.XADES_EPES_ENVELOPED);

// Agregamos los documentos al lote
clienteViafirma.addDocumentoFirmaEnLote(idLote, "DocumentoEjemplo1.txt", typeFile.TXT, datos_a_firmar1);
clienteViafirma.addDocumentoFirmaEnLote(idLote, "DocumentoEjemplo2.xml", typeFile.XML, datos_a_firmar2);
clienteViafirma.addDocumentoFirmaEnLote(idLote, "DocumentoEjemplo3.pdf", typeFile.pdf, datos_a_firmar3);

// Firmamos
clienteViafirma.Sign(idLote);

En caso de tratarse de una firma en servidor, la inicialización de los parámetros será idéntica a la firma en cliente, únicamente varía la solicitud de firma, que sería de la siguiente forma:

Java

// Iniciamos la firma del lote en el servidor
String signId = viafirmaClient.signByServerEnLotes(idLote, certificateAlias, certificatePassword);

.Net

// Iniciamos la firma del lote en el servidor
string idFirma = clienteViafirma.signByServerEnLotes(idLote,certificateAlias, certificatePassword);