pfcti-toolbox-enigmalib
v1.1.4
Published
Contiene los algoritmos de cifrado y hash utilizados por el grupo.
Readme
Pfcti.ToolBox.EnigmaLib.NodeJS
Paquete contiene los métodos de encriptación y desencriptación utilizando el algoritmo AES256. Asimismo contiene un utilitario para crear hash SHA256.
Prerequisitos
Las herramientas requeridas son
npm cli
NodeJs
Visual Studio CodeEn Visual Studio Code agregar los siguientes Settings
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": falseAccessos
nexus-repository.pfcti.com (10.23.13.88)Configuración
Se debe crear en el proyecto que va a utilizar el consumidor un archivo en la raíz con el nombre ".npmrc" con la siguiente información:
@pfcti:registry = http://nexus-repository.pfcti.com/repository/npm-hosted/
[email protected]
always-auth=true
_auth=dXNlcnB1bGw6UEZDdGkyMDE5Esto nos permite buscar los repositorios internos
Para descargar las librerías:
$ npm installEstilo de codificación y estructura
Para consultar los detalles de codificación por favor acceder a
- Estándar Typescript - Contiene las referencias a las guías y pautas que se debe tener a consideración para el desarrollo.
Construcción del proyecto
Para construir el servicio utilice
npm run-script buildEl proceso de contrucción verifica que se cumplan con los estándares de desarrollo y genera la carpeta dist que contiene consumidor disponible para su uso.
Implementación
Se requiere el package llamado @pfcti/pfcti-toolbox-enigmalib
npm install @pfcti/pfcti-toolbox-enigmalibPara utilizar la librería se hace de la siguiente forma
Responsabilidades
- El cliente almacenará el key utilizados para los procesos
- El iv será generado del lado del cliente, se recomienda crypto para la esta generación
- Los valores key, IV SON en hexadecimal, se recomienda el toString('hex')
Encriptar datos AES256 TS
import * as Crypto from 'crypto';
import { AesGcm256Service } from '@pfcti/pfcti-toolbox-enigmalib';
...
try{
let iv = Crypto.randomBytes(16).toString('hex');
let result = new AesGcm256Service().Encrypt(key, iv, JSON.stringify(request));
console.debug(result.AssociatedData);
console.debug(result.MacLength);
console.debug(result.CypherValue);
}
catch(ex)
{
//TODO
}Encriptar datos AES256 NodeJS
const crypto = require('crypto')
const pfctiCypher = require('@pfcti/pfcti-toolbox-enigmalib')
...
try{
let iv = crypto.randomBytes(16).toString('hex');
let result = new pfctiCypher.AesGcm256Service().Encrypt(key, iv, JSON.stringify(request));
console.debug(result.AssociatedData);
console.debug(result.MacLength);
console.debug(result.CypherValue);
}
catch(ex)
{
//TODO
}Desencriptar datos AES256 TS
import { AesGcm256Service } from '@pfcti/pfcti-toolbox-enigmalib';
...
try{
let result = new AesGcm256Service().Decrypt(key,
associatedData,
iv,
macLength,
cypherValue);
console.debug(result);
}
catch(ex)
{
//TODO
}Desencriptar datos AES256 NodeJS
const pfctiCypher = require('@pfcti/pfcti-toolbox-enigmalib')
...
try{
let result = new pfctiCypher.AesGcm256Service().Decrypt(key,
associatedData,
iv,
macLength,
cypherValue);
console.debug(result);
}
catch(ex)
{
//TODO
}Hash SHA256 TS
import { HmacSha256Service } from '@pfcti/pfcti-toolbox-enigmalib';
...
try{
let result = new HmacSha256Service().Create(key,
JSON.stringify(request));
console.debug(result);
}
catch(ex)
{
//TODO
}Hash SHA256 NodeJS
const pfctiCypher = require('@pfcti/pfcti-toolbox-enigmalib')
...
try{
let result = new pfctiCypher.HmacSha256Service().Create(key,
JSON.stringify(request));
console.debug(result);
}
catch(ex)
{
//TODO
}Validar Hash SHA256 TS
import { HmacSha256Service } from '@pfcti/pfcti-toolbox-enigmalib';
...
try{
let result = new HmacSha256Service().Validate(key, hash,
JSON.stringify(request));
console.debug(result);
}
catch(ex)
{
//TODO
}Hash SHA256 NodeJS
const pfctiCypher = require('@pfcti/pfcti-toolbox-enigmalib')
...
try{
let result = new pfctiCypher.HmacSha256Service().Validate(key, hash,
JSON.stringify(request));
console.debug(result);
}
catch(ex)
{
//TODO
}Construído con
- ts-node - Compilación de typescript para NodeJs
- typescript - Lenguaje utilizado
- eslint - Identificación y reporte de patrones de programación para ECMAScript/JavaScript
- chai - librería para el manejo de asserts utilizado en prueba de desarrollador
- mocha - Framework de pruebas
- @types/chai
- @types/compression
- @types/mocha
- @typescript-eslint/eslint-plugin
- @typescript-eslint/parser
License
Copyright © 2020 [PFCTI]
