bitcore-lib-ltc
Advanced tools
Comparing version 8.25.2 to 8.25.3
@@ -131,2 +131,5 @@ 'use strict'; | ||
/** | ||
* WARNING: This method will not be officially supported until v1.0.0. | ||
* | ||
* | ||
* Get a derived child based on a string or number. | ||
@@ -143,7 +146,10 @@ * | ||
* | ||
* WARNING: The `nonCompliant` option should NOT be used, except for older implementation | ||
* that used a derivation strategy that used a non-zero padded private key. | ||
* | ||
* @example | ||
* ```javascript | ||
* var parent = new HDPrivateKey('xprv...'); | ||
* var child_0_1_2h = parent.derive(0).derive(1).derive(2, true); | ||
* var copy_of_child_0_1_2h = parent.derive("m/0/1/2'"); | ||
* var child_0_1_2h = parent.deriveChild(0).deriveChild(1).deriveChild(2, true); | ||
* var copy_of_child_0_1_2h = parent.deriveChild("m/0/1/2'"); | ||
* assert(child_0_1_2h.xprivkey === copy_of_child_0_1_2h); | ||
@@ -155,3 +161,3 @@ * ``` | ||
*/ | ||
HDPrivateKey.prototype.derive = function(arg, hardened) { | ||
HDPrivateKey.prototype.deriveChild = function(arg, hardened) { | ||
if (_.isNumber(arg)) { | ||
@@ -158,0 +164,0 @@ return this._deriveWithNumber(arg, hardened); |
{ | ||
"name": "bitcore-lib-ltc", | ||
"version": "8.25.2", | ||
"version": "8.25.3", | ||
"description": "A pure and powerful JavaScript Litecoin library.", | ||
@@ -98,3 +98,3 @@ "author": "BitPay <dev@bitpay.com>", | ||
"devDependencies": { | ||
"bitcore-build": "^8.25.2", | ||
"bitcore-build": "^8.25.3", | ||
"brfs": "^2.0.1", | ||
@@ -101,0 +101,0 @@ "chai": "^4.2.0", |
@@ -27,27 +27,27 @@ 'use strict'; | ||
it('saves a derived key', function() { | ||
var child = master.derive(0); | ||
var child = master.deriveChild(0); | ||
expect(cache._cache[master.xprivkey + '/0/false'].xprivkey).to.equal(child.xprivkey); | ||
}); | ||
it('starts erasing unused keys', function() { | ||
var child1 = master.derive(0); | ||
var child2 = child1.derive(0); | ||
var child3 = child2.derive(0); | ||
var child1 = master.deriveChild(0); | ||
var child2 = child1.deriveChild(0); | ||
var child3 = child2.deriveChild(0); | ||
expect(cache._cache[master.xprivkey + '/0/false'].xprivkey).to.equal(child1.xprivkey); | ||
var child4 = child3.derive(0); | ||
var child4 = child3.deriveChild(0); | ||
expect(cache._cache[master.xprivkey + '/0/false']).to.equal(undefined); | ||
}); | ||
it('avoids erasing keys that get cache hits ("hot keys")', function() { | ||
var child1 = master.derive(0); | ||
var child2 = master.derive(0).derive(0); | ||
var child1 = master.deriveChild(0); | ||
var child2 = master.deriveChild(0).deriveChild(0); | ||
expect(cache._cache[master.xprivkey + '/0/false'].xprivkey).to.equal(child1.xprivkey); | ||
var child1_copy = master.derive(0); | ||
var child1_copy = master.deriveChild(0); | ||
expect(cache._cache[master.xprivkey + '/0/false'].xprivkey).to.equal(child1.xprivkey); | ||
}); | ||
it('keeps the size of the cache small', function() { | ||
var child1 = master.derive(0); | ||
var child2 = child1.derive(0); | ||
var child3 = child2.derive(0); | ||
var child4 = child3.derive(0); | ||
var child1 = master.deriveChild(0); | ||
var child2 = child1.deriveChild(0); | ||
var child3 = child2.deriveChild(0); | ||
var child4 = child3.deriveChild(0); | ||
expect(_.size(cache._cache)).to.equal(3); | ||
}); | ||
}); |
@@ -84,3 +84,3 @@ 'use strict'; | ||
it("should get m/0' ext. private key from test vector 1", function() { | ||
var privateKey = new HDPrivateKey(vector1_m_private).derive("m/0'"); | ||
var privateKey = new HDPrivateKey(vector1_m_private).deriveChild("m/0'"); | ||
privateKey.xprivkey.should.equal(vector1_m0h_private); | ||
@@ -90,3 +90,3 @@ }); | ||
it("should get m/0' ext. public key from test vector 1", function() { | ||
HDPrivateKey(vector1_m_private).derive("m/0'") | ||
HDPrivateKey(vector1_m_private).deriveChild("m/0'") | ||
.xpubkey.should.equal(vector1_m0h_public); | ||
@@ -96,3 +96,3 @@ }); | ||
it("should get m/0'/1 ext. private key from test vector 1", function() { | ||
HDPrivateKey(vector1_m_private).derive("m/0'/1") | ||
HDPrivateKey(vector1_m_private).deriveChild("m/0'/1") | ||
.xprivkey.should.equal(vector1_m0h1_private); | ||
@@ -102,3 +102,3 @@ }); | ||
it("should get m/0'/1 ext. public key from test vector 1", function() { | ||
HDPrivateKey(vector1_m_private).derive("m/0'/1") | ||
HDPrivateKey(vector1_m_private).deriveChild("m/0'/1") | ||
.xpubkey.should.equal(vector1_m0h1_public); | ||
@@ -108,3 +108,3 @@ }); | ||
it("should get m/0'/1 ext. public key from m/0' public key from test vector 1", function() { | ||
var derivedPublic = HDPrivateKey(vector1_m_private).derive("m/0'").hdPublicKey.derive("m/1"); | ||
var derivedPublic = HDPrivateKey(vector1_m_private).deriveChild("m/0'").hdPublicKey.derive("m/1"); | ||
derivedPublic.xpubkey.should.equal(vector1_m0h1_public); | ||
@@ -115,3 +115,3 @@ }); | ||
var privateKey = new HDPrivateKey(vector1_m_private); | ||
var derived = privateKey.derive("m/0'/1/2'"); | ||
var derived = privateKey.deriveChild("m/0'/1/2'"); | ||
derived.xprivkey.should.equal(vector1_m0h12h_private); | ||
@@ -121,3 +121,3 @@ }); | ||
it("should get m/0'/1/2' ext. public key from test vector 1", function() { | ||
HDPrivateKey(vector1_m_private).derive("m/0'/1/2'") | ||
HDPrivateKey(vector1_m_private).deriveChild("m/0'/1/2'") | ||
.xpubkey.should.equal(vector1_m0h12h_public); | ||
@@ -127,3 +127,3 @@ }); | ||
it("should get m/0'/1/2'/2 ext. private key from test vector 1", function() { | ||
HDPrivateKey(vector1_m_private).derive("m/0'/1/2'/2") | ||
HDPrivateKey(vector1_m_private).deriveChild("m/0'/1/2'/2") | ||
.xprivkey.should.equal(vector1_m0h12h2_private); | ||
@@ -133,3 +133,3 @@ }); | ||
it("should get m/0'/1/2'/2 ext. public key from m/0'/1/2' public key from test vector 1", function() { | ||
var derived = HDPrivateKey(vector1_m_private).derive("m/0'/1/2'").hdPublicKey; | ||
var derived = HDPrivateKey(vector1_m_private).deriveChild("m/0'/1/2'").hdPublicKey; | ||
derived.derive("m/2").xpubkey.should.equal(vector1_m0h12h2_public); | ||
@@ -139,3 +139,3 @@ }); | ||
it("should get m/0'/1/2h/2 ext. public key from test vector 1", function() { | ||
HDPrivateKey(vector1_m_private).derive("m/0'/1/2'/2") | ||
HDPrivateKey(vector1_m_private).deriveChild("m/0'/1/2'/2") | ||
.xpubkey.should.equal(vector1_m0h12h2_public); | ||
@@ -145,3 +145,3 @@ }); | ||
it("should get m/0'/1/2h/2/1000000000 ext. private key from test vector 1", function() { | ||
HDPrivateKey(vector1_m_private).derive("m/0'/1/2'/2/1000000000") | ||
HDPrivateKey(vector1_m_private).deriveChild("m/0'/1/2'/2/1000000000") | ||
.xprivkey.should.equal(vector1_m0h12h21000000000_private); | ||
@@ -151,3 +151,3 @@ }); | ||
it("should get m/0'/1/2h/2/1000000000 ext. public key from test vector 1", function() { | ||
HDPrivateKey(vector1_m_private).derive("m/0'/1/2'/2/1000000000") | ||
HDPrivateKey(vector1_m_private).deriveChild("m/0'/1/2'/2/1000000000") | ||
.xpubkey.should.equal(vector1_m0h12h21000000000_public); | ||
@@ -157,3 +157,3 @@ }); | ||
it("should get m/0'/1/2'/2/1000000000 ext. public key from m/0'/1/2'/2 public key from test vector 1", function() { | ||
var derived = HDPrivateKey(vector1_m_private).derive("m/0'/1/2'/2").hdPublicKey; | ||
var derived = HDPrivateKey(vector1_m_private).deriveChild("m/0'/1/2'/2").hdPublicKey; | ||
derived.derive("m/1000000000").xpubkey.should.equal(vector1_m0h12h21000000000_public); | ||
@@ -175,7 +175,7 @@ }); | ||
it("should get m/0 ext. private key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive(0).xprivkey.should.equal(vector2_m0_private); | ||
HDPrivateKey(vector2_m_private).deriveChild(0).xprivkey.should.equal(vector2_m0_private); | ||
}); | ||
it("should get m/0 ext. public key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive(0).xpubkey.should.equal(vector2_m0_public); | ||
HDPrivateKey(vector2_m_private).deriveChild(0).xpubkey.should.equal(vector2_m0_public); | ||
}); | ||
@@ -188,3 +188,3 @@ | ||
it("should get m/0/2147483647h ext. private key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive("m/0/2147483647'") | ||
HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'") | ||
.xprivkey.should.equal(vector2_m02147483647h_private); | ||
@@ -194,3 +194,3 @@ }); | ||
it("should get m/0/2147483647h ext. public key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive("m/0/2147483647'") | ||
HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'") | ||
.xpubkey.should.equal(vector2_m02147483647h_public); | ||
@@ -200,3 +200,3 @@ }); | ||
it("should get m/0/2147483647h/1 ext. private key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive("m/0/2147483647'/1") | ||
HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'/1") | ||
.xprivkey.should.equal(vector2_m02147483647h1_private); | ||
@@ -206,3 +206,3 @@ }); | ||
it("should get m/0/2147483647h/1 ext. public key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive("m/0/2147483647'/1") | ||
HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'/1") | ||
.xpubkey.should.equal(vector2_m02147483647h1_public); | ||
@@ -212,3 +212,3 @@ }); | ||
it("should get m/0/2147483647h/1 ext. public key from m/0/2147483647h public key from test vector 2", function() { | ||
var derived = HDPrivateKey(vector2_m_private).derive("m/0/2147483647'").hdPublicKey; | ||
var derived = HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'").hdPublicKey; | ||
derived.derive(1).xpubkey.should.equal(vector2_m02147483647h1_public); | ||
@@ -218,3 +218,3 @@ }); | ||
it("should get m/0/2147483647h/1/2147483646h ext. private key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive("m/0/2147483647'/1/2147483646'") | ||
HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'/1/2147483646'") | ||
.xprivkey.should.equal(vector2_m02147483647h12147483646h_private); | ||
@@ -224,3 +224,3 @@ }); | ||
it("should get m/0/2147483647h/1/2147483646h ext. public key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive("m/0/2147483647'/1/2147483646'") | ||
HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'/1/2147483646'") | ||
.xpubkey.should.equal(vector2_m02147483647h12147483646h_public); | ||
@@ -230,3 +230,3 @@ }); | ||
it("should get m/0/2147483647h/1/2147483646h/2 ext. private key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive("m/0/2147483647'/1/2147483646'/2") | ||
HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'/1/2147483646'/2") | ||
.xprivkey.should.equal(vector2_m02147483647h12147483646h2_private); | ||
@@ -236,3 +236,3 @@ }); | ||
it("should get m/0/2147483647h/1/2147483646h/2 ext. public key from test vector 2", function() { | ||
HDPrivateKey(vector2_m_private).derive("m/0/2147483647'/1/2147483646'/2") | ||
HDPrivateKey(vector2_m_private).deriveChild("m/0/2147483647'/1/2147483646'/2") | ||
.xpubkey.should.equal(vector2_m02147483647h12147483646h2_public); | ||
@@ -243,3 +243,3 @@ }); | ||
var derivedPublic = HDPrivateKey(vector2_m_private) | ||
.derive("m/0/2147483647'/1/2147483646'").hdPublicKey; | ||
.deriveChild("m/0/2147483647'/1/2147483646'").hdPublicKey; | ||
derivedPublic.derive("m/2") | ||
@@ -261,3 +261,3 @@ .xpubkey.should.equal(vector2_m02147483647h12147483646h2_public); | ||
}); | ||
var derived = key.derive("m/44'/0'/0'/0/0'"); | ||
var derived = key.deriveChild("m/44'/0'/0'/0/0'"); | ||
derived.privateKey.toString().should.equal('3348069561d2a0fb925e74bf198762acc47dce7db27372257d2d959a9e6f8aeb'); | ||
@@ -296,3 +296,3 @@ }); | ||
}); | ||
var derived = key.derive("m/44'"); | ||
var derived = key.deriveChild("m/44'"); | ||
derived.privateKey.toString().should.equal('b15bce3608d607ee3a49069197732c656bca942ee59f3e29b4d56914c1de6825'); | ||
@@ -299,0 +299,0 @@ bitcore.PrivateKey.isValid.callCount.should.equal(2); |
@@ -33,3 +33,3 @@ 'use strict'; | ||
var privateKey = new HDPrivateKey(xprivkey); | ||
privateKey.derive(argument); | ||
privateKey.deriveChild(argument); | ||
}, error); | ||
@@ -127,4 +127,4 @@ }; | ||
var privateKey = new HDPrivateKey(xprivkey); | ||
var derivedByNumber = privateKey.derive(0x80000000); | ||
var derivedByArgument = privateKey.derive(0, true); | ||
var derivedByNumber = privateKey.deriveChild(0x80000000); | ||
var derivedByArgument = privateKey.deriveChild(0, true); | ||
derivedByNumber.xprivkey.should.equal(derivedByArgument.xprivkey); | ||
@@ -135,3 +135,3 @@ }); | ||
var privateKey = new HDPrivateKey(xprivkey); | ||
privateKey.should.equal(privateKey.derive('m')); | ||
privateKey.should.equal(privateKey.deriveChild('m')); | ||
}); | ||
@@ -209,4 +209,4 @@ | ||
var privateKey = new HDPrivateKey(xprivkey); | ||
var derivedByString = privateKey.derive('m/0\'/1/2\''); | ||
var derivedByNumber = privateKey.derive(0, true).derive(1).derive(2, true); | ||
var derivedByString = privateKey.deriveChild('m/0\'/1/2\''); | ||
var derivedByNumber = privateKey.deriveChild(0, true).deriveChild(1).deriveChild(2, true); | ||
derivedByNumber.xprivkey.should.equal(derivedByString.xprivkey); | ||
@@ -213,0 +213,0 @@ }); |
Sorry, the diff of this file is too big to display
3668220
76012