diff --git a/src/ecpair.js b/src/ecpair.js index a01f363..c647196 100644 --- a/src/ecpair.js +++ b/src/ecpair.js @@ -58,7 +58,6 @@ ECPair.fromPublicKeyBuffer = function (buffer, network) { } ECPair.fromWIF = function (string, network) { - network = network || NETWORKS.bitcoin var buffer = bs58check.decode(string) if (types.Array(network)) { @@ -67,9 +66,11 @@ ECPair.fromWIF = function (string, network) { network = network.filter(function (network) { return version === network.wif }).pop() - if (!network) throw new Error('Invalid network version') + + if (!network) throw new Error('Unknown network version') } + network = network || NETWORKS.bitcoin var decoded = wif.decodeRaw(buffer, network.wif) var d = BigInteger.fromBuffer(decoded.privateKey) diff --git a/src/hdnode.js b/src/hdnode.js index 784acf5..27228e9 100644 --- a/src/hdnode.js +++ b/src/hdnode.js @@ -64,7 +64,9 @@ HDNode.fromBase58 = function (string, networks) { network = networks.filter(function (network) { return version === network.bip32.private || version === network.bip32.public - }).pop() || {} + }).pop() + + if (!network) throw new Error('Unknown network version') // otherwise, assume a network object (or default to bitcoin) } else { @@ -72,7 +74,7 @@ HDNode.fromBase58 = function (string, networks) { } if (version !== network.bip32.private && - version !== network.bip32.public) throw new Error('Invalid network') + version !== network.bip32.public) throw new Error('Invalid network version') // 1 byte: depth: 0x00 for master nodes, 0x01 for level-1 descendants, ... var depth = buffer[4] diff --git a/test/ecpair.js b/test/ecpair.js index b7edbd0..f9e594a 100644 --- a/test/ecpair.js +++ b/test/ecpair.js @@ -107,7 +107,9 @@ describe('ECPair', function () { fixtures.invalid.fromWIF.forEach(function (f) { it('throws on ' + f.WIF, function () { assert.throws(function () { - ECPair.fromWIF(f.WIF) + var networks = f.network ? NETWORKS[f.network] : NETWORKS_LIST + + ECPair.fromWIF(f.WIF, networks) }, new RegExp(f.exception)) }) }) diff --git a/test/fixtures/ecpair.json b/test/fixtures/ecpair.json index 652eb2d..6f0a1a2 100644 --- a/test/fixtures/ecpair.json +++ b/test/fixtures/ecpair.json @@ -107,8 +107,13 @@ "fromWIF": [ { "exception": "Invalid network version", + "network": "bitcoin", "WIF": "92Qba5hnyWSn5Ffcka56yMQauaWY6ZLd91Vzxbi4a9CCetaHtYj" }, + { + "exception": "Unknown network version", + "WIF": "brQnSed3Fia1w9VcbbS6ZGDgJ6ENkgwuQY2LS7pEC5bKHD1fMF" + }, { "exception": "Invalid compression flag", "WIF": "KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sfZr2ym" diff --git a/test/fixtures/hdnode.json b/test/fixtures/hdnode.json index 21ca41d..877dd6d 100644 --- a/test/fixtures/hdnode.json +++ b/test/fixtures/hdnode.json @@ -199,11 +199,12 @@ "string": "xprvQQQQQQQQQQQQQQQQCviVfJSKyQ1mDYahRjijr5idH2WwLsEd4Hsb2Tyh8RfQMuPh7f7RtyzTtdrbdqqsunu5Mm3wDvUAKRHSC34sJ7in334" }, { - "exception": "Invalid network", + "exception": "Unknown network version", "string": "1111111111111adADjFaSNPxwXqLjHLj4mBfYxuewDPbw9hEj1uaXCzMxRPXDFF3cUoezTFYom4sEmEVSQmENPPR315cFk9YUFVek73wE9" }, { - "exception": "Invalid network", + "exception": "Invalid network version", + "network": "bitcoin", "string": "Ltpv73XYpw28ZyVe2zEVyiFnxUZxoKLGQNdZ8NxUi1WcqjNmMBgtLbh3KimGSnPHCoLv1RmvxHs4dnKmo1oXQ8dXuDu8uroxrbVxZPA1gXboYvx" } ], diff --git a/test/hdnode.js b/test/hdnode.js index c5a55fb..e901850 100644 --- a/test/hdnode.js +++ b/test/hdnode.js @@ -210,9 +210,9 @@ describe('HDNode', function () { fixtures.invalid.fromBase58.forEach(function (f) { it('throws on ' + f.string, function () { assert.throws(function () { - var network = NETWORKS[f.network] + var networks = f.network ? NETWORKS[f.network] : NETWORKS_LIST - HDNode.fromBase58(f.string, network) + HDNode.fromBase58(f.string, networks) }, new RegExp(f.exception)) }) })