[ Blog ]
[ Wiki ]
[ Slideshare ]
[ Twitter ]

Bloggers recientes

Cesar Capillas Mensajes: 110
Estrellas: 7
Fecha: 18/05/13
Gustavo Fernandez Mensajes: 44
Estrellas: 7
Fecha: 10/05/13
Patricia Yagüe Mensajes: 2
Estrellas: 0
Fecha: 2/04/12

Archivo

Tags

noBlogo - El blog de zylk.net

Entradas con etiqueta <em>firma recursiva</em>.

Firma recursiva con sinadura integrada en Gnome

En el siguiente artículo, exploraremos las capacidades de integración de sinadura en el escritorio Gnome a través de las acciones y scripts de Nautilus, en el caso de uso de firma recursiva de ficheros PDF que se encuentren por debajo de un directorio seleccionado.

Firma recursiva a través de scripts de nautilus:

Un motor de scripting de Gnome es nautilus-scripts

$ sudo aptitude nautilus-scripts

Simplemente alojando un script de shell como el que se muestra más abajo (re-sign.sh) en $HOME/.gnome2/nautilus-scripts/,  podemos ejecutarlo en el menú contextual Scripts, con el botón derecho. El motor es menos potente que las acciones de nautilus, pues no es posible implementar condiciones, pero puede ser útil en muchas ocasiones.

#! /bin/sh
#
# re-sign.sh
#
#   Script de firma recursiva con sinadura 2.0
#
#   Uso: re-sign.sh <directorio a firmar>"
#
SINADURA_HOME=/home/cesar/local/sinadura
PREFERENCES=/home/cesar/local/sinadura/resources/preferences/preferences-sinadura-console.properties
LOGFILE=$HOME/.sinadura.log
RESFILE=$HOME/.sinadura-output.log

if [ -z $2 ]; then
  MYDIR=$PWD/$1
else
  MYDIR=$2/$1
fi

/usr/bin/find $MYDIR -type f -name \*pdf > $LOGFILE

echo "Sinadura 2.0 (by zylk.net & irontec)" 2>&1 >> $RESFILE
echo 2>&1 >> $RESFILE
echo "Firmando documentos:" 2>&1 >> $RESFILE
while read file
  do
    base=`dirname "$file"`/`basename "$file" .pdf`;
    echo $file 2>&1 >> $RESFILE
    (cd $SINADURA_HOME; /bin/sh ./bin/sinadura-console -input $file -output $base-signed.pdf -preferences $PREFERENCES 2>&1 >> $RESFILE)
  done < $LOGFILE
echo 2>&1 >> $RESFILE
echo "Hecho!" 2>&1 >> $RESFILE
echo "http://www.sinadura.net" 2>&1 >> $RESFILE

zenity --text-info --title="Sinadura info:" --filename=$RESFILE --width=600 --height=400

rm -f $RESFILE
 


Seleccionado un directorio, el script buscará los archivos PDF por debajo de la ruta seleccionada y firmará los diferentes archivos encontrados. A través del comando zenity se mostrará al final del proceso una pequeña ventana de log con los archivos firmados.
 

Firma recursiva a través de acciones de nautilus:


El script de shell anterior puede invocarse desde las acciones de nautilus al seleccionar una carpeta, y ejecutar una firma recursiva de todos los archivos PDF por debajo del directorio seleccionado, de manera análoga al artículo anterior de esta serie. Defino la acción de la misma manera que en el anterior artículo de esta serie, configurando los parámetros y la condición correspondiente, esta vez sobre una carpeta seleccionada y voila.
          
La acción se define en el menu de acciones de nautilus.



La acción se aplica esta vez si se selecciona un directorio:

                                                                                                       
La acción se ejecuta con el script re-sign.sh que es compatible con ambos motores:


Y la ejecución desde el menú contextual, seleccionado el directorio Facturas:

 

 

Algunas pruebas de rendimiento en sinadura 2.0 (benchmark)

Una de las cosas que se han mejorado en el core del producto sinadura ha sido la carga de certificados y el proceso de firma. Para testar esta mejora hemos realizado las siguientes pruebas.

  • Firmar 100 documentos sin TSA y sin validación OCSP con el dni electrónico
  • Firmar 100 documentos sin TSA y sin validación OCSP con la tarjeta de izenpe
  • Firmar 100 documentos sin TSA y sin validación OCSP con un certificado software (pkcs12)
  • Firmar 100 documentos con TSA y sin validación OCSP con el dni electrónico
  • Firmar 100 documentos con TSA y sin validación OCSP con la tarjeta de izenpe
  • Firmar 100 documentos con TSA y sin validación OCSP con un certificado software (pkcs12)
  • Validar 100 documentos



Las conclusiones principales de las pruebas han sido,
 

  1. La velocidad de la firma cuando el disposivito es una tarjeta depende principalmente del driver de la tarjeta y no del programa. En este caso por ejemplo el driver del dnie es dos o tres veces más lento que el driver de la tarjeta de izenpe.
  2. La velocidad de la firma al firmar desde un tarjeta es un orden de magnitud menor que usando la carga de un certificado en software (pkcs12).
  3. Si introducimos a la firma la validación OCSP o el sello temporal (TSA), la velocidad del proceso firma depende del numero de peticiones que el sistema pueda realizar al servidor OCSP o TSA.
  4. El proceso de firma no consume cpu ni supone una carga sobre el sistema.


Para conseguir mayor número de firmas por segundo se podría, en el caso de uso de un certificado software, paralelizar el proceso y conseguir así aumentar linealmente la velocidad con el número de procesos ejecutados en paralelo. Teniendo en cuenta que el proceso de firma no consume mucha memoría ni CPU, sería sencillo llegar, por medio de la paralelización, a conseguir entre 50 y 100 firmas por segundo. Aunque esto lo dejamos para otra día en el que tengamos un rato para hacer estas pruebas.

Algunos datos sobre los test realizados
 

DispositivoTSAFirmas por segundo
Tarjeta Izenpeno1.25
Tarjeta Izenpe0.50
Tarjeta dni-eno0.50
Tarjeta dni-e0.40
Softwareno6.66 66.6
Software0.50



Nota: Todas las pruebas se han realizado en un equipo linux, usando el interfaz gráfico de sinadura 2.0.

Mostrando 2 resultados.