Firma digital de PDF desde nodejs con token.
En este tutorial, se verá como firmar un documento PDF con token desde nodejs. Para este propósito, es necesario realizar las siguientes acciones:
- Instalar librería para manipulación de archivos pdf.- Los archivos PDF requieren de una herramienta para poder aceder a su contenido y registrar la firma una vez realizada. En este ejemplo se utilizará la librería pdfsig.
- Contar con un token criptográfico.- Un token criptográfico y un certificado de firma digital, si no cuenta con uno puede conseguirlos a través de la página Solicitar certificado
En el caso de los archivos PDF, se maneja el contenido por secciones, ya que si comparamos el documento original con el firmado, serán diferentes por el contenido de la firma. Sin embargo el contenido propiamente del documento no cambia.
Por lo anterior, el cálculo del HASH se realiza sobre el contenido del PDF como se explica en el siguiente enlace: PDF
Si no tiene instalado NodeJS, puede seguir los pasos descritos en el siguiente enlace: NodeJS
Una vez instalado, ejecutar las siguientes instrucciones para preparar el proyecto y editar el primer archivo del proyecto:
- mkdir firmar
- cd firmar
- npm init
- npm install pdfsig
- nano app.js
Con los pasos anteriores en la consola de comandos, se abrirá un editor de texto donde se puede copiar el siguiente programa:
- const pdfsig = require('pdfsig');
- const firmas = new pdfsig('prueba.pdf');
- const certs = firmas.certToken('/lib/ePass2003_adsib/redist/libcastle.so.1.0.0');
- console.log(firmas.firmarToken('/lib/ePass2003_adsib/redist/libcastle.so.1.0.0', '12345678', certs[0].slot, certs[0].id, certs[0].cert));
La primera línea importa la librería pdfsig, la tercera recupera el pdf y la información inicial del documento.
Los tokens criptográficos pueden contener más de un certificado de firma digital en este sentido primeramente se obtienen los certificados contenidos en el token como se observa en la línea 5, especificando el driver del token.
Finalmente para firmar se utiliza la función firmarToken que recibe como parámetros el driver del token, el pin de acceso, y los datos del certificado.
Puede descargar el archivo de pureba de: pdf
Para ejecutar el ejemplo anterior:
- node app.js
De acuerdo al ejemplo el archivo prueba.pdf será firmado con la clave privada y el certificado alojados en el token criptográfico y devolverá como resultado la ruta en la cual se guardó el archivo firmado.
Si desea descargar el ejemplo puede hacerlo a través del siguiente link: Código de ejemplo