X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2Fjs%2Findex.js;h=45c7cb1f26d69de969735171d234ec82057653b7;hb=0cda44d5f6ca63520ad39e88771c374da2993d6c;hp=01027b58571cc399ff9fc9f3f8bd1b5bac7636a7;hpb=4d9c184a8416d6b8451bbfa5e856fe11103ed2e3;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git diff --git a/src/js/index.js b/src/js/index.js index 01027b5..45c7cb1 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -14,6 +14,7 @@ var showPubKey = true; var showPrivKey = true; var showQr = false; + var litecoinUseLtub = false; var entropyChangeTimeoutEvent = null; var phraseChangeTimeoutEvent = null; @@ -43,6 +44,8 @@ DOM.generate = $(".generate"); DOM.seed = $(".seed"); DOM.rootKey = $(".root-key"); + DOM.litecoinLtubContainer = $(".litecoin-ltub-container"); + DOM.litecoinUseLtub = $(".litecoin-use-ltub"); DOM.extendedPrivKey = $(".extended-priv-key"); DOM.extendedPubKey = $(".extended-pub-key"); DOM.bip32tab = $("#bip32-tab"); @@ -98,6 +101,7 @@ DOM.generate.on("click", generateClicked); DOM.more.on("click", showMore); DOM.rootKey.on("input", delayedRootKeyChanged); + DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged); DOM.bip32path.on("input", calcForDerivationPath); DOM.bip44account.on("input", calcForDerivationPath); DOM.bip44change.on("input", calcForDerivationPath); @@ -123,14 +127,15 @@ function networkChanged(e) { clearDerivedKeys(); clearAddressesList(); + DOM.litecoinLtubContainer.addClass("hidden"); var networkIndex = e.target.value; var network = networks[networkIndex]; network.onSelect(); - if (network.bip49available) { - showBip49(); + if (network.p2wpkhNestedInP2shAvailable) { + showP2wpkhNestedInP2shAvailable(); } else { - hideBip49(); + showP2wpkhNestedInP2shUnavailable(); } if (seed != null) { phraseChanged(); @@ -175,6 +180,10 @@ function delayedPhraseChanged() { hideValidationError(); + seed = null; + bip32RootKey = null; + bip32ExtendedKey = null; + clearAddressesList(); showPending(); if (phraseChangeTimeoutEvent != null) { clearTimeout(phraseChangeTimeoutEvent); @@ -184,7 +193,6 @@ function phraseChanged() { showPending(); - hideValidationError(); setMnemonicLanguage(); // Get the mnemonic phrase var phrase = DOM.phrase.val(); @@ -197,7 +205,6 @@ var passphrase = DOM.passphrase.val(); calcBip32RootKeyFromSeed(phrase, passphrase); calcForDerivationPath(); - hidePending(); } function delayedEntropyChanged() { @@ -272,11 +279,21 @@ calcForDerivationPath(); } + function litecoinUseLtubChanged() { + litecoinUseLtub = DOM.litecoinUseLtub.prop("checked"); + if (litecoinUseLtub) { + network = bitcoinjs.bitcoin.networks.litecoinLtub; + } + else { + network = bitcoinjs.bitcoin.networks.litecoin; + } + phraseChanged(); + } + function calcForDerivationPath() { - showPending(); clearDerivedKeys(); clearAddressesList(); - hideValidationError(); + showPending(); // Don't show bip49 if it's selected but network doesn't support it if (bip49TabSelected() && !networkHasBip49()) { return; @@ -296,7 +313,6 @@ displayBip49Info(); } displayBip32Info(); - hidePending(); } function generateClicked() { @@ -532,7 +548,9 @@ return "No root key"; } // Check no hardened derivation path when using xpub keys - var hardened = path.indexOf("'") > -1; + var hardenedPath = path.indexOf("'") > -1; + var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked"); + var hardened = hardenedPath || hardenedAddresses; var isXpubkey = bip32RootKey.isNeutered(); if (hardened && isXpubkey) { return "Hardened derivation path is invalid with xpub key"; @@ -603,23 +621,25 @@ for (var i=0; i"); option.attr("value", i); option.text(network.name); + if (network.name == "BTC - Bitcoin") { + option.prop("selected", true); + } DOM.phraseNetwork.append(option); } } @@ -1140,7 +1166,7 @@ } function networkHasBip49() { - return networks[DOM.network.val()].bip49available; + return networks[DOM.network.val()].p2wpkhNestedInP2shAvailable; } function bip49TabSelected() { @@ -1152,20 +1178,28 @@ DOM.bip49coin.val(coinValue); } - function showBip49() { + function showP2wpkhNestedInP2shAvailable() { DOM.bip49unavailable.addClass("hidden"); DOM.bip49available.removeClass("hidden"); } - function hideBip49() { + function showP2wpkhNestedInP2shUnavailable() { DOM.bip49available.addClass("hidden"); DOM.bip49unavailable.removeClass("hidden"); } var networks = [ + { + name: "BCH - Bitcoin Cash", + p2wpkhNestedInP2shAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(145); + }, + }, { name: "BTC - Bitcoin", - bip49available: true, + p2wpkhNestedInP2shAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoin; setHdCoin(0); @@ -1173,7 +1207,7 @@ }, { name: "BTC - Bitcoin Testnet", - bip49available: true, + p2wpkhNestedInP2shAvailable: true, onSelect: function() { network = bitcoinjs.bitcoin.networks.testnet; setHdCoin(1); @@ -1181,7 +1215,7 @@ }, { name: "CLAM - Clams", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.clam; setHdCoin(23); @@ -1189,7 +1223,7 @@ }, { name: "CRW - Crown", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.crown; setHdCoin(72); @@ -1197,7 +1231,7 @@ }, { name: "DASH - Dash", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dash; setHdCoin(5); @@ -1205,7 +1239,7 @@ }, { name: "DASH - Dash Testnet", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dashtn; setHdCoin(1); @@ -1213,7 +1247,7 @@ }, { name: "DOGE - Dogecoin", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.dogecoin; setHdCoin(3); @@ -1221,7 +1255,7 @@ }, { name: "ETH - Ethereum", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.bitcoin; setHdCoin(60); @@ -1229,7 +1263,7 @@ }, { name: "GAME - GameCredits", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.game; setHdCoin(101); @@ -1237,7 +1271,7 @@ }, { name: "JBS - Jumbucks", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.jumbucks; setHdCoin(26); @@ -1245,23 +1279,49 @@ }, { name: "LTC - Litecoin", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.litecoin; setHdCoin(2); + DOM.litecoinLtubContainer.removeClass("hidden"); + }, + }, + { + name: "MAZA - Maza", + p2wpkhNestedInP2shAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.maza; + setHdCoin(13); }, }, + { name: "NMC - Namecoin", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.namecoin; setHdCoin(7); }, }, + { + name: "PIVX - PIVX", + p2wpkhNestedInP2shAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.pivx; + setHdCoin(119); + }, + }, + { + name: "PIVX - PIVX Testnet", + p2wpkhNestedInP2shAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.pivxtestnet; + setHdCoin(1); + }, + }, { name: "PPC - Peercoin", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.peercoin; setHdCoin(6); @@ -1269,7 +1329,7 @@ }, { name: "SDC - ShadowCash", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.shadow; setHdCoin(35); @@ -1277,7 +1337,7 @@ }, { name: "SDC - ShadowCash Testnet", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.shadowtn; setHdCoin(1); @@ -1285,7 +1345,7 @@ }, { name: "SLM - Slimcoin", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.slimcoin; setHdCoin(63); @@ -1293,7 +1353,7 @@ }, { name: "SLM - Slimcoin Testnet", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.slimcointn; setHdCoin(111); @@ -1301,7 +1361,7 @@ }, { name: "VIA - Viacoin", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.viacoin; setHdCoin(14); @@ -1309,26 +1369,26 @@ }, { name: "VIA - Viacoin Testnet", - bip49available: false, + p2wpkhNestedInP2shAvailable: false, onSelect: function() { network = bitcoinjs.bitcoin.networks.viacointestnet; setHdCoin(1); }, }, { - name: "XRP - Ripple", - bip49available: false, + name: "XMY - Myriadcoin", + p2wpkhNestedInP2shAvailable: false, onSelect: function() { - network = bitcoinjs.bitcoin.networks.bitcoin; - setHdCoin(144); + network = bitcoinjs.bitcoin.networks.myriadcoin; + setHdCoin(90); }, }, { - name: "XMY - Myriadcoin", - bip49available: false, + name: "XRP - Ripple", + p2wpkhNestedInP2shAvailable: false, onSelect: function() { - network = bitcoinjs.bitcoin.networks.myriadcoin; - setHdCoin(90); + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(144); }, } ]