Commit 193bbeb0 authored by Daniel Cousens's avatar Daniel Cousens

use safe-buffer

parent de2af975
var Buffer = require('safe-buffer').Buffer
var Transform = require('stream').Transform
var inherits = require('inherits')
var StringDecoder = require('string_decoder').StringDecoder
module.exports = CipherBase
inherits(CipherBase, Transform)
var inherits = require('inherits')
function CipherBase (hashMode) {
Transform.call(this)
this.hashMode = typeof hashMode === 'string'
......@@ -14,22 +14,24 @@ function CipherBase (hashMode) {
this._decoder = null
this._encoding = null
}
inherits(CipherBase, Transform)
CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
if (typeof data === 'string') {
data = new Buffer(data, inputEnc)
data = Buffer.from(data, inputEnc)
}
var outData = this._update(data)
if (this.hashMode) {
return this
}
if (this.hashMode) return this
if (outputEnc) {
outData = this._toString(outData, outputEnc)
}
return outData
}
CipherBase.prototype.setAutoPadding = function () {}
CipherBase.prototype.getAuthTag = function () {
throw new Error('trying to get auth tag in unsupported state')
}
......@@ -62,9 +64,9 @@ CipherBase.prototype._flush = function (done) {
this.push(this._final())
} catch (e) {
err = e
} finally {
done(err)
}
done(err)
}
CipherBase.prototype._finalOrDigest = function (outputEnc) {
var outData = this._final() || new Buffer('')
......@@ -79,12 +81,15 @@ CipherBase.prototype._toString = function (value, enc, fin) {
this._decoder = new StringDecoder(enc)
this._encoding = enc
}
if (this._encoding !== enc) {
throw new Error('can\'t switch encodings')
}
if (this._encoding !== enc) throw new Error('can\'t switch encodings')
var out = this._decoder.write(value)
if (fin) {
out += this._decoder.end()
}
return out
}
module.exports = CipherBase
......@@ -21,9 +21,11 @@
},
"homepage": "https://github.com/crypto-browserify/cipher-base#readme",
"dependencies": {
"inherits": "^2.0.1"
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
},
"devDependencies": {
"standard": "^10.0.2",
"tap-spec": "^4.1.0",
"tape": "^4.2.0"
}
......
var test = require('tape')
var Buffer = require('safe-buffer').Buffer
var CipherBase = require('./')
var test = require('tape')
var inherits = require('inherits')
test('basic version', function (t) {
inherits(Cipher, CipherBase)
function Cipher () {
CipherBase.call(this)
}
inherits(Cipher, CipherBase)
Cipher.prototype._update = function (input) {
t.ok(Buffer.isBuffer(input))
return input
......@@ -17,16 +19,16 @@ test('basic version', function (t) {
var cipher = new Cipher()
var utf8 = 'abc123abcd'
var update = cipher.update(utf8, 'utf8', 'base64') + cipher.final('base64')
var string = (new Buffer(update, 'base64')).toString()
var string = (Buffer.from(update, 'base64')).toString()
t.equals(utf8, string)
t.end()
})
test('hash mode', function (t) {
inherits(Cipher, CipherBase)
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)
......@@ -37,17 +39,17 @@ test('hash mode', function (t) {
var cipher = new Cipher()
var utf8 = 'abc123abcd'
var update = cipher.update(utf8, 'utf8').finalName('base64')
var string = (new Buffer(update, 'base64')).toString()
var string = (Buffer.from(update, 'base64')).toString()
t.equals(utf8, string)
t.end()
})
test('hash mode as stream', function (t) {
inherits(Cipher, CipherBase)
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)
......@@ -62,11 +64,12 @@ test('hash mode as stream', function (t) {
var utf8 = 'abc123abcd'
cipher.end(utf8, 'utf8')
var update = cipher.read().toString('base64')
var string = (new Buffer(update, 'base64')).toString()
var string = (Buffer.from(update, 'base64')).toString()
t.equals(utf8, string)
t.end()
})
test('encodings', function (t) {
inherits(Cipher, CipherBase)
function Cipher () {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment