From 9f3a0407587a1e405308ee13774da457e9e12407 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Wed, 9 Aug 2017 17:44:06 -0700 Subject: [PATCH] mnemonic: fix an error for certain languages. --- lib/hd/mnemonic.js | 4 ++-- test/mnemonic-test.js | 31 +++++++++++++++++++++++++------ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/lib/hd/mnemonic.js b/lib/hd/mnemonic.js index bd0e04e8..af2a623e 100644 --- a/lib/hd/mnemonic.js +++ b/lib/hd/mnemonic.js @@ -245,7 +245,7 @@ Mnemonic.prototype.fromPhrase = function fromPhrase(phrase) { // Rebuild entropy bytes. for (let i = 0; i < words.length; i++) { const word = words[i]; - const index = util.binarySearch(wordlist, word, util.strcmp); + const index = wordlist.indexOf(word); if (index === -1) throw new Error('Could not find word.'); @@ -338,7 +338,7 @@ Mnemonic.fromEntropy = function fromEntropy(entropy, lang) { Mnemonic.getLanguage = function getLanguage(word) { for (const lang of Mnemonic.languages) { const wordlist = Mnemonic.getWordlist(lang); - if (util.binarySearch(wordlist, word, util.strcmp) !== -1) + if (wordlist.indexOf(word) !== -1) return lang; } diff --git a/test/mnemonic-test.js b/test/mnemonic-test.js index 106de982..cea0e783 100644 --- a/test/mnemonic-test.js +++ b/test/mnemonic-test.js @@ -13,8 +13,8 @@ const tests = { }; describe('Mnemonic', function() { - for (const lang of Object.keys(tests)) { - const test = tests[lang]; + for (const language of Object.keys(tests)) { + const test = tests[language]; let i = 0; for (const data of test) { @@ -23,19 +23,38 @@ describe('Mnemonic', function() { const passphrase = data[2]; const seed = Buffer.from(data[3], 'hex'); const xpriv = data[4]; - it(`should create a ${lang} mnemonic (${i++})`, () => { + + it(`should create a ${language} mnemonic from entropy (${i})`, () => { const mnemonic = new Mnemonic({ - language: lang, - entropy: entropy, - passphrase: passphrase + language, + entropy, + passphrase }); assert.strictEqual(mnemonic.getPhrase(), phrase); + assert.deepStrictEqual(mnemonic.getEntropy(), entropy); assert.deepStrictEqual(mnemonic.toSeed(), seed); const key = HDPrivateKey.fromMnemonic(mnemonic); assert.strictEqual(key.toBase58(), xpriv); }); + + it(`should create a ${language} mnemonic from phrase (${i})`, () => { + const mnemonic = new Mnemonic({ + language, + phrase, + passphrase + }); + + assert.strictEqual(mnemonic.getPhrase(), phrase); + assert.deepStrictEqual(mnemonic.getEntropy(), entropy); + assert.deepStrictEqual(mnemonic.toSeed(), seed); + + const key = HDPrivateKey.fromMnemonic(mnemonic); + assert.strictEqual(key.toBase58(), xpriv); + }); + + i += 1; } }