]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/commitdiff
Merge pull request #55 from galeksandrp/patch-1
authoriancoleman <coleman.ian@gmail.com>
Sun, 19 Feb 2017 00:23:41 +0000 (11:23 +1100)
committerGitHub <noreply@github.com>
Sun, 19 Feb 2017 00:23:41 +0000 (11:23 +1100)
Add client select

1  2 
src/index.html
src/js/index.js

diff --combined src/index.html
index 9003f89eb0ded95f4a94a3a7810c4edf6b2948f8,1c2ffcf776c0bbc0d09926227a7de0b4be122ea5..7dc53a78af936580a6be722c340420a7f0ddc19e
                                      <label class="col-sm-3 control-label" data-translate>Mnemonic Length</label>
                                      <div class="col-sm-9">
                                          <select class="mnemonic-length form-control">
 -                                            <option value="raw" data-translate>From entropy length (3 words per 32 bits)</option>
 +                                            <option value="raw" selected data-translate>Use Raw Entropy (3 words per 32 bits)</option>
                                              <option value="12">12 <span data-translate>Words</span></option>
 -                                            <option value="15" selected>15 <span data-translate>Words</option>
 +                                            <option value="15">15 <span data-translate>Words</option>
                                              <option value="18">18 <span data-translate>Words</span></option>
                                              <option value="21">21 <span data-translate>Words</span></option>
                                              <option value="24">24 <span data-translate>Words</span></option>
                                  </select>
                              </div>
                          </div>
+                         <div class="form-group">
+                             <label for="client-phrase" class="col-sm-2 control-label" data-translate>Client</label>
+                             <div class="col-sm-10">
+                                 <select id="client-phrase" class="client form-control">
+                                     <!-- populated by javascript -->
+                                 </select>
+                             </div>
+                         </div>
                          <div class="form-group">
                              <label for="root-key" class="col-sm-2 control-label" data-translate>BIP32 Root Key</label>
                              <div class="col-sm-10">
                                      </div>
                                  </div>
                                  <div class="form-group">
-                                     <label class="col-sm-2 control-label" data-translate>Block Explorers</label>
+                                     <label class="col-sm-2 control-label" data-translate>Block Explorers and other clients</label>
                                      <div class="col-sm-10">
                                          <p class="form-control no-border">
                                              <span data-translate-html>Use path <code>m/44'/0'/0'</code>.</span>
                                              <span data-translate>Can be used with</span>:
                                              <a href="https://blockchain.info/" target="_blank">blockchain.info</a>
                                          </p>
+                                         <p class="form-control no-border">
+                                             <span data-translate-html>Use path <code>m/0'/0</code>.</span>
+                                         </p>
+                                         <p class="form-control no-border">
+                                             <span data-translate>Can be used with</span>:
+                                             <a href="https://multibit.org/" target="_blank">MultiBit HD</a>
+                                         </p>
                                      </div>
                                  </div>
                              </form>
                  <td class="privkey"><span data-show-qr></span></td>
              </tr>
          </script>
 +        <script src="js/polyfill.es6.js"></script>
          <script src="js/jquery.min.js"></script>
          <script src="js/bootstrap.min.js"></script>
          <script src="js/levenshtein.js"></script>
          <script src="js/jquery.qrcode.min.js"></script>
          <script src="js/bitcoinjs-1-5-7.js"></script>
          <script src="js/bitcoinjs-extensions.js"></script>
 +        <script src="js/ethereumjs-util.js"></script>
          <script src="js/sjcl-bip39.js"></script>
          <script src="js/translate.js"></script>
          <script src="js/phrases_en.js"></script>
diff --combined src/js/index.js
index 4c947a4e215703704d7830956be7d6ad075b8ebd,f593b3a937a427e46511a036b1c3a311d35bd530..8c54cab6c13ac41b5a7051e8e9529f512c4f8198
@@@ -23,7 -23,9 +23,9 @@@
  
      var DOM = {};
      DOM.network = $(".network");
+     DOM.client = $(".client");
      DOM.phraseNetwork = $("#network-phrase");
+     DOM.phraseClient = $("#client-phrase");
      DOM.useEntropy = $(".use-entropy");
      DOM.entropyContainer = $(".entropy-container");
      DOM.entropy = $(".entropy");
@@@ -77,6 -79,7 +79,7 @@@
      function init() {
          // Events
          DOM.network.on("change", networkChanged);
+         DOM.client.on("change", clientChanged);
          DOM.useEntropy.on("change", setEntropyVisibility);
          DOM.entropy.on("input", delayedEntropyChanged);
          DOM.entropyMnemonicLength.on("change", entropyChanged);
          hidePending();
          hideValidationError();
          populateNetworkSelect();
+         populateClientSelect();
      }
  
      // Event handlers
              rootKeyChanged();
          }
      }
+     
+     function clientChanged(e) {
+         var clientIndex = e.target.value;
+         clients[clientIndex].onSelect();
+         if (seed != null) {
+             phraseChanged();
+         }
+         else {
+             rootKeyChanged();
+         }
+     }
  
      function setEntropyVisibility() {
          if (isUsingOwnEntropy()) {
                  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);
+         }
+     }
  
      function getLanguage() {
          var defaultLanguage = "english";
                  DOM.bip44coin.val(6);
              },
          },
 +        {
 +            name: "Ethereum",
 +            onSelect: function() {
 +                network = bitcoin.networks.bitcoin;
 +                DOM.bip44coin.val(60);
 +            },
 +        },
      ]
+     
+     var clients = [
+         {
+             name: "Bitcoin Core",
+             onSelect: function() {
+                 DOM.bip32path.val("m/0'/0'");
+                 DOM.hardenedAddresses.prop('checked', true);
+             },
+         },
+         {
+             name: "blockchain.info",
+             onSelect: function() {
+                 DOM.bip32path.val("m/44'/0'/0'");
+                 DOM.hardenedAddresses.prop('checked', false);
+             },
+         },
+         {
+             name: "MultiBit HD",
+             onSelect: function() {
+                 DOM.bip32path.val("m/0'/0");
+                 DOM.hardenedAddresses.prop('checked', false);
+             },
+         }
+     ]
  
      init();