X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2Fjs%2Findex.js;h=502bbdff3d4f2b5965c6c16360d085f5c446c1c1;hb=0d876b51df2c7880b2a58fed0c44fb4b20838129;hp=580573dd5309ed9a263586f1f02b5daab4189e79;hpb=05311e7f5432d324cdcdd1d72d1287b8abe04d40;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/src/js/index.js b/src/js/index.js index 580573d..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,13 +1228,14 @@ var entropyTypeStr = getEntropyTypeStr(entropy); var wordCount = Math.floor(numberOfBits / 32) * 3; var bitsPerEvent = entropy.bitsPerEvent.toFixed(2); + var spacedBinaryStr = addSpacesEveryElevenBits(entropy.binaryStr); DOM.entropyFiltered.html(entropy.cleanHtml); DOM.entropyType.text(entropyTypeStr); DOM.entropyCrackTime.text(timeToCrack); DOM.entropyEventCount.text(entropy.base.ints.length); DOM.entropyBits.text(numberOfBits); DOM.entropyWordCount.text(wordCount); - DOM.entropyBinary.text(entropy.binaryStr); + DOM.entropyBinary.text(spacedBinaryStr); DOM.entropyBitsPerEvent.text(bitsPerEvent); // detect and warn of filtering var rawNoSpaces = DOM.entropy.val().replace(/\s/g, ""); @@ -1456,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"); @@ -1476,6 +1509,10 @@ DOM.csv.val(tableCsv); } + function addSpacesEveryElevenBits(binaryStr) { + return binaryStr.match(/.{1,11}/g).join(" "); + } + var networks = [ { name: "AXE - Axe", @@ -1494,6 +1531,14 @@ setHdCoin(145); }, }, + { + name: "BLK - BlackCoin", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.blackcoin; + setHdCoin(10); + }, + }, { name: "BTC - Bitcoin", segwitAvailable: true, @@ -1550,6 +1595,22 @@ setHdCoin(1); }, }, + { + name: "DNR - Denarius", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.denarius; + setHdCoin(116); + }, + }, + { + name: "NEBL - Neblio", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.neblio; + setHdCoin(146); + }, + }, { name: "DOGE - Dogecoin", segwitAvailable: false, @@ -1735,14 +1796,6 @@ setHdCoin(144); }, }, - { - name: "BLK - BlackCoin", - segwitAvailable: false, - onSelect: function() { - network = bitcoinjs.bitcoin.networks.blackcoin; - setHdCoin(10); - }, - } ] var clients = [