SDK viafirma platform

Firma sin intervención de usuario

La diferencia principal de este tipo de firma con la que intervienen los usuarios, es que en esta el usuario no interviene para seleccionar el certificado con el cual se va a realizar la firma. El certificado firmante debe estar previamente configurado en el servidor para poder realizar correctamente este tipo de firmas.

Solicitar la firma

En este tipo de firmas, no es necesario preparar la firma, ya que desde el principio del inicio de la operación tenemos identificado el certificado con el cual vamos a realizarla. Por lo tanto ejecutamos directamente el método de firma con las políticas, el documento a a firmar, el alias y contraseña del certificado firmante.

El certificado firmante debe estar instalado previamente en el almacén de certificados configurado en viafirma platform.

Java

// Alias del certificado instalado
final String alias="alias_cert";
// Contraseña del certificado instalado
final String pass="pass_cert";

//Recuperar la instancia iniciada de viafirma client
ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();

//Formato de firma
TypeFormatSign format = TypeFormatSign.PAdES_BASIC;
TypeFile typeFile = TypeFile.PDF;
TypeSign typeSign = TypeSign.ENVELOPED;
String nameDoc = "doc.pdf";

//Configuración de la política de firma
Policy policy = new Policy();
policy.setTypeFormatSign(format);
policy.setTypeSign(typeSign);

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

//Generar el objeto Documento con los datos a firmar
Documento documento = new Documento(nameDoc, datosAFirmar, typeFile, format);

//Firma en servidor
String idFirma = ViafirmaClientFactory.getInstance().signByServerWithPolicy(policy, documento, alias, pass);

.Net

// Alias del certificado instalado
String alias="alias_cert";
// Contraseña del certificado instalado
String pass="pass_cert";

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

//Formato de firma
typeFormatSign format = typeFormatSign.PAdES_BASIC;
typeFile typeFile = typeFile.PDF;
typeSign typeSign = typeSign.ENVELOPED;
String nameDoc = "doc.pdf";

//Configuración de la política de firma
policy pol = PolicyUtil.newPolicy(format, typeSign);

// Datos 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);

//Generar el objeto Documento con los datos a firmar
documento doc = new documento();
doc.nombre = nameDoc;
doc.datos = datos_a_firmar;
doc.typeFormatSign = typeSign;
doc.tipo = typeFile.PDF;

//Firma en servidor
string idFirma = clienteViafirma.SignByServerWithPolicy(pol,doc, Global.ALIAS, Global.PASS_CERT);

En este tipo de firmas vemos que no es necesario procesar la respuesta del servidor, ya que no interviene ningún usuario en su proceso. La respuesta del servidor es inmediata, y el método que invoca a la firma devuelve directamente el identificador de la misma, el cual podremos usar para recuperar la información relativa a la misma.

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 firma. Este parámetro de política de firma y otras más, se detallan en el apartado de Policy.