Skip to content

Commit

Permalink
Merge pull request #1149 from maraoz/lazy/xpubkey
Browse files Browse the repository at this point in the history
lazy calc for xpubkey in HDPrivateKey
  • Loading branch information
eordano committed Mar 20, 2015
2 parents 1a0cb73 + 56c1e8c commit 56f3e9a
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 6 deletions.
31 changes: 25 additions & 6 deletions lib/hdprivatekey.js
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,15 @@ HDPrivateKey.fromSeed = function(hexa, network) {
});
};



HDPrivateKey.prototype._calcHDPublicKey = function() {
if (!this._hdPublicKey) {
var HDPublicKey = require('./hdpublickey');
this._hdPublicKey = new HDPublicKey(this);
}
};

/**
* Receives a object with buffers in all the properties and populates the
* internal structure
Expand Down Expand Up @@ -423,14 +432,24 @@ HDPrivateKey.prototype._buildFromBuffers = function(arg) {
fingerPrint: fingerPrint
});

var HDPublicKey = require('./hdpublickey');
var hdPublicKey = new HDPublicKey(this);
this._hdPublicKey = null;

JSUtil.defineImmutable(this, {
hdPublicKey: hdPublicKey,
xpubkey: hdPublicKey.xpubkey
Object.defineProperty(this, 'hdPublicKey', {
configurable: false,
enumerable: true,
get: function() {
this._calcHDPublicKey();
return this._hdPublicKey;
}
});
Object.defineProperty(this, 'xpubkey', {
configurable: false,
enumerable: true,
get: function() {
this._calcHDPublicKey();
return this._hdPublicKey.xpubkey;
}
});

return this;
};

Expand Down
8 changes: 8 additions & 0 deletions test/hdprivatekey.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,14 @@ describe('HDPrivate key interface', function() {
testnetKey.publicKey.network.should.equal(Networks.testnet);
livenetKey.publicKey.network.should.equal(Networks.livenet);
});

it('cache for xpubkey works', function() {
var privateKey = new HDPrivateKey(xprivkey);
should.not.exist(privateKey._hdPublicKey);
privateKey.xpubkey.should.equal(privateKey.xpubkey);
should.exist(privateKey._hdPublicKey);
});

});

it('inspect() displays correctly', function() {
Expand Down

0 comments on commit 56f3e9a

Please sign in to comment.