�PNG  IHDR��;���IDATx��ܻn�0���K�� �)(�pA��� ���7�LeG{�� �§㻢|��ذaÆ 6lذaÆ 6lذaÆ 6lom��$^�y���ذag�5bÆ 6lذaÆ 6lذa{���� 6lذaÆ �`����}H�Fkm�,�m����Ӫ���ô�ô!� �x�|'ܢ˟;�E:���9�&ᶒ�}�{�v]�n&�6� �h��_��t�ڠ͵-ҫ���Z;��Z$�.�P���k�ž)�!��o���>}l�eQfJ�T��u і���چ��\��X=8��Rن4`Vw�l�>����n�G�^��i�s��"ms�$�u��i��?w�bs[m�6�K4���O���.�4��%����/����b�C%��t ��M�ז� �-l�G6�mrz2���s�%�9��s@���-�k�9�=���)������k�B5����\��+͂�Zsٲ ��Rn��~G���R���C����� �wIcI��n7jJ���hۛNCS|���j0��8y�iHKֶۛ�k�Ɉ+;Sz������L/��F�*\��Ԕ�#"5��m�2��[S��������=�g��n�a�P�e�ғ�L�� lذaÆ 6l�^k��̱aÆ 6lذaÆ 6lذa;���� �_��ذaÆ 6lذaÆ 6lذaÆ ���R���IEND�B` '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-EDE-CBC', function() { var CBC = des.CBC.instantiate(des.EDE); describe('encryption/decryption', function() { var vectors = [ { key: new Array(4).join('133457799bbcdff1'), iv: '0102030405060708', input: '0123456789abcdef' }, { key: new Array(4).join('0000000000000000'), iv: 'ffffffffffffffff', input: '0000000000000000' }, { key: new Array(4).join('a3a3a3a3b3b3b3b3'), iv: 'cdcdcdcdcdcdcdcd', input: 'cccccccccccccccc' }, { key: new Array(4).join('deadbeefabbadead'), iv: 'a0da0da0da0da0da', input: '0102030405060708090a' }, { key: 'aabbccddeeff0011' + '1111222233334444' + 'ffffeeeeddddcccc', 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-ede3-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); }); }); }); });