encrypt-stack
Version:
An encryption driver/stack to create a multi-layer encrypted workflow in Node.
52 lines (40 loc) • 1.01 kB
JavaScript
;
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;