From d447e6927976959980e371aa797d759ec8c68f15 Mon Sep 17 00:00:00 2001 From: xnova Date: Thu, 27 Feb 2014 03:46:28 -0500 Subject: [PATCH] more ECKey version specification in HDWallet --- src/hdwallet.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/hdwallet.js b/src/hdwallet.js index e653b71..d379436 100644 --- a/src/hdwallet.js +++ b/src/hdwallet.js @@ -13,8 +13,8 @@ var HDWallet = module.exports = function(seed, network) { var I = Crypto.HMAC(Crypto.SHA512, seed, 'Bitcoin seed', { asBytes: true }) this.chaincode = I.slice(32) - this.priv = new ECKey(I.slice(0, 32).concat([1]), true, - network == 'Bitcoin' ? Address.address_types.prod : Address.address_types.testnet) + this.keyVersion = network == 'Bitcoin' ? Address.address_types.prod : Address.address_types.testnet + this.priv = new ECKey(I.slice(0, 32).concat([1]), true, this.keyVersion) this.pub = this.priv.getPub() this.network = network || 'Bitcoin' this.index = 0 @@ -107,10 +107,10 @@ HDWallet.fromBytes = function(input) { // 33 bytes: the public key or private key data (0x02 + X or 0x03 + X for // public keys, 0x00 + k for private keys) if (type == 'private') { - hd.priv = new ECKey(input.slice(46, 78).concat([1]), true) + hd.priv = new ECKey(input.slice(46, 78).concat([1]), true, this.keyVersion) hd.pub = hd.priv.getPub() } else { - hd.pub = new ECPubKey(input.slice(45, 78), true) + hd.pub = new ECPubKey(input.slice(45, 78), true, this.keyVersion) } return hd @@ -214,10 +214,11 @@ HDWallet.prototype.derive = function(i) { // ki = IL + kpar (mod n). hd.priv = this.priv.add(new ECKey(IL.concat([1]))) hd.priv.compressed = true + hd.priv.version = this.keyVersion hd.pub = hd.priv.getPub() } else { // Ki = (IL + kpar)*G = IL*G + Kpar - hd.pub = this.pub.add(new ECKey(IL.concat([1])).getPub()) + hd.pub = this.pub.add(new ECKey(IL.concat([1]), true, this.keyVersion)) } // ci = IR.