From 9d92b6a1a8adbe247444a198bce54920c92562cb Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Tue, 29 Jul 2014 01:34:46 +1000 Subject: [PATCH] HDNode: add neuter functionality --- src/hdnode.js | 9 +++++++++ test/hdnode.js | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/hdnode.js b/src/hdnode.js index 8c8a41d..560866e 100644 --- a/src/hdnode.js +++ b/src/hdnode.js @@ -143,6 +143,15 @@ HDNode.prototype.getAddress = function() { return this.pubKey.getAddress(this.network) } +HDNode.prototype.neutered = function() { + var neutered = new HDNode(this.pubKey.Q, this.chainCode, this.network) + neutered.depth = this.depth + neutered.index = this.index + neutered.parentFingerprint = this.parentFingerprint + + return neutered +} + HDNode.prototype.toBase58 = function(isPrivate) { return base58check.encode(this.toBuffer(isPrivate)) } diff --git a/test/hdnode.js b/test/hdnode.js index 265b5d6..794abe0 100644 --- a/test/hdnode.js +++ b/test/hdnode.js @@ -226,6 +226,21 @@ describe('HDNode', function() { }) }) + describe('neutered', function() { + var f = fixtures.valid[0] + + it('strips all private information', function() { + var hd = HDNode.fromBase58(f.master.base58) + var hdn = hd.neutered() + + assert.equal(hdn.privKey, undefined) + assert.equal(hdn.pubKey.toHex(), hd.pubKey.toHex()) + assert.equal(hdn.chainCode, hd.chainCode) + assert.equal(hdn.depth, hd.depth) + assert.equal(hdn.index, hd.index) + }) + }) + describe('derive', function() { function verifyVector(hd, v, depth) { assert.equal(hd.privKey.toWIF(), v.wif)