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

1
package.json

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

12
test/index.js

@ -1,7 +1,5 @@
var assert = require('assert')
var crypto = require('crypto')
var BIP39 = require('../index.js')
var sinon = require('sinon')
var wordlists = {
english: require('../wordlists/en.json'),
@ -51,13 +49,11 @@ describe('BIP39', function() {
describe('generateMnemonic', function() {
vectors.english.forEach(function(v, i) {
it('works for tests vector ' + i, sinon.test(function() {
this.mock(crypto).expects('randomBytes')
.exactly(1)
.onCall(0).returns(new Buffer(v[0], 'hex'))
it('works for tests vector ' + i, function() {
function rng() { return 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() {

Loading…
Cancel
Save