From 2efba14c036c09d0bd8248d0af06ec3d7976027e Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Tue, 23 May 2017 15:04:19 +1000 Subject: [PATCH] use safe-buffer --- index.js | 9 +++++---- package.json | 1 + test/index.js | 11 ++++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index a3d3092..36b286b 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,4 @@ +var Buffer = require('safe-buffer').Buffer var createHash = require('create-hash') var pbkdf2 = require('pbkdf2').pbkdf2Sync var randomBytes = require('randombytes') @@ -44,8 +45,8 @@ function salt (password) { } function mnemonicToSeed (mnemonic, password) { - var mnemonicBuffer = new Buffer(unorm.nfkd(mnemonic), 'utf8') - var saltBuffer = new Buffer(salt(unorm.nfkd(password)), 'utf8') + var mnemonicBuffer = Buffer.from(unorm.nfkd(mnemonic), 'utf8') + var saltBuffer = Buffer.from(salt(unorm.nfkd(password)), 'utf8') return pbkdf2(mnemonicBuffer, saltBuffer, 2048, 64, 'sha512') } @@ -79,7 +80,7 @@ function mnemonicToEntropy (mnemonic, wordlist) { if (entropyBytes.length > 32) throw new Error(INVALID_ENTROPY) if (entropyBytes.length % 4 !== 0) throw new Error(INVALID_ENTROPY) - var entropy = new Buffer(entropyBytes) + var entropy = Buffer.from(entropyBytes) var newChecksum = deriveChecksumBits(entropy) if (newChecksum !== checksumBits) throw new Error(INVALID_CHECKSUM) @@ -96,7 +97,7 @@ function entropyToMnemonic (entropyHex, wordlist) { // multiple of 4 if (entropyHex.length % 8 !== 0) throw new TypeError(INVALID_ENTROPY) - var entropy = new Buffer(entropyHex, 'hex') + var entropy = Buffer.from(entropyHex, 'hex') var entropyBits = bytesToBinary([].slice.call(entropy)) var checksumBits = deriveChecksumBits(entropy) diff --git a/package.json b/package.json index 7fac50e..defd7a5 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "create-hash": "^1.1.0", "pbkdf2": "^3.0.9", "randombytes": "^2.0.1", + "safe-buffer": "^5.0.1", "unorm": "^1.3.3" }, "devDependencies": { diff --git a/test/index.js b/test/index.js index 9867dfd..63f36f0 100644 --- a/test/index.js +++ b/test/index.js @@ -1,4 +1,5 @@ var bip39 = require('../') +var Buffer = require('safe-buffer').Buffer var download = require('../util/wordlists').download var WORDLISTS = { english: require('../wordlists/english.json'), @@ -21,7 +22,7 @@ function testVector (description, wordlist, password, v, i) { t.equal(bip39.mnemonicToSeedHex(vmnemonic, password), vseedHex, 'mnemonicToSeedHex returns ' + vseedHex.slice(0, 40) + '...') t.equal(bip39.entropyToMnemonic(ventropy, wordlist), vmnemonic, 'entropyToMnemonic returns ' + vmnemonic.slice(0, 40) + '...') - function rng () { return new Buffer(ventropy, 'hex') } + function rng () { return Buffer.from(ventropy, 'hex') } t.equal(bip39.generateMnemonic(undefined, rng, wordlist), vmnemonic, 'generateMnemonic returns RNG entropy unmodified') t.equal(bip39.validateMnemonic(vmnemonic, wordlist), true, 'validateMnemonic returns true') }) @@ -35,15 +36,15 @@ test('invalid entropy', function (t) { t.plan(3) t.throws(function () { - bip39.entropyToMnemonic(new Buffer('', 'hex')) + bip39.entropyToMnemonic(Buffer.from('', 'hex')) }, /^TypeError: Invalid entropy$/, 'throws for empty entropy') t.throws(function () { - bip39.entropyToMnemonic(new Buffer('000000', 'hex')) + bip39.entropyToMnemonic(Buffer.from('000000', 'hex')) }, /^TypeError: Invalid entropy$/, 'throws for entropy that\'s not a multitude of 4 bytes') t.throws(function () { - bip39.entropyToMnemonic(new Buffer(new Array(1028 + 1).join('00'), 'hex')) + bip39.entropyToMnemonic(Buffer.from(new Array(1028 + 1).join('00'), 'hex')) }, /^TypeError: Invalid entropy$/, 'throws for entropy that is larger than 1024') }) @@ -74,7 +75,7 @@ test('generateMnemonic requests the exact amount of data from an RNG', function bip39.generateMnemonic(160, function (size) { t.equal(size, 160 / 8) - return new Buffer(size) + return Buffer.allocUnsafe(size) }) })