Encryption -> SymEnc

This is more explanatory ("symmetric encryption") and also does not encourage
its use for people who don't know what they're doing. (It should only be used
in combination with some type of message authentication.)
This commit is contained in:
Ryan X. Charles 2014-08-28 11:10:40 -07:00
parent 1cb2f900af
commit 6f54d4cde6
2 changed files with 17 additions and 17 deletions

View File

@ -3,31 +3,31 @@ var CBC = require('./cbc');
var Random = require('../random'); var Random = require('../random');
var Hash = require('../hash'); var Hash = require('../hash');
var Encryption = function Encryption() { var SymEnc = function SymEnc() {
}; };
Encryption.encrypt = function(messagebuf, passwordstr) { SymEnc.encrypt = function(messagebuf, passwordstr) {
var cipherkeybuf = Hash.sha256(new Buffer(passwordstr)); var cipherkeybuf = Hash.sha256(new Buffer(passwordstr));
return Encryption.encryptCipherkey(messagebuf, cipherkeybuf); return SymEnc.encryptCipherkey(messagebuf, cipherkeybuf);
}; };
Encryption.decrypt = function(encbuf, passwordstr) { SymEnc.decrypt = function(encbuf, passwordstr) {
var cipherkeybuf = Hash.sha256(new Buffer(passwordstr)); var cipherkeybuf = Hash.sha256(new Buffer(passwordstr));
return Encryption.decryptCipherkey(encbuf, cipherkeybuf); return SymEnc.decryptCipherkey(encbuf, cipherkeybuf);
}; };
Encryption.encryptCipherkey = function(messagebuf, cipherkeybuf, ivbuf) { SymEnc.encryptCipherkey = function(messagebuf, cipherkeybuf, ivbuf) {
ivbuf = ivbuf || Random.getRandomBuffer(128 / 8); ivbuf = ivbuf || Random.getRandomBuffer(128 / 8);
var ctbuf = CBC.encrypt(messagebuf, ivbuf, AES, cipherkeybuf); var ctbuf = CBC.encrypt(messagebuf, ivbuf, AES, cipherkeybuf);
var encbuf = Buffer.concat([ivbuf, ctbuf]); var encbuf = Buffer.concat([ivbuf, ctbuf]);
return encbuf; return encbuf;
}; };
Encryption.decryptCipherkey = function(encbuf, cipherkeybuf) { SymEnc.decryptCipherkey = function(encbuf, cipherkeybuf) {
var ivbuf = encbuf.slice(0, 128 / 8); var ivbuf = encbuf.slice(0, 128 / 8);
var ctbuf = encbuf.slice(128 / 8); var ctbuf = encbuf.slice(128 / 8);
var messagebuf = CBC.decrypt(ctbuf, ivbuf, AES, cipherkeybuf); var messagebuf = CBC.decrypt(ctbuf, ivbuf, AES, cipherkeybuf);
return messagebuf; return messagebuf;
}; };
module.exports = Encryption; module.exports = SymEnc;

View File

@ -1,7 +1,7 @@
var should = require('chai').should(); var should = require('chai').should();
var Encryption = require('../lib/expmt/encryption'); var SymEnc = require('../lib/expmt/symenc');
describe('Encryption', function() { describe('SymEnc', function() {
describe('@encrypt', function() { describe('@encrypt', function() {
@ -9,7 +9,7 @@ describe('Encryption', function() {
var password = "password"; var password = "password";
var messagebuf = new Buffer(128 / 8 - 1); var messagebuf = new Buffer(128 / 8 - 1);
messagebuf.fill(0); messagebuf.fill(0);
var encbuf = Encryption.encrypt(messagebuf, password); var encbuf = SymEnc.encrypt(messagebuf, password);
encbuf.length.should.equal(128 / 8 + 128 / 8); encbuf.length.should.equal(128 / 8 + 128 / 8);
}); });
@ -21,8 +21,8 @@ describe('Encryption', function() {
var password = "password"; var password = "password";
var messagebuf = new Buffer(128 / 8 - 1); var messagebuf = new Buffer(128 / 8 - 1);
messagebuf.fill(0); messagebuf.fill(0);
var encbuf = Encryption.encrypt(messagebuf, password); var encbuf = SymEnc.encrypt(messagebuf, password);
var messagebuf2 = Encryption.decrypt(encbuf, password); var messagebuf2 = SymEnc.decrypt(encbuf, password);
messagebuf2.toString('hex').should.equal(messagebuf.toString('hex')); messagebuf2.toString('hex').should.equal(messagebuf.toString('hex'));
}); });
@ -37,7 +37,7 @@ describe('Encryption', function() {
ivbuf.fill(0); ivbuf.fill(0);
var messagebuf = new Buffer(128 / 8 - 1); var messagebuf = new Buffer(128 / 8 - 1);
messagebuf.fill(0); messagebuf.fill(0);
var encbuf = Encryption.encryptCipherkey(messagebuf, cipherkeybuf, ivbuf); var encbuf = SymEnc.encryptCipherkey(messagebuf, cipherkeybuf, ivbuf);
encbuf.length.should.equal(128 / 8 + 128 / 8); encbuf.length.should.equal(128 / 8 + 128 / 8);
}); });
@ -48,7 +48,7 @@ describe('Encryption', function() {
ivbuf.fill(0); ivbuf.fill(0);
var messagebuf = new Buffer(128 / 8); var messagebuf = new Buffer(128 / 8);
messagebuf.fill(0); messagebuf.fill(0);
var encbuf = Encryption.encryptCipherkey(messagebuf, cipherkeybuf, ivbuf); var encbuf = SymEnc.encryptCipherkey(messagebuf, cipherkeybuf, ivbuf);
encbuf.length.should.equal(128 / 8 + 128 / 8 + 128 / 8); encbuf.length.should.equal(128 / 8 + 128 / 8 + 128 / 8);
}); });
@ -63,8 +63,8 @@ describe('Encryption', function() {
ivbuf.fill(0); ivbuf.fill(0);
var messagebuf = new Buffer(128 / 8); var messagebuf = new Buffer(128 / 8);
messagebuf.fill(0); messagebuf.fill(0);
var encbuf = Encryption.encryptCipherkey(messagebuf, cipherkeybuf, ivbuf); var encbuf = SymEnc.encryptCipherkey(messagebuf, cipherkeybuf, ivbuf);
var messagebuf2 = Encryption.decryptCipherkey(encbuf, cipherkeybuf); var messagebuf2 = SymEnc.decryptCipherkey(encbuf, cipherkeybuf);
messagebuf2.toString('hex').should.equal(messagebuf.toString('hex')); messagebuf2.toString('hex').should.equal(messagebuf.toString('hex'));
}); });