UNPKG

firma-gob-ulagos

Version:

Firma documentos con plataforma Firma Gob del gobierno Chile, Universidad de Los Lagos

239 lines (140 loc) 5.39 kB
# Firma Gob Librería javascript para firmar documentos usando la API de Firma.Gob (Chile) instalar ```js // npm npm install firma-gob // yarn yarn add firma-gob ``` Importa la librería en tu código ## FirmaGob ```js const { FirmaGob, File } = require("firma-gob"); ``` Por defecto la librería inicia con los parámetros de desarrollo (certificado desatendido), por lo que puedes comenzar a usarla para pruebas directamente ```js // tuarchivo.js const { FirmaGob, File } = new FirmaGob(); const gob = new FirmaGob(); const file = new File(); const remote = await file.fromRemote("linkToPdf"); gob.addPDF(remote.base64, remote.checksum); // agrega pdf // o también desde un archivo local const local = file.fromLocal("pathToPdf"); gob.addPDF(local.base64, local.checksum); // agrega pdf // firmar documentos y recibir respuesta const output = await gob.sign(); // guarda archivos con la clase File output.files.forEach((item) => { file.base64ToDisk(`file_${item.checksum_original}.pdf`,item.content) }); ``` luego ya puedes ejecutar `node tuarchivo.js` # FirmaGob Actualmente la clase `FirmaGob` cuenta con los siguientes métodos ### setConfig modifica los parametros de configuración de la librería. > Al modificar estos parámetros automáticamente la librería pasa a modo **producción** * **run** identificador del titular de firma, no debe contener puntos, guión ni tampoco el dígito verificador * **entity** código asociado a la institución a la cual pertenece el titular * **api_token** campo no encriptado de tipo string que contiene el código único generado a partir del registro de la aplicación * **secret** secreto generado por firma.gob al registrar la aplicación ```ts gob.setConfig(run: string, entity: string, api_token: string, secret: string) ``` ### setPurpose (Propósito Desatendido por defecto) Establece si el certificado es de proposito general o desatendido * **purpose** código asociado al tipo de certificado a utilizar Parámetros permitidos: * Purpose.ATENDIDO (Propósito general) * Purpose.DESATENDIDO (Desatendido) ```ts gob.setPurpose(purpose: Purpose) ``` ### addJSON Agrega un archivo JSON a la lista de archivos * **content** Archivo en base64 * **checksum** SHA256 del archivo ```ts gob.addJSON(content: string, checksum: string) ``` ### addPDF Agrega un archivo PDF a la lista de archivos * **content** Archivo en base64 * **checksum** SHA256 del archivo * **layout** string opcional en caso de desear incrustar elemento al archivo PDF ```ts gob.addPDF(content: string, checksum: string, layout?: string) ``` ### addXML Agrega un archivo PDF a la lista de archivos * **content** Archivo en base64 * **checksum** SHA256 del archivo * **references** array de string con la identificación del nodo a firmar en caso de ser un archivo XML ejemplo: [“#nodo1”, “#nodo2”] * **xmlObjects** array de string con los pie de firma en un archivo XML ejemplo: `["<a></a>","<b/>”]` ```ts gob.addXML(content: string, checksum: string, references: string[], xmlObjects: string[]) ``` ### addFiles Agrega multiples archivos a la lista de archivos a ser firmados * **files** Lista de archivos a firmar ```ts gob.addFiles(files: FileProps[]) ``` ### sign Firma los archivos previamente establecidos * **otp** Si la firma es de propósito general necesitas enviar el código OTG * **Respuesta** con documentos firmados o errores ```ts gob.signFiles(otp?: string) ``` # File La clase `File` te ayudará a manipular tus archivos para ser usados con `FirmaGob` ```js // crea una instancia de la clase File const file = new File(); ``` ### fromLocal Obtiene los datos de un archivo local y los convierte en base64 * **path** Ruta del archivo en tu disco * **Respuesta** objeto { base64, checksum } ```ts pdf.fromLocal(path: string) ``` ### fromRemote Obtiene un archivo pdf desde un servidor remoto y lo convierte a base64 * **url** URL del archivo PDF * **Respuesta** objeto { base64, checksum } ```ts pdf.fromRemote(url: string) ``` ### base64ToBuffer Convierte un archivo en base64 a buffer * **base64** archivo en base64 * **Respuesta** buffer de archivo ```ts pdf.base64ToBuffer(base64: string) ``` ### bufferToDisk Usa el buffer dado y lo almacena en el disco con el nombre especificado * **filename** nombre del archivo a guardar * **buffer** buffer de archivo ```ts pdf.bufferToDisk(filename: string, buffer: Buffer) ``` ### base64ToDisk Almacena en el disco un archivo en base64 * **filename** nombre del archivo a guardar * **base64** archivo en base64 ```ts pdf.base64ToDisk(filename: string, base64: string) ``` # Desarrollo La librería está escrita con typescript, al modificar el `index.ts` debes ejecutar `tsc` para recompilar el archivo `index.js` (debes tener instalado tsc) Todos los comentarios y PR son bienvenidos. La idea es ir complementando la librería para poder manejar con mayor facilidad cada archivo # Más información Para obtener más información acerca de esta API pudes descargar los manuales en https://firma.digital.gob.cl/biblioteca/manuales-firmagob/ # Licencia Este proyecto está liberado bajo la licencia MIT, quiere decir que puedes hacer lo que quieras (incluso comercialmente)