123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 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)
- })
- })
|