From b18eb97ae367e7eaa276a8ddbaaca3e158cf153d Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Thu, 24 Aug 2017 09:25:26 +1000 Subject: [PATCH] Show error when using xpub with hardened addresses --- src/js/index.js | 4 +++- tests.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/js/index.js b/src/js/index.js index 3a5a0ef..d9d5db3 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -532,7 +532,9 @@ return "No root key"; } // Check no hardened derivation path when using xpub keys - var hardened = path.indexOf("'") > -1; + var hardenedPath = path.indexOf("'") > -1; + var hardenedAddresses = bip32TabSelected() && DOM.hardenedAddresses.prop("checked"); + var hardened = hardenedPath || hardenedAddresses; var isXpubkey = bip32RootKey.isNeutered(); if (hardened && isXpubkey) { return "Hardened derivation path is invalid with xpub key"; diff --git a/tests.js b/tests.js index 1cf5b22..316a817 100644 --- a/tests.js +++ b/tests.js @@ -4185,6 +4185,37 @@ page.open(url, function(status) { }); }, +// Github issue 95 +// error trying to generate addresses from xpub with hardened derivation +function() { +page.open(url, function(status) { + // set the phrase + page.evaluate(function() { + // Use bip32 tab with hardened addresses + $(".hardened-addresses").prop("checked", true); + $("#bip32-tab a").click(); + // set xpub for account 0 of bip44 for 'abandon abandon ability' + var bip44AccountXpub = "xpub6CzDCPbtLrrn4VpVbyyQLHbdSMpZoHN4iuW64VswCyEpfjM2mJGdaHJ2DyuZwtst96E16VvcERb8BBeJdHSCVmAq9RhtRQg6eAZFrTKCNqf"; + $("#root-key").val(bip44AccountXpub); + $("#root-key").trigger("input"); + }); + waitForFeedback(function() { + // check the error message shows + var expected = "Hardened derivation path is invalid with xpub key"; + var actual = page.evaluate(function() { + return $(".feedback").text(); + }); + if (actual != expected) { + console.log("xpub key with hardened addresses does not show feedback"); + console.log("Expected: " + expected); + console.log("Actual: " + actual); + fail(); + } + next(); + }); +}); +}, + // If you wish to add more tests, do so here... // Here is a blank test template -- 2.41.0