From: Ian Coleman Date: Wed, 23 Aug 2017 23:25:26 +0000 (+1000) Subject: Show error when using xpub with hardened addresses X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=b18eb97ae367e7eaa276a8ddbaaca3e158cf153d;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FBIP39.git Show error when using xpub with hardened addresses --- 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