Add a button to remove the "change" in the derivation path for ethereum

This commit is contained in:
Ismaël Bouya
2019-02-24 09:33:14 +01:00
parent bc32c84166
commit 44e705cd31
2 changed files with 53 additions and 20 deletions

View File

@@ -273,7 +273,10 @@
<a href="https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#change" target="_blank">External / Internal</a>
</label>
<div class="col-sm-10">
<input id="change-bip44" type="text" class="change form-control" value="0">
<div class="input-group">
<input id="change-bip44" type="text" class="change form-control" value="0">
<a class="default-bip44-change-value btn btn-primary input-group-addon" role="button">Default</a>
</div>
</div>
</div>
<div class="form-group">

View File

@@ -15,6 +15,7 @@
var showPrivKey = true;
var showQr = false;
var litecoinUseLtub = true;
var isDefaultBip44ChangeValue = true;
var entropyChangeTimeoutEvent = null;
var phraseChangeTimeoutEvent = null;
@@ -69,6 +70,7 @@
DOM.bip44accountXprv = $("#bip44 .account-xprv");
DOM.bip44accountXpub = $("#bip44 .account-xpub");
DOM.bip44change = $("#bip44 .change");
DOM.defaultBip44ChangeValue = $("#bip44 .default-bip44-change-value");
DOM.bip49unavailable = $("#bip49 .unavailable");
DOM.bip49available = $("#bip49 .available");
DOM.bip49path = $("#bip49-path");
@@ -134,7 +136,9 @@
DOM.litecoinUseLtub.on("change", litecoinUseLtubChanged);
DOM.bip32path.on("input", calcForDerivationPath);
DOM.bip44account.on("input", calcForDerivationPath);
DOM.bip44change.on("input", modifiedDefaultBip44ChangeValue);
DOM.bip44change.on("input", calcForDerivationPath);
DOM.defaultBip44ChangeValue.on("click", resetDefaultBip44ChangeValue);
DOM.bip49account.on("input", calcForDerivationPath);
DOM.bip49change.on("input", calcForDerivationPath);
DOM.bip84account.on("input", calcForDerivationPath);
@@ -726,12 +730,14 @@
var purpose = parseIntNoNaN(DOM.bip44purpose.val(), 44);
var coin = parseIntNoNaN(DOM.bip44coin.val(), 0);
var account = parseIntNoNaN(DOM.bip44account.val(), 0);
var change = parseIntNoNaN(DOM.bip44change.val(), 0);
var path = "m/";
path += purpose + "'/";
path += coin + "'/";
path += account + "'/";
path += change;
var change = parseIntNoNaN(DOM.bip44change.val(), "");
var path = "m";
path += "/" + purpose + "'";
path += "/" + coin + "'";
path += "/" + account + "'";
if (change !== "") {
path += "/" + change;
}
DOM.bip44path.val(path);
var derivationPath = DOM.bip44path.val();
console.log("Using derivation path from BIP44 tab: " + derivationPath);
@@ -1008,19 +1014,7 @@
indexText = indexText + "'";
}
// Ethereum values are different
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")
|| (networks[DOM.network.val()].name == "DXN - DEXON")
|| (networks[DOM.network.val()].name == "ELLA - Ellaism")
|| (networks[DOM.network.val()].name == "ESN - Ethersocial Network")
|| (networks[DOM.network.val()].name == "VET - VeChain")
) {
if (networkIsEthereum()) {
var privKeyBuffer = keyPair.d.toBuffer(32);
privkey = privKeyBuffer.toString('hex');
var addressBuffer = ethUtil.privateToAddress(privKeyBuffer);
@@ -1636,6 +1630,22 @@
return DOM.bip32tab.hasClass("active");
}
function networkIsEthereum() {
var name = networks[DOM.network.val()].name;
return (name == "ETH - Ethereum")
|| (name == "ETC - Ethereum Classic")
|| (name == "PIRL - Pirl")
|| (name == "MIX - MIX")
|| (name == "MUSIC - Musicoin")
|| (name == "POA - Poa")
|| (name == "EXP - Expanse")
|| (name == "CLO - Callisto")
|| (name == "DXN - DEXON")
|| (name == "ELLA - Ellaism")
|| (name == "ESN - Ethersocial Network")
|| (name == "VET - VeChain")
}
function networkHasSegwit() {
var n = network;
if ("baseNetwork" in network) {
@@ -1665,10 +1675,30 @@
return DOM.bip141tab.hasClass("active");
}
function setBip44ChangeValue() {
if (isDefaultBip44ChangeValue) {
if (networkIsEthereum()) {
DOM.bip44change.val("");
} else {
DOM.bip44change.val(0);
}
}
}
function modifiedDefaultBip44ChangeValue() {
isDefaultBip44ChangeValue = false;
}
function resetDefaultBip44ChangeValue() {
isDefaultBip44ChangeValue = true;
setBip44ChangeValue();
}
function setHdCoin(coinValue) {
DOM.bip44coin.val(coinValue);
DOM.bip49coin.val(coinValue);
DOM.bip84coin.val(coinValue);
setBip44ChangeValue();
}
function showSegwitAvailable() {