From e52c0d5b678a5dcdb2b0301cc830648c931b198e Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 27 Apr 2016 16:42:25 +1000 Subject: [PATCH 1/3] ECPair: use toBase58Check --- src/ecpair.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/ecpair.js b/src/ecpair.js index c647196..e60cdfb 100644 --- a/src/ecpair.js +++ b/src/ecpair.js @@ -1,3 +1,4 @@ +var baddress = require('./address') var bcrypto = require('./crypto') var bs58check = require('bs58check') var ecdsa = require('./ecdsa') @@ -97,14 +98,7 @@ ECPair.makeRandom = function (options) { } ECPair.prototype.getAddress = function () { - var pubKey = this.getPublicKeyBuffer() - var pubKeyHash = bcrypto.hash160(pubKey) - - var payload = new Buffer(21) - payload.writeUInt8(this.network.pubKeyHash, 0) - pubKeyHash.copy(payload, 1) - - return bs58check.encode(payload) + return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash) } ECPair.prototype.getNetwork = function () { From 00cee340dd13380024ad1e1a6fbd8126e48a361e Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 27 Apr 2016 17:05:33 +1000 Subject: [PATCH 2/3] ECPair: don't depend on WIF error message, avoid unnecessary import --- src/ecpair.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ecpair.js b/src/ecpair.js index e60cdfb..ad06006 100644 --- a/src/ecpair.js +++ b/src/ecpair.js @@ -1,6 +1,5 @@ var baddress = require('./address') var bcrypto = require('./crypto') -var bs58check = require('bs58check') var ecdsa = require('./ecdsa') var randomBytes = require('randombytes') var typeforce = require('typeforce') @@ -59,20 +58,24 @@ ECPair.fromPublicKeyBuffer = function (buffer, network) { } ECPair.fromWIF = function (string, network) { - var buffer = bs58check.decode(string) + network = network || NETWORKS.bitcoin + var decoded = wif.decode(string) + var version = decoded.version + // [network, ...] if (types.Array(network)) { - var version = buffer[0] - network = network.filter(function (network) { return version === network.wif }).pop() if (!network) throw new Error('Unknown network version') + + // network + } else if (network) { + // check version only if defined + if (version !== network.wif) throw new Error('Invalid network version') } - network = network || NETWORKS.bitcoin - var decoded = wif.decodeRaw(buffer, network.wif) var d = BigInteger.fromBuffer(decoded.privateKey) return new ECPair(d, null, { From ea4ce4e2a6b128365eb0d162608e15c92b732fec Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Wed, 27 Apr 2016 18:04:35 +1000 Subject: [PATCH 3/3] ECPair: no elseif needed, move default for clarity --- src/ecpair.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ecpair.js b/src/ecpair.js index ad06006..d608884 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 decoded = wif.decode(string) var version = decoded.version @@ -71,8 +70,9 @@ ECPair.fromWIF = function (string, network) { if (!network) throw new Error('Unknown network version') // network - } else if (network) { - // check version only if defined + } else { + network = network || NETWORKS.bitcoin + if (version !== network.wif) throw new Error('Invalid network version') }