UNPKG

encrypt-stack

Version:

An encryption driver/stack to create a multi-layer encrypted workflow in Node.

52 lines (40 loc) 1.01 kB
'use strict'; const EncryptionDriver = require("./EncryptionDriver.js"); class EncryptionStack{ constructor(stack_size = 3, method, key_sync){ this.drivers = []; for(let i=0; i<stack_size; i++){ this.drivers.push(new EncryptionDriver(method, key_sync)); } } keys(){ return this.drivers.map(d=>d.public_key); } computeSecret(keys){ for(let i=0; i<this.drivers.length; i++){ this.drivers[i].computeSecret(keys[i]); } } encrypt(data){ let encrypted = data; for(let i=0; i<this.drivers.length; i++){ encrypted = this.drivers[i].encrypt(encrypted); } return encrypted; } decrypt(data){ let decrypted = data; for(let i=0; i<this.drivers.length; i++){ decrypted = this.drivers[this.drivers.length-i-1].decrypt(decrypted); } return decrypted; } hash(data){ let hash = ""; this.drivers.forEach(d=>{ hash = d.hash(hash); }); return hash; } } module.exports = EncryptionStack;