@@ -14,22 +14,22 @@ var Secp256k1 = require("@dashincubator/secp256k1");
14
14
/* global describe it */
15
15
16
16
describe ( "hdkey" , function ( ) {
17
- describe ( "+ fromMasterSeed " , function ( ) {
17
+ describe ( "+ fromSeed " , function ( ) {
18
18
for ( let f of fixtures . valid ) {
19
19
it ( "should properly derive the chain path: " + f . path , async function ( ) {
20
- var hdkey = await DashHd . fromMasterSeed ( hexToU8 ( f . seed ) ) ;
20
+ var hdkey = await DashHd . fromSeed ( hexToU8 ( f . seed ) ) ;
21
21
var childkey = await DashHd . derivePath ( hdkey , f . path ) ;
22
- let xpriv = await DashHd . getPrivateExtendedKey ( childkey ) ;
22
+ let xpriv = await DashHd . toXPrv ( childkey ) ;
23
23
24
24
assert . equal ( xpriv , f . private ) ;
25
- assert . equal ( await DashHd . getPublicExtendedKey ( childkey ) , f . public ) ;
25
+ assert . equal ( await DashHd . toXPub ( childkey ) , f . public ) ;
26
26
} ) ;
27
27
28
28
describe (
29
- "> " + f . path + " get<Private|Public>ExtendedKey() / fromExtendedKey ()" ,
29
+ "> " + f . path + " get<Private|Public>ExtendedKey() / fromXKey ()" ,
30
30
function ( ) {
31
31
it ( "should return an object read for JSON serialization" , async function ( ) {
32
- var hdkey = await DashHd . fromMasterSeed ( hexToU8 ( f . seed ) ) ;
32
+ var hdkey = await DashHd . fromSeed ( hexToU8 ( f . seed ) ) ;
33
33
var childkey = await DashHd . derivePath ( hdkey , f . path ) ;
34
34
35
35
var obj = {
@@ -38,20 +38,14 @@ describe("hdkey", function () {
38
38
} ;
39
39
40
40
var childObj = {
41
- xpriv : await DashHd . getPrivateExtendedKey ( childkey ) ,
42
- xpub : await DashHd . getPublicExtendedKey ( childkey ) ,
41
+ xpriv : await DashHd . toXPrv ( childkey ) ,
42
+ xpub : await DashHd . toXPub ( childkey ) ,
43
43
} ;
44
44
assert . deepEqual ( childObj , obj ) ;
45
45
46
- var newKey = await DashHd . fromExtendedKey ( childObj . xpriv ) ;
47
- assert . strictEqual (
48
- await DashHd . getPrivateExtendedKey ( newKey ) ,
49
- f . private ,
50
- ) ;
51
- assert . strictEqual (
52
- await DashHd . getPublicExtendedKey ( newKey ) ,
53
- f . public ,
54
- ) ;
46
+ var newKey = await DashHd . fromXKey ( childObj . xpriv , { bip32 : true } ) ;
47
+ assert . strictEqual ( await DashHd . toXPrv ( newKey ) , f . private ) ;
48
+ assert . strictEqual ( await DashHd . toXPub ( newKey ) , f . public ) ;
55
49
} ) ;
56
50
} ,
57
51
) ;
@@ -106,13 +100,13 @@ describe("hdkey", function () {
106
100
});
107
101
*/
108
102
109
- describe ( "+ fromExtendedKey ()" , function ( ) {
103
+ describe ( "+ fromXKey ()" , function ( ) {
110
104
describe ( "> when private" , function ( ) {
111
105
it ( "should parse it" , async function ( ) {
112
106
// m/0/2147483647'/1/2147483646'/2
113
107
var key =
114
108
"xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j" ;
115
- var hdkey = await DashHd . fromExtendedKey ( key ) ;
109
+ var hdkey = await DashHd . fromXKey ( key , { bip32 : true } ) ;
116
110
assert . equal ( hdkey . versions . private , 0x0488ade4 ) ;
117
111
assert . equal ( hdkey . versions . public , 0x0488b21e ) ;
118
112
assert . equal ( hdkey . depth , 5 ) ;
@@ -130,7 +124,7 @@ describe("hdkey", function () {
130
124
u8ToHex ( hdkey . publicKey ) ,
131
125
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c" ,
132
126
) ;
133
- let print = await DashHd . fingerprint ( hdkey . publicKey ) ;
127
+ let print = await DashHd . _fingerprint ( hdkey . publicKey ) ;
134
128
assert . equal (
135
129
print . toString ( 16 ) ,
136
130
"26132fdbe7bf89cbc64cf8dafa3f9f88b8666220" . slice ( 0 , 8 ) ,
@@ -143,7 +137,7 @@ describe("hdkey", function () {
143
137
// m/0/2147483647'/1/2147483646'/2
144
138
var key =
145
139
"xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt" ;
146
- var hdkey = await DashHd . fromExtendedKey ( key ) ;
140
+ var hdkey = await DashHd . fromXKey ( key , { bip32 : true } ) ;
147
141
assert . equal ( hdkey . versions . private , 0x0488ade4 ) ;
148
142
assert . equal ( hdkey . versions . public , 0x0488b21e ) ;
149
143
assert . equal ( hdkey . depth , 5 ) ;
@@ -158,7 +152,7 @@ describe("hdkey", function () {
158
152
u8ToHex ( hdkey . publicKey ) ,
159
153
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c" ,
160
154
) ;
161
- let print = await DashHd . fingerprint ( hdkey . publicKey ) ;
155
+ let print = await DashHd . _fingerprint ( hdkey . publicKey ) ;
162
156
assert . equal (
163
157
print . toString ( 16 ) ,
164
158
"26132fdbe7bf89cbc64cf8dafa3f9f88b8666220" . slice ( 0 , 8 ) ,
@@ -169,7 +163,7 @@ describe("hdkey", function () {
169
163
// m/0/2147483647'/1/2147483646'/2
170
164
var key =
171
165
"xpub6FnCn6nSzZAw5Tw7cgR9bi15UV96gLZhjDstkXXxvCLsUXBGXPdSnLFbdpq8p9HmGsApME5hQTZ3emM2rnY5agb9rXpVGyy3bdW6EEgAtqt" ;
172
- var hdkey = await DashHd . fromExtendedKey ( key , null , false ) ;
166
+ var hdkey = await DashHd . fromXKey ( key , { versions : null , bip32 : true } ) ;
173
167
assert . equal ( hdkey . versions . private , 0x0488ade4 ) ;
174
168
assert . equal ( hdkey . versions . public , 0x0488b21e ) ;
175
169
assert . equal ( hdkey . depth , 5 ) ;
@@ -184,7 +178,7 @@ describe("hdkey", function () {
184
178
u8ToHex ( hdkey . publicKey ) ,
185
179
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c" ,
186
180
) ;
187
- let print = await DashHd . fingerprint ( hdkey . publicKey ) ;
181
+ let print = await DashHd . _fingerprint ( hdkey . publicKey ) ;
188
182
assert . equal (
189
183
print . toString ( 16 ) ,
190
184
"26132fdbe7bf89cbc64cf8dafa3f9f88b8666220" . slice ( 0 , 8 ) ,
@@ -197,7 +191,7 @@ describe("hdkey", function () {
197
191
it ( "should work" , async function ( ) {
198
192
var key =
199
193
"xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j" ;
200
- var hdkey = await DashHd . fromExtendedKey ( key ) ;
194
+ var hdkey = await DashHd . fromXKey ( key , { bip32 : true } ) ;
201
195
202
196
var ma = new Uint8Array ( 32 ) ;
203
197
var mb = new Uint8Array ( Buffer . alloc ( 32 , 8 ) ) ;
@@ -233,26 +227,26 @@ describe("hdkey", function () {
233
227
it ( "should work" , async function ( ) {
234
228
var key =
235
229
"xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8" ;
236
- var hdkey = await DashHd . fromExtendedKey ( key ) ;
230
+ var hdkey = await DashHd . fromXKey ( key , { bip32 : true } ) ;
237
231
238
232
var path = "m/3353535/2223/0/99424/4/33" ;
239
233
var derivedHDKey = await DashHd . derivePath ( hdkey , path ) ;
240
234
241
235
var expected =
242
236
"xpub6JdKdVJtdx6sC3nh87pDvnGhotXuU5Kz6Qy7Piy84vUAwWSYShsUGULE8u6gCivTHgz7cCKJHiXaaMeieB4YnoFVAsNgHHKXJ2mN6jCMbH1" ;
243
- assert . equal ( await DashHd . getPublicExtendedKey ( derivedHDKey ) , expected ) ;
237
+ assert . equal ( await DashHd . toXPub ( derivedHDKey ) , expected ) ;
244
238
} ) ;
245
239
} ) ;
246
240
247
241
describe ( "> when private key integer is less than 32 bytes" , function ( ) {
248
242
it ( "should work" , async function ( ) {
249
243
var seed = "000102030405060708090a0b0c0d0e0f" ;
250
- var masterKey = await DashHd . fromMasterSeed ( hexToU8 ( seed ) ) ;
244
+ var masterKey = await DashHd . fromSeed ( hexToU8 ( seed ) ) ;
251
245
252
246
var newKey = await DashHd . derivePath ( masterKey , "m/44'/6'/4'" ) ;
253
247
var expected =
254
248
"xprv9ymoag6W7cR6KBcJzhCM6qqTrb3rRVVwXKzwNqp1tDWcwierEv3BA9if3ARHMhMPh9u2jNoutcgpUBLMfq3kADDo7LzfoCnhhXMRGX3PXDx" ;
255
- assert . equal ( await DashHd . getPrivateExtendedKey ( newKey ) , expected ) ;
249
+ assert . equal ( await DashHd . toXPrv ( newKey ) , expected ) ;
256
250
} ) ;
257
251
} ) ;
258
252
@@ -266,7 +260,7 @@ describe("hdkey", function () {
266
260
it ( "will include leading zeros when hashing to derive child" , async function ( ) {
267
261
var key =
268
262
"xprv9s21ZrQH143K3ckY9DgU79uMTJkQRLdbCCVDh81SnxTgPzLLGax6uHeBULTtaEtcAvKjXfT7ZWtHzKjTpujMkUd9dDb8msDeAfnJxrgAYhr" ;
269
- var hdkey = await DashHd . fromExtendedKey ( key ) ;
263
+ var hdkey = await DashHd . fromXKey ( key , { bip32 : true } ) ;
270
264
assert . equal (
271
265
u8ToHex ( hdkey . privateKey ) ,
272
266
"00000055378cf5fafb56c711c674143f9b0ee82ab0ba2924f19b64f5ae7cdbfd" ,
@@ -282,28 +276,22 @@ describe("hdkey", function () {
282
276
describe ( "> when private key is null" , function ( ) {
283
277
it ( "privateExtendedKey should return null and not throw" , async function ( ) {
284
278
var seed = "000102030405060708090a0b0c0d0e0f" ;
285
- var masterKey = await DashHd . fromMasterSeed ( hexToU8 ( seed ) ) ;
279
+ var masterKey = await DashHd . fromSeed ( hexToU8 ( seed ) ) ;
286
280
287
- assert . ok (
288
- await DashHd . getPrivateExtendedKey ( masterKey ) ,
289
- "xpriv is truthy" ,
290
- ) ;
281
+ assert . ok ( await DashHd . toXPrv ( masterKey ) , "xpriv is truthy" ) ;
291
282
DashHd . wipePrivateData ( masterKey ) ;
292
283
293
284
assert . doesNotThrow ( async function ( ) {
294
- await masterKey . getPrivateExtendedKey ( ) ;
285
+ await masterKey . toXPrv ( ) ;
295
286
} ) ;
296
287
297
- assert . ok (
298
- ! ( await DashHd . getPrivateExtendedKey ( masterKey ) ) ,
299
- "xpriv is falsy" ,
300
- ) ;
288
+ assert . ok ( ! ( await DashHd . toXPrv ( masterKey ) ) , "xpriv is falsy" ) ;
301
289
} ) ;
302
290
} ) ;
303
291
304
292
describe ( " - when the path given to derive contains only the master extended key" , function ( ) {
305
293
it ( "should return the same hdkey instance" , async function ( ) {
306
- const hdKeyInstance = await DashHd . fromMasterSeed (
294
+ const hdKeyInstance = await DashHd . fromSeed (
307
295
hexToU8 ( fixtures . valid [ 0 ] . seed ) ,
308
296
) ;
309
297
assert . equal ( await DashHd . derivePath ( hdKeyInstance , "m" ) , hdKeyInstance ) ;
@@ -316,37 +304,31 @@ describe("hdkey", function () {
316
304
describe ( " - when the path given to derive does not begin with master extended key" , function ( ) {
317
305
it ( "should throw an error" , async function ( ) {
318
306
assert . rejects ( async function ( ) {
319
- const hdkey = DashHd . create ( ) ;
320
- await DashHd . derivePath ( hdkey , "123" ) ;
307
+ await DashHd . derivePath ( { } , "123" ) ;
321
308
} , / P a t h m u s t s t a r t w i t h " m " o r " M " / ) ;
322
309
} ) ;
323
310
} ) ;
324
311
325
312
describe ( "- after wipePrivateData()" , function ( ) {
326
313
it ( "should not have private data" , async function ( ) {
327
- const hdkey = await DashHd . fromMasterSeed (
328
- hexToU8 ( fixtures . valid [ 6 ] . seed ) ,
329
- ) ;
314
+ const hdkey = await DashHd . fromSeed ( hexToU8 ( fixtures . valid [ 6 ] . seed ) ) ;
330
315
DashHd . wipePrivateData ( hdkey ) ;
331
316
assert . equal ( hdkey . privateKey , null ) ;
332
- assert . equal ( await DashHd . getPrivateExtendedKey ( hdkey ) , null ) ;
317
+ assert . equal ( await DashHd . toXPrv ( hdkey ) , null ) ;
333
318
assert . rejects ( async function ( ) {
334
319
await sign ( hdkey , new Uint8Array ( 32 ) ) ;
335
320
} , "shouldn't be able to sign" ) ;
336
321
const childKey = await DashHd . derivePath ( hdkey , "m/0" ) ;
337
- assert . equal (
338
- await DashHd . getPublicExtendedKey ( childKey ) ,
339
- fixtures . valid [ 7 ] . public ,
340
- ) ;
322
+ assert . equal ( await DashHd . toXPub ( childKey ) , fixtures . valid [ 7 ] . public ) ;
341
323
assert . equal ( childKey . privateKey , null ) ;
342
- assert . equal ( await DashHd . getPrivateExtendedKey ( childKey ) , null ) ;
324
+ assert . equal ( await DashHd . toXPrv ( childKey ) , null ) ;
343
325
} ) ;
344
326
345
327
it ( "should have correct data" , async function ( ) {
346
328
// m/0/2147483647'/1/2147483646'/2
347
329
const key =
348
330
"xprvA2nrNbFZABcdryreWet9Ea4LvTJcGsqrMzxHx98MMrotbir7yrKCEXw7nadnHM8Dq38EGfSh6dqA9QWTyefMLEcBYJUuekgW4BYPJcr9E7j" ;
349
- const hdkey = await DashHd . fromExtendedKey ( key ) ;
331
+ const hdkey = await DashHd . fromXKey ( key , { bip32 : true } ) ;
350
332
DashHd . wipePrivateData ( hdkey ) ;
351
333
assert . equal ( hdkey . versions . private , 0x0488ade4 ) ;
352
334
assert . equal ( hdkey . versions . public , 0x0488b21e ) ;
@@ -361,21 +343,18 @@ describe("hdkey", function () {
361
343
u8ToHex ( hdkey . publicKey ) ,
362
344
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c" ,
363
345
) ;
364
- let print = await DashHd . fingerprint ( hdkey . publicKey ) ;
346
+ let print = await DashHd . _fingerprint ( hdkey . publicKey ) ;
365
347
assert . equal (
366
348
print . toString ( 16 ) ,
367
349
"26132fdbe7bf89cbc64cf8dafa3f9f88b8666220" . slice ( 0 , 8 ) ,
368
350
) ;
369
351
} ) ;
370
352
371
353
it ( "should be able to verify signatures" , async function ( ) {
372
- const fullKey = await DashHd . fromMasterSeed (
373
- hexToU8 ( fixtures . valid [ 0 ] . seed ) ,
374
- ) ;
354
+ const fullKey = await DashHd . fromSeed ( hexToU8 ( fixtures . valid [ 0 ] . seed ) ) ;
375
355
// using get/from methods to clone before mutating
376
- const wipedKey = await DashHd . fromExtendedKey (
377
- await DashHd . getPrivateExtendedKey ( fullKey ) ,
378
- ) ;
356
+ const xprv = await DashHd . toXPrv ( fullKey ) ;
357
+ const wipedKey = await DashHd . fromXKey ( xprv , { bip32 : true } ) ;
379
358
DashHd . wipePrivateData ( wipedKey ) ;
380
359
381
360
const hash = new Uint8Array ( Buffer . alloc ( 32 , 8 ) ) ;
@@ -384,18 +363,19 @@ describe("hdkey", function () {
384
363
} ) ;
385
364
386
365
it ( "should not throw if called on hdkey without private data" , async function ( ) {
387
- const hdkey = await DashHd . fromExtendedKey ( fixtures . valid [ 0 ] . public ) ;
366
+ const hdkey = await DashHd . fromXKey ( fixtures . valid [ 0 ] . public , {
367
+ bip32 : true ,
368
+ } ) ;
388
369
assert . doesNotThrow ( ( ) => DashHd . wipePrivateData ( hdkey ) ) ;
389
- assert . equal (
390
- await DashHd . getPublicExtendedKey ( hdkey ) ,
391
- fixtures . valid [ 0 ] . public ,
392
- ) ;
370
+ assert . equal ( await DashHd . toXPub ( hdkey ) , fixtures . valid [ 0 ] . public ) ;
393
371
} ) ;
394
372
} ) ;
395
373
396
374
describe ( "Deriving a child key does not mutate the internal state" , function ( ) {
397
375
it ( "should not mutate it when deriving with a private key" , async function ( ) {
398
- const hdkey = await DashHd . fromExtendedKey ( fixtures . valid [ 0 ] . private ) ;
376
+ const hdkey = await DashHd . fromXKey ( fixtures . valid [ 0 ] . private , {
377
+ bip32 : true ,
378
+ } ) ;
399
379
const path = "m/123" ;
400
380
const privateKeyBefore = u8ToHex ( hdkey . privateKey ) ;
401
381
@@ -419,7 +399,9 @@ describe("hdkey", function () {
419
399
} ) ;
420
400
421
401
it ( "should not mutate it when deriving without a private key" , async function ( ) {
422
- const hdkey = await DashHd . fromExtendedKey ( fixtures . valid [ 0 ] . private ) ;
402
+ const hdkey = await DashHd . fromXKey ( fixtures . valid [ 0 ] . private , {
403
+ bip32 : true ,
404
+ } ) ;
423
405
const path = "m/123/123/123" ;
424
406
DashHd . wipePrivateData ( hdkey ) ;
425
407
0 commit comments