firma-gob-ulagos
Version:
Firma documentos con plataforma Firma Gob del gobierno Chile, Universidad de Los Lagos
239 lines (140 loc) • 5.39 kB
Markdown
# 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)