X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git;a=blobdiff_plain;f=src%2Fjs%2Findex.js;h=dea2ceb2411e94865972980e0c5ee844c1aa0e68;hp=ff35755383b2ab5e26330dafb85d26dbe1c24fe7;hb=4735db1064dc75b71e93eedafa988db037687c93;hpb=7733ac322b60127fa8d845f90e7605625996c9d1 diff --git a/src/js/index.js b/src/js/index.js index ff35755..dea2ceb 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -23,6 +23,7 @@ var generationProcesses = []; var DOM = {}; + DOM.privacyScreenToggle = $(".privacy-screen-toggle"); DOM.network = $(".network"); DOM.bip32Client = $("#bip32-client"); DOM.phraseNetwork = $("#network-phrase"); @@ -118,6 +119,7 @@ function init() { // Events + DOM.privacyScreenToggle.on("change", privacyScreenToggled); DOM.generatedStrength.on("change", generatedStrengthChanged); DOM.network.on("change", networkChanged); DOM.bip32Client.on("change", bip32ClientChanged); @@ -447,6 +449,17 @@ $("td.privkey span").toggleClass("invisible"); } + function privacyScreenToggled() { + // private-data contains elements added to DOM at runtime + // so catch all by adding visual privacy class to the root of the DOM + if (DOM.privacyScreenToggle.prop("checked")) { + $("body").addClass("visual-privacy"); + } + else { + $("body").removeClass("visual-privacy"); + } + } + // Private methods function generateRandomPhrase() { @@ -478,6 +491,37 @@ } function calcBip32RootKeyFromBase58(rootKeyBase58) { + // try parsing with various segwit network params since this extended + // key may be from any one of them. + if (networkHasSegwit()) { + var n = network; + if ("baseNetwork" in n) { + n = bitcoinjs.bitcoin.networks[n.baseNetwork]; + } + // try parsing using base network params + try { + bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n); + return; + } + catch (e) {} + // try parsing using p2wpkh params + if ("p2wpkh" in n) { + try { + bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n.p2wpkh); + return; + } + catch (e) {} + } + // try parsing using p2wpkh-in-p2sh network params + if ("p2wpkhInP2sh" in n) { + try { + bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n.p2wpkhInP2sh); + return; + } + catch (e) {} + } + } + // try the network params as currently specified bip32RootKey = bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network); } @@ -551,6 +595,37 @@ } function validateRootKey(rootKeyBase58) { + // try various segwit network params since this extended key may be from + // any one of them. + if (networkHasSegwit()) { + var n = network; + if ("baseNetwork" in n) { + n = bitcoinjs.bitcoin.networks[n.baseNetwork]; + } + // try parsing using base network params + try { + bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n); + return ""; + } + catch (e) {} + // try parsing using p2wpkh params + if ("p2wpkh" in n) { + try { + bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n.p2wpkh); + return ""; + } + catch (e) {} + } + // try parsing using p2wpkh-in-p2sh network params + if ("p2wpkhInP2sh" in n) { + try { + bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, n.p2wpkhInP2sh); + return ""; + } + catch (e) {} + } + } + // try the network params as currently specified try { bitcoinjs.bitcoin.HDNode.fromBase58(rootKeyBase58, network); } @@ -835,7 +910,14 @@ indexText = indexText + "'"; } // Ethereum values are different - if (networks[DOM.network.val()].name == "ETH - Ethereum") { + if ((networks[DOM.network.val()].name == "ETH - Ethereum") + || (networks[DOM.network.val()].name == "ETC - Ethereum Classic") + || (networks[DOM.network.val()].name == "PIRL - Pirl") + || (networks[DOM.network.val()].name == "MIX - MIX") + || (networks[DOM.network.val()].name == "MUSIC - Musicoin") + || (networks[DOM.network.val()].name == "POA - Poa") + || (networks[DOM.network.val()].name == "EXP - Expanse") + || (networks[DOM.network.val()].name == "CLO - Callisto")) { var privKeyBuffer = keyPair.d.toBuffer(32); privkey = privKeyBuffer.toString('hex'); var addressBuffer = ethUtil.privateToAddress(privKeyBuffer); @@ -1577,6 +1659,13 @@ network = bitcoinjs.bitcoin.networks.axe; setHdCoin(4242); }, + }, + { + name: "ANON - ANON", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.anon; + setHdCoin(220); + }, }, { name: "BCA - Bitcoin Atom", @@ -1613,6 +1702,20 @@ setHdCoin(10); }, }, + { + name: "BND - Blocknode", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.blocknode; + setHdCoin(2941); + }, + }, + { + name: "tBND - Blocknode Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.blocknode_testnet; + setHdCoin(1); + }, + }, { name: "BRIT - Britcoin", onSelect: function() { @@ -1647,6 +1750,13 @@ network = bitcoinjs.bitcoin.networks.testnet; setHdCoin(1); }, + }, + { + name: "BITG - Bitcoin Green", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoingreen; + setHdCoin(222); + }, }, { name: "BTCP - Bitcoin Private", @@ -1662,6 +1772,13 @@ setHdCoin(177); }, }, + { + name: "BTDX - BitCloud", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcloud; + setHdCoin(218); + }, + }, { name: "BTG - Bitcoin Gold", onSelect: function() { @@ -1683,6 +1800,13 @@ setHdCoin(19); }, }, + { + name: "CESC - Cryptoescudo", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.cannacoin; + setHdCoin(111); + }, + }, { name: "CDN - Canadaecoin", onSelect: function() { @@ -1697,6 +1821,14 @@ setHdCoin(23); }, }, + { + name: "CLO - Callisto", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(820); + }, + }, { name: "CLUB - Clubcoin", onSelect: function() { @@ -1816,6 +1948,14 @@ setHdCoin(151); }, }, + { + name: "ETC - Ethereum Classic", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(61); + }, + }, { name: "ETH - Ethereum", onSelect: function() { @@ -1830,6 +1970,21 @@ setHdCoin(190); }, }, + { + name: "EXCC - ExchangeCoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.exchangecoin; + setHdCoin(0); + }, + }, + { + name: "EXP - Expanse", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(40); + }, + }, { name: "FJC - Fujicoin", onSelect: function() { @@ -1892,6 +2047,13 @@ network = bitcoinjs.bitcoin.networks.helleniccoin; setHdCoin(168); }, + }, + { + name: "HUSH - Hush", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.hush; + setHdCoin(197); + }, }, { name: "INSN - Insane", @@ -1973,6 +2135,13 @@ DOM.litecoinLtubContainer.removeClass("hidden"); }, }, + { + name: "LTZ - LitecoinZ", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.litecoinz; + setHdCoin(221); + }, + }, { name: "LYNX - Lynx", onSelect: function() { @@ -1987,6 +2156,21 @@ setHdCoin(13); }, }, + { + name: "MEC - Megacoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.megacoin; + setHdCoin(217); + }, + }, + { + name: "MIX - MIX", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(76); + }, + }, { name: "MNX - Minexcoin", onSelect: function() { @@ -2001,6 +2185,14 @@ setHdCoin(22); }, }, + { + name: "MUSIC - Musicoin", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(184); + }, + }, { name: "NAV - Navcoin", onSelect: function() { @@ -2092,6 +2284,21 @@ setHdCoin(174); }, }, + { + name: "LKR - Lkrcoin", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.lkrcoin; + setHdCoin(557); + }, + }, + { + name: "PHR - Phore", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.phore; + setHdCoin(444); + }, + }, { name: "PINK - Pinkcoin", onSelect: function() { @@ -2099,6 +2306,14 @@ setHdCoin(117); }, }, + { + name: "PIRL - Pirl", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(164); + }, + }, { name: "PIVX - PIVX", onSelect: function() { @@ -2113,6 +2328,14 @@ setHdCoin(1); }, }, + { + name: "POA - Poa", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.bitcoin; + setHdCoin(178); + }, + }, { name: "POSW - POSWcoin", onSelect: function() { @@ -2133,6 +2356,13 @@ network = bitcoinjs.bitcoin.networks.peercoin; setHdCoin(6); }, + }, + { + name: "PRJ - ProjectCoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.projectcoin; + setHdCoin(533); + }, }, { name: "PSB - Pesobit", @@ -2148,6 +2378,13 @@ setHdCoin(122); }, }, + { + name: "RVN - Ravencoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.ravencoin; + setHdCoin(175); + }, + }, { name: "RBY - Rubycoin", onSelect: function() { @@ -2158,7 +2395,7 @@ { name: "RDD - Reddcoin", onSelect: function() { - network = bitcoinjs.bitcoin.networks.reddoin; + network = bitcoinjs.bitcoin.networks.reddcoin; setHdCoin(4); }, }, @@ -2169,6 +2406,20 @@ setHdCoin(129); }, }, + { + name: "SAFE - Safecoin", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.safecoin; + setHdCoin(19165); + }, + }, + { + name: "SLS - Salus", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.salus; + setHdCoin(63); + }, + }, { name: "SDC - ShadowCash", onSelect: function() { @@ -2211,6 +2462,20 @@ setHdCoin(59); }, }, + { + name: "STASH - Stash", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.stash; + setHdCoin(0xC0C0); + }, + }, + { + name: "STASH - Stash Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.stashtn; + setHdCoin(0xCAFE); + }, + }, { name: "STRAT - Stratis", onSelect: function() { @@ -2218,6 +2483,13 @@ setHdCoin(105); }, }, + { + name: "TSTRAT - Stratis Testnet", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.stratistest; + setHdCoin(105); + }, + }, { name: "SYS - Syscoin", onSelect: function() { @@ -2301,6 +2573,13 @@ network = bitcoinjs.bitcoin.networks.wincoin; setHdCoin(181); }, + }, + { + name: "XAX - Artax", + onSelect: function() { + network = bitcoinjs.bitcoin.networks.artax; + setHdCoin(219); + }, }, { name: "XBC - Bitcoinplus", @@ -2337,6 +2616,14 @@ setHdCoin(77); }, }, + { + name: "XUEZ - Xuez", + segwitAvailable: false, + onSelect: function() { + network = bitcoinjs.bitcoin.networks.xuez; + setHdCoin(225); + }, + }, { name: "XWC - Whitecoin", onSelect: function() { @@ -2365,13 +2652,6 @@ setHdCoin(133); }, }, - { - name: "XUEZ - Xuez", - onSelect: function() { - network = bitcoinjs.bitcoin.networks.xuez; - setHdCoin(225); - }, - }, { name: "ZEN - Zencash", onSelect: function() { @@ -2402,6 +2682,13 @@ DOM.bip32path.val("m/0'/0"); DOM.hardenedAddresses.prop('checked', false); }, + }, + { + name: "Coinomi, Ledger", + onSelect: function() { + DOM.bip32path.val("m/44'/"+DOM.bip44coin.val()+"'/0'"); + DOM.hardenedAddresses.prop('checked', false); + }, } ]