UNPKG

imba

Version:

Intuitive and powerful language for building webapps that fly

62 lines (61 loc) 2.21 kB
import assert from "assert"; import crypto from "crypto"; import * as des from "../"; import * as fixtures from "./fixtures"; 'use strict'; var bin = fixtures.bin; describe('DES-CBC', function () { var CBC = des.CBC.instantiate(des.DES); describe('encryption/decryption', function () { var vectors = [ { key: '133457799bbcdff1', iv: '0102030405060708', input: '0123456789abcdef' }, { key: '0000000000000000', iv: 'ffffffffffffffff', input: '0000000000000000' }, { key: 'a3a3a3a3b3b3b3b3', iv: 'cdcdcdcdcdcdcdcd', input: 'cccccccccccccccc' }, { key: 'deadbeefabbadead', iv: 'a0da0da0da0da0da', input: '0102030405060708090a' }, { key: 'aabbccddeeff0011', iv: 'fefefefefefefefe', input: '0102030405060708090a0102030405060708090a0102030405060708090a' + '0102030405060708090a0102030405060607080a0102030405060708090a' } ]; vectors.forEach(function (vec, i) { it('should encrypt vector ' + i, function () { var key = new Buffer(vec.key, 'hex'); var iv = new Buffer(vec.iv, 'hex'); var input = new Buffer(vec.input, 'hex'); var enc = CBC.create({ type: 'encrypt', key: key, iv: iv }); var out = new Buffer(enc.update(input).concat(enc.final())); var cipher = crypto.createCipheriv('des-cbc', key, iv); var expected = Buffer.concat([cipher.update(input), cipher.final()]); assert.deepEqual(out, expected); var dec = CBC.create({ type: 'decrypt', key: key, iv: iv }); assert.deepEqual(new Buffer(dec.update(out).concat(dec.final())), input); }); }); }); });