Almacenes de claves de Windows

Las clases para tratar este tipo de dispositivo son: es.accv.arangi.device.PersonalWindowsKeyStoreManager y es.accv.arangi.device.CAWindowsKeyStoreManager.

Los sistemas operativos Windows disponen de dos almacenes de claves para gestionar los certificados instalados directamente por los usuarios y aquellos propagados desde dispositivos externos como las tarjetas criptográficas. Éstos dos almacenes son:

  • Almacén de certificados personales: se guardan todos los certificados finales.
  • Almacén de certificados de Autoridades de Certificación: se guardan los certificados raíz de Autoridades de Certificación.

Lo más habitual es que se trabaje con el almacén de certificados personales, pero puede haber algún caso en que interese conocer los certificados de Autoridades de Certificación que tiene instalados el usuario.

IMPORTANTE: estas clases sólo funcionan con una versión superior o igual a Java 1.6.

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 personal de Windows.

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

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 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;
...
PersonalWindowsKeyStoreManager manager = new PersonalWindowsKeyStoreManager ();
FileDocument document = new FileDocument (new File ("c:/temp/a_firmar.txt"));
CMSSignature signature = CMSSignature.sign(new PersonalWindowsKeyStoreManager[] { manager }, new String[] { "EPN1" }, document, false);

El cliente de Arangí

Como es lógico el almacén de Windows 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í.