]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - src/js/jsbip39.js
Korean uses ascii spaces, not ideographic spaces
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / src / js / jsbip39.js
index 80ce656583dda9cb8a726ebe28986c50f6df77a4..3230e3bb46f275356bf3db523d85f66f36d65f3e 100644 (file)
@@ -98,7 +98,7 @@ var Mnemonic = function(language) {
 
     self.check = function(mnemonic) {
         var mnemonic = self.splitWords(mnemonic);
-        if (mnemonic.length % 3 > 0) {
+        if (mnemonic.length == 0 || mnemonic.length % 3 > 0) {
             return false
         }
         // idx = map(lambda x: bin(self.wordlist.index(x))[2:].zfill(11), mnemonic)
@@ -130,10 +130,11 @@ var Mnemonic = function(language) {
 
     self.toSeed = function(mnemonic, passphrase) {
         passphrase = passphrase || '';
-        mnemonic = self.joinWords(self.splitWords(self.normalizeString(mnemonic))); // removes blanks
+        mnemonic = self.joinWords(self.splitWords(mnemonic)); // removes duplicate blanks
+        var mnemonicNormalized = self.normalizeString(mnemonic);
         passphrase = self.normalizeString(passphrase)
         passphrase = "mnemonic" + passphrase;
-        var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonic);
+        var mnemonicBits = sjcl.codec.utf8String.toBits(mnemonicNormalized);
         var passphraseBits = sjcl.codec.utf8String.toBits(passphrase);
         var result = sjcl.misc.pbkdf2(mnemonicBits, passphraseBits, PBKDF2_ROUNDS, 512, hmacSHA512);
         var hashHex = sjcl.codec.hex.fromBits(result);
@@ -155,14 +156,7 @@ var Mnemonic = function(language) {
     }
 
     self.normalizeString = function(str) {
-        if (typeof str.normalize == "function") {
-            return str.normalize("NFKD");
-        }
-        else {
-            // TODO decide how to handle this in the future.
-            // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
-            return str;
-        }
+        return str.normalize("NFKD");
     }
 
     function byteArrayToWordArray(data) {