@bitgo/sdk-core 4.0.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/src/account-lib/baseCoin/enum.d.ts +2 -1
  3. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/enum.js +3 -1
  5. package/dist/src/account-lib/mpc/hdTree.d.ts +8 -2
  6. package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -1
  7. package/dist/src/account-lib/mpc/hdTree.js +58 -12
  8. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +12 -1
  9. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  10. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +72 -4
  11. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +6 -0
  12. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  13. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  14. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +1 -1
  15. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  16. package/dist/src/bitgo/utils/mpcUtils.js +12 -3
  17. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +2 -1
  18. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  19. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  20. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  21. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +6 -3
  22. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  23. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +7 -7
  24. package/dist/src/bitgo/wallet/iWallet.d.ts +7 -0
  25. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  26. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  27. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  28. package/dist/src/bitgo/wallet/wallet.js +17 -5
  29. package/dist/src/coins/ofc.d.ts +1 -0
  30. package/dist/src/coins/ofc.d.ts.map +1 -1
  31. package/dist/src/coins/ofc.js +4 -1
  32. package/dist/tsconfig.tsbuildinfo +471 -447
  33. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -3,6 +3,26 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.2.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@4.1.0...@bitgo/sdk-core@4.2.0) (2022-12-06)
7
+
8
+ ### Features
9
+
10
+ - **sdk-coin-polygon:** crossChainRecovery support ([9b42813](https://github.com/BitGo/BitGoJS/commit/9b4281333a8d3835219e566e31cba28ab448c85f))
11
+ - **sdk-core:** add source destination chain to send many ([1b27a48](https://github.com/BitGo/BitGoJS/commit/1b27a486e4be24cb2a66606e9ddf35699280393c))
12
+
13
+ # [4.1.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@4.0.0...@bitgo/sdk-core@4.1.0) (2022-12-01)
14
+
15
+ ### Bug Fixes
16
+
17
+ - **sdk-core:** fix tss signing ([79882b1](https://github.com/BitGo/BitGoJS/commit/79882b1b3a2f722877aaa1def76aba10776717aa))
18
+ - **sdk-core:** whitelist source and destination chain params ([5724d22](https://github.com/BitGo/BitGoJS/commit/5724d22130ebacf65e1545cab18ee602e1dff231))
19
+ - update ofc coin for ibasecoin changes ([65986c6](https://github.com/BitGo/BitGoJS/commit/65986c6405e2771b6c7c85dd8b62bf99d6cd8c41))
20
+
21
+ ### Features
22
+
23
+ - **bitgo:** add api version input ([42f353f](https://github.com/BitGo/BitGoJS/commit/42f353f0b33857963d66739d34b0d0cac85e82db))
24
+ - **sdk-core:** add keyDerive to ECDSA TSS implementation ([9ff1d89](https://github.com/BitGo/BitGoJS/commit/9ff1d89ba0e42d53640f0fe7b71c53d1a2eb4a10))
25
+
6
26
  # [4.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@2.2.0...@bitgo/sdk-core@4.0.0) (2022-11-29)
7
27
 
8
28
  ### Bug Fixes
@@ -25,7 +25,8 @@ export declare enum TransactionType {
25
25
  AddDelegator = 20,
26
26
  AddValidator = 21,
27
27
  Export = 22,
28
- Import = 23
28
+ Import = 23,
29
+ RecoveryWalletDeployment = 24
29
30
  }
30
31
  /**
31
32
  * Generic list of encoding formats. Can be used as arguments for methods inputs.
@@ -1 +1 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/enum.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAA;IAEJ,UAAU,IAAA;IAEV,WAAW,IAAA;IAEX,oBAAoB,IAAA;IAEpB,qBAAqB,IAAA;IAErB,oCAAoC,IAAA;IAEpC,WAAW,IAAA;IAEX,UAAU,IAAA;IAEV,aAAa,IAAA;IAEb,aAAa,IAAA;IAEb,WAAW,KAAA;IAEX,WAAW,KAAA;IAEX,aAAa,KAAA;IAEb,eAAe,KAAA;IAEf,aAAa,KAAA;IAEb,eAAe,KAAA;IAEf,YAAY,KAAA;IAEZ,iBAAiB,KAAA;IAEjB,KAAK,KAAA;IAEL,YAAY,KAAA;IAEZ,YAAY,KAAA;IAEZ,YAAY,KAAA;IAEZ,MAAM,KAAA;IACN,MAAM,KAAA;CACP;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAID,oBAAY,gBAAgB;IAE1B,SAAS,KAAK;IAEd,QAAQ,IAAI;CACb;AAED,oBAAY,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,oBAAY,qBAAqB;IAC/B,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,QAAQ,IAAA;CACT"}
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/enum.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAA;IAEJ,UAAU,IAAA;IAEV,WAAW,IAAA;IAEX,oBAAoB,IAAA;IAEpB,qBAAqB,IAAA;IAErB,oCAAoC,IAAA;IAEpC,WAAW,IAAA;IAEX,UAAU,IAAA;IAEV,aAAa,IAAA;IAEb,aAAa,IAAA;IAEb,WAAW,KAAA;IAEX,WAAW,KAAA;IAEX,aAAa,KAAA;IAEb,eAAe,KAAA;IAEf,aAAa,KAAA;IAEb,eAAe,KAAA;IAEf,YAAY,KAAA;IAEZ,iBAAiB,KAAA;IAEjB,KAAK,KAAA;IAEL,YAAY,KAAA;IAEZ,YAAY,KAAA;IAEZ,YAAY,KAAA;IAEZ,MAAM,KAAA;IACN,MAAM,KAAA;IAEN,wBAAwB,KAAA;CACzB;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAID,oBAAY,gBAAgB;IAE1B,SAAS,KAAK;IAEd,QAAQ,IAAI;CACb;AAED,oBAAY,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,oBAAY,qBAAqB;IAC/B,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,QAAQ,IAAA;CACT"}
@@ -52,6 +52,8 @@ var TransactionType;
52
52
  // Cross chain transfer at Avax
53
53
  TransactionType[TransactionType["Export"] = 22] = "Export";
54
54
  TransactionType[TransactionType["Import"] = 23] = "Import";
55
+ // Cross chain Recovery for evm like chains
56
+ TransactionType[TransactionType["RecoveryWalletDeployment"] = 24] = "RecoveryWalletDeployment";
55
57
  })(TransactionType = exports.TransactionType || (exports.TransactionType = {}));
56
58
  /**
57
59
  * Generic list of encoding formats. Can be used as arguments for methods inputs.
@@ -81,4 +83,4 @@ var StakingOperationTypes;
81
83
  StakingOperationTypes[StakingOperationTypes["UNLOCK"] = 4] = "UNLOCK";
82
84
  StakingOperationTypes[StakingOperationTypes["WITHDRAW"] = 5] = "WITHDRAW";
83
85
  })(StakingOperationTypes = exports.StakingOperationTypes || (exports.StakingOperationTypes = {}));
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9iYXNlQ29pbi9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxlQStDWDtBQS9DRCxXQUFZLGVBQWU7SUFDekIscURBQUksQ0FBQTtJQUNKLCtCQUErQjtJQUMvQixpRUFBVSxDQUFBO0lBQ1YsZ0NBQWdDO0lBQ2hDLG1FQUFXLENBQUE7SUFDWCxvRUFBb0U7SUFDcEUscUZBQW9CLENBQUE7SUFDcEIscUVBQXFFO0lBQ3JFLHVGQUFxQixDQUFBO0lBQ3JCLDBDQUEwQztJQUMxQyxxSEFBb0MsQ0FBQTtJQUNwQyw0REFBNEQ7SUFDNUQsbUVBQVcsQ0FBQTtJQUNYLHdFQUF3RTtJQUN4RSxpRUFBVSxDQUFBO0lBQ1Ysb0NBQW9DO0lBQ3BDLHVFQUFhLENBQUE7SUFDYiw4RUFBOEU7SUFDOUUsdUVBQWEsQ0FBQTtJQUNiLE9BQU87SUFDUCxvRUFBVyxDQUFBO0lBQ1gsT0FBTztJQUNQLG9FQUFXLENBQUE7SUFDWCxTQUFTO0lBQ1Qsd0VBQWEsQ0FBQTtJQUNiLFdBQVc7SUFDWCw0RUFBZSxDQUFBO0lBQ2YsU0FBUztJQUNULHdFQUFhLENBQUE7SUFDYixXQUFXO0lBQ1gsNEVBQWUsQ0FBQTtJQUNmLDhCQUE4QjtJQUM5QixzRUFBWSxDQUFBO0lBQ1osYUFBYTtJQUNiLGdGQUFpQixDQUFBO0lBQ2pCLG1FQUFtRTtJQUNuRSx3REFBSyxDQUFBO0lBQ0wsNEJBQTRCO0lBQzVCLHNFQUFZLENBQUE7SUFDWiwyQkFBMkI7SUFDM0Isc0VBQVksQ0FBQTtJQUNaLDJCQUEyQjtJQUMzQixzRUFBWSxDQUFBO0lBQ1osK0JBQStCO0lBQy9CLDBEQUFNLENBQUE7SUFDTiwwREFBTSxDQUFBO0FBQ1IsQ0FBQyxFQS9DVyxlQUFlLEdBQWYsdUJBQWUsS0FBZix1QkFBZSxRQStDMUI7QUFFRDs7R0FFRztBQUNILElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2Qiw0QkFBVyxDQUFBO0lBQ1gsa0NBQWlCLENBQUE7SUFDakIsb0NBQW1CLENBQUE7SUFDbkIsb0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBS3hCO0FBRUQseURBQXlEO0FBQ3pELHVEQUF1RDtBQUN2RCxJQUFZLGdCQUtYO0FBTEQsV0FBWSxnQkFBZ0I7SUFDMUIsbURBQW1EO0lBQ25ELGtFQUFjLENBQUE7SUFDZCx3Q0FBd0M7SUFDeEMsK0RBQVksQ0FBQTtBQUNkLENBQUMsRUFMVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQUszQjtBQUlELElBQVkscUJBT1g7QUFQRCxXQUFZLHFCQUFxQjtJQUMvQixpRUFBSSxDQUFBO0lBQ0osaUVBQUksQ0FBQTtJQUNKLHFFQUFNLENBQUE7SUFDTix5RUFBUSxDQUFBO0lBQ1IscUVBQU0sQ0FBQTtJQUNOLHlFQUFRLENBQUE7QUFDVixDQUFDLEVBUFcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFPaEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVybmFsIG1ldGFkYXRhLiBEZWZpbmVzIHRoZSB0eXBlIG9mIHRyYW5zYWN0aW9uLlxuICovXG5leHBvcnQgZW51bSBUcmFuc2FjdGlvblR5cGUge1xuICBTZW5kLFxuICAvLyBTZW5kIEVSQzcyMSBjb21wbGlhbnQgdG9rZW5zXG4gIFNlbmRFUkM3MjEsXG4gIC8vIFNlbmQgRVJDMTE1NSBjb21wbGlhbnQgdG9rZW5zXG4gIFNlbmRFUkMxMTU1LFxuICAvLyBJbml0aWFsaXplIGEgd2FsbGV0IG9uLWNoYWluIChlLmcuIE11bHRpLXNpZyBjb250cmFjdCBkZXBsb3ltZW50KVxuICBXYWxsZXRJbml0aWFsaXphdGlvbixcbiAgLy8gSW5pdGlhbGl6ZSBhbiBhZGRyZXNzIG9uLWNoYWluKGUuZy4gRm9yd2FyZGVyIGNvbnRyYWN0IGRlcGxveW1lbnQpXG4gIEFkZHJlc3NJbml0aWFsaXphdGlvbixcbiAgLy8gSW5pdGlhbGl6ZWQgYW4gYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gIEFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbixcbiAgLy8gRmx1c2ggdG9rZW5zIGZyb20gYSBmb3J3YXJkZXIgYWRkcmVzcyB0byBpdHMgYmFzZSBhZGRyZXNzXG4gIEZsdXNoVG9rZW5zLFxuICAvLyBGbHVzaCBuYXRpdmUgY29pbnMgKGVnLiBFVEgpIGZyb20gYSBmb3J3YXJkZXIgYWRkcmVzcyB0byBiYXNlIGFkZHJlc3NcbiAgRmx1c2hDb2lucyxcbiAgLy8gU2VuZCBhIHJhdyBzaW5nbGUtc2lnIHRyYW5zYWN0aW9uXG4gIFNpbmdsZVNpZ1NlbmQsXG4gIC8vIFVwZGF0ZSBhbiBhY2NvdW50IG9uLWNoYWluIChlLmcuIFB1YmxpYyBrZXkgcmV2ZWxhdGlvbiBvcGVyYXRpb24gZm9yIFRlem9zKVxuICBBY2NvdW50VXBkYXRlLFxuICAvLyBMb2NrXG4gIFN0YWtpbmdMb2NrLFxuICAvLyBWb3RlXG4gIFN0YWtpbmdWb3RlLFxuICAvLyBVbnZvdGVcbiAgU3Rha2luZ1Vudm90ZSxcbiAgLy8gQWN0aXZhdGVcbiAgU3Rha2luZ0FjdGl2YXRlLFxuICAvLyBVbmxvY2tcbiAgU3Rha2luZ1VubG9jayxcbiAgLy8gV2l0aGRyYXdcbiAgU3Rha2luZ1dpdGhkcmF3LFxuICAvLyBIYW5kbGUgc21hcnQgY29udHJhY3QgY2FsbHNcbiAgQ29udHJhY3RDYWxsLFxuICAvLyBEZWFjdGl2YXRlXG4gIFN0YWtpbmdEZWFjdGl2YXRlLFxuICAvLyBCYXRjaCBvZiBtdWx0aXBsZSB0cmFuc2FjdGlvbnMgYnJvYWRjYXN0IGFzIGEgc2luZ2xlIHRyYW5zYWN0aW9uXG4gIEJhdGNoLFxuICAvLyBDbGFpbSB0aGUgc3Rha2luZyByZXdhcmRzXG4gIFN0YWtpbmdDbGFpbSxcbiAgLy8gQWRkIGRlbGVnYXRvciB0byBwLWNoYWluXG4gIEFkZERlbGVnYXRvcixcbiAgLy8gQWRkIHZhbGlkYXRvciB0byBwLWNoYWluXG4gIEFkZFZhbGlkYXRvcixcbiAgLy8gQ3Jvc3MgY2hhaW4gdHJhbnNmZXIgYXQgQXZheFxuICBFeHBvcnQsXG4gIEltcG9ydCxcbn1cblxuLyoqXG4gKiBHZW5lcmljIGxpc3Qgb2YgZW5jb2RpbmcgZm9ybWF0cy4gQ2FuIGJlIHVzZWQgYXMgYXJndW1lbnRzIGZvciBtZXRob2RzIGlucHV0cy5cbiAqL1xuZXhwb3J0IGVudW0gQWRkcmVzc0Zvcm1hdCB7XG4gIGhleCA9ICdoZXgnLFxuICBiYXNlNTggPSAnYmFzZTU4JyxcbiAgbWFpbm5ldCA9ICdtYWlubmV0JyxcbiAgdGVzdG5ldCA9ICd0ZXN0bmV0Jyxcbn1cblxuLy8gVE9ETygpOiBjcmVhdGUgdW5pb24gdHlwZSBvZiBhbGwgYWRkcmVzcyBmb3JtYXRzIGVudW1zXG4vLyBsaXN0IG9mIHNzNTggZm9ybWF0IGVuY29kaW5nIHR5cGVzIGZvciBEb3QgZWNvc3lzdGVtXG5leHBvcnQgZW51bSBEb3RBZGRyZXNzRm9ybWF0IHtcbiAgLy8gZm9ybWF0IGZvciB3ZXN0ZW5kIChnZW5lcmljIHN1YnN0cmF0ZSkgYWRkcmVzc2VzXG4gIHN1YnN0cmF0ZSA9IDQyLFxuICAvLyBmb3JtYXQgZm9yIHBvbGthZG90IG1haW5uZXQgYWRkcmVzc2VzXG4gIHBvbGthZG90ID0gMCxcbn1cblxuZXhwb3J0IHR5cGUgRG90QXNzZXRUeXBlcyA9ICdkb3QnIHwgJ3Rkb3QnO1xuXG5leHBvcnQgZW51bSBTdGFraW5nT3BlcmF0aW9uVHlwZXMge1xuICBMT0NLLFxuICBWT1RFLFxuICBVTlZPVEUsXG4gIEFDVElWQVRFLFxuICBVTkxPQ0ssXG4gIFdJVEhEUkFXLFxufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9iYXNlQ29pbi9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSxlQWlEWDtBQWpERCxXQUFZLGVBQWU7SUFDekIscURBQUksQ0FBQTtJQUNKLCtCQUErQjtJQUMvQixpRUFBVSxDQUFBO0lBQ1YsZ0NBQWdDO0lBQ2hDLG1FQUFXLENBQUE7SUFDWCxvRUFBb0U7SUFDcEUscUZBQW9CLENBQUE7SUFDcEIscUVBQXFFO0lBQ3JFLHVGQUFxQixDQUFBO0lBQ3JCLDBDQUEwQztJQUMxQyxxSEFBb0MsQ0FBQTtJQUNwQyw0REFBNEQ7SUFDNUQsbUVBQVcsQ0FBQTtJQUNYLHdFQUF3RTtJQUN4RSxpRUFBVSxDQUFBO0lBQ1Ysb0NBQW9DO0lBQ3BDLHVFQUFhLENBQUE7SUFDYiw4RUFBOEU7SUFDOUUsdUVBQWEsQ0FBQTtJQUNiLE9BQU87SUFDUCxvRUFBVyxDQUFBO0lBQ1gsT0FBTztJQUNQLG9FQUFXLENBQUE7SUFDWCxTQUFTO0lBQ1Qsd0VBQWEsQ0FBQTtJQUNiLFdBQVc7SUFDWCw0RUFBZSxDQUFBO0lBQ2YsU0FBUztJQUNULHdFQUFhLENBQUE7SUFDYixXQUFXO0lBQ1gsNEVBQWUsQ0FBQTtJQUNmLDhCQUE4QjtJQUM5QixzRUFBWSxDQUFBO0lBQ1osYUFBYTtJQUNiLGdGQUFpQixDQUFBO0lBQ2pCLG1FQUFtRTtJQUNuRSx3REFBSyxDQUFBO0lBQ0wsNEJBQTRCO0lBQzVCLHNFQUFZLENBQUE7SUFDWiwyQkFBMkI7SUFDM0Isc0VBQVksQ0FBQTtJQUNaLDJCQUEyQjtJQUMzQixzRUFBWSxDQUFBO0lBQ1osK0JBQStCO0lBQy9CLDBEQUFNLENBQUE7SUFDTiwwREFBTSxDQUFBO0lBQ04sMkNBQTJDO0lBQzNDLDhGQUF3QixDQUFBO0FBQzFCLENBQUMsRUFqRFcsZUFBZSxHQUFmLHVCQUFlLEtBQWYsdUJBQWUsUUFpRDFCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDdkIsNEJBQVcsQ0FBQTtJQUNYLGtDQUFpQixDQUFBO0lBQ2pCLG9DQUFtQixDQUFBO0lBQ25CLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUt4QjtBQUVELHlEQUF5RDtBQUN6RCx1REFBdUQ7QUFDdkQsSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQzFCLG1EQUFtRDtJQUNuRCxrRUFBYyxDQUFBO0lBQ2Qsd0NBQXdDO0lBQ3hDLCtEQUFZLENBQUE7QUFDZCxDQUFDLEVBTFcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFLM0I7QUFJRCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0IsaUVBQUksQ0FBQTtJQUNKLGlFQUFJLENBQUE7SUFDSixxRUFBTSxDQUFBO0lBQ04seUVBQVEsQ0FBQTtJQUNSLHFFQUFNLENBQUE7SUFDTix5RUFBUSxDQUFBO0FBQ1YsQ0FBQyxFQVBXLHFCQUFxQixHQUFyQiw2QkFBcUIsS0FBckIsNkJBQXFCLFFBT2hDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnRlcm5hbCBtZXRhZGF0YS4gRGVmaW5lcyB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25UeXBlIHtcbiAgU2VuZCxcbiAgLy8gU2VuZCBFUkM3MjEgY29tcGxpYW50IHRva2Vuc1xuICBTZW5kRVJDNzIxLFxuICAvLyBTZW5kIEVSQzExNTUgY29tcGxpYW50IHRva2Vuc1xuICBTZW5kRVJDMTE1NSxcbiAgLy8gSW5pdGlhbGl6ZSBhIHdhbGxldCBvbi1jaGFpbiAoZS5nLiBNdWx0aS1zaWcgY29udHJhY3QgZGVwbG95bWVudClcbiAgV2FsbGV0SW5pdGlhbGl6YXRpb24sXG4gIC8vIEluaXRpYWxpemUgYW4gYWRkcmVzcyBvbi1jaGFpbihlLmcuIEZvcndhcmRlciBjb250cmFjdCBkZXBsb3ltZW50KVxuICBBZGRyZXNzSW5pdGlhbGl6YXRpb24sXG4gIC8vIEluaXRpYWxpemVkIGFuIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudFxuICBBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24sXG4gIC8vIEZsdXNoIHRva2VucyBmcm9tIGEgZm9yd2FyZGVyIGFkZHJlc3MgdG8gaXRzIGJhc2UgYWRkcmVzc1xuICBGbHVzaFRva2VucyxcbiAgLy8gRmx1c2ggbmF0aXZlIGNvaW5zIChlZy4gRVRIKSBmcm9tIGEgZm9yd2FyZGVyIGFkZHJlc3MgdG8gYmFzZSBhZGRyZXNzXG4gIEZsdXNoQ29pbnMsXG4gIC8vIFNlbmQgYSByYXcgc2luZ2xlLXNpZyB0cmFuc2FjdGlvblxuICBTaW5nbGVTaWdTZW5kLFxuICAvLyBVcGRhdGUgYW4gYWNjb3VudCBvbi1jaGFpbiAoZS5nLiBQdWJsaWMga2V5IHJldmVsYXRpb24gb3BlcmF0aW9uIGZvciBUZXpvcylcbiAgQWNjb3VudFVwZGF0ZSxcbiAgLy8gTG9ja1xuICBTdGFraW5nTG9jayxcbiAgLy8gVm90ZVxuICBTdGFraW5nVm90ZSxcbiAgLy8gVW52b3RlXG4gIFN0YWtpbmdVbnZvdGUsXG4gIC8vIEFjdGl2YXRlXG4gIFN0YWtpbmdBY3RpdmF0ZSxcbiAgLy8gVW5sb2NrXG4gIFN0YWtpbmdVbmxvY2ssXG4gIC8vIFdpdGhkcmF3XG4gIFN0YWtpbmdXaXRoZHJhdyxcbiAgLy8gSGFuZGxlIHNtYXJ0IGNvbnRyYWN0IGNhbGxzXG4gIENvbnRyYWN0Q2FsbCxcbiAgLy8gRGVhY3RpdmF0ZVxuICBTdGFraW5nRGVhY3RpdmF0ZSxcbiAgLy8gQmF0Y2ggb2YgbXVsdGlwbGUgdHJhbnNhY3Rpb25zIGJyb2FkY2FzdCBhcyBhIHNpbmdsZSB0cmFuc2FjdGlvblxuICBCYXRjaCxcbiAgLy8gQ2xhaW0gdGhlIHN0YWtpbmcgcmV3YXJkc1xuICBTdGFraW5nQ2xhaW0sXG4gIC8vIEFkZCBkZWxlZ2F0b3IgdG8gcC1jaGFpblxuICBBZGREZWxlZ2F0b3IsXG4gIC8vIEFkZCB2YWxpZGF0b3IgdG8gcC1jaGFpblxuICBBZGRWYWxpZGF0b3IsXG4gIC8vIENyb3NzIGNoYWluIHRyYW5zZmVyIGF0IEF2YXhcbiAgRXhwb3J0LFxuICBJbXBvcnQsXG4gIC8vIENyb3NzIGNoYWluIFJlY292ZXJ5IGZvciBldm0gbGlrZSBjaGFpbnNcbiAgUmVjb3ZlcnlXYWxsZXREZXBsb3ltZW50LFxufVxuXG4vKipcbiAqIEdlbmVyaWMgbGlzdCBvZiBlbmNvZGluZyBmb3JtYXRzLiBDYW4gYmUgdXNlZCBhcyBhcmd1bWVudHMgZm9yIG1ldGhvZHMgaW5wdXRzLlxuICovXG5leHBvcnQgZW51bSBBZGRyZXNzRm9ybWF0IHtcbiAgaGV4ID0gJ2hleCcsXG4gIGJhc2U1OCA9ICdiYXNlNTgnLFxuICBtYWlubmV0ID0gJ21haW5uZXQnLFxuICB0ZXN0bmV0ID0gJ3Rlc3RuZXQnLFxufVxuXG4vLyBUT0RPKCk6IGNyZWF0ZSB1bmlvbiB0eXBlIG9mIGFsbCBhZGRyZXNzIGZvcm1hdHMgZW51bXNcbi8vIGxpc3Qgb2Ygc3M1OCBmb3JtYXQgZW5jb2RpbmcgdHlwZXMgZm9yIERvdCBlY29zeXN0ZW1cbmV4cG9ydCBlbnVtIERvdEFkZHJlc3NGb3JtYXQge1xuICAvLyBmb3JtYXQgZm9yIHdlc3RlbmQgKGdlbmVyaWMgc3Vic3RyYXRlKSBhZGRyZXNzZXNcbiAgc3Vic3RyYXRlID0gNDIsXG4gIC8vIGZvcm1hdCBmb3IgcG9sa2Fkb3QgbWFpbm5ldCBhZGRyZXNzZXNcbiAgcG9sa2Fkb3QgPSAwLFxufVxuXG5leHBvcnQgdHlwZSBEb3RBc3NldFR5cGVzID0gJ2RvdCcgfCAndGRvdCc7XG5cbmV4cG9ydCBlbnVtIFN0YWtpbmdPcGVyYXRpb25UeXBlcyB7XG4gIExPQ0ssXG4gIFZPVEUsXG4gIFVOVk9URSxcbiAgQUNUSVZBVEUsXG4gIFVOTE9DSyxcbiAgV0lUSERSQVcsXG59XG4iXX0=
@@ -1,8 +1,9 @@
1
- import { Ed25519Curve } from './curves';
1
+ import { Ed25519Curve, Secp256k1Curve } from './curves';
2
+ export declare const chaincodeBase: bigint;
2
3
  interface PrivateKeychain {
3
4
  pk: bigint;
4
5
  sk: bigint;
5
- prefix: bigint;
6
+ prefix?: bigint;
6
7
  chaincode: bigint;
7
8
  }
8
9
  export interface PublicKeychain {
@@ -21,4 +22,9 @@ export declare class Ed25519BIP32 {
21
22
  publicDerive(keychain: PublicKeychain, path: string): PublicKeychain;
22
23
  privateDerive(keychain: PrivateKeychain, path: string): PrivateKeychain;
23
24
  }
25
+ export declare class BIP32 {
26
+ static curve: Secp256k1Curve;
27
+ publicDerive(keychain: PublicKeychain, path: string): PublicKeychain;
28
+ privateDerive(keychain: PrivateKeychain, path: string): PrivateKeychain;
29
+ }
24
30
  //# sourceMappingURL=hdTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hdTree.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/mpc/hdTree.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAMxC,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,MAAM;IACd,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC;IAErE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;CACzE;AAED,eAAe,MAAM,CAAC;AAkCtB,qBAAa,YAAY;IACvB,MAAM,CAAC,KAAK,EAAE,YAAY,CAAsB;IAChD,MAAM,CAAC,WAAW,UAAS;WAEd,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAShD,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc;IAkBpE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe;CAwBxE"}
1
+ {"version":3,"file":"hdTree.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/mpc/hdTree.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAIxD,eAAO,MAAM,aAAa,QAAiF,CAAC;AAE5G,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,MAAM;IACd,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC;IAErE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;CACzE;AAED,eAAe,MAAM,CAAC;AAyCtB,qBAAa,YAAY;IACvB,MAAM,CAAC,KAAK,EAAE,YAAY,CAAsB;IAChD,MAAM,CAAC,WAAW,UAAS;WAEd,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAShD,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc;IAepE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe;CAqBxE;AAiBD,qBAAa,KAAK;IAChB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAwB;IAEpD,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc;IAiBpE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe;CAiBxE"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Ed25519BIP32 = void 0;
3
+ exports.BIP32 = exports.Ed25519BIP32 = exports.chaincodeBase = void 0;
4
4
  /**
5
5
  * An interface for calculating a subkey in an HD key scheme.
6
6
  */
@@ -8,7 +8,7 @@ const crypto_1 = require("crypto");
8
8
  const curves_1 = require("./curves");
9
9
  const util_1 = require("./util");
10
10
  // 2^256
11
- const base = BigInt('0x010000000000000000000000000000000000000000000000000000000000000000');
11
+ exports.chaincodeBase = BigInt('0x010000000000000000000000000000000000000000000000000000000000000000');
12
12
  function deriveEd25519Helper(index = 0, chaincode, pk, sk) {
13
13
  const zmac = crypto_1.createHmac('sha512', util_1.bigIntToBufferBE(chaincode, 32));
14
14
  const imac = crypto_1.createHmac('sha512', util_1.bigIntToBufferBE(chaincode, 32));
@@ -41,6 +41,12 @@ function deriveEd25519Helper(index = 0, chaincode, pk, sk) {
41
41
  }
42
42
  return [zmac.digest(), imac.digest()];
43
43
  }
44
+ function pathToIndices(path) {
45
+ return path
46
+ .replace(/^m?\//, '')
47
+ .split('/')
48
+ .map((index) => parseInt(index, 10));
49
+ }
44
50
  class Ed25519BIP32 {
45
51
  static async initialize() {
46
52
  if (!Ed25519BIP32.initialized) {
@@ -50,10 +56,7 @@ class Ed25519BIP32 {
50
56
  return new Ed25519BIP32();
51
57
  }
52
58
  publicDerive(keychain, path) {
53
- const indices = path
54
- .replace(/^m\//, '')
55
- .split('/')
56
- .map((index) => parseInt(index, 10));
59
+ const indices = pathToIndices(path);
57
60
  function deriveIndex(acc, index) {
58
61
  const [pk, chaincode] = acc;
59
62
  const [zout, iout] = deriveEd25519Helper(index, chaincode, pk);
@@ -67,10 +70,7 @@ class Ed25519BIP32 {
67
70
  return { pk: subkey[0], chaincode: subkey[1] };
68
71
  }
69
72
  privateDerive(keychain, path) {
70
- const indices = path
71
- .replace(/^m\//, '')
72
- .split('/')
73
- .map((index) => parseInt(index, 10));
73
+ const indices = pathToIndices(path);
74
74
  function deriveIndex(acc, index) {
75
75
  const [pk, sk, prefix, chaincode] = acc;
76
76
  const [zout, iout] = deriveEd25519Helper(index, chaincode, pk, sk);
@@ -81,7 +81,7 @@ class Ed25519BIP32 {
81
81
  const left_pk = Ed25519BIP32.curve.pointAdd(pk, Ed25519BIP32.curve.basePointMult(t));
82
82
  const left_sk = Ed25519BIP32.curve.scalarAdd(sk, t);
83
83
  // right = zr + kr
84
- const right = (prefix + util_1.bigIntFromBufferBE(zr)) % base;
84
+ const right = (prefix + util_1.bigIntFromBufferBE(zr)) % exports.chaincodeBase;
85
85
  return [left_pk, left_sk, right, util_1.bigIntFromBufferBE(iout.slice(32))];
86
86
  }
87
87
  const [pk, sk, prefix, chaincode] = indices.reduce(deriveIndex, deriveIndex([keychain.pk, keychain.sk, keychain.prefix, keychain.chaincode], indices.shift()));
@@ -91,4 +91,50 @@ class Ed25519BIP32 {
91
91
  exports.Ed25519BIP32 = Ed25519BIP32;
92
92
  Ed25519BIP32.curve = new curves_1.Ed25519Curve();
93
93
  Ed25519BIP32.initialized = false;
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGRUcmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL21wYy9oZFRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxtQ0FBb0M7QUFDcEMscUNBQXdDO0FBQ3hDLGlDQUFvRztBQUVwRyxRQUFRO0FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFzQjVGLFNBQVMsbUJBQW1CLENBQUMsUUFBNEIsQ0FBQyxFQUFFLFNBQWlCLEVBQUUsRUFBVSxFQUFFLEVBQVc7SUFDcEcsTUFBTSxJQUFJLEdBQUcsbUJBQVUsQ0FBQyxRQUFRLEVBQUUsdUJBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxJQUFJLEdBQUcsbUJBQVUsQ0FBQyxRQUFRLEVBQUUsdUJBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3RDLHFCQUFxQjtRQUNyQiw2RUFBNkU7UUFDN0UsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0s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QUcseUJBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDdkQsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHlCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDaEQsV0FBVyxFQUNYLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDOUYsQ0FBQztRQUNGLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUN2QyxDQUFDOztBQXRESCxvQ0F1REM7QUF0RFEsa0JBQUssR0FBaUIsSUFBSSxxQkFBWSxFQUFFLENBQUM7QUFDekMsd0JBQVcsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGludGVyZmFjZSBmb3IgY2FsY3VsYXRpbmcgYSBzdWJrZXkgaW4gYW4gSEQga2V5IHNjaGVtZS5cbiAqL1xuaW1wb3J0IHsgY3JlYXRlSG1hYyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBFZDI1NTE5Q3VydmUgfSBmcm9tICcuL2N1cnZlcyc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUsIGJpZ0ludEZyb21CdWZmZXJMRSwgYmlnSW50VG9CdWZmZXJMRSB9IGZyb20gJy4vdXRpbCc7XG5cbi8vIDJeMjU2XG5jb25zdCBiYXNlID0gQmlnSW50KCcweDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuXG5pbnRlcmZhY2UgUHJpdmF0ZUtleWNoYWluIHtcbiAgcGs6IGJpZ2ludDtcbiAgc2s6IGJpZ2ludDtcbiAgcHJlZml4OiBiaWdpbnQ7XG4gIGNoYWluY29kZTogYmlnaW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0tleWNoYWluIHtcbiAgcGs6IGJpZ2ludDtcbiAgY2hhaW5jb2RlOiBiaWdpbnQ7XG59XG5cbmludGVyZmFjZSBIRFRyZWUge1xuICBwdWJsaWNEZXJpdmUoa2V5Y2hhaW46IFB1YmxpY0tleWNoYWluLCBwYXRoOiBzdHJpbmcpOiBQdWJsaWNLZXljaGFpbjtcblxuICBwcml2YXRlRGVyaXZlKGtleWNoYWluOiBQcml2YXRlS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFByaXZhdGVLZXljaGFpbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSERUcmVlO1xuXG5mdW5jdGlvbiBkZXJpdmVFZDI1NTE5SGVscGVyKGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSAwLCBjaGFpbmNvZGU6IGJpZ2ludCwgcGs6IGJpZ2ludCwgc2s/OiBiaWdpbnQpOiBCdWZmZXJbXSB7XG4gIGNvbnN0IHptYWMgPSBjcmVhdGVIbWFjKCdzaGE1MTInLCBiaWdJbnRUb0J1ZmZlckJFKGNoYWluY29kZSwgMzIpKTtcbiAgY29uc3QgaW1hYyA9IGNyZWF0ZUhtYWMoJ3NoYTUxMicsIGJpZ0ludFRvQnVmZmVyQkUoY2hhaW5jb2RlLCAzMikpO1xuICBjb25zdCBzZXJpID0gQnVmZmVyLmFsbG9jKDQpO1xuICBzZXJpLndyaXRlVUludDMyTEUoaW5kZXgsIDApO1xuICBpZiAoKChpbmRleCA+Pj4gMCkgJiAweDgwMDAwMDAwKSA9PT0gMCkge1xuICAgIC8vIE5vcm1hbCBkZXJpdmF0aW9uOlxuICAgIC8vIFogPSBITUFDLVNIQTUxMihLZXkgPSBjcGFyLCBEYXRhID0gMHgwMiB8fCBzZXJQKHBvaW50KGtwYXIpKSB8fCBzZXIzMihpKSkuXG4gICAgLy8gSSA9IEhNQUMtU0hBNTEyKEtleSA9IGNwYXIsIERhdGEgPSAweDAzIHx8IHNlclAocG9pbnQoa3BhcikpIHx8IHNlcjMyKGkpKS5cbiAgICB6bWFjLnVwZGF0ZSgnXFx4MDInKTtcbiAgICB6bWFjLnVwZGF0ZShiaWdJbnRUb0J1ZmZlckxFKHBrLCAzMikpO1xuICAgIHptYWMudXBkYXRlKHNlcmkpO1xuICAgIGltYWMudXBkYXRlKCdcXHgwMycpO1xuICAgIGltYWMudXBkYXRlKGJpZ0ludFRvQnVmZmVyTEUocGssIDMyKSk7XG4gICAgaW1hYy51cGRhdGUoc2VyaSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHBlcmZvcm1lZCBoYXJkZW5lZCBkZXJpdmF0aW9uIHdpdGhvdXQgcHJpdmF0ZSBrZXlcIik7XG4gICAgfVxuICAgIC8vIEhhcmRlbmVkIGRlcml2YXRpb246XG4gICAgLy8gWiA9IEhNQUMtU0hBNTEyKEtleSA9IGNwYXIsIERhdGEgPSAweDAwIHx8IHNlcjI1NihsZWZ0KGtwYXIpKSB8fCBzZXIzMihpKSkuXG4gICAgLy8gSSA9IEhNQUMtU0hBNTEyKEtleSA9IGNwYXIsIERhdGEgPSAweDAxIHx8IHNlcjI1NihsZWZ0KGtwYXIpKSB8fCBzZXIzMihpKSkuXG4gICAgem1hYy51cGRhdGUoJ1xceDAwJyk7XG4gICAgem1hYy51cGRhdGUoYmlnSW50VG9CdWZmZXJMRShzaywgMzIpKTtcbiAgICB6bWFjLnVwZGF0ZShzZXJpKTtcbiAgICBpbWFjLnVwZGF0ZSgnXFx4MDEnKTtcbiAgICBpbWFjLnVwZGF0ZShiaWdJbnRUb0J1ZmZlckxFKHNrLCAzMikpO1xuICAgIGltYWMudXBkYXRlKHNlcmkpO1xuICB9XG4gIHJldHVybiBbem1hYy5kaWdlc3QoKSwgaW1hYy5kaWdlc3QoKV07XG59XG5cbmV4cG9ydCBjbGFzcyBFZDI1NTE5QklQMzIge1xuICBzdGF0aWMgY3VydmU6IEVkMjU1MTlDdXJ2ZSA9IG5ldyBFZDI1NTE5Q3VydmUoKTtcbiAgc3RhdGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgc3RhdGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTxFZDI1NTE5QklQMzI+IHtcbiAgICBpZiAoIUVkMjU1MTlCSVAzMi5pbml0aWFsaXplZCkge1xuICAgICAgYXdhaXQgRWQyNTUxOUN1cnZlLmluaXRpYWxpemUoKTtcbiAgICAgIEVkMjU1MTlCSVAzMi5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBFZDI1NTE5QklQMzIoKTtcbiAgfVxuXG4gIHB1YmxpY0Rlcml2ZShrZXljaGFpbjogUHVibGljS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFB1YmxpY0tleWNoYWluIHtcbiAgICBjb25zdCBpbmRpY2VzID0gcGF0aFxuICAgICAgLnJlcGxhY2UoL15tXFwvLywgJycpXG4gICAgICAuc3BsaXQoJy8nKVxuICAgICAgLm1hcCgoaW5kZXgpID0+IHBhcnNlSW50KGluZGV4LCAxMCkpO1xuICAgIGZ1bmN0aW9uIGRlcml2ZUluZGV4KGFjYzogYmlnaW50W10sIGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQpOiBiaWdpbnRbXSB7XG4gICAgICBjb25zdCBbcGssIGNoYWluY29kZV0gPSBhY2M7XG4gICAgICBjb25zdCBbem91dCwgaW91dF0gPSBkZXJpdmVFZDI1NTE5SGVscGVyKGluZGV4LCBjaGFpbmNvZGUsIHBrKTtcbiAgICAgIGNvbnN0IHpsID0gem91dC5zbGljZSgwLCAzMik7XG4gICAgICAvLyBsZWZ0ID0ga2wgKyA4ICogdHJ1bmMyOCh6bClcbiAgICAgIGNvbnN0IHQgPSBCaWdJbnQoOCkgKiBiaWdJbnRGcm9tQnVmZmVyTEUoemwuc2xpY2UoMCwgMjgpKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBFZDI1NTE5QklQMzIuY3VydmUucG9pbnRBZGQocGssIEVkMjU1MTlCSVAzMi5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHQpKTtcbiAgICAgIHJldHVybiBbbGVmdCwgYmlnSW50RnJvbUJ1ZmZlckJFKGlvdXQuc2xpY2UoMzIpKV07XG4gICAgfVxuICAgIGNvbnN0IHN1YmtleSA9IGluZGljZXMucmVkdWNlKGRlcml2ZUluZGV4LCBkZXJpdmVJbmRleChba2V5Y2hhaW4ucGssIGtleWNoYWluLmNoYWluY29kZV0sIGluZGljZXMuc2hpZnQoKSkpO1xuICAgIHJldHVybiB7IHBrOiBzdWJrZXlbMF0sIGNoYWluY29kZTogc3Via2V5WzFdIH07XG4gIH1cblxuICBwcml2YXRlRGVyaXZlKGtleWNoYWluOiBQcml2YXRlS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFByaXZhdGVLZXljaGFpbiB7XG4gICAgY29uc3QgaW5kaWNlcyA9IHBhdGhcbiAgICAgIC5yZXBsYWNlKC9ebVxcLy8sICcnKVxuICAgICAgLnNwbGl0KCcvJylcbiAgICAgIC5tYXAoKGluZGV4KSA9PiBwYXJzZUludChpbmRleCwgMTApKTtcbiAgICBmdW5jdGlvbiBkZXJpdmVJbmRleChhY2M6IGJpZ2ludFtdLCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkKTogYmlnaW50W10ge1xuICAgICAgY29uc3QgW3BrLCBzaywgcHJlZml4LCBjaGFpbmNvZGVdID0gYWNjO1xuICAgICAgY29uc3QgW3pvdXQsIGlvdXRdID0gZGVyaXZlRWQyNTUxOUhlbHBlcihpbmRleCwgY2hhaW5jb2RlLCBwaywgc2spO1xuICAgICAgY29uc3QgemwgPSB6b3V0LnNsaWNlKDAsIDMyKTtcbiAgICAgIGNvbnN0IHpyID0gem91dC5zbGljZSgzMik7XG4gICAgICAvLyBsZWZ0ID0ga2wgKyA4ICogdHJ1bmMyOCh6bClcbiAgICAgIGNvbnN0IHQgPSBCaWdJbnQoOCkgKiBiaWdJbnRGcm9tQnVmZmVyTEUoemwuc2xpY2UoMCwgMjgpKTtcbiAgICAgIGNvbnN0IGxlZnRfcGsgPSBFZDI1NTE5QklQMzIuY3VydmUucG9pbnRBZGQocGssIEVkMjU1MTlCSVAzMi5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHQpKTtcbiAgICAgIGNvbnN0IGxlZnRfc2sgPSBFZDI1NTE5QklQMzIuY3VydmUuc2NhbGFyQWRkKHNrLCB0KTtcbiAgICAgIC8vIHJpZ2h0ID0genIgKyBrclxuICAgICAgY29uc3QgcmlnaHQgPSAocHJlZml4ICsgYmlnSW50RnJvbUJ1ZmZlckJFKHpyKSkgJSBiYXNlO1xuICAgICAgcmV0dXJuIFtsZWZ0X3BrLCBsZWZ0X3NrLCByaWdodCwgYmlnSW50RnJvbUJ1ZmZlckJFKGlvdXQuc2xpY2UoMzIpKV07XG4gICAgfVxuICAgIGNvbnN0IFtwaywgc2ssIHByZWZpeCwgY2hhaW5jb2RlXSA9IGluZGljZXMucmVkdWNlKFxuICAgICAgZGVyaXZlSW5kZXgsXG4gICAgICBkZXJpdmVJbmRleChba2V5Y2hhaW4ucGssIGtleWNoYWluLnNrLCBrZXljaGFpbi5wcmVmaXgsIGtleWNoYWluLmNoYWluY29kZV0sIGluZGljZXMuc2hpZnQoKSlcbiAgICApO1xuICAgIHJldHVybiB7IHBrLCBzaywgcHJlZml4LCBjaGFpbmNvZGUgfTtcbiAgfVxufVxuIl19
94
+ function deriveSecp256k1Helper(index = 0, chaincode, pk, sk) {
95
+ const data = Buffer.alloc(33 + 4);
96
+ if (((index >>> 0) & 0x80000000) === 0) {
97
+ util_1.bigIntToBufferBE(pk, 33).copy(data);
98
+ }
99
+ else {
100
+ if (sk === undefined) {
101
+ throw new Error("Can't performed hardened derivation without private key");
102
+ }
103
+ data[0] = 0;
104
+ util_1.bigIntToBufferBE(sk, 32).copy(data, 1);
105
+ }
106
+ data.writeUInt32BE(index, 33);
107
+ return crypto_1.createHmac('sha512', util_1.bigIntToBufferBE(chaincode, 32)).update(data).digest();
108
+ }
109
+ class BIP32 {
110
+ publicDerive(keychain, path) {
111
+ const indices = pathToIndices(path);
112
+ function deriveIndex(acc, index) {
113
+ const [pk, chaincode] = acc;
114
+ const I = deriveSecp256k1Helper(index, chaincode, pk);
115
+ const il = util_1.bigIntFromBufferBE(I.slice(0, 32));
116
+ const ir = util_1.bigIntFromBufferBE(I.slice(32));
117
+ const left_pk = BIP32.curve.pointAdd(pk, BIP32.curve.basePointMult(il));
118
+ return [left_pk, ir];
119
+ }
120
+ const [pk, chaincode] = indices.reduce(deriveIndex, deriveIndex([keychain.pk, keychain.chaincode], indices.shift()));
121
+ return { pk, chaincode };
122
+ }
123
+ privateDerive(keychain, path) {
124
+ const indices = pathToIndices(path);
125
+ function deriveIndex(acc, index) {
126
+ const [pk, sk, chaincode] = acc;
127
+ const I = deriveSecp256k1Helper(index, chaincode, pk, sk);
128
+ const il = util_1.bigIntFromBufferBE(I.slice(0, 32));
129
+ const ir = util_1.bigIntFromBufferBE(I.slice(32));
130
+ const left_pk = BIP32.curve.pointAdd(pk, BIP32.curve.basePointMult(il));
131
+ const left_sk = BIP32.curve.scalarAdd(sk, il);
132
+ return [left_pk, left_sk, ir];
133
+ }
134
+ const [pk, sk, chaincode] = indices.reduce(deriveIndex, deriveIndex([keychain.pk, keychain.sk, keychain.chaincode], indices.shift()));
135
+ return { pk, sk, chaincode };
136
+ }
137
+ }
138
+ exports.BIP32 = BIP32;
139
+ BIP32.curve = new curves_1.Secp256k1Curve();
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGRUcmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL21wYy9oZFRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxtQ0FBb0M7QUFDcEMscUNBQXdEO0FBQ3hELGlDQUFvRztBQUVwRyxRQUFRO0FBQ0ssUUFBQSxhQUFhLEdBQUcsTUFBTSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFzQjVHLFNBQVMsbUJBQW1CLENBQUMsUUFBNEIsQ0FBQyxFQUFFLFNBQWlCLEVBQUUsRUFBVSxFQUFFLEVBQVc7SUFDcEcsTUFBTSxJQUFJLEdBQUcsbUJBQVUsQ0FBQyxRQUFRLEVBQUUsdUJBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxJQUFJLEdBQUcsbUJBQVUsQ0FBQyxRQUFRLEVBQUUsdUJBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3RDLHFCQUFxQjtRQUNyQiw2RUFBNkU7UUFDN0UsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0s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LEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQzdFLENBQUM7UUFDRixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUMvQixDQUFDOztBQXBDSCxzQkFxQ0M7QUFwQ1EsV0FBSyxHQUFtQixJQUFJLHVCQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQW4gaW50ZXJmYWNlIGZvciBjYWxjdWxhdGluZyBhIHN1YmtleSBpbiBhbiBIRCBrZXkgc2NoZW1lLlxuICovXG5pbXBvcnQgeyBjcmVhdGVIbWFjIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IEVkMjU1MTlDdXJ2ZSwgU2VjcDI1NmsxQ3VydmUgfSBmcm9tICcuL2N1cnZlcyc7XG5pbXBvcnQgeyBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUsIGJpZ0ludEZyb21CdWZmZXJMRSwgYmlnSW50VG9CdWZmZXJMRSB9IGZyb20gJy4vdXRpbCc7XG5cbi8vIDJeMjU2XG5leHBvcnQgY29uc3QgY2hhaW5jb2RlQmFzZSA9IEJpZ0ludCgnMHgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKTtcblxuaW50ZXJmYWNlIFByaXZhdGVLZXljaGFpbiB7XG4gIHBrOiBiaWdpbnQ7XG4gIHNrOiBiaWdpbnQ7XG4gIHByZWZpeD86IGJpZ2ludDtcbiAgY2hhaW5jb2RlOiBiaWdpbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljS2V5Y2hhaW4ge1xuICBwazogYmlnaW50O1xuICBjaGFpbmNvZGU6IGJpZ2ludDtcbn1cblxuaW50ZXJmYWNlIEhEVHJlZSB7XG4gIHB1YmxpY0Rlcml2ZShrZXljaGFpbjogUHVibGljS2V5Y2hhaW4sIHBhdGg6IHN0cmluZyk6IFB1YmxpY0tleWNoYWluO1xuXG4gIHByaXZhdGVEZXJpdmUoa2V5Y2hhaW46IFByaXZhdGVLZXljaGFpbiwgcGF0aDogc3RyaW5nKTogUHJpdmF0ZUtleWNoYWluO1xufVxuXG5leHBvcnQgZGVmYXVsdCBIRFRyZWU7XG5cbmZ1bmN0aW9uIGRlcml2ZUVkMjU1MTlIZWxwZXIoaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IDAsIGNoYWluY29kZTogYmlnaW50LCBwazogYmlnaW50LCBzaz86IGJpZ2ludCk6IEJ1ZmZlcltdIHtcbiAgY29uc3Qgem1hYyA9IGNyZWF0ZUhtYWMoJ3NoYTUxMicsIGJpZ0ludFRvQnVmZmVyQkUoY2hhaW5jb2RlLCAzMikpO1xuICBjb25zdCBpbWFjID0gY3JlYXRlSG1hYygnc2hhNTEyJywgYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKSk7XG4gIGNvbnN0IHNlcmkgPSBCdWZmZXIuYWxsb2MoNCk7XG4gIHNlcmkud3JpdGVVSW50MzJMRShpbmRleCwgMCk7XG4gIGlmICgoKGluZGV4ID4+PiAwKSAmIDB4ODAwMDAwMDApID09PSAwKSB7XG4gICAgLy8gTm9ybWFsIGRlcml2YXRpb246XG4gICAgLy8gWiA9IEhNQUMtU0hBNTEyKEtleSA9IGNwYXIsIERhdGEgPSAweDAyIHx8IHNlclAocG9pbnQoa3BhcikpIHx8IHNlcjMyKGkpKS5cbiAgICAvLyBJID0gSE1BQy1TSEE1MTIoS2V5ID0gY3BhciwgRGF0YSA9IDB4MDMgfHwgc2VyUChwb2ludChrcGFyKSkgfHwgc2VyMzIoaSkpLlxuICAgIHptYWMudXBkYXRlKCdcXHgwMicpO1xuICAgIHptYWMudXBkYXRlKGJpZ0ludFRvQnVmZmVyTEUocGssIDMyKSk7XG4gICAgem1hYy51cGRhdGUoc2VyaSk7XG4gICAgaW1hYy51cGRhdGUoJ1xceDAzJyk7XG4gICAgaW1hYy51cGRhdGUoYmlnSW50VG9CdWZmZXJMRShwaywgMzIpKTtcbiAgICBpbWFjLnVwZGF0ZShzZXJpKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgcGVyZm9ybWVkIGhhcmRlbmVkIGRlcml2YXRpb24gd2l0aG91dCBwcml2YXRlIGtleVwiKTtcbiAgICB9XG4gICAgLy8gSGFyZGVuZWQgZGVyaXZhdGlvbjpcbiAgICAvLyBaID0gSE1BQy1TSEE1MTIoS2V5ID0gY3BhciwgRGF0YSA9IDB4MDAgfHwgc2VyMjU2KGxlZnQoa3BhcikpIHx8IHNlcjMyKGkpKS5cbiAgICAvLyBJID0gSE1BQy1TSEE1MTIoS2V5ID0gY3BhciwgRGF0YSA9IDB4MDEgfHwgc2VyMjU2KGxlZnQoa3BhcikpIHx8IHNlcjMyKGkpKS5cbiAgICB6bWFjLnVwZGF0ZSgnXFx4MDAnKTtcbiAgICB6bWFjLnVwZGF0ZShiaWdJbnRUb0J1ZmZlckxFKHNrLCAzMikpO1xuICAgIHptYWMudXBkYXRlKHNlcmkpO1xuICAgIGltYWMudXBkYXRlKCdcXHgwMScpO1xuICAgIGltYWMudXBkYXRlKGJpZ0ludFRvQnVmZmVyTEUoc2ssIDMyKSk7XG4gICAgaW1hYy51cGRhdGUoc2VyaSk7XG4gIH1cbiAgcmV0dXJuIFt6bWFjLmRpZ2VzdCgpLCBpbWFjLmRpZ2VzdCgpXTtcbn1cblxuZnVuY3Rpb24gcGF0aFRvSW5kaWNlcyhwYXRoOiBzdHJpbmcpOiBudW1iZXJbXSB7XG4gIHJldHVybiBwYXRoXG4gICAgLnJlcGxhY2UoL15tP1xcLy8sICcnKVxuICAgIC5zcGxpdCgnLycpXG4gICAgLm1hcCgoaW5kZXgpID0+IHBhcnNlSW50KGluZGV4LCAxMCkpO1xufVxuXG5leHBvcnQgY2xhc3MgRWQyNTUxOUJJUDMyIHtcbiAgc3RhdGljIGN1cnZlOiBFZDI1NTE5Q3VydmUgPSBuZXcgRWQyNTUxOUN1cnZlKCk7XG4gIHN0YXRpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHN0YXRpYyBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8RWQyNTUxOUJJUDMyPiB7XG4gICAgaWYgKCFFZDI1NTE5QklQMzIuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGF3YWl0IEVkMjU1MTlDdXJ2ZS5pbml0aWFsaXplKCk7XG4gICAgICBFZDI1NTE5QklQMzIuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRWQyNTUxOUJJUDMyKCk7XG4gIH1cblxuICBwdWJsaWNEZXJpdmUoa2V5Y2hhaW46IFB1YmxpY0tleWNoYWluLCBwYXRoOiBzdHJpbmcpOiBQdWJsaWNLZXljaGFpbiB7XG4gICAgY29uc3QgaW5kaWNlcyA9IHBhdGhUb0luZGljZXMocGF0aCk7XG4gICAgZnVuY3Rpb24gZGVyaXZlSW5kZXgoYWNjOiBiaWdpbnRbXSwgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCk6IGJpZ2ludFtdIHtcbiAgICAgIGNvbnN0IFtwaywgY2hhaW5jb2RlXSA9IGFjYztcbiAgICAgIGNvbnN0IFt6b3V0LCBpb3V0XSA9IGRlcml2ZUVkMjU1MTlIZWxwZXIoaW5kZXgsIGNoYWluY29kZSwgcGspO1xuICAgICAgY29uc3QgemwgPSB6b3V0LnNsaWNlKDAsIDMyKTtcbiAgICAgIC8vIGxlZnQgPSBrbCArIDggKiB0cnVuYzI4KHpsKVxuICAgICAgY29uc3QgdCA9IEJpZ0ludCg4KSAqIGJpZ0ludEZyb21CdWZmZXJMRSh6bC5zbGljZSgwLCAyOCkpO1xuICAgICAgY29uc3QgbGVmdCA9IEVkMjU1MTlCSVAzMi5jdXJ2ZS5wb2ludEFkZChwaywgRWQyNTUxOUJJUDMyLmN1cnZlLmJhc2VQb2ludE11bHQodCkpO1xuICAgICAgcmV0dXJuIFtsZWZ0LCBiaWdJbnRGcm9tQnVmZmVyQkUoaW91dC5zbGljZSgzMikpXTtcbiAgICB9XG4gICAgY29uc3Qgc3Via2V5ID0gaW5kaWNlcy5yZWR1Y2UoZGVyaXZlSW5kZXgsIGRlcml2ZUluZGV4KFtrZXljaGFpbi5waywga2V5Y2hhaW4uY2hhaW5jb2RlXSwgaW5kaWNlcy5zaGlmdCgpKSk7XG4gICAgcmV0dXJuIHsgcGs6IHN1YmtleVswXSwgY2hhaW5jb2RlOiBzdWJrZXlbMV0gfTtcbiAgfVxuXG4gIHByaXZhdGVEZXJpdmUoa2V5Y2hhaW46IFByaXZhdGVLZXljaGFpbiwgcGF0aDogc3RyaW5nKTogUHJpdmF0ZUtleWNoYWluIHtcbiAgICBjb25zdCBpbmRpY2VzID0gcGF0aFRvSW5kaWNlcyhwYXRoKTtcbiAgICBmdW5jdGlvbiBkZXJpdmVJbmRleChhY2M6IGJpZ2ludFtdLCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkKTogYmlnaW50W10ge1xuICAgICAgY29uc3QgW3BrLCBzaywgcHJlZml4LCBjaGFpbmNvZGVdID0gYWNjO1xuICAgICAgY29uc3QgW3pvdXQsIGlvdXRdID0gZGVyaXZlRWQyNTUxOUhlbHBlcihpbmRleCwgY2hhaW5jb2RlLCBwaywgc2spO1xuICAgICAgY29uc3QgemwgPSB6b3V0LnNsaWNlKDAsIDMyKTtcbiAgICAgIGNvbnN0IHpyID0gem91dC5zbGljZSgzMik7XG4gICAgICAvLyBsZWZ0ID0ga2wgKyA4ICogdHJ1bmMyOCh6bClcbiAgICAgIGNvbnN0IHQgPSBCaWdJbnQoOCkgKiBiaWdJbnRGcm9tQnVmZmVyTEUoemwuc2xpY2UoMCwgMjgpKTtcbiAgICAgIGNvbnN0IGxlZnRfcGsgPSBFZDI1NTE5QklQMzIuY3VydmUucG9pbnRBZGQocGssIEVkMjU1MTlCSVAzMi5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHQpKTtcbiAgICAgIGNvbnN0IGxlZnRfc2sgPSBFZDI1NTE5QklQMzIuY3VydmUuc2NhbGFyQWRkKHNrLCB0KTtcbiAgICAgIC8vIHJpZ2h0ID0genIgKyBrclxuICAgICAgY29uc3QgcmlnaHQgPSAocHJlZml4ICsgYmlnSW50RnJvbUJ1ZmZlckJFKHpyKSkgJSBjaGFpbmNvZGVCYXNlO1xuICAgICAgcmV0dXJuIFtsZWZ0X3BrLCBsZWZ0X3NrLCByaWdodCwgYmlnSW50RnJvbUJ1ZmZlckJFKGlvdXQuc2xpY2UoMzIpKV07XG4gICAgfVxuICAgIGNvbnN0IFtwaywgc2ssIHByZWZpeCwgY2hhaW5jb2RlXSA9IGluZGljZXMucmVkdWNlKFxuICAgICAgZGVyaXZlSW5kZXgsXG4gICAgICBkZXJpdmVJbmRleChba2V5Y2hhaW4ucGssIGtleWNoYWluLnNrLCBrZXljaGFpbi5wcmVmaXghLCBrZXljaGFpbi5jaGFpbmNvZGVdLCBpbmRpY2VzLnNoaWZ0KCkpXG4gICAgKTtcbiAgICByZXR1cm4geyBwaywgc2ssIHByZWZpeCwgY2hhaW5jb2RlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVyaXZlU2VjcDI1NmsxSGVscGVyKGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSAwLCBjaGFpbmNvZGU6IGJpZ2ludCwgcGs6IGJpZ2ludCwgc2s/OiBiaWdpbnQpOiBCdWZmZXIge1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKDMzICsgNCk7XG4gIGlmICgoKGluZGV4ID4+PiAwKSAmIDB4ODAwMDAwMDApID09PSAwKSB7XG4gICAgYmlnSW50VG9CdWZmZXJCRShwaywgMzMpLmNvcHkoZGF0YSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHBlcmZvcm1lZCBoYXJkZW5lZCBkZXJpdmF0aW9uIHdpdGhvdXQgcHJpdmF0ZSBrZXlcIik7XG4gICAgfVxuICAgIGRhdGFbMF0gPSAwO1xuICAgIGJpZ0ludFRvQnVmZmVyQkUoc2ssIDMyKS5jb3B5KGRhdGEsIDEpO1xuICB9XG4gIGRhdGEud3JpdGVVSW50MzJCRShpbmRleCwgMzMpO1xuICByZXR1cm4gY3JlYXRlSG1hYygnc2hhNTEyJywgYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKSkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpO1xufVxuXG5leHBvcnQgY2xhc3MgQklQMzIge1xuICBzdGF0aWMgY3VydmU6IFNlY3AyNTZrMUN1cnZlID0gbmV3IFNlY3AyNTZrMUN1cnZlKCk7XG5cbiAgcHVibGljRGVyaXZlKGtleWNoYWluOiBQdWJsaWNLZXljaGFpbiwgcGF0aDogc3RyaW5nKTogUHVibGljS2V5Y2hhaW4ge1xuICAgIGNvbnN0IGluZGljZXMgPSBwYXRoVG9JbmRpY2VzKHBhdGgpO1xuICAgIGZ1bmN0aW9uIGRlcml2ZUluZGV4KGFjYzogYmlnaW50W10sIGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQpOiBiaWdpbnRbXSB7XG4gICAgICBjb25zdCBbcGssIGNoYWluY29kZV0gPSBhY2M7XG4gICAgICBjb25zdCBJID0gZGVyaXZlU2VjcDI1NmsxSGVscGVyKGluZGV4LCBjaGFpbmNvZGUsIHBrKTtcbiAgICAgIGNvbnN0IGlsID0gYmlnSW50RnJvbUJ1ZmZlckJFKEkuc2xpY2UoMCwgMzIpKTtcbiAgICAgIGNvbnN0IGlyID0gYmlnSW50RnJvbUJ1ZmZlckJFKEkuc2xpY2UoMzIpKTtcbiAgICAgIGNvbnN0IGxlZnRfcGsgPSBCSVAzMi5jdXJ2ZS5wb2ludEFkZChwaywgQklQMzIuY3VydmUuYmFzZVBvaW50TXVsdChpbCkpO1xuICAgICAgcmV0dXJuIFtsZWZ0X3BrLCBpcl07XG4gICAgfVxuICAgIGNvbnN0IFtwaywgY2hhaW5jb2RlXSA9IGluZGljZXMucmVkdWNlKFxuICAgICAgZGVyaXZlSW5kZXgsXG4gICAgICBkZXJpdmVJbmRleChba2V5Y2hhaW4ucGssIGtleWNoYWluLmNoYWluY29kZV0sIGluZGljZXMuc2hpZnQoKSlcbiAgICApO1xuICAgIHJldHVybiB7IHBrLCBjaGFpbmNvZGUgfTtcbiAgfVxuXG4gIHByaXZhdGVEZXJpdmUoa2V5Y2hhaW46IFByaXZhdGVLZXljaGFpbiwgcGF0aDogc3RyaW5nKTogUHJpdmF0ZUtleWNoYWluIHtcbiAgICBjb25zdCBpbmRpY2VzID0gcGF0aFRvSW5kaWNlcyhwYXRoKTtcbiAgICBmdW5jdGlvbiBkZXJpdmVJbmRleChhY2M6IGJpZ2ludFtdLCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkKTogYmlnaW50W10ge1xuICAgICAgY29uc3QgW3BrLCBzaywgY2hhaW5jb2RlXSA9IGFjYztcbiAgICAgIGNvbnN0IEkgPSBkZXJpdmVTZWNwMjU2azFIZWxwZXIoaW5kZXgsIGNoYWluY29kZSwgcGssIHNrKTtcbiAgICAgIGNvbnN0IGlsID0gYmlnSW50RnJvbUJ1ZmZlckJFKEkuc2xpY2UoMCwgMzIpKTtcbiAgICAgIGNvbnN0IGlyID0gYmlnSW50RnJvbUJ1ZmZlckJFKEkuc2xpY2UoMzIpKTtcbiAgICAgIGNvbnN0IGxlZnRfcGsgPSBCSVAzMi5jdXJ2ZS5wb2ludEFkZChwaywgQklQMzIuY3VydmUuYmFzZVBvaW50TXVsdChpbCkpO1xuICAgICAgY29uc3QgbGVmdF9zayA9IEJJUDMyLmN1cnZlLnNjYWxhckFkZChzaywgaWwpO1xuICAgICAgcmV0dXJuIFtsZWZ0X3BrLCBsZWZ0X3NrLCBpcl07XG4gICAgfVxuICAgIGNvbnN0IFtwaywgc2ssIGNoYWluY29kZV0gPSBpbmRpY2VzLnJlZHVjZShcbiAgICAgIGRlcml2ZUluZGV4LFxuICAgICAgZGVyaXZlSW5kZXgoW2tleWNoYWluLnBrLCBrZXljaGFpbi5zaywga2V5Y2hhaW4uY2hhaW5jb2RlXSwgaW5kaWNlcy5zaGlmdCgpKVxuICAgICk7XG4gICAgcmV0dXJuIHsgcGssIHNrLCBjaGFpbmNvZGUgfTtcbiAgfVxufVxuIl19
@@ -1,13 +1,15 @@
1
1
  /// <reference types="node" />
2
+ import HDTree from '../../hdTree';
2
3
  import { Hash } from 'crypto';
3
4
  import { Secp256k1Curve } from '../../curves';
4
5
  import Shamir from '../../shamir';
5
- import { NShare, PShare, KeyShare, KeyCombined, Signature, SignConvertRT, SignConvert, SignCombine, SignCombineRT, DShare, OShare, SShare, SignShareRT, XShare, YShare } from './types';
6
+ import { NShare, PShare, KeyShare, KeyCombined, SubkeyShare, Signature, SignConvertRT, SignConvert, SignCombine, SignCombineRT, DShare, OShare, SShare, SignShareRT, XShare, YShare } from './types';
6
7
  /**
7
8
  * ECDSA TSS implementation supporting 2:n Threshold
8
9
  */
9
10
  export default class Ecdsa {
10
11
  static curve: Secp256k1Curve;
12
+ static hdTree: HDTree;
11
13
  static shamir: Shamir;
12
14
  /**
13
15
  * Generate shares for participant at index and split keys `(threshold,numShares)` ways.
@@ -27,6 +29,15 @@ export default class Ecdsa {
27
29
  * and y-shares to be used when generating signing shares.
28
30
  */
29
31
  keyCombine(pShare: PShare, nShares: NShare[]): KeyCombined;
32
+ /**
33
+ * Derive shares for a BIP-32 subkey.
34
+ * @param {PShare} The user's p-share.
35
+ * @param {NShare[]} The n-shares received from the other participants.
36
+ * @param {string} The BIP-32 path to derive.
37
+ * @returns {SubkeyShare} Returns the private x-share and n-shares to
38
+ * be distributed to participants at their corresponding index.
39
+ */
40
+ keyDerive(pShare: PShare, nShares: NShare[], path: string): SubkeyShare;
30
41
  /**
31
42
  * Create signing shares.
32
43
  * @param {xShare} xShare Private xShare of current participant signer
@@ -1 +1 @@
1
- {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":";AAGA,OAAO,EAA2B,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EAGX,SAAS,EACT,aAAa,EACb,WAAW,EAGX,WAAW,EACX,aAAa,EACb,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EAEX,MAAM,EACN,MAAM,EACP,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAwB;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAA2B;IAChD;;;;;;;;OAQG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+CrG;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW;IAiD1D;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAsCtD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAiF/C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAiC/C;;;;;;;;OAQG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,UAAO,GAAG,MAAM;IAwBvF;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;IAqB/C;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,UAAO,GAAG,OAAO;CAYvF"}
1
+ {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":";AAGA,OAAO,MAAgC,MAAM,cAAc,CAAC;AAC5D,OAAO,EAA2B,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,WAAW,EACX,WAAW,EAGX,SAAS,EACT,aAAa,EACb,WAAW,EAGX,WAAW,EACX,aAAa,EACb,MAAM,EACN,MAAM,EACN,MAAM,EACN,WAAW,EAEX,MAAM,EACN,MAAM,EACP,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,KAAK,EAAE,cAAc,CAAwB;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAe;IACpC,MAAM,CAAC,MAAM,EAAE,MAAM,CAA2B;IAChD;;;;;;;;OAQG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiDrG;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW;IAiD1D;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IAkEvE;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAsCtD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAiF/C;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa;IAiC/C;;;;;;;;OAQG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,UAAO,GAAG,MAAM;IAwBvF;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;IAqB/C;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,UAAO,GAAG,OAAO;CAYvF"}