| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 | | 'use strict'; |  |   |  | var assert = require('assert'); |  | var crypto = require('crypto'); |  | var Buffer = require('buffer').Buffer; |  |   |  | var des = require('../'); |  |   |  | var fixtures = require('./fixtures'); |  | 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); |  |       }); |  |     }); |  |   }); |  | }); | 
 |