Browse Source

bip39: use randombytes package

300
Daniel Cousens 10 years ago
parent
commit
1fc0b204ac
  1. 3
      index.js
  2. 1
      package.json
  3. 12
      test/index.js

3
index.js

@ -1,6 +1,7 @@
var assert = require('assert') var assert = require('assert')
var crypto = require('crypto') var crypto = require('crypto')
var pbkdf2 = require('pbkdf2-compat').pbkdf2Sync var pbkdf2 = require('pbkdf2-compat').pbkdf2Sync
var randomBytes = require('randombytes')
var unorm = require('unorm') var unorm = require('unorm')
var DEFAULT_WORDLIST = require('./wordlists/en.json') var DEFAULT_WORDLIST = require('./wordlists/en.json')
@ -69,7 +70,7 @@ function entropyToMnemonic(entropy, wordlist) {
function generateMnemonic(strength, rng, wordlist) { function generateMnemonic(strength, rng, wordlist) {
strength = strength || 128 strength = strength || 128
rng = rng || crypto.randomBytes rng = rng || randomBytes
var hex = rng(strength / 8).toString('hex') var hex = rng(strength / 8).toString('hex')
return entropyToMnemonic(hex, wordlist) return entropyToMnemonic(hex, wordlist)

1
package.json

@ -22,6 +22,7 @@
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"pbkdf2-compat": "^2.0.1", "pbkdf2-compat": "^2.0.1",
"randombytes": "^2.0.1",
"unorm": "^1.3.3" "unorm": "^1.3.3"
}, },
"devDependencies": { "devDependencies": {

12
test/index.js

@ -1,7 +1,5 @@
var assert = require('assert') var assert = require('assert')
var crypto = require('crypto')
var BIP39 = require('../index.js') var BIP39 = require('../index.js')
var sinon = require('sinon')
var wordlists = { var wordlists = {
english: require('../wordlists/en.json'), english: require('../wordlists/en.json'),
@ -51,13 +49,11 @@ describe('BIP39', function() {
describe('generateMnemonic', function() { describe('generateMnemonic', function() {
vectors.english.forEach(function(v, i) { vectors.english.forEach(function(v, i) {
it('works for tests vector ' + i, sinon.test(function() { it('works for tests vector ' + i, function() {
this.mock(crypto).expects('randomBytes') function rng() { return new Buffer(v[0], 'hex') }
.exactly(1)
.onCall(0).returns(new Buffer(v[0], 'hex'))
assert.equal(BIP39.generateMnemonic(), v[1]) assert.equal(BIP39.generateMnemonic(undefined, rng), v[1])
})) })
}) })
it('can vary generated entropy bit length', function() { it('can vary generated entropy bit length', function() {

Loading…
Cancel
Save