From 193bbeb0d60ff206b072d4e18b32fcf150eb0fad Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 24 May 2017 17:02:24 +1000 Subject: [PATCH 1/3] use safe-buffer --- index.js | 31 ++++++++++++++++++------------- package.json | 4 +++- test.js | 17 ++++++++++------- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/index.js b/index.js index 1a661d6..13bed28 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,8 @@ +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 diff --git a/package.json b/package.json index 1203f7d..2caff01 100644 --- a/package.json +++ b/package.json @@ -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" } diff --git a/test.js b/test.js index 57d144a..29d3492 100644 --- a/test.js +++ b/test.js @@ -1,12 +1,14 @@ -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 () { From a9fb6e316c25b25d2bd04fa5b6eb748318bdcb04 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 24 May 2017 17:02:32 +1000 Subject: [PATCH 2/3] add MIT LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f06007a --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 crypto-browserify contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 9345e1d21fd10555bc4f39ccae5512ca0202c5f6 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 24 May 2017 17:02:36 +1000 Subject: [PATCH 3/3] rename README to README, add .gitignore --- .gitignore | 1 + readme.md => README.md | 0 2 files changed, 1 insertion(+) create mode 100644 .gitignore rename readme.md => README.md (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/readme.md b/README.md similarity index 100% rename from readme.md rename to README.md