X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2Fjs%2Fjsbip39.js;h=80ce656583dda9cb8a726ebe28986c50f6df77a4;hb=92b46ab44fb7fe7aef1cef3d843d1e3d19c1d7cb;hp=257d8d70277e38ba444e742a1901dbc02ec87a0b;hpb=e66c8a9b5aade1c6b19c58e5366f777fde3f373f;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/src/js/jsbip39.js b/src/js/jsbip39.js index 257d8d7..80ce656 100644 --- a/src/js/jsbip39.js +++ b/src/js/jsbip39.js @@ -93,11 +93,11 @@ var Mnemonic = function(language) { var idx = parseInt(b.substring(i * 11, (i + 1) * 11), 2); result.push(wordlist[idx]); } - return result.join(' '); + return self.joinWords(result); } self.check = function(mnemonic) { - var mnemonic = mnemonic.split(' ') + var mnemonic = self.splitWords(mnemonic); if (mnemonic.length % 3 > 0) { return false } @@ -130,7 +130,7 @@ var Mnemonic = function(language) { self.toSeed = function(mnemonic, passphrase) { passphrase = passphrase || ''; - mnemonic = self.normalizeString(mnemonic) + mnemonic = self.joinWords(self.splitWords(self.normalizeString(mnemonic))); // removes blanks passphrase = self.normalizeString(passphrase) passphrase = "mnemonic" + passphrase; var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonic); @@ -140,6 +140,20 @@ var Mnemonic = function(language) { return hashHex; } + self.splitWords = function(mnemonic) { + return mnemonic.split(/\s/g).filter(function(x) { return x.length; }); + } + + self.joinWords = function(words) { + // Set space correctly depending on the language + // see https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md#japanese + var space = " "; + if (language == "japanese") { + space = "\u3000"; // ideographic space + } + return words.join(space); + } + self.normalizeString = function(str) { if (typeof str.normalize == "function") { return str.normalize("NFKD");