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 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));
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));
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);
var ctbuf = CBC.encrypt(messagebuf, ivbuf, AES, cipherkeybuf);
var encbuf = Buffer.concat([ivbuf, ctbuf]);
return encbuf;
};
Encryption.decryptCipherkey = function(encbuf, cipherkeybuf) {
SymEnc.decryptCipherkey = function(encbuf, cipherkeybuf) {
var ivbuf = encbuf.slice(0, 128 / 8);
var ctbuf = encbuf.slice(128 / 8);
var messagebuf = CBC.decrypt(ctbuf, ivbuf, AES, cipherkeybuf);
return messagebuf;
};
module.exports = Encryption;
module.exports = SymEnc;

View File

@ -1,7 +1,7 @@
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() {
@ -9,7 +9,7 @@ describe('Encryption', function() {
var password = "password";
var messagebuf = new Buffer(128 / 8 - 1);
messagebuf.fill(0);
var encbuf = Encryption.encrypt(messagebuf, password);
var encbuf = SymEnc.encrypt(messagebuf, password);
encbuf.length.should.equal(128 / 8 + 128 / 8);
});
@ -21,8 +21,8 @@ describe('Encryption', function() {
var password = "password";
var messagebuf = new Buffer(128 / 8 - 1);
messagebuf.fill(0);
var encbuf = Encryption.encrypt(messagebuf, password);
var messagebuf2 = Encryption.decrypt(encbuf, password);
var encbuf = SymEnc.encrypt(messagebuf, password);
var messagebuf2 = SymEnc.decrypt(encbuf, password);
messagebuf2.toString('hex').should.equal(messagebuf.toString('hex'));
});
@ -37,7 +37,7 @@ describe('Encryption', function() {
ivbuf.fill(0);
var messagebuf = new Buffer(128 / 8 - 1);
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);
});
@ -48,7 +48,7 @@ describe('Encryption', function() {
ivbuf.fill(0);
var messagebuf = new Buffer(128 / 8);
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);
});
@ -63,8 +63,8 @@ describe('Encryption', function() {
ivbuf.fill(0);
var messagebuf = new Buffer(128 / 8);
messagebuf.fill(0);
var encbuf = Encryption.encryptCipherkey(messagebuf, cipherkeybuf, ivbuf);
var messagebuf2 = Encryption.decryptCipherkey(encbuf, cipherkeybuf);
var encbuf = SymEnc.encryptCipherkey(messagebuf, cipherkeybuf, ivbuf);
var messagebuf2 = SymEnc.decryptCipherkey(encbuf, cipherkeybuf);
messagebuf2.toString('hex').should.equal(messagebuf.toString('hex'));
});