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

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

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