]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - src/js/index.js
Client select has 'custom derivation path' option
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / src / js / index.js
index f593b3a937a427e46511a036b1c3a311d35bd530..22bf599a38b14618d864d8205baca09e0e03c4fd 100644 (file)
@@ -23,9 +23,8 @@
 
     var DOM = {};
     DOM.network = $(".network");
-    DOM.client = $(".client");
+    DOM.bip32Client = $("#bip32-client");
     DOM.phraseNetwork = $("#network-phrase");
-    DOM.phraseClient = $("#client-phrase");
     DOM.useEntropy = $(".use-entropy");
     DOM.entropyContainer = $(".entropy-container");
     DOM.entropy = $(".entropy");
@@ -79,7 +78,7 @@
     function init() {
         // Events
         DOM.network.on("change", networkChanged);
-        DOM.client.on("change", clientChanged);
+        DOM.bip32Client.on("change", bip32ClientChanged);
         DOM.useEntropy.on("change", setEntropyVisibility);
         DOM.entropy.on("input", delayedEntropyChanged);
         DOM.entropyMnemonicLength.on("change", entropyChanged);
             rootKeyChanged();
         }
     }
-    
-    function clientChanged(e) {
-        var clientIndex = e.target.value;
-        clients[clientIndex].onSelect();
-        if (seed != null) {
-            phraseChanged();
+
+    function bip32ClientChanged(e) {
+        var clientIndex = DOM.bip32Client.val();
+        if (clientIndex == "custom") {
+            DOM.bip32path.prop("readonly", false);
         }
         else {
-            rootKeyChanged();
+            DOM.bip32path.prop("readonly", true);
+            clients[clientIndex].onSelect();
+            if (seed != null) {
+                phraseChanged();
+            }
+            else {
+                rootKeyChanged();
+            }
         }
     }
 
                 if (useHardenedAddresses) {
                     indexText = indexText + "'";
                 }
+                // Ethereum values are different
+                if (networks[DOM.network.val()].name == "Ethereum") {
+                    var privKeyBuffer = key.privKey.d.toBuffer();
+                    privkey = privKeyBuffer.toString('hex');
+                    var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
+                    var hexAddress = addressBuffer.toString('hex');
+                    var checksumAddress = ethUtil.toChecksumAddress(hexAddress);
+                    address = ethUtil.addHexPrefix(checksumAddress);
+                }
                 addAddressToList(indexText, address, pubkey, privkey);
             }, 50)
         }
             DOM.phraseNetwork.append(option);
         }
     }
-    
+
     function populateClientSelect() {
         for (var i=0; i<clients.length; i++) {
             var client = clients[i];
             var option = $("<option>");
             option.attr("value", i);
             option.text(client.name);
-            DOM.phraseClient.append(option);
+            DOM.bip32Client.append(option);
         }
     }
 
                 DOM.bip44coin.val(6);
             },
         },
+        {
+            name: "Ethereum",
+            onSelect: function() {
+                network = bitcoin.networks.bitcoin;
+                DOM.bip44coin.val(60);
+            },
+        },
     ]
     
     var clients = [