20110601

Adaptación de la aplicación eCoFirma a Mac OS X 10.6.7

Tal y como vimos que sucedía con la aplicación de cambio de PIN del DNIe, parece que, en algunos casos, el soporte de la administración española a los usuarios de sistemas operativos distintos de Windows es más bien escaso.
Hoy vamos a ver varias maneras de hacer utilizable la aplicación eCoFirma de firma de documentos, que se puede obtener oficialemente desde aquí:
en la web del Ministerio de Industria, Turismo y Comercio.
Si seguimos los pasos naturales para usar la aplicación tal y como está, al menos en Mac OS X 10.6 (Snow Leopard), nos encontraremos que, aunque la aplicación se descarga correctamente y se inicia, la interfaz de usuario no se dibuja correctamente:
De hecho, si miramos, por ejemplo, el manual oficial, observaremos que hay referencia a diferentes menús que no aparecen por ninguna parte.
Tras investigar un poco, todo parece que es debido a la manera en que se han implementado los menús, de forma que no se ha tenido en cuenta la característica normal de Mac OS X, distinto de Windows, en que los menús no van incluídos dentro de las ventanas de los programas.

Para solucionarlo, tenemos varias vías opciones. La primera consiste en modificar el archivo de descarga que obtenemos desde la web oficial (launcher_ecofirma.jnlp), añadiendo una propiedad de Mac OS X que indica que el menú debe pintarse aparte, y no dentro de la ventana:

Esto puede hacerse editando el archivo, por ejemplo con el editor por defecto de Mac OS X para texto (TextEdit), de la siguiente manera:

Así, cada vez que se haga doble clic sobre el fichero modificado, la aplicación se verá correctamente:
Al tratarse de un archivo .jnlp, lo que sucede es que la implementación de Java en Mac OS X realiza una descarga de los archivos necesarios desde el servidor del Ministerio en la caché de Java, y nos ofrece la posibilidad de crear un icono de aplicación en el lugar que nosotros deseemos del disco duro, que servirá como acceso directo para lanzarla la próxima vez.
Si optamos por esta alternativa, borrando el archivo .jnlp descargado, la solución anterior no nos vale. En este caso tendremos que acceder al interior del paquete de la aplicación (menú contextual "Mostrar contenido del paquete"), y editar el archivo Info.plist correspondiente para añadir la propiedad useScreenMenuBar, bien con un editor de texto:
Bien con el editor de propiedades de las herramientas de desarrollo, si las tuviéramos instaladas:

La tercera opción que tenemos, consiste en hacer lo mismo que ya explicamos para la aplicación de cambio PIN de DNIe, crear nuestra propia aplicación en local. La diferencia con lo que ocurrió aquella vez consiste en que ahora los archivos no están incluidos ni con la descarga original (es únicamente el archivo .jnlp), ni dentro del icono de aplicación que nos crea el sistema, y tendremos que obtenerlos por nuestra cuenta.
La ventaja de este últino método, es que tendremos una aplicación que se comportará como cualquier otra nativa del sistema, pudiendo hacer por ejemplo una copia de seguridad completa de la misma (cosa que no sucede con la otra, ya que los archivos se encuentran en la caché de Java). 
La desventaja es que la aplicación no gozará de actualizaciones automáticas y será necesario comprobar de vez en cuando la página oficial para ver si hay nuevas versiones.

La lista de archivos a descargar se puede obtener analizando el archivo .jnlp, y sus nombres (para la versión 1.2.1) son los siguientes:
eCoFirma-1.2.1.jar
ClienteXADES-1.0.7.jar
MITyCLibPolicy-1.0.7.jar
MITyCLibXADES-1.0.7.jar
MITyCLibTrust-1.0.7.jar
MITyCLibCert-1.0.7.jar
MITyCLibCert-1.0.7-mscapi5.jar
MITyCLibOCSP-1.0.7.jar
MITyCLibTSA-1.0.7.jar
ClientesConf-1.0.7.jar
MITyCLibAPI-1.0.8.jar
bcprov-jdk15-1.43.jar
bcmail-jdk15-1.43.jar
bctsp-jdk15-1.43.jar
commons-codec-1.3.jar
commons-httpclient-3.0.1.jar
commons-logging-1.1.jar
commons-lang-2.4.jar
log4j-1.2.14.jar
swing-layout-1.0.3.jar
xmlsec-1.4.2-ADSI-1.0.jar
jdic-0.9.4-ADSI-1.0.2.jar
jss-4.2.5.jar
MimeType-1.0.jar
itext-2.1.4.jar

Una vez descargados, tendremos que abrir "Jar Bundler" incluída en las herramientas de desarrollo de Apple, que se pueden obtener gratuitamente (hay que registrarse) en la web de desarrolladores de Apple (versiones anteriores a XCode 4), o bien (XCode 4) pagando en la Mac App Store o suscribiéndose al programa de pago de desarrollador de Mac OS.
Añadimos como archivo principal "eCoFirma-1.2.1.jar" y nos aseguramos de que están marcadas las opciones "Use Macintosh Menu Bar" (el equivalente a la propiedad que habíamos puesto a mano en los dos casos anteriores) y que la versión de JVM sea "1.5+"y, si queremos, añadimos una imagen para usar como icono.
Añadimos a la lista de archivos todos los que nos habíamos descargado antes.
 Configuramos el tamaño de la pila con un mínimo de 128 y un máximo de 512 (estos datos los hemos obtenido también analizando el archivo .jnlp original). Finalmente, marcamos la opción "Set working directory to inside of application package" y pulsamos en el botón para crear la aplicación.
Ahora, tras guardar la nueva aplicación en el sitio que queramos dentro del disco duro, veremos si la lanzamos que todo aparece como debería ser, incluyendo los menús.

Si alguien estuviera interesado en tener una copia de la aplicación ya creada según este último método, por favor que lo indique en los comentarios, y prepararé una para descarga.


Actualización: Tras recibir varias peticiones, he dejado  una copia para descarga en el siguiente enlace: http://www.kounch.com/download/eCoFirma.zip
Basta con descomprimir el archivo y copiar la aplicación al lugar que deseemos del disco duro (lo normal es usar la carpeta Aplicaciones).

4 comentarios:

  1. No me funciona en Lion. ¿Hay alguna forma de firma digitalmente con ecoFirma en Lion?

    ResponderEliminar
    Respuestas
    1. No había hecho ninguna prueba en Lion todavía, pero acabo de probar y la aplicación parece abrirse sin problemas ¿qué problema exactamente es el que sucede?

      Eliminar
  2. Hola, estoy trabajando sobre Mountain Lion. El programa funciona perfectamente pero necesito conocer la ruta del almacenamiento de certificados en Firefox para poder firmar, y la pagina de la ruta del perfil a la que accede como ayuda (file:///private/var/folders/sy/ddvynnbd7tsdm2fr3jyb1bgm0000gn/T/mozilla.html) no me funciona en la última versión del navegador

    Alguien sabe que ruta tengo que utilizar?

    ResponderEliminar
    Respuestas
    1. Según la ayuda de Firefox, hay que seguir estos pasos:

      1. En la barra de menús, haz clic en el menú Ayuda y selecciona Información para solucionar problemas. Se abrirá la ventana de Información para solucionar problemas.
      2. Debajo de Configuración básica de la aplicación, haz clic en el botón Mostrar en Finder. La ventana con la carpeta de tu perfil se abrirá.

      Los datos de certificados están almacenados en los ficheros cert8.db y key3.db que han en esa carpeta.


      Obtenido de aquí (también hay instrucciones para encontrar la carpeta "a mano" sin pasar por Firefox):

      http://support.mozilla.org/es/kb/perfiles-el-lugar-donde-firefox-almacena-tus-contr

      Eliminar