X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2Fjs%2Findex.js;h=502bbdff3d4f2b5965c6c16360d085f5c446c1c1;hb=0d876b51df2c7880b2a58fed0c44fb4b20838129;hp=b36e9926cdd96baa71c77f9c076c1d0f281e2e33;hpb=d6cade868f67c10da6fcf20e51643439e9d3be77;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/src/js/index.js b/src/js/index.js index b36e992..502bbdf 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -38,6 +38,7 @@ DOM.entropyWordCount = DOM.entropyContainer.find(".word-count"); DOM.entropyBinary = DOM.entropyContainer.find(".binary"); DOM.entropyWordIndexes = DOM.entropyContainer.find(".word-indexes"); + DOM.entropyChecksum = DOM.entropyContainer.find(".checksum"); DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length"); DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning"); DOM.phrase = $(".phrase"); @@ -1141,7 +1142,7 @@ function wordArrayToPhrase(words) { var phrase = words.join(" "); var language = getLanguageFromPhrase(phrase); - if (language == "japanese") { + if (language == "japanese" || language == "korean") { phrase = words.join("\u3000"); } return phrase; @@ -1195,6 +1196,8 @@ DOM.phrase.val(phrase); // Show the word indexes showWordIndexes(); + // Show the checksum + showChecksum(); } function clearEntropyFeedback() { @@ -1225,7 +1228,7 @@ var entropyTypeStr = getEntropyTypeStr(entropy); var wordCount = Math.floor(numberOfBits / 32) * 3; var bitsPerEvent = entropy.bitsPerEvent.toFixed(2); - var spacedBinaryStr = entropy.binaryStr.match(/.{1,11}/g).join(" " ); + var spacedBinaryStr = addSpacesEveryElevenBits(entropy.binaryStr); DOM.entropyFiltered.html(entropy.cleanHtml); DOM.entropyType.text(entropyTypeStr); DOM.entropyCrackTime.text(timeToCrack); @@ -1457,6 +1460,35 @@ DOM.entropyWordIndexes.text(wordIndexesStr); } + function showChecksum() { + var phrase = DOM.phrase.val(); + var words = phraseToWordArray(phrase); + var checksumBitlength = words.length / 3; + var checksum = ""; + var binaryStr = ""; + var language = getLanguage(); + for (var i=words.length-1; i>=0; i--) { + var word = words[i]; + var wordIndex = WORDLISTS[language].indexOf(word); + var wordBinary = wordIndex.toString(2); + while (wordBinary.length < 11) { + wordBinary = "0" + wordBinary; + } + var binaryStr = wordBinary + binaryStr; + if (binaryStr.length >= checksumBitlength) { + var start = binaryStr.length - checksumBitlength; + var end = binaryStr.length; + checksum = binaryStr.substring(start, end); + // add spaces so the last group is 11 bits, not the first + checksum = checksum.split("").reverse().join("") + checksum = addSpacesEveryElevenBits(checksum); + checksum = checksum.split("").reverse().join("") + break; + } + } + DOM.entropyChecksum.text(checksum); + } + function updateCsv() { var tableCsv = "path,address,public key,private key\n"; var rows = DOM.addresses.find("tr"); @@ -1477,6 +1509,10 @@ DOM.csv.val(tableCsv); } + function addSpacesEveryElevenBits(binaryStr) { + return binaryStr.match(/.{1,11}/g).join(" "); + } + var networks = [ { name: "AXE - Axe", @@ -1564,7 +1600,15 @@ segwitAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.denarius; - setHdCoin(0); + setHdCoin(116); + }, + }, + { + name: "NEBL - Neblio", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.neblio; + setHdCoin(146); }, }, {