Almacén de Mozilla (Firefox)

La clase para tratar este tipo de dispositivo es: es.accv.arangi.device.MozillaKeyStoreManager.

Este almacén es el propio del navegador Firefox. Si se desea, la clase puede tratar los certificados que se encuentran en dispositivos PKCS#11 y que han sido configurados como dispositivos de seguridad en Firefox. Esta solución es una buena idea en sistemas Linux donde no se dispone del almacén de Windows para gestionar los certificados en tarjeta.

En el último año Mozilla ha generado nuevas versiones de Firefox cada pocos meses. Las librerías que tratan con el almacén de claves han sufrido diferentes cambios de una versión a otra, por lo que no se puede garantizar que Arangí funcione con futuras distribuciones de Firefox. Arangí ha sido probada con las versiones 8, 9 y 10 de Mozilla Firefox.

NOTA: Esta clase no es capaz de trabajar con Firefox en Mac OS X por problemas con las dependencias del módulo PKCS#11.

Aunque estas clases implementan la clase abstracta DeviceManager, no se han implementado aquellos métodos que suponen modificar el contenido de los almacenes de claves. Se tomó esa decisión debido a que en algunas ocasiones estas acciones provocaban efectos no deseados en el propio almacén.

A continuación se muestra un ejemplo de firma CMS utilizando un certificado instalado en el almacén de claves de Mozilla.

import es.accv.arangi.signature.CMSSignature;
...
MozillaKeyStoreManager manager = new MozillaKeyStoreManager (false);
FileDocument document = new FileDocument (new File ("c:/temp/a_firmar.txt"));
CMSSignature signature = CMSSignature.sign(new MozillaKeyStoreManager[] { manager }, document);

El parámetro pasado al constructor indica que utilizaremos tanto los certificados instalados en el almacén de claves de Firefox como los de las tarjetas cuyos módulos se encuentren dados de alta en el navegador.

Se puede observar como en ningún momento se indica el certificado que va a ser utilizado en la firma. Si se usa la clase de Arangí la búsqueda del certificado de firma se realizará en el siguiente orden: certificado de firma de ciudadano, certificado de empleado público, certificado de entidad y certificado del DNIe. Eso quiere decir que si en el almacén hay un certificado de firma de ciudadano y se quiere firmar con otro certificado presente de empleado público la acción no podrá ser realizada. Para estos casos, así como al utilizar los dispositivos de seguridad configurados en Firefox, es mejor utilizar las clases de firma de la librería base de Arangí, que permiten indicar el alias del certificado con el que se quiere firmar:

import es.accv.arangi.base.signature.CMSSignature;
...
MozillaKeyStoreManager manager = new MozillaKeyStoreManager (true);
FileDocument document = new FileDocument (new File ("c:/temp/a_firmar.txt"));
CMSSignature signature = 
        CMSSignature.sign(new MozillaKeyStoreManager[] { manager }, new String[] { CertificadoEmpleadoPublico.ALIAS_PKCS11 }, document, false);

El cliente de Arangí

Como es lógico el almacén de Mozilla sólo se utilizará en entornos cliente. Para facilitar la labor de tratar con los certificados guardados en los almacenes locales de claves se ha desarrollado el Cliente de Arangí. Puede ver más información pulsando aquí.