diff --git a/lib/hdprivatekey.js b/lib/hdprivatekey.js index 08052ef..1c72823 100644 --- a/lib/hdprivatekey.js +++ b/lib/hdprivatekey.js @@ -512,7 +512,7 @@ HDPrivateKey.prototype.inspect = function() { */ HDPrivateKey.prototype.toObject = function toObject() { return { - network: Network.get(BufferUtil.integerFromBuffer(this._buffers.version)).name, + network: Network.get(BufferUtil.integerFromBuffer(this._buffers.version), 'xprivkey').name, depth: BufferUtil.integerFromSingleByteBuffer(this._buffers.depth), fingerPrint: BufferUtil.integerFromBuffer(this.fingerPrint), parentFingerPrint: BufferUtil.integerFromBuffer(this._buffers.parentFingerPrint), diff --git a/lib/networks.js b/lib/networks.js index da90f27..21d5723 100644 --- a/lib/networks.js +++ b/lib/networks.js @@ -22,16 +22,19 @@ Network.prototype.toString = function toString() { * @member Networks#get * Retrieves the network associated with a magic number or string. * @param {string|number|Network} arg - * @param {string} key - if set, only check if the magic number associated with this name matches + * @param {string|Array} keys - if set, only check if the magic number associated with this name matches * @return Network */ -function getNetwork(arg, key) { +function getNetwork(arg, keys) { if (~networks.indexOf(arg)) { return arg; } - if (key) { + if (keys) { + if (!_.isArray(keys)) { + keys = [keys]; + } for (var index in networks) { - if (networks[index][key] === arg) { + if (_.any(keys, function(key) { return networks[index][key] === arg; })) { return networks[index]; } } diff --git a/test/networks.js b/test/networks.js index 9e2d7dd..d4d9d4d 100644 --- a/test/networks.js +++ b/test/networks.js @@ -83,6 +83,12 @@ describe('Networks', function() { expect(networks.get(0x6f, 'privatekey')).to.equal(undefined); }); + it('can test for multiple keys', function() { + expect(networks.get(0x6f, ['pubkeyhash', 'scripthash'])).to.equal(networks.testnet); + expect(networks.get(0xc4, ['pubkeyhash', 'scripthash'])).to.equal(networks.testnet); + expect(networks.get(0x6f, ['privatekey', 'port'])).to.equal(undefined); + }); + it('converts to string using the "name" property', function() { networks.livenet.toString().should.equal('livenet'); });