var showAddress = true;
var showPubKey = true;
var showPrivKey = true;
- var showQr = true;
+ var showQr = false;
var entropyChangeTimeoutEvent = null;
var phraseChangeTimeoutEvent = null;
DOM.privateKeyToggle = $(".private-key-toggle");
DOM.languages = $(".languages a");
DOM.qrContainer = $(".qr-container");
+ DOM.qrHider = DOM.qrContainer.find(".qr-hider");
DOM.qrImage = DOM.qrContainer.find(".qr-image");
DOM.qrHint = DOM.qrContainer.find(".qr-hint");
DOM.showQrEls = $("[data-show-qr]");
// Calculate and display
calcBip32RootKeyFromBase58(rootKeyBase58);
calcForDerivationPath();
- hidePending();
}
function calcForDerivationPath() {
showPending();
+ clearAddressesList();
hideValidationError();
// Get the derivation path
var derivationPath = getDerivationPath();
continue;
}
var hardened = bit[bit.length-1] == "'";
- if (hardened) {
+ var isPriv = "privKey" in extendedKey;
+ var invalidDerivationPath = hardened && !isPriv;
+ if (invalidDerivationPath) {
+ extendedKey = null;
+ }
+ else if (hardened) {
extendedKey = extendedKey.deriveHardened(index);
}
else {
}
}
}
+ // Check no hardened derivation path when using xpub keys
+ var hardened = path.indexOf("'") > -1;
+ var isXpubkey = !("privKey" in bip32RootKey);
+ if (hardened && isXpubkey) {
+ return "Hardened derivation path is invalid with xpub key";
+ }
return false;
}
DOM.seed.val(seed);
var rootKey = bip32RootKey.toBase58();
DOM.rootKey.val(rootKey);
- var extendedPrivKey = bip32ExtendedKey.toBase58();
+ var xprvkeyB58 = "NA";
+ if (bip32ExtendedKey.privKey) {
+ xprvkeyB58 = bip32ExtendedKey.toBase58();
+ }
+ var extendedPrivKey = xprvkeyB58;
DOM.extendedPrivKey.val(extendedPrivKey);
var extendedPubKey = bip32ExtendedKey.toBase58(false);
DOM.extendedPubKey.val(extendedPubKey);
key = bip32ExtendedKey.derive(index);
}
var address = key.getAddress().toString();
- var privkey = key.privKey.toWIF(network);
+ var privkey = "NA";
+ if (key.privKey) {
+ privkey = key.privKey.toWIF(network);
+ }
var pubkey = key.pubKey.toHex();
var indexText = getDerivationPath() + "/" + index;
if (useHardenedAddresses) {
var size = 130;
DOM.qrImage.qrcode({width: size, height: size, text: content});
if (!showQr) {
- DOM.qrImage.addClass("hidden");
+ DOM.qrHider.addClass("hidden");
+ }
+ else {
+ DOM.qrHider.removeClass("hidden");
}
DOM.qrContainer.removeClass("hidden");
}
function toggleQr() {
showQr = !showQr;
- DOM.qrImage.toggleClass("hidden");
+ DOM.qrHider.toggleClass("hidden");
DOM.qrHint.toggleClass("hidden");
}