Browse Source

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.)
patch-2
Ryan X. Charles 10 years ago
parent
commit
6f54d4cde6
  1. 16
      lib/expmt/symenc.js
  2. 18
      test/test.symenc.js

16
lib/expmt/encryption.js → lib/expmt/symenc.js

@ -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;

18
test/test.encryption.js → test/test.symenc.js

@ -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'));
}); });
Loading…
Cancel
Save