�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` var Buffer = require('safe-buffer').Buffer var CipherBase = require('./') var test = require('tape') var inherits = require('inherits') test('basic version', function (t) { function Cipher () { CipherBase.call(this) } inherits(Cipher, CipherBase) Cipher.prototype._update = function (input) { t.ok(Buffer.isBuffer(input)) return input } Cipher.prototype._final = function () { // noop } var cipher = new Cipher() var utf8 = 'abc123abcd' var update = cipher.update(utf8, 'utf8', 'base64') + cipher.final('base64') var string = (Buffer.from(update, 'base64')).toString() t.equals(utf8, string) t.end() }) test('hash mode', function (t) { function Cipher () { CipherBase.call(this, 'finalName') this._cache = [] } inherits(Cipher, CipherBase) Cipher.prototype._update = function (input) { t.ok(Buffer.isBuffer(input)) this._cache.push(input) } Cipher.prototype._final = function () { return Buffer.concat(this._cache) } var cipher = new Cipher() var utf8 = 'abc123abcd' var update = cipher.update(utf8, 'utf8').finalName('base64') var string = (Buffer.from(update, 'base64')).toString() t.equals(utf8, string) t.end() }) test('hash mode as stream', function (t) { function Cipher () { CipherBase.call(this, 'finalName') this._cache = [] } inherits(Cipher, CipherBase) Cipher.prototype._update = function (input) { t.ok(Buffer.isBuffer(input)) this._cache.push(input) } Cipher.prototype._final = function () { return Buffer.concat(this._cache) } var cipher = new Cipher() cipher.on('error', function (e) { t.notOk(e) }) var utf8 = 'abc123abcd' cipher.end(utf8, 'utf8') var update = cipher.read().toString('base64') var string = (Buffer.from(update, 'base64')).toString() t.equals(utf8, string) t.end() }) test('encodings', function (t) { inherits(Cipher, CipherBase) function Cipher () { CipherBase.call(this) } Cipher.prototype._update = function (input) { return input } Cipher.prototype._final = function () { // noop } t.test('mix and match encoding', function (t) { t.plan(2) var cipher = new Cipher() cipher.update('foo', 'utf8', 'utf8') t.throws(function () { cipher.update('foo', 'utf8', 'base64') }) cipher = new Cipher() cipher.update('foo', 'utf8', 'base64') t.doesNotThrow(function () { cipher.update('foo', 'utf8') cipher.final('base64') }) }) t.test('handle long uft8 plaintexts', function (t) { t.plan(1) var txt = 'ふっかつ あきる すぶり はやい つける まゆげ たんさん みんぞく ねほりはほり せまい たいまつばな ひはん' var cipher = new Cipher() var decipher = new Cipher() var enc = decipher.update(cipher.update(txt, 'utf8', 'base64'), 'base64', 'utf8') enc += decipher.update(cipher.final('base64'), 'base64', 'utf8') enc += decipher.final('utf8') t.equals(txt, enc) }) })