X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2Fjs%2Findex.js;h=483a694987e56797ecc0b405b7db98c77eded4f6;hb=24355c461b17837bcbe97d7e53ac4a46df6d80fd;hp=e80a76494c97189f2a1550677c0f1b45f2301f6b;hpb=85f762c905ce27b728e5e9729bc658f5f6f8d5f3;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/src/js/index.js b/src/js/index.js index e80a764..483a694 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -40,6 +40,7 @@ DOM.entropyWordIndexes = DOM.entropyContainer.find(".word-indexes"); DOM.entropyChecksum = DOM.entropyContainer.find(".checksum"); DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length"); + DOM.entropyWeakEntropyOverrideWarning = DOM.entropyContainer.find(".weak-entropy-override-warning"); DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning"); DOM.phrase = $(".phrase"); DOM.passphrase = $(".passphrase"); @@ -88,9 +89,10 @@ DOM.bip141path = $("#bip141-path"); DOM.bip141semantics = $(".bip141-semantics"); DOM.generatedStrength = $(".generate-container .strength"); + DOM.generatedStrengthWarning = $(".generate-container .warning"); DOM.hardenedAddresses = $(".hardened-addresses"); - DOM.useBitpayAddressesContainer = $(".use-bitpay-addresses-container"); - DOM.useBitpayAddresses = $(".use-bitpay-addresses"); + DOM.bitcoinCashAddressTypeContainer = $(".bch-addr-type-container"); + DOM.bitcoinCashAddressType = $("[name=bch-addr-type]") DOM.useBip38 = $(".use-bip38"); DOM.bip38Password = $(".bip38-password"); DOM.addresses = $(".addresses"); @@ -114,6 +116,7 @@ function init() { // Events + DOM.generatedStrength.on("change", generatedStrengthChanged); DOM.network.on("change", networkChanged); DOM.bip32Client.on("change", bip32ClientChanged); DOM.useEntropy.on("change", setEntropyVisibility); @@ -144,7 +147,7 @@ DOM.privateKeyToggle.on("click", togglePrivateKeys); DOM.csvTab.on("click", updateCsv); DOM.languages.on("click", languageChanged); - DOM.useBitpayAddresses.on("change", useBitpayAddressesChange); + DOM.bitcoinCashAddressType.on("change", bitcoinCashAddressTypeChange); setQrEvents(DOM.showQrEls); disableForms(); hidePending(); @@ -155,11 +158,21 @@ // Event handlers + function generatedStrengthChanged() { + var strength = parseInt(DOM.generatedStrength.val()); + if (strength < 12) { + DOM.generatedStrengthWarning.removeClass("hidden"); + } + else { + DOM.generatedStrengthWarning.addClass("hidden"); + } + } + function networkChanged(e) { clearDerivedKeys(); clearAddressesList(); DOM.litecoinLtubContainer.addClass("hidden"); - DOM.useBitpayAddressesContainer.addClass("hidden"); + DOM.bitcoinCashAddressTypeContainer.addClass("hidden"); var networkIndex = e.target.value; var network = networks[networkIndex]; network.onSelect(); @@ -411,8 +424,7 @@ }, 50); } - function useBitpayAddressesChange() { - setBitcoinCashNetworkValues(); + function bitcoinCashAddressTypeChange() { phraseChanged(); } @@ -839,6 +851,16 @@ privkey = convertRipplePriv(privkey); address = convertRippleAdrr(address); } + // Bitcoin Cash address format may vary + if (networks[DOM.network.val()].name == "BCH - Bitcoin Cash") { + var bchAddrType = DOM.bitcoinCashAddressType.filter(":checked").val(); + if (bchAddrType == "cashaddr") { + address = bchaddr.toCashAddress(address); + } + else if (bchAddrType == "bitpay") { + address = bchaddr.toBitpayAddress(address); + } + } // Segwit addresses are different if (isSegwit) { if (!segwitAvailable) { @@ -1142,7 +1164,7 @@ function wordArrayToPhrase(words) { var phrase = words.join(" "); var language = getLanguageFromPhrase(phrase); - if (language == "japanese" || language == "korean") { + if (language == "japanese") { phrase = words.join("\u3000"); } return phrase; @@ -1178,6 +1200,17 @@ mnemonicLength = parseInt(mnemonicLength); var numberOfBits = 32 * mnemonicLength / 3; bits = bits.substring(0, numberOfBits); + // show warning for weak entropy override + if (mnemonicLength / 3 * 32 > entropy.binaryStr.length) { + DOM.entropyWeakEntropyOverrideWarning.removeClass("hidden"); + } + else { + DOM.entropyWeakEntropyOverrideWarning.addClass("hidden"); + } + } + else { + // hide warning for weak entropy override + DOM.entropyWeakEntropyOverrideWarning.addClass("hidden"); } // Discard trailing entropy var bitsToUse = Math.floor(bits.length / 32) * 32; @@ -1393,19 +1426,6 @@ DOM.bip141unavailable.removeClass("hidden"); } - function useBitpayAddresses() { - return !(DOM.useBitpayAddresses.prop("checked")); - } - - function setBitcoinCashNetworkValues() { - if (useBitpayAddresses()) { - network = bitcoinjs.bitcoin.networks.bitcoin; - } - else { - network = bitcoinjs.bitcoin.networks.bitcoinCashBitbpay; - } - } - function adjustNetworkForSegwit() { // If segwit is selected the xpub/xprv prefixes need to be adjusted // to avoid accidentally importing BIP49 xpub to BIP44 watch only @@ -1558,8 +1578,7 @@ name: "BCH - Bitcoin Cash", segwitAvailable: false, onSelect: function() { - DOM.useBitpayAddressesContainer.removeClass("hidden"); - setBitcoinCashNetworkValues(); + DOM.bitcoinCashAddressTypeContainer.removeClass("hidden"); setHdCoin(145); }, }, @@ -1821,7 +1840,7 @@ }, { name: "FJC - Fujicoin", - segwitAvailable: false, + segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.fujicoin; setHdCoin(75); @@ -1931,6 +1950,14 @@ setHdCoin(141); }, }, + { + name: "KOBO - Kobocoin", + bip49available: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.kobocoin; + setHdCoin(196); + }, + }, { name: "LBC - Library Credits", segwitAvailable: false, @@ -2326,7 +2353,7 @@ }, { name: "VTC - Vertcoin", - segwitAvailable: false, + segwitAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.vertcoin; setHdCoin(28); @@ -2396,6 +2423,22 @@ setHdCoin(136); }, }, + { + name: "ZEC - Zcash", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.zcash; + setHdCoin(133); + }, + }, + { + name: "XUEZ - Xuez", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.xuez; + setHdCoin(225); + }, + }, ] var clients = [