Documentos

Las clases que implementan los tipos de documento se encuentran en es.accv.arangi.base.document.

Para firmar en Arangí es necesario determinar qué es lo que hay que firmar. En la mayoría de los casos se utilizan para este fin clases que implementan la interfaz IDocument:

  • FileDocument: el documento es un fichero en disco.
  • ByteArrayDocument: el documento es un array de bytes.
  • InputStreamDocument: el documento se obtiene a través de un stream de lectura.
  • URLDocument: el documento se encuentra en una URL. En este caso hay que tener cuidado con la accesibilidad de la URL desde donde se esté ejecutando la aplicación: comunicación SSL, proxies, firewalls, etc.

Si en algún momento se quisiera utilizar otro tipo de documento sólo habría que realizar la clase implementando la interfaz, que consta de los siguientes métodos:

  • getHash(): obtiene el hash (digest) del documento en SHA-1.
  • getHash(String hashingAlgorithm): obtiene el hash (digest) del documento según el algoritmo pasado como parámetro.
  • getInputStream(): obtiene un stream de lectura al documento.

Ejemplos

Al firmar es necesario en todos los casos determinar el documento a firmar y el dispositivo que contiene la clave privada que realizará la firma. En los siguientes ejemplos se ha obviado la inicialización del dispositivo (pueden verse ejemplos en el apartado de dispositivos).

Firma CMS realizada sobre un fichero.

FileDocument document = new FileDocument (new File ("c:/temp/a_firmar.txt"));
CMSSignature signature = CMSSignature.sign(managers, document);

Firma CMS realizada sobre un array de bytes. Dicho array se consigue con la clase de utilidades.

ByteArrayDocument document = new ByteArrayDocument (Util.loadFile(new File ("c:/temp/a_firmar.txt")));
CMSSignature signature = CMSSignature.sign(managers, document);