@bitgo/account-lib 2.20.0-rc.9 → 2.20.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 (566) hide show
  1. package/.mocharc.js +1 -1
  2. package/CHANGELOG.md +311 -0
  3. package/dist/resources/README.md +0 -22
  4. package/dist/src/index.d.ts +30 -20
  5. package/dist/src/index.d.ts.map +1 -1
  6. package/dist/src/index.js +49 -40
  7. package/dist/tsconfig.tsbuildinfo +19424 -31641
  8. package/package.json +28 -77
  9. package/resources/README.md +0 -22
  10. package/dist/browser/bitgo-account-lib.js +0 -2
  11. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +0 -335
  12. package/dist/resources/hbar/protobuf/BasicTypes.proto +0 -424
  13. package/dist/resources/hbar/protobuf/CryptoCreate.proto +0 -47
  14. package/dist/resources/hbar/protobuf/CryptoTransfer.proto +0 -33
  15. package/dist/resources/hbar/protobuf/Duration.proto +0 -28
  16. package/dist/resources/hbar/protobuf/Timestamp.proto +0 -34
  17. package/dist/resources/hbar/protobuf/Transaction.proto +0 -35
  18. package/dist/resources/hbar/protobuf/TransactionBody.proto +0 -24
  19. package/dist/resources/hbar/protobuf/TransactionContents.proto +0 -33
  20. package/dist/resources/hbar/protobuf/hedera.d.ts +0 -4612
  21. package/dist/resources/hbar/protobuf/hedera.js +0 -12192
  22. package/dist/resources/trx/protobuf/Contract.proto +0 -256
  23. package/dist/resources/trx/protobuf/Discover.proto +0 -44
  24. package/dist/resources/trx/protobuf/tron.d.ts +0 -11024
  25. package/dist/resources/trx/protobuf/tron.js +0 -31510
  26. package/dist/resources/trx/protobuf/tron.proto +0 -677
  27. package/dist/src/coin/algo/assetTransferBuilder.d.ts +0 -42
  28. package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +0 -1
  29. package/dist/src/coin/algo/assetTransferBuilder.js +0 -105
  30. package/dist/src/coin/algo/errors.d.ts +0 -11
  31. package/dist/src/coin/algo/errors.d.ts.map +0 -1
  32. package/dist/src/coin/algo/errors.js +0 -27
  33. package/dist/src/coin/algo/ifaces.d.ts +0 -46
  34. package/dist/src/coin/algo/ifaces.d.ts.map +0 -1
  35. package/dist/src/coin/algo/ifaces.js +0 -3
  36. package/dist/src/coin/algo/index.d.ts +0 -13
  37. package/dist/src/coin/algo/index.d.ts.map +0 -1
  38. package/dist/src/coin/algo/index.js +0 -47
  39. package/dist/src/coin/algo/keyPair.d.ts +0 -25
  40. package/dist/src/coin/algo/keyPair.d.ts.map +0 -1
  41. package/dist/src/coin/algo/keyPair.js +0 -77
  42. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +0 -104
  43. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +0 -1
  44. package/dist/src/coin/algo/keyRegistrationBuilder.js +0 -239
  45. package/dist/src/coin/algo/seedEncoding.d.ts +0 -25
  46. package/dist/src/coin/algo/seedEncoding.d.ts.map +0 -1
  47. package/dist/src/coin/algo/seedEncoding.js +0 -97
  48. package/dist/src/coin/algo/transaction.d.ts +0 -75
  49. package/dist/src/coin/algo/transaction.d.ts.map +0 -1
  50. package/dist/src/coin/algo/transaction.js +0 -251
  51. package/dist/src/coin/algo/transactionBuilder.d.ts +0 -204
  52. package/dist/src/coin/algo/transactionBuilder.d.ts.map +0 -1
  53. package/dist/src/coin/algo/transactionBuilder.js +0 -373
  54. package/dist/src/coin/algo/transactionBuilderFactory.d.ts +0 -16
  55. package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +0 -1
  56. package/dist/src/coin/algo/transactionBuilderFactory.js +0 -52
  57. package/dist/src/coin/algo/transferBuilder.d.ts +0 -40
  58. package/dist/src/coin/algo/transferBuilder.d.ts.map +0 -1
  59. package/dist/src/coin/algo/transferBuilder.js +0 -89
  60. package/dist/src/coin/algo/txnSchema.d.ts +0 -7
  61. package/dist/src/coin/algo/txnSchema.d.ts.map +0 -1
  62. package/dist/src/coin/algo/txnSchema.js +0 -68
  63. package/dist/src/coin/algo/utils.d.ts +0 -249
  64. package/dist/src/coin/algo/utils.d.ts.map +0 -1
  65. package/dist/src/coin/algo/utils.js +0 -539
  66. package/dist/src/coin/avaxc/index.d.ts +0 -8
  67. package/dist/src/coin/avaxc/index.d.ts.map +0 -1
  68. package/dist/src/coin/avaxc/index.js +0 -35
  69. package/dist/src/coin/avaxc/keyPair.d.ts +0 -26
  70. package/dist/src/coin/avaxc/keyPair.d.ts.map +0 -1
  71. package/dist/src/coin/avaxc/keyPair.js +0 -83
  72. package/dist/src/coin/avaxc/resources.d.ts +0 -12
  73. package/dist/src/coin/avaxc/resources.d.ts.map +0 -1
  74. package/dist/src/coin/avaxc/resources.js +0 -27
  75. package/dist/src/coin/avaxc/transactionBuilder.d.ts +0 -17
  76. package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +0 -1
  77. package/dist/src/coin/avaxc/transactionBuilder.js +0 -45
  78. package/dist/src/coin/avaxc/transferBuilder.d.ts +0 -17
  79. package/dist/src/coin/avaxc/transferBuilder.d.ts.map +0 -1
  80. package/dist/src/coin/avaxc/transferBuilder.js +0 -25
  81. package/dist/src/coin/avaxc/utils.d.ts +0 -39
  82. package/dist/src/coin/avaxc/utils.d.ts.map +0 -1
  83. package/dist/src/coin/avaxc/utils.js +0 -70
  84. package/dist/src/coin/avaxc/walletUtil.d.ts +0 -22
  85. package/dist/src/coin/avaxc/walletUtil.d.ts.map +0 -1
  86. package/dist/src/coin/avaxc/walletUtil.js +0 -62
  87. package/dist/src/coin/celo/index.d.ts +0 -8
  88. package/dist/src/coin/celo/index.d.ts.map +0 -1
  89. package/dist/src/coin/celo/index.js +0 -35
  90. package/dist/src/coin/celo/resources.d.ts +0 -10
  91. package/dist/src/coin/celo/resources.d.ts.map +0 -1
  92. package/dist/src/coin/celo/resources.js +0 -26
  93. package/dist/src/coin/celo/stakingBuilder.d.ts +0 -91
  94. package/dist/src/coin/celo/stakingBuilder.d.ts.map +0 -1
  95. package/dist/src/coin/celo/stakingBuilder.js +0 -277
  96. package/dist/src/coin/celo/stakingCall.d.ts +0 -7
  97. package/dist/src/coin/celo/stakingCall.d.ts.map +0 -1
  98. package/dist/src/coin/celo/stakingCall.js +0 -13
  99. package/dist/src/coin/celo/stakingUtils.d.ts +0 -15
  100. package/dist/src/coin/celo/stakingUtils.d.ts.map +0 -1
  101. package/dist/src/coin/celo/stakingUtils.js +0 -98
  102. package/dist/src/coin/celo/transaction.d.ts +0 -10
  103. package/dist/src/coin/celo/transaction.d.ts.map +0 -1
  104. package/dist/src/coin/celo/transaction.js +0 -37
  105. package/dist/src/coin/celo/transactionBuilder.d.ts +0 -86
  106. package/dist/src/coin/celo/transactionBuilder.d.ts.map +0 -1
  107. package/dist/src/coin/celo/transactionBuilder.js +0 -228
  108. package/dist/src/coin/celo/transferBuilder.d.ts +0 -19
  109. package/dist/src/coin/celo/transferBuilder.d.ts.map +0 -1
  110. package/dist/src/coin/celo/transferBuilder.js +0 -27
  111. package/dist/src/coin/celo/types.d.ts +0 -52
  112. package/dist/src/coin/celo/types.d.ts.map +0 -1
  113. package/dist/src/coin/celo/types.js +0 -222
  114. package/dist/src/coin/celo/utils.d.ts +0 -18
  115. package/dist/src/coin/celo/utils.d.ts.map +0 -1
  116. package/dist/src/coin/celo/utils.js +0 -99
  117. package/dist/src/coin/cspr/constants.d.ts +0 -19
  118. package/dist/src/coin/cspr/constants.d.ts.map +0 -1
  119. package/dist/src/coin/cspr/constants.js +0 -28
  120. package/dist/src/coin/cspr/delegateBuilder.d.ts +0 -49
  121. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +0 -1
  122. package/dist/src/coin/cspr/delegateBuilder.js +0 -111
  123. package/dist/src/coin/cspr/ifaces.d.ts +0 -69
  124. package/dist/src/coin/cspr/ifaces.d.ts.map +0 -1
  125. package/dist/src/coin/cspr/ifaces.js +0 -3
  126. package/dist/src/coin/cspr/index.d.ts +0 -5
  127. package/dist/src/coin/cspr/index.d.ts.map +0 -1
  128. package/dist/src/coin/cspr/index.js +0 -29
  129. package/dist/src/coin/cspr/keyPair.d.ts +0 -18
  130. package/dist/src/coin/cspr/keyPair.d.ts.map +0 -1
  131. package/dist/src/coin/cspr/keyPair.js +0 -75
  132. package/dist/src/coin/cspr/transaction.d.ts +0 -55
  133. package/dist/src/coin/cspr/transaction.d.ts.map +0 -1
  134. package/dist/src/coin/cspr/transaction.js +0 -227
  135. package/dist/src/coin/cspr/transactionBuilder.d.ts +0 -124
  136. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +0 -1
  137. package/dist/src/coin/cspr/transactionBuilder.js +0 -312
  138. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +0 -46
  139. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +0 -1
  140. package/dist/src/coin/cspr/transactionBuilderFactory.js +0 -98
  141. package/dist/src/coin/cspr/transferBuilder.d.ts +0 -39
  142. package/dist/src/coin/cspr/transferBuilder.d.ts.map +0 -1
  143. package/dist/src/coin/cspr/transferBuilder.js +0 -106
  144. package/dist/src/coin/cspr/undelegateBuilder.d.ts +0 -49
  145. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +0 -1
  146. package/dist/src/coin/cspr/undelegateBuilder.js +0 -111
  147. package/dist/src/coin/cspr/utils.d.ts +0 -188
  148. package/dist/src/coin/cspr/utils.d.ts.map +0 -1
  149. package/dist/src/coin/cspr/utils.js +0 -478
  150. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +0 -27
  151. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +0 -1
  152. package/dist/src/coin/cspr/walletInitializationBuilder.js +0 -95
  153. package/dist/src/coin/dot/addressInitializationBuilder.d.ts +0 -79
  154. package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +0 -1
  155. package/dist/src/coin/dot/addressInitializationBuilder.js +0 -182
  156. package/dist/src/coin/dot/batchTransactionBuilder.d.ts +0 -47
  157. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +0 -1
  158. package/dist/src/coin/dot/batchTransactionBuilder.js +0 -122
  159. package/dist/src/coin/dot/claimBuilder.d.ts +0 -58
  160. package/dist/src/coin/dot/claimBuilder.d.ts.map +0 -1
  161. package/dist/src/coin/dot/claimBuilder.js +0 -117
  162. package/dist/src/coin/dot/errors.d.ts +0 -8
  163. package/dist/src/coin/dot/errors.d.ts.map +0 -1
  164. package/dist/src/coin/dot/errors.js +0 -19
  165. package/dist/src/coin/dot/iface.d.ts +0 -194
  166. package/dist/src/coin/dot/iface.d.ts.map +0 -1
  167. package/dist/src/coin/dot/iface.js +0 -39
  168. package/dist/src/coin/dot/index.d.ts +0 -17
  169. package/dist/src/coin/dot/index.d.ts.map +0 -1
  170. package/dist/src/coin/dot/index.js +0 -53
  171. package/dist/src/coin/dot/keyPair.d.ts +0 -31
  172. package/dist/src/coin/dot/keyPair.d.ts.map +0 -1
  173. package/dist/src/coin/dot/keyPair.js +0 -74
  174. package/dist/src/coin/dot/singletonRegistry.d.ts +0 -7
  175. package/dist/src/coin/dot/singletonRegistry.d.ts.map +0 -1
  176. package/dist/src/coin/dot/singletonRegistry.js +0 -20
  177. package/dist/src/coin/dot/stakingBuilder.d.ts +0 -58
  178. package/dist/src/coin/dot/stakingBuilder.d.ts.map +0 -1
  179. package/dist/src/coin/dot/stakingBuilder.js +0 -135
  180. package/dist/src/coin/dot/transaction.d.ts +0 -65
  181. package/dist/src/coin/dot/transaction.d.ts.map +0 -1
  182. package/dist/src/coin/dot/transaction.js +0 -396
  183. package/dist/src/coin/dot/transactionBuilder.d.ts +0 -131
  184. package/dist/src/coin/dot/transactionBuilder.d.ts.map +0 -1
  185. package/dist/src/coin/dot/transactionBuilder.js +0 -332
  186. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +0 -26
  187. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +0 -1
  188. package/dist/src/coin/dot/transactionBuilderFactory.js +0 -93
  189. package/dist/src/coin/dot/transferBuilder.d.ts +0 -71
  190. package/dist/src/coin/dot/transferBuilder.d.ts.map +0 -1
  191. package/dist/src/coin/dot/transferBuilder.js +0 -171
  192. package/dist/src/coin/dot/txnSchema.d.ts +0 -14
  193. package/dist/src/coin/dot/txnSchema.d.ts.map +0 -1
  194. package/dist/src/coin/dot/txnSchema.js +0 -104
  195. package/dist/src/coin/dot/unnominateBuilder.d.ts +0 -24
  196. package/dist/src/coin/dot/unnominateBuilder.d.ts.map +0 -1
  197. package/dist/src/coin/dot/unnominateBuilder.js +0 -50
  198. package/dist/src/coin/dot/unstakeBuilder.d.ts +0 -38
  199. package/dist/src/coin/dot/unstakeBuilder.d.ts.map +0 -1
  200. package/dist/src/coin/dot/unstakeBuilder.js +0 -89
  201. package/dist/src/coin/dot/utils.d.ts +0 -138
  202. package/dist/src/coin/dot/utils.d.ts.map +0 -1
  203. package/dist/src/coin/dot/utils.js +0 -269
  204. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +0 -38
  205. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +0 -1
  206. package/dist/src/coin/dot/withdrawUnstakedBuilder.js +0 -90
  207. package/dist/src/coin/etc/index.d.ts +0 -8
  208. package/dist/src/coin/etc/index.d.ts.map +0 -1
  209. package/dist/src/coin/etc/index.js +0 -35
  210. package/dist/src/coin/etc/resources.d.ts +0 -10
  211. package/dist/src/coin/etc/resources.d.ts.map +0 -1
  212. package/dist/src/coin/etc/resources.js +0 -26
  213. package/dist/src/coin/etc/transactionBuilder.d.ts +0 -17
  214. package/dist/src/coin/etc/transactionBuilder.d.ts.map +0 -1
  215. package/dist/src/coin/etc/transactionBuilder.js +0 -45
  216. package/dist/src/coin/etc/transferBuilder.d.ts +0 -19
  217. package/dist/src/coin/etc/transferBuilder.d.ts.map +0 -1
  218. package/dist/src/coin/etc/transferBuilder.js +0 -27
  219. package/dist/src/coin/etc/utils.d.ts +0 -18
  220. package/dist/src/coin/etc/utils.d.ts.map +0 -1
  221. package/dist/src/coin/etc/utils.js +0 -42
  222. package/dist/src/coin/eth/contractCall.d.ts +0 -8
  223. package/dist/src/coin/eth/contractCall.d.ts.map +0 -1
  224. package/dist/src/coin/eth/contractCall.js +0 -17
  225. package/dist/src/coin/eth/iface.d.ts +0 -122
  226. package/dist/src/coin/eth/iface.d.ts.map +0 -1
  227. package/dist/src/coin/eth/iface.js +0 -8
  228. package/dist/src/coin/eth/index.d.ts +0 -10
  229. package/dist/src/coin/eth/index.d.ts.map +0 -1
  230. package/dist/src/coin/eth/index.js +0 -39
  231. package/dist/src/coin/eth/keyPair.d.ts +0 -26
  232. package/dist/src/coin/eth/keyPair.d.ts.map +0 -1
  233. package/dist/src/coin/eth/keyPair.js +0 -85
  234. package/dist/src/coin/eth/transaction.d.ts +0 -64
  235. package/dist/src/coin/eth/transaction.d.ts.map +0 -1
  236. package/dist/src/coin/eth/transaction.js +0 -137
  237. package/dist/src/coin/eth/transactionBuilder.d.ts +0 -194
  238. package/dist/src/coin/eth/transactionBuilder.d.ts.map +0 -1
  239. package/dist/src/coin/eth/transactionBuilder.js +0 -624
  240. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts +0 -47
  241. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts.map +0 -1
  242. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.js +0 -113
  243. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts +0 -14
  244. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts.map +0 -1
  245. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.js +0 -83
  246. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts +0 -13
  247. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts.map +0 -1
  248. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.js +0 -68
  249. package/dist/src/coin/eth/transferBuilder.d.ts +0 -65
  250. package/dist/src/coin/eth/transferBuilder.d.ts.map +0 -1
  251. package/dist/src/coin/eth/transferBuilder.js +0 -197
  252. package/dist/src/coin/eth/types.d.ts +0 -39
  253. package/dist/src/coin/eth/types.d.ts.map +0 -1
  254. package/dist/src/coin/eth/types.js +0 -135
  255. package/dist/src/coin/eth/utils.d.ts +0 -202
  256. package/dist/src/coin/eth/utils.d.ts.map +0 -1
  257. package/dist/src/coin/eth/utils.js +0 -485
  258. package/dist/src/coin/eth/walletUtil.d.ts +0 -19
  259. package/dist/src/coin/eth/walletUtil.d.ts.map +0 -1
  260. package/dist/src/coin/eth/walletUtil.js +0 -29
  261. package/dist/src/coin/eth2/index.d.ts +0 -2
  262. package/dist/src/coin/eth2/index.d.ts.map +0 -1
  263. package/dist/src/coin/eth2/index.js +0 -6
  264. package/dist/src/coin/eth2/keyPair.d.ts +0 -33
  265. package/dist/src/coin/eth2/keyPair.d.ts.map +0 -1
  266. package/dist/src/coin/eth2/keyPair.js +0 -65
  267. package/dist/src/coin/hbar/ifaces.d.ts +0 -26
  268. package/dist/src/coin/hbar/ifaces.d.ts.map +0 -1
  269. package/dist/src/coin/hbar/ifaces.js +0 -3
  270. package/dist/src/coin/hbar/index.d.ts +0 -6
  271. package/dist/src/coin/hbar/index.d.ts.map +0 -1
  272. package/dist/src/coin/hbar/index.js +0 -31
  273. package/dist/src/coin/hbar/keyPair.d.ts +0 -23
  274. package/dist/src/coin/hbar/keyPair.d.ts.map +0 -1
  275. package/dist/src/coin/hbar/keyPair.js +0 -70
  276. package/dist/src/coin/hbar/transaction.d.ts +0 -98
  277. package/dist/src/coin/hbar/transaction.d.ts.map +0 -1
  278. package/dist/src/coin/hbar/transaction.js +0 -245
  279. package/dist/src/coin/hbar/transactionBuilder.d.ts +0 -112
  280. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +0 -1
  281. package/dist/src/coin/hbar/transactionBuilder.js +0 -264
  282. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +0 -37
  283. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +0 -1
  284. package/dist/src/coin/hbar/transactionBuilderFactory.js +0 -77
  285. package/dist/src/coin/hbar/transferBuilder.d.ts +0 -44
  286. package/dist/src/coin/hbar/transferBuilder.d.ts.map +0 -1
  287. package/dist/src/coin/hbar/transferBuilder.js +0 -130
  288. package/dist/src/coin/hbar/utils.d.ts +0 -139
  289. package/dist/src/coin/hbar/utils.d.ts.map +0 -1
  290. package/dist/src/coin/hbar/utils.js +0 -310
  291. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +0 -28
  292. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +0 -1
  293. package/dist/src/coin/hbar/walletInitializationBuilder.js +0 -90
  294. package/dist/src/coin/near/constants.d.ts +0 -12
  295. package/dist/src/coin/near/constants.d.ts.map +0 -1
  296. package/dist/src/coin/near/constants.js +0 -15
  297. package/dist/src/coin/near/contractCallWrapper.d.ts +0 -33
  298. package/dist/src/coin/near/contractCallWrapper.d.ts.map +0 -1
  299. package/dist/src/coin/near/contractCallWrapper.js +0 -68
  300. package/dist/src/coin/near/errors.d.ts +0 -5
  301. package/dist/src/coin/near/errors.d.ts.map +0 -1
  302. package/dist/src/coin/near/errors.js +0 -12
  303. package/dist/src/coin/near/iface.d.ts +0 -40
  304. package/dist/src/coin/near/iface.d.ts.map +0 -1
  305. package/dist/src/coin/near/iface.js +0 -8
  306. package/dist/src/coin/near/index.d.ts +0 -11
  307. package/dist/src/coin/near/index.d.ts.map +0 -1
  308. package/dist/src/coin/near/index.js +0 -41
  309. package/dist/src/coin/near/keyPair.d.ts +0 -25
  310. package/dist/src/coin/near/keyPair.d.ts.map +0 -1
  311. package/dist/src/coin/near/keyPair.js +0 -73
  312. package/dist/src/coin/near/stakingActivateBuilder.d.ts +0 -32
  313. package/dist/src/coin/near/stakingActivateBuilder.d.ts.map +0 -1
  314. package/dist/src/coin/near/stakingActivateBuilder.js +0 -90
  315. package/dist/src/coin/near/stakingDeactivateBuilder.d.ts +0 -32
  316. package/dist/src/coin/near/stakingDeactivateBuilder.d.ts.map +0 -1
  317. package/dist/src/coin/near/stakingDeactivateBuilder.js +0 -89
  318. package/dist/src/coin/near/stakingWithdrawBuilder.d.ts +0 -32
  319. package/dist/src/coin/near/stakingWithdrawBuilder.d.ts.map +0 -1
  320. package/dist/src/coin/near/stakingWithdrawBuilder.js +0 -89
  321. package/dist/src/coin/near/transaction.d.ts +0 -90
  322. package/dist/src/coin/near/transaction.d.ts.map +0 -1
  323. package/dist/src/coin/near/transaction.js +0 -368
  324. package/dist/src/coin/near/transactionBuilder.d.ts +0 -89
  325. package/dist/src/coin/near/transactionBuilder.d.ts.map +0 -1
  326. package/dist/src/coin/near/transactionBuilder.js +0 -216
  327. package/dist/src/coin/near/transactionBuilderFactory.d.ts +0 -30
  328. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +0 -1
  329. package/dist/src/coin/near/transactionBuilderFactory.js +0 -71
  330. package/dist/src/coin/near/transferBuilder.d.ts +0 -26
  331. package/dist/src/coin/near/transferBuilder.d.ts.map +0 -1
  332. package/dist/src/coin/near/transferBuilder.js +0 -72
  333. package/dist/src/coin/near/utils.d.ts +0 -42
  334. package/dist/src/coin/near/utils.d.ts.map +0 -1
  335. package/dist/src/coin/near/utils.js +0 -92
  336. package/dist/src/coin/near/walletInitializationBuilder.d.ts +0 -12
  337. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +0 -1
  338. package/dist/src/coin/near/walletInitializationBuilder.js +0 -20
  339. package/dist/src/coin/rbtc/index.d.ts +0 -8
  340. package/dist/src/coin/rbtc/index.d.ts.map +0 -1
  341. package/dist/src/coin/rbtc/index.js +0 -35
  342. package/dist/src/coin/rbtc/resources.d.ts +0 -10
  343. package/dist/src/coin/rbtc/resources.d.ts.map +0 -1
  344. package/dist/src/coin/rbtc/resources.js +0 -25
  345. package/dist/src/coin/rbtc/transactionBuilder.d.ts +0 -17
  346. package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +0 -1
  347. package/dist/src/coin/rbtc/transactionBuilder.js +0 -44
  348. package/dist/src/coin/rbtc/transferBuilder.d.ts +0 -19
  349. package/dist/src/coin/rbtc/transferBuilder.d.ts.map +0 -1
  350. package/dist/src/coin/rbtc/transferBuilder.js +0 -27
  351. package/dist/src/coin/rbtc/utils.d.ts +0 -18
  352. package/dist/src/coin/rbtc/utils.d.ts.map +0 -1
  353. package/dist/src/coin/rbtc/utils.js +0 -42
  354. package/dist/src/coin/sol/ataInitializationBuilder.d.ts +0 -33
  355. package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +0 -1
  356. package/dist/src/coin/sol/ataInitializationBuilder.js +0 -93
  357. package/dist/src/coin/sol/ataInitializationTransaction.d.ts +0 -14
  358. package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +0 -1
  359. package/dist/src/coin/sol/ataInitializationTransaction.js +0 -81
  360. package/dist/src/coin/sol/constants.d.ts +0 -58
  361. package/dist/src/coin/sol/constants.d.ts.map +0 -1
  362. package/dist/src/coin/sol/constants.js +0 -76
  363. package/dist/src/coin/sol/iface.d.ts +0 -99
  364. package/dist/src/coin/sol/iface.d.ts.map +0 -1
  365. package/dist/src/coin/sol/iface.js +0 -3
  366. package/dist/src/coin/sol/index.d.ts +0 -11
  367. package/dist/src/coin/sol/index.d.ts.map +0 -1
  368. package/dist/src/coin/sol/index.js +0 -41
  369. package/dist/src/coin/sol/instructionParamsFactory.d.ts +0 -12
  370. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +0 -1
  371. package/dist/src/coin/sol/instructionParamsFactory.js +0 -260
  372. package/dist/src/coin/sol/keyPair.d.ts +0 -26
  373. package/dist/src/coin/sol/keyPair.d.ts.map +0 -1
  374. package/dist/src/coin/sol/keyPair.js +0 -63
  375. package/dist/src/coin/sol/solInstructionFactory.d.ts +0 -10
  376. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +0 -1
  377. package/dist/src/coin/sol/solInstructionFactory.js +0 -213
  378. package/dist/src/coin/sol/stakingActivateBuilder.d.ts +0 -41
  379. package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +0 -1
  380. package/dist/src/coin/sol/stakingActivateBuilder.js +0 -94
  381. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +0 -23
  382. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +0 -1
  383. package/dist/src/coin/sol/stakingDeactivateBuilder.js +0 -62
  384. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +0 -31
  385. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +0 -1
  386. package/dist/src/coin/sol/stakingWithdrawBuilder.js +0 -78
  387. package/dist/src/coin/sol/tokenEncodeDecode.d.ts +0 -85
  388. package/dist/src/coin/sol/tokenEncodeDecode.d.ts.map +0 -1
  389. package/dist/src/coin/sol/tokenEncodeDecode.js +0 -133
  390. package/dist/src/coin/sol/tokenTransferBuilder.d.ts +0 -27
  391. package/dist/src/coin/sol/tokenTransferBuilder.d.ts.map +0 -1
  392. package/dist/src/coin/sol/tokenTransferBuilder.js +0 -73
  393. package/dist/src/coin/sol/transaction.d.ts +0 -61
  394. package/dist/src/coin/sol/transaction.d.ts.map +0 -1
  395. package/dist/src/coin/sol/transaction.js +0 -369
  396. package/dist/src/coin/sol/transactionBuilder.d.ts +0 -101
  397. package/dist/src/coin/sol/transactionBuilder.d.ts.map +0 -1
  398. package/dist/src/coin/sol/transactionBuilder.js +0 -261
  399. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +0 -76
  400. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +0 -1
  401. package/dist/src/coin/sol/transactionBuilderFactory.js +0 -136
  402. package/dist/src/coin/sol/transferBuilder.d.ts +0 -26
  403. package/dist/src/coin/sol/transferBuilder.d.ts.map +0 -1
  404. package/dist/src/coin/sol/transferBuilder.js +0 -67
  405. package/dist/src/coin/sol/utils.d.ts +0 -146
  406. package/dist/src/coin/sol/utils.d.ts.map +0 -1
  407. package/dist/src/coin/sol/utils.js +0 -361
  408. package/dist/src/coin/sol/walletInitializationBuilder.d.ts +0 -26
  409. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +0 -1
  410. package/dist/src/coin/sol/walletInitializationBuilder.js +0 -71
  411. package/dist/src/coin/stx/abstractContractBuilder.d.ts +0 -19
  412. package/dist/src/coin/stx/abstractContractBuilder.d.ts.map +0 -1
  413. package/dist/src/coin/stx/abstractContractBuilder.js +0 -70
  414. package/dist/src/coin/stx/constants.d.ts +0 -8
  415. package/dist/src/coin/stx/constants.d.ts.map +0 -1
  416. package/dist/src/coin/stx/constants.js +0 -19
  417. package/dist/src/coin/stx/contractBuilder.d.ts +0 -33
  418. package/dist/src/coin/stx/contractBuilder.d.ts.map +0 -1
  419. package/dist/src/coin/stx/contractBuilder.js +0 -116
  420. package/dist/src/coin/stx/iface.d.ts +0 -48
  421. package/dist/src/coin/stx/iface.d.ts.map +0 -1
  422. package/dist/src/coin/stx/iface.js +0 -3
  423. package/dist/src/coin/stx/index.d.ts +0 -6
  424. package/dist/src/coin/stx/index.d.ts.map +0 -1
  425. package/dist/src/coin/stx/index.js +0 -32
  426. package/dist/src/coin/stx/keyPair.d.ts +0 -55
  427. package/dist/src/coin/stx/keyPair.d.ts.map +0 -1
  428. package/dist/src/coin/stx/keyPair.js +0 -140
  429. package/dist/src/coin/stx/sendmanyBuilder.d.ts +0 -23
  430. package/dist/src/coin/stx/sendmanyBuilder.d.ts.map +0 -1
  431. package/dist/src/coin/stx/sendmanyBuilder.js +0 -75
  432. package/dist/src/coin/stx/transaction.d.ts +0 -49
  433. package/dist/src/coin/stx/transaction.d.ts.map +0 -1
  434. package/dist/src/coin/stx/transaction.js +0 -225
  435. package/dist/src/coin/stx/transactionBuilder.d.ts +0 -86
  436. package/dist/src/coin/stx/transactionBuilder.d.ts.map +0 -1
  437. package/dist/src/coin/stx/transactionBuilder.js +0 -263
  438. package/dist/src/coin/stx/transactionBuilderFactory.d.ts +0 -30
  439. package/dist/src/coin/stx/transactionBuilderFactory.d.ts.map +0 -1
  440. package/dist/src/coin/stx/transactionBuilderFactory.js +0 -81
  441. package/dist/src/coin/stx/transferBuilder.d.ts +0 -30
  442. package/dist/src/coin/stx/transferBuilder.d.ts.map +0 -1
  443. package/dist/src/coin/stx/transferBuilder.js +0 -99
  444. package/dist/src/coin/stx/utils.d.ts +0 -207
  445. package/dist/src/coin/stx/utils.d.ts.map +0 -1
  446. package/dist/src/coin/stx/utils.js +0 -504
  447. package/dist/src/coin/trx/address.d.ts +0 -11
  448. package/dist/src/coin/trx/address.d.ts.map +0 -1
  449. package/dist/src/coin/trx/address.js +0 -13
  450. package/dist/src/coin/trx/contractCallBuilder.d.ts +0 -96
  451. package/dist/src/coin/trx/contractCallBuilder.d.ts.map +0 -1
  452. package/dist/src/coin/trx/contractCallBuilder.js +0 -281
  453. package/dist/src/coin/trx/enum.d.ts +0 -23
  454. package/dist/src/coin/trx/enum.d.ts.map +0 -1
  455. package/dist/src/coin/trx/enum.js +0 -28
  456. package/dist/src/coin/trx/iface.d.ts +0 -92
  457. package/dist/src/coin/trx/iface.d.ts.map +0 -1
  458. package/dist/src/coin/trx/iface.js +0 -3
  459. package/dist/src/coin/trx/index.d.ts +0 -10
  460. package/dist/src/coin/trx/index.d.ts.map +0 -1
  461. package/dist/src/coin/trx/index.js +0 -39
  462. package/dist/src/coin/trx/keyPair.d.ts +0 -44
  463. package/dist/src/coin/trx/keyPair.d.ts.map +0 -1
  464. package/dist/src/coin/trx/keyPair.js +0 -121
  465. package/dist/src/coin/trx/transaction.d.ts +0 -74
  466. package/dist/src/coin/trx/transaction.d.ts.map +0 -1
  467. package/dist/src/coin/trx/transaction.js +0 -205
  468. package/dist/src/coin/trx/transactionBuilder.d.ts +0 -65
  469. package/dist/src/coin/trx/transactionBuilder.d.ts.map +0 -1
  470. package/dist/src/coin/trx/transactionBuilder.js +0 -215
  471. package/dist/src/coin/trx/utils.d.ts +0 -127
  472. package/dist/src/coin/trx/utils.d.ts.map +0 -1
  473. package/dist/src/coin/trx/utils.js +0 -369
  474. package/dist/src/coin/trx/wrappedBuilder.d.ts +0 -52
  475. package/dist/src/coin/trx/wrappedBuilder.d.ts.map +0 -1
  476. package/dist/src/coin/trx/wrappedBuilder.js +0 -104
  477. package/dist/src/coin/xrp/index.d.ts +0 -5
  478. package/dist/src/coin/xrp/index.d.ts.map +0 -1
  479. package/dist/src/coin/xrp/index.js +0 -29
  480. package/dist/src/coin/xrp/keyPair.d.ts +0 -10
  481. package/dist/src/coin/xrp/keyPair.d.ts.map +0 -1
  482. package/dist/src/coin/xrp/keyPair.js +0 -16
  483. package/dist/src/coin/xrp/transaction.d.ts +0 -10
  484. package/dist/src/coin/xrp/transaction.d.ts.map +0 -1
  485. package/dist/src/coin/xrp/transaction.js +0 -20
  486. package/dist/src/coin/xrp/transactionBuilder.d.ts +0 -27
  487. package/dist/src/coin/xrp/transactionBuilder.d.ts.map +0 -1
  488. package/dist/src/coin/xrp/transactionBuilder.js +0 -46
  489. package/dist/src/coin/xrp/transactionBuilderFactory.d.ts +0 -24
  490. package/dist/src/coin/xrp/transactionBuilderFactory.d.ts.map +0 -1
  491. package/dist/src/coin/xrp/transactionBuilderFactory.js +0 -38
  492. package/dist/src/coin/xrp/transferBuilder.d.ts +0 -14
  493. package/dist/src/coin/xrp/transferBuilder.d.ts.map +0 -1
  494. package/dist/src/coin/xrp/transferBuilder.js +0 -24
  495. package/dist/src/coin/xrp/utils.d.ts +0 -16
  496. package/dist/src/coin/xrp/utils.d.ts.map +0 -1
  497. package/dist/src/coin/xrp/utils.js +0 -32
  498. package/dist/src/coin/xrp/walletInitializationBuilder.d.ts +0 -14
  499. package/dist/src/coin/xrp/walletInitializationBuilder.d.ts.map +0 -1
  500. package/dist/src/coin/xrp/walletInitializationBuilder.js +0 -24
  501. package/dist/src/coin/xtz/address.d.ts +0 -8
  502. package/dist/src/coin/xtz/address.d.ts.map +0 -1
  503. package/dist/src/coin/xtz/address.js +0 -10
  504. package/dist/src/coin/xtz/iface.d.ts +0 -81
  505. package/dist/src/coin/xtz/iface.d.ts.map +0 -1
  506. package/dist/src/coin/xtz/iface.js +0 -3
  507. package/dist/src/coin/xtz/index.d.ts +0 -8
  508. package/dist/src/coin/xtz/index.d.ts.map +0 -1
  509. package/dist/src/coin/xtz/index.js +0 -37
  510. package/dist/src/coin/xtz/keyPair.d.ts +0 -40
  511. package/dist/src/coin/xtz/keyPair.d.ts.map +0 -1
  512. package/dist/src/coin/xtz/keyPair.js +0 -136
  513. package/dist/src/coin/xtz/multisigUtils.d.ts +0 -134
  514. package/dist/src/coin/xtz/multisigUtils.d.ts.map +0 -1
  515. package/dist/src/coin/xtz/multisigUtils.js +0 -1180
  516. package/dist/src/coin/xtz/transaction.d.ts +0 -119
  517. package/dist/src/coin/xtz/transaction.d.ts.map +0 -1
  518. package/dist/src/coin/xtz/transaction.js +0 -315
  519. package/dist/src/coin/xtz/transactionBuilder.d.ts +0 -171
  520. package/dist/src/coin/xtz/transactionBuilder.d.ts.map +0 -1
  521. package/dist/src/coin/xtz/transactionBuilder.js +0 -453
  522. package/dist/src/coin/xtz/transferBuilder.d.ts +0 -24
  523. package/dist/src/coin/xtz/transferBuilder.d.ts.map +0 -1
  524. package/dist/src/coin/xtz/transferBuilder.js +0 -64
  525. package/dist/src/coin/xtz/utils.d.ts +0 -265
  526. package/dist/src/coin/xtz/utils.d.ts.map +0 -1
  527. package/dist/src/coin/xtz/utils.js +0 -460
  528. package/dist/src/mpc/curves/baseCurve.d.ts +0 -19
  529. package/dist/src/mpc/curves/baseCurve.d.ts.map +0 -1
  530. package/dist/src/mpc/curves/baseCurve.js +0 -6
  531. package/dist/src/mpc/curves/ed25519.d.ts +0 -17
  532. package/dist/src/mpc/curves/ed25519.d.ts.map +0 -1
  533. package/dist/src/mpc/curves/ed25519.js +0 -58
  534. package/dist/src/mpc/curves/index.d.ts +0 -6
  535. package/dist/src/mpc/curves/index.d.ts.map +0 -1
  536. package/dist/src/mpc/curves/index.js +0 -8
  537. package/dist/src/mpc/curves/secp256k1.d.ts +0 -16
  538. package/dist/src/mpc/curves/secp256k1.d.ts.map +0 -1
  539. package/dist/src/mpc/curves/secp256k1.js +0 -66
  540. package/dist/src/mpc/hdTree.d.ts +0 -24
  541. package/dist/src/mpc/hdTree.d.ts.map +0 -1
  542. package/dist/src/mpc/hdTree.js +0 -94
  543. package/dist/src/mpc/shamir.d.ts +0 -26
  544. package/dist/src/mpc/shamir.d.ts.map +0 -1
  545. package/dist/src/mpc/shamir.js +0 -86
  546. package/dist/src/mpc/tss.d.ts +0 -98
  547. package/dist/src/mpc/tss.d.ts.map +0 -1
  548. package/dist/src/mpc/tss.js +0 -273
  549. package/dist/src/mpc/util.d.ts +0 -8
  550. package/dist/src/mpc/util.d.ts.map +0 -1
  551. package/dist/src/mpc/util.js +0 -42
  552. package/resources/hbar/protobuf/BasicTypes.proto +0 -424
  553. package/resources/hbar/protobuf/CryptoCreate.proto +0 -47
  554. package/resources/hbar/protobuf/CryptoTransfer.proto +0 -33
  555. package/resources/hbar/protobuf/Duration.proto +0 -28
  556. package/resources/hbar/protobuf/Timestamp.proto +0 -34
  557. package/resources/hbar/protobuf/Transaction.proto +0 -35
  558. package/resources/hbar/protobuf/TransactionBody.proto +0 -24
  559. package/resources/hbar/protobuf/TransactionContents.proto +0 -33
  560. package/resources/hbar/protobuf/hedera.d.ts +0 -4612
  561. package/resources/hbar/protobuf/hedera.js +0 -12192
  562. package/resources/trx/protobuf/Contract.proto +0 -256
  563. package/resources/trx/protobuf/Discover.proto +0 -44
  564. package/resources/trx/protobuf/tron.d.ts +0 -11024
  565. package/resources/trx/protobuf/tron.js +0 -31510
  566. package/resources/trx/protobuf/tron.proto +0 -677
@@ -1,273 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- /**
7
- * Module provides functions for MPC using threshold signature scheme (TSS). It contains
8
- * functions for key generation and message signing with EdDSA.
9
- *
10
- *
11
- * ======================
12
- * EdDSA Key Generation
13
- * ======================
14
- * 1. Each signer generates their own key share, which involves a private u-share and a public y-share.
15
- * 2. Signers distribute their y-share to other signers.
16
- * 3. After exchanging y-shares the next phase is to combine key shares. Each signer combines their u-share
17
- * with the y-shares received from other signers in order to generate a p-share for themselves. We
18
- * also save j-shares for other signers.
19
- * 4. At this point the players do not distribute any shares and the first phase of the
20
- * signing protocol is complete.
21
- *
22
- * ======================
23
- * EdDSA Signing
24
- * ======================
25
- * 1. The parties from key generation decide they want to sign something. They begin the signing protocol
26
- * by generating shares of an ephemeral key.
27
- *
28
- * a) Each signer uses his p-share and the j-shares stored for other players to generate his signing share.
29
- * b) This results in each signer having a private x-share and public r-shares.
30
- *
31
- * 2. Signers distribute their r-shares to other signers.
32
- * 3. After exchanging r-shares, each signer signs their share of the ephemeral key using their private
33
- * x-share with the r-shares from other signers.
34
- * 4. This results in each signer having a public g-share which they send to the other signers.
35
- * 5. After the signers broadcast their g-shares, the final signature can be re-constructed independently.
36
- */
37
- const assert = require('assert');
38
- const crypto_1 = require("crypto");
39
- const curves_1 = require("./curves");
40
- const shamir_1 = __importDefault(require("./shamir"));
41
- const util_1 = require("./util");
42
- // 2^256
43
- const base = BigInt('0x010000000000000000000000000000000000000000000000000000000000000000');
44
- class Eddsa {
45
- constructor(hdTree) {
46
- this.hdTree = hdTree;
47
- }
48
- static async initialize(hdTree) {
49
- if (!Eddsa.initialized) {
50
- await curves_1.Ed25519Curve.initialize();
51
- Eddsa.initialized = true;
52
- }
53
- return new Eddsa(hdTree);
54
- }
55
- keyShare(index, threshold, numShares, seed) {
56
- assert(index > 0 && index <= numShares);
57
- if (seed && seed.length != 64) {
58
- throw new Error('Seed must have length 64');
59
- }
60
- const seedchain = seed !== null && seed !== void 0 ? seed : crypto_1.randomBytes(64);
61
- const actualSeed = seedchain.slice(0, 32);
62
- const chaincode = seedchain.slice(32);
63
- const h = crypto_1.createHash('sha512').update(actualSeed).digest();
64
- const u = util_1.clamp(util_1.bigIntFromBufferLE(h.slice(0, 32)));
65
- const y = Eddsa.curve.basePointMult(u);
66
- const split_u = Eddsa.shamir.split(u, threshold, numShares);
67
- const P_i = {
68
- i: index,
69
- t: threshold,
70
- n: numShares,
71
- y: util_1.bigIntToBufferLE(y, 32).toString('hex'),
72
- seed: actualSeed.toString('hex'),
73
- chaincode: chaincode.toString('hex'),
74
- };
75
- const shares = {
76
- uShare: P_i,
77
- yShares: {},
78
- };
79
- for (const ind in split_u) {
80
- const i = parseInt(ind, 10);
81
- if (i === index) {
82
- continue;
83
- }
84
- shares.yShares[i] = {
85
- i,
86
- j: P_i.i,
87
- y: util_1.bigIntToBufferLE(y, 32).toString('hex'),
88
- u: util_1.bigIntToBufferLE(split_u[ind], 32).toString('hex'),
89
- chaincode: chaincode.toString('hex'),
90
- };
91
- }
92
- return shares;
93
- }
94
- keyCombine(uShare, yShares) {
95
- const h = crypto_1.createHash('sha512').update(Buffer.from(uShare.seed, 'hex')).digest();
96
- const u = util_1.clamp(util_1.bigIntFromBufferLE(h.slice(0, 32)));
97
- const yValues = [uShare, ...yShares].map((share) => util_1.bigIntFromBufferLE(Buffer.from(share.y, 'hex')));
98
- const y = yValues.reduce((partial, share) => Eddsa.curve.pointAdd(partial, share));
99
- const chaincodes = [uShare, ...yShares].map(({ chaincode }) => util_1.bigIntFromBufferBE(Buffer.from(chaincode, 'hex')));
100
- const chaincode = chaincodes.reduce((acc, chaincode) => (acc + chaincode) % base);
101
- const P_i = {
102
- i: uShare.i,
103
- t: uShare.t,
104
- n: uShare.n,
105
- y: util_1.bigIntToBufferLE(y, 32).toString('hex'),
106
- u: util_1.bigIntToBufferLE(u, 32).toString('hex'),
107
- prefix: h.slice(32).toString('hex'),
108
- chaincode: util_1.bigIntToBufferBE(chaincode, 32).toString('hex'),
109
- };
110
- const players = {
111
- pShare: P_i,
112
- jShares: {},
113
- };
114
- for (let ind = 0; ind < yShares.length; ind++) {
115
- const P_j = yShares[ind];
116
- players.jShares[P_j.j] = {
117
- i: P_j.j,
118
- j: P_i.i,
119
- };
120
- }
121
- return players;
122
- }
123
- /**
124
- * Derives a child common keychain from common keychain
125
- *
126
- * @param commonKeychain - common keychain as a hex string
127
- * @param path - bip32 path
128
- * @return {string} derived common keychain as a hex string
129
- */
130
- deriveUnhardened(commonKeychain, path) {
131
- if (this.hdTree === undefined) {
132
- throw new Error("Can't derive key without HDTree implementation");
133
- }
134
- const keychain = Buffer.from(commonKeychain, 'hex');
135
- const derivedPublicKeychain = this.hdTree.publicDerive({
136
- pk: util_1.bigIntFromBufferLE(keychain.slice(0, 32)),
137
- chaincode: util_1.bigIntFromBufferBE(keychain.slice(32)),
138
- }, path);
139
- const derivedPk = util_1.bigIntToBufferLE(derivedPublicKeychain.pk, 32).toString('hex');
140
- const derivedChaincode = util_1.bigIntToBufferBE(derivedPublicKeychain.chaincode, 32).toString('hex');
141
- return derivedPk + derivedChaincode;
142
- }
143
- keyDerive(uShare, yShares, path) {
144
- if (this.hdTree === undefined) {
145
- throw new Error("Can't derive key without HDTree implementation");
146
- }
147
- const h = crypto_1.createHash('sha512').update(Buffer.from(uShare.seed, 'hex')).digest();
148
- const yValues = [uShare, ...yShares].map((share) => util_1.bigIntFromBufferLE(Buffer.from(share.y, 'hex')));
149
- const y = yValues.reduce((partial, share) => Eddsa.curve.pointAdd(partial, share));
150
- const u = util_1.clamp(util_1.bigIntFromBufferLE(h.slice(0, 32)));
151
- const prefix = util_1.bigIntFromBufferBE(h.slice(32));
152
- let contribChaincode = util_1.bigIntFromBufferBE(Buffer.from(uShare.chaincode, 'hex'));
153
- const chaincodes = [
154
- contribChaincode,
155
- ...yShares.map(({ chaincode }) => util_1.bigIntFromBufferBE(Buffer.from(chaincode, 'hex'))),
156
- ];
157
- const chaincode = chaincodes.reduce((acc, chaincode) => (acc + chaincode) % base);
158
- // Derive subkey.
159
- const subkey = this.hdTree.privateDerive({ pk: y, sk: u, prefix, chaincode }, path);
160
- // Calculate new public key contribution.
161
- const contribY = Eddsa.curve.basePointMult(subkey.sk);
162
- // Calculate new chaincode contribution.
163
- const chaincodeDelta = (base + subkey.chaincode - chaincode) % base;
164
- contribChaincode = (contribChaincode + chaincodeDelta) % base;
165
- // Calculate new u values.
166
- const split_u = Eddsa.shamir.split(subkey.sk, uShare.t, uShare.n);
167
- const P_i = {
168
- i: uShare.i,
169
- t: uShare.t,
170
- n: uShare.n,
171
- y: util_1.bigIntToBufferLE(subkey.pk, 32).toString('hex'),
172
- u: util_1.bigIntToBufferLE(subkey.sk, 32).toString('hex'),
173
- prefix: util_1.bigIntToBufferBE(subkey.prefix, 32).toString('hex'),
174
- chaincode: util_1.bigIntToBufferBE(subkey.chaincode, 32).toString('hex'),
175
- };
176
- const shares = {
177
- pShare: P_i,
178
- yShares: {},
179
- };
180
- for (let ind = 0; ind < yShares.length; ind++) {
181
- const P_j = yShares[ind];
182
- shares.yShares[P_j.j] = {
183
- i: P_j.j,
184
- j: P_i.i,
185
- y: util_1.bigIntToBufferLE(contribY, 32).toString('hex'),
186
- u: util_1.bigIntToBufferLE(split_u[P_j.j], 32).toString('hex'),
187
- chaincode: util_1.bigIntToBufferBE(contribChaincode, 32).toString('hex'),
188
- };
189
- }
190
- return shares;
191
- }
192
- signShare(message, pShare, jShares) {
193
- const indices = [pShare, ...jShares].map(({ i }) => i);
194
- const split_u = Eddsa.shamir.split(util_1.bigIntFromBufferLE(Buffer.from(pShare.u, 'hex')), pShare.t, pShare.n);
195
- // Generate nonce contribution.
196
- const prefix = Buffer.from(pShare.prefix, 'hex');
197
- const randomBuffer = crypto_1.randomBytes(32);
198
- const digest = crypto_1.createHash('sha512')
199
- .update(Buffer.concat([prefix, message, randomBuffer]))
200
- .digest();
201
- const r = Eddsa.curve.scalarReduce(util_1.bigIntFromBufferLE(digest));
202
- const R = Eddsa.curve.basePointMult(r);
203
- const split_r = Eddsa.shamir.split(r, indices.length, indices.length, indices);
204
- const P_i = {
205
- i: pShare.i,
206
- y: pShare.y,
207
- u: util_1.bigIntToBufferLE(split_u[pShare.i], 32).toString('hex'),
208
- r: util_1.bigIntToBufferLE(split_r[pShare.i], 32).toString('hex'),
209
- R: util_1.bigIntToBufferLE(R, 32).toString('hex'),
210
- };
211
- const resultShares = {
212
- xShare: P_i,
213
- rShares: {},
214
- };
215
- for (let ind = 0; ind < jShares.length; ind++) {
216
- const S_j = jShares[ind];
217
- resultShares.rShares[S_j.i] = {
218
- i: S_j.i,
219
- j: pShare.i,
220
- u: util_1.bigIntToBufferLE(split_u[S_j.i], 32).toString('hex'),
221
- r: util_1.bigIntToBufferLE(split_r[S_j.i], 32).toString('hex'),
222
- R: util_1.bigIntToBufferLE(R, 32).toString('hex'),
223
- };
224
- }
225
- return resultShares;
226
- }
227
- sign(message, playerShare, rShares, yShares = []) {
228
- const S_i = playerShare;
229
- const uValues = [playerShare, ...rShares, ...yShares].map(({ u }) => util_1.bigIntFromBufferLE(Buffer.from(u, 'hex')));
230
- const x = uValues.reduce((acc, u) => Eddsa.curve.scalarAdd(acc, u));
231
- const RValues = [playerShare, ...rShares].map(({ R }) => util_1.bigIntFromBufferLE(Buffer.from(R, 'hex')));
232
- const R = RValues.reduce((partial, share) => Eddsa.curve.pointAdd(partial, share));
233
- const rValues = [playerShare, ...rShares].map(({ r }) => util_1.bigIntFromBufferLE(Buffer.from(r, 'hex')));
234
- const r = rValues.reduce((partial, share) => Eddsa.curve.scalarAdd(partial, share));
235
- const combinedBuffer = Buffer.concat([util_1.bigIntToBufferLE(R, 32), Buffer.from(S_i.y, 'hex'), message]);
236
- const digest = crypto_1.createHash('sha512').update(combinedBuffer).digest();
237
- const k = Eddsa.curve.scalarReduce(util_1.bigIntFromBufferLE(digest));
238
- const gamma = Eddsa.curve.scalarAdd(r, Eddsa.curve.scalarMult(k, x));
239
- const result = {
240
- i: playerShare.i,
241
- y: playerShare.y,
242
- gamma: util_1.bigIntToBufferLE(gamma, 32).toString('hex'),
243
- R: util_1.bigIntToBufferLE(R, 32).toString('hex'),
244
- };
245
- return result;
246
- }
247
- signCombine(shares) {
248
- const y = shares[0].y;
249
- const R = shares[0].R;
250
- const resultShares = {};
251
- for (const ind in shares) {
252
- const S_i = shares[ind];
253
- resultShares[S_i.i] = util_1.bigIntFromBufferLE(Buffer.from(S_i.gamma, 'hex'));
254
- }
255
- const sigma = Eddsa.shamir.combine(resultShares);
256
- const result = {
257
- y,
258
- R,
259
- sigma: util_1.bigIntToBufferLE(sigma, 32).toString('hex'),
260
- };
261
- return result;
262
- }
263
- verify(message, signature) {
264
- const publicKey = util_1.bigIntFromBufferLE(Buffer.from(signature.y, 'hex'));
265
- const signedMessage = Buffer.concat([Buffer.from(signature.R, 'hex'), Buffer.from(signature.sigma, 'hex')]);
266
- return Eddsa.curve.verify(message, signedMessage, publicKey);
267
- }
268
- }
269
- exports.default = Eddsa;
270
- Eddsa.curve = new curves_1.Ed25519Curve();
271
- Eddsa.shamir = new shamir_1.default(Eddsa.curve);
272
- Eddsa.initialized = false;
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21wYy90c3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLG1DQUFpRDtBQUNqRCxxQ0FBd0M7QUFDeEMsc0RBQThCO0FBRTlCLGlDQUEyRztBQUUzRyxRQUFRO0FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFtRjVGLE1BQXFCLEtBQUs7SUFnQnhCLFlBQVksTUFBZTtRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBYkQsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBZTtRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUN0QixNQUFNLHFCQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDMUI7UUFFRCxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFRRCxRQUFRLENBQUMsS0FBYSxFQUFFLFNBQWlCLEVBQUUsU0FBaUIsRUFBRSxJQUFhO1FBQ3pFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQztRQUN4QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGFBQUosSUFBSSxjQUFKLElBQUksR0FBSSxvQkFBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sVUFBVSxH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QUE5UVEsV0FBSyxHQUFpQixJQUFJLHFCQUFZLEVBQUUsQ0FBQztBQUN6QyxZQUFNLEdBQVcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxpQkFBVyxHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgTVBDIHVzaW5nIHRocmVzaG9sZCBzaWduYXR1cmUgc2NoZW1lIChUU1MpLiBJdCBjb250YWluc1xuICogZnVuY3Rpb25zIGZvciBrZXkgZ2VuZXJhdGlvbiBhbmQgbWVzc2FnZSBzaWduaW5nIHdpdGggRWREU0EuXG4gKlxuICpcbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIEVkRFNBIEtleSBHZW5lcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBFYWNoIHNpZ25lciBnZW5lcmF0ZXMgdGhlaXIgb3duIGtleSBzaGFyZSwgd2hpY2ggaW52b2x2ZXMgYSBwcml2YXRlIHUtc2hhcmUgYW5kIGEgcHVibGljIHktc2hhcmUuXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgeS1zaGFyZSB0byBvdGhlciBzaWduZXJzLlxuICogMy4gQWZ0ZXIgZXhjaGFuZ2luZyB5LXNoYXJlcyB0aGUgbmV4dCBwaGFzZSBpcyB0byBjb21iaW5lIGtleSBzaGFyZXMuIEVhY2ggc2lnbmVyIGNvbWJpbmVzIHRoZWlyIHUtc2hhcmVcbiAqICAgIHdpdGggdGhlIHktc2hhcmVzIHJlY2VpdmVkIGZyb20gb3RoZXIgc2lnbmVycyBpbiBvcmRlciB0byBnZW5lcmF0ZSBhIHAtc2hhcmUgZm9yIHRoZW1zZWx2ZXMuIFdlXG4gKiAgICBhbHNvIHNhdmUgai1zaGFyZXMgZm9yIG90aGVyIHNpZ25lcnMuXG4gKiA0LiBBdCB0aGlzIHBvaW50IHRoZSBwbGF5ZXJzIGRvIG5vdCBkaXN0cmlidXRlIGFueSBzaGFyZXMgYW5kIHRoZSBmaXJzdCBwaGFzZSBvZiB0aGVcbiAqICAgIHNpZ25pbmcgcHJvdG9jb2wgaXMgY29tcGxldGUuXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgU2lnbmluZ1xuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogMS4gVGhlIHBhcnRpZXMgZnJvbSBrZXkgZ2VuZXJhdGlvbiBkZWNpZGUgdGhleSB3YW50IHRvIHNpZ24gc29tZXRoaW5nLiBUaGV5IGJlZ2luIHRoZSBzaWduaW5nIHByb3RvY29sXG4gKiAgICBieSBnZW5lcmF0aW5nIHNoYXJlcyBvZiBhbiBlcGhlbWVyYWwga2V5LlxuICpcbiAqICAgIGEpIEVhY2ggc2lnbmVyIHVzZXMgaGlzIHAtc2hhcmUgYW5kIHRoZSBqLXNoYXJlcyBzdG9yZWQgZm9yIG90aGVyIHBsYXllcnMgdG8gZ2VuZXJhdGUgaGlzIHNpZ25pbmcgc2hhcmUuXG4gKiAgICBiKSBUaGlzIHJlc3VsdHMgaW4gZWFjaCBzaWduZXIgaGF2aW5nIGEgcHJpdmF0ZSB4LXNoYXJlIGFuZCBwdWJsaWMgci1zaGFyZXMuXG4gKlxuICogMi4gU2lnbmVycyBkaXN0cmlidXRlIHRoZWlyIHItc2hhcmVzIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHItc2hhcmVzLCBlYWNoIHNpZ25lciBzaWducyB0aGVpciBzaGFyZSBvZiB0aGUgZXBoZW1lcmFsIGtleSB1c2luZyB0aGVpciBwcml2YXRlXG4gKiAgICB4LXNoYXJlIHdpdGggdGhlIHItc2hhcmVzIGZyb20gb3RoZXIgc2lnbmVycy5cbiAqIDQuIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwdWJsaWMgZy1zaGFyZSB3aGljaCB0aGV5IHNlbmQgdG8gdGhlIG90aGVyIHNpZ25lcnMuXG4gKiA1LiBBZnRlciB0aGUgc2lnbmVycyBicm9hZGNhc3QgdGhlaXIgZy1zaGFyZXMsIHRoZSBmaW5hbCBzaWduYXR1cmUgY2FuIGJlIHJlLWNvbnN0cnVjdGVkIGluZGVwZW5kZW50bHkuXG4gKi9cbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgRWQyNTUxOUN1cnZlIH0gZnJvbSAnLi9jdXJ2ZXMnO1xuaW1wb3J0IFNoYW1pciBmcm9tICcuL3NoYW1pcic7XG5pbXBvcnQgSERUcmVlIGZyb20gJy4vaGRUcmVlJztcbmltcG9ydCB7IGJpZ0ludEZyb21CdWZmZXJMRSwgYmlnSW50VG9CdWZmZXJMRSwgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFLCBjbGFtcCB9IGZyb20gJy4vdXRpbCc7XG5cbi8vIDJeMjU2XG5jb25zdCBiYXNlID0gQmlnSW50KCcweDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgdDogbnVtYmVyO1xuICBuOiBudW1iZXI7XG4gIHk6IHN0cmluZztcbiAgc2VlZDogc3RyaW5nO1xuICBjaGFpbmNvZGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBZU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgeTogc3RyaW5nO1xuICB1OiBzdHJpbmc7XG4gIGNoYWluY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleVNoYXJlIHtcbiAgdVNoYXJlOiBVU2hhcmU7XG4gIHlTaGFyZXM6IFJlY29yZDxudW1iZXIsIFlTaGFyZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUFNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICB0OiBudW1iZXI7XG4gIG46IG51bWJlcjtcbiAgeTogc3RyaW5nO1xuICB1OiBzdHJpbmc7XG4gIHByZWZpeDogc3RyaW5nO1xuICBjaGFpbmNvZGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIEtleUNvbWJpbmUge1xuICBwU2hhcmU6IFBTaGFyZTtcbiAgalNoYXJlczogUmVjb3JkPG51bWJlciwgSlNoYXJlPjtcbn1cblxuaW50ZXJmYWNlIFN1YmtleVNoYXJlIHtcbiAgcFNoYXJlOiBQU2hhcmU7XG4gIHlTaGFyZXM6IFJlY29yZDxudW1iZXIsIFlTaGFyZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWFNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICB5OiBzdHJpbmc7XG4gIHU6IHN0cmluZztcbiAgcjogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUlNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG4gIHU6IHN0cmluZztcbiAgcjogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblNoYXJlIHtcbiAgeFNoYXJlOiBYU2hhcmU7XG4gIHJTaGFyZXM6IFJlY29yZDxudW1iZXIsIFJTaGFyZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR1NoYXJlIHtcbiAgaTogbnVtYmVyO1xuICB5OiBzdHJpbmc7XG4gIGdhbW1hOiBzdHJpbmc7XG4gIFI6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNpZ25hdHVyZSB7XG4gIHk6IHN0cmluZztcbiAgUjogc3RyaW5nO1xuICBzaWdtYTogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGRzYSB7XG4gIHN0YXRpYyBjdXJ2ZTogRWQyNTUxOUN1cnZlID0gbmV3IEVkMjU1MTlDdXJ2ZSgpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVkZHNhLmN1cnZlKTtcbiAgc3RhdGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgc3RhdGljIGFzeW5jIGluaXRpYWxpemUoaGRUcmVlPzogSERUcmVlKTogUHJvbWlzZTxFZGRzYT4ge1xuICAgIGlmICghRWRkc2EuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGF3YWl0IEVkMjU1MTlDdXJ2ZS5pbml0aWFsaXplKCk7XG4gICAgICBFZGRzYS5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBFZGRzYShoZFRyZWUpO1xuICB9XG5cbiAgaGRUcmVlPzogSERUcmVlO1xuXG4gIGNvbnN0cnVjdG9yKGhkVHJlZT86IEhEVHJlZSkge1xuICAgIHRoaXMuaGRUcmVlID0gaGRUcmVlO1xuICB9XG5cbiAga2V5U2hhcmUoaW5kZXg6IG51bWJlciwgdGhyZXNob2xkOiBudW1iZXIsIG51bVNoYXJlczogbnVtYmVyLCBzZWVkPzogQnVmZmVyKTogS2V5U2hhcmUge1xuICAgIGFzc2VydChpbmRleCA+IDAgJiYgaW5kZXggPD0gbnVtU2hhcmVzKTtcbiAgICBpZiAoc2VlZCAmJiBzZWVkLmxlbmd0aCAhPSA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNjQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWVkY2hhaW4gPSBzZWVkID8/IHJhbmRvbUJ5dGVzKDY0KTtcbiAgICBjb25zdCBhY3R1YWxTZWVkID0gc2VlZGNoYWluLnNsaWNlKDAsIDMyKTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBzZWVkY2hhaW4uc2xpY2UoMzIpO1xuICAgIGNvbnN0IGggPSBjcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoYWN0dWFsU2VlZCkuZGlnZXN0KCk7XG4gICAgY29uc3QgdSA9IGNsYW1wKGJpZ0ludEZyb21CdWZmZXJMRShoLnNsaWNlKDAsIDMyKSkpO1xuICAgIGNvbnN0IHkgPSBFZGRzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHUpO1xuICAgIGNvbnN0IHNwbGl0X3UgPSBFZGRzYS5zaGFtaXIuc3BsaXQodSwgdGhyZXNob2xkLCBudW1TaGFyZXMpO1xuXG4gICAgY29uc3QgUF9pOiBVU2hhcmUgPSB7XG4gICAgICBpOiBpbmRleCxcbiAgICAgIHQ6IHRocmVzaG9sZCxcbiAgICAgIG46IG51bVNoYXJlcyxcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHNlZWQ6IGFjdHVhbFNlZWQudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgY2hhaW5jb2RlOiBjaGFpbmNvZGUudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgY29uc3Qgc2hhcmVzOiBLZXlTaGFyZSA9IHtcbiAgICAgIHVTaGFyZTogUF9pLFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgaW5kIGluIHNwbGl0X3UpIHtcbiAgICAgIGNvbnN0IGkgPSBwYXJzZUludChpbmQsIDEwKTtcbiAgICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHNoYXJlcy55U2hhcmVzW2ldID0ge1xuICAgICAgICBpLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgICAgeTogYmlnSW50VG9CdWZmZXJMRSh5LCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbaW5kXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgY2hhaW5jb2RlOiBjaGFpbmNvZGUudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHNoYXJlcztcbiAgfVxuXG4gIGtleUNvbWJpbmUodVNoYXJlOiBVU2hhcmUsIHlTaGFyZXM6IFlTaGFyZVtdKTogS2V5Q29tYmluZSB7XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpKS5kaWdlc3QoKTtcbiAgICBjb25zdCB1ID0gY2xhbXAoYmlnSW50RnJvbUJ1ZmZlckxFKGguc2xpY2UoMCwgMzIpKSk7XG4gICAgY29uc3QgeVZhbHVlcyA9IFt1U2hhcmUsIC4uLnlTaGFyZXNdLm1hcCgoc2hhcmUpID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS55LCAnaGV4JykpKTtcbiAgICBjb25zdCB5ID0geVZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFZGRzYS5jdXJ2ZS5wb2ludEFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuICAgIGNvbnN0IGNoYWluY29kZXMgPSBbdVNoYXJlLCAuLi55U2hhcmVzXS5tYXAoKHsgY2hhaW5jb2RlIH0pID0+IGJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShjaGFpbmNvZGUsICdoZXgnKSkpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKChhY2MsIGNoYWluY29kZSkgPT4gKGFjYyArIGNoYWluY29kZSkgJSBiYXNlKTtcblxuICAgIGNvbnN0IFBfaTogUFNoYXJlID0ge1xuICAgICAgaTogdVNoYXJlLmksXG4gICAgICB0OiB1U2hhcmUudCxcbiAgICAgIG46IHVTaGFyZS5uLFxuICAgICAgeTogYmlnSW50VG9CdWZmZXJMRSh5LCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRSh1LCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcHJlZml4OiBoLnNsaWNlKDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBjaGFpbmNvZGU6IGJpZ0ludFRvQnVmZmVyQkUoY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgY29uc3QgcGxheWVyczogS2V5Q29tYmluZSA9IHtcbiAgICAgIHBTaGFyZTogUF9pLFxuICAgICAgalNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAobGV0IGluZCA9IDA7IGluZCA8IHlTaGFyZXMubGVuZ3RoOyBpbmQrKykge1xuICAgICAgY29uc3QgUF9qID0geVNoYXJlc1tpbmRdO1xuICAgICAgcGxheWVycy5qU2hhcmVzW1Bfai5qXSA9IHtcbiAgICAgICAgaTogUF9qLmosXG4gICAgICAgIGo6IFBfaS5pLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHBsYXllcnM7XG4gIH1cblxuICAvKipcbiAgICogRGVyaXZlcyBhIGNoaWxkIGNvbW1vbiBrZXljaGFpbiBmcm9tIGNvbW1vbiBrZXljaGFpblxuICAgKlxuICAgKiBAcGFyYW0gY29tbW9uS2V5Y2hhaW4gLSBjb21tb24ga2V5Y2hhaW4gYXMgYSBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSBwYXRoIC0gYmlwMzIgcGF0aFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IGRlcml2ZWQgY29tbW9uIGtleWNoYWluIGFzIGEgaGV4IHN0cmluZ1xuICAgKi9cbiAgZGVyaXZlVW5oYXJkZW5lZChjb21tb25LZXljaGFpbjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmhkVHJlZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBkZXJpdmUga2V5IHdpdGhvdXQgSERUcmVlIGltcGxlbWVudGF0aW9uXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGtleWNoYWluID0gQnVmZmVyLmZyb20oY29tbW9uS2V5Y2hhaW4sICdoZXgnKTtcblxuICAgIGNvbnN0IGRlcml2ZWRQdWJsaWNLZXljaGFpbiA9IHRoaXMuaGRUcmVlLnB1YmxpY0Rlcml2ZShcbiAgICAgIHtcbiAgICAgICAgcGs6IGJpZ0ludEZyb21CdWZmZXJMRShrZXljaGFpbi5zbGljZSgwLCAzMikpLFxuICAgICAgICBjaGFpbmNvZGU6IGJpZ0ludEZyb21CdWZmZXJCRShrZXljaGFpbi5zbGljZSgzMikpLFxuICAgICAgfSxcbiAgICAgIHBhdGgsXG4gICAgKTtcblxuICAgIGNvbnN0IGRlcml2ZWRQayA9IGJpZ0ludFRvQnVmZmVyTEUoZGVyaXZlZFB1YmxpY0tleWNoYWluLnBrLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGRlcml2ZWRDaGFpbmNvZGUgPSBiaWdJbnRUb0J1ZmZlckJFKGRlcml2ZWRQdWJsaWNLZXljaGFpbi5jaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICByZXR1cm4gZGVyaXZlZFBrICsgZGVyaXZlZENoYWluY29kZTtcbiAgfVxuXG4gIGtleURlcml2ZSh1U2hhcmU6IFVTaGFyZSwgeVNoYXJlczogWVNoYXJlW10sIHBhdGg6IHN0cmluZyk6IFN1YmtleVNoYXJlIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpKS5kaWdlc3QoKTtcbiAgICBjb25zdCB5VmFsdWVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKChzaGFyZSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHNoYXJlLnksICdoZXgnKSkpO1xuICAgIGNvbnN0IHkgPSB5VmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG4gICAgY29uc3QgdSA9IGNsYW1wKGJpZ0ludEZyb21CdWZmZXJMRShoLnNsaWNlKDAsIDMyKSkpO1xuICAgIGNvbnN0IHByZWZpeCA9IGJpZ0ludEZyb21CdWZmZXJCRShoLnNsaWNlKDMyKSk7XG4gICAgbGV0IGNvbnRyaWJDaGFpbmNvZGUgPSBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20odVNoYXJlLmNoYWluY29kZSwgJ2hleCcpKTtcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW1xuICAgICAgY29udHJpYkNoYWluY29kZSxcbiAgICAgIC4uLnlTaGFyZXMubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKSxcbiAgICBdO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKChhY2MsIGNoYWluY29kZSkgPT4gKGFjYyArIGNoYWluY29kZSkgJSBiYXNlKTtcblxuICAgIC8vIERlcml2ZSBzdWJrZXkuXG4gICAgY29uc3Qgc3Via2V5ID0gdGhpcy5oZFRyZWUucHJpdmF0ZURlcml2ZSh7IHBrOiB5LCBzazogdSwgcHJlZml4LCBjaGFpbmNvZGUgfSwgcGF0aCk7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IHB1YmxpYyBrZXkgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNvbnRyaWJZID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChzdWJrZXkuc2spO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG5ldyBjaGFpbmNvZGUgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNoYWluY29kZURlbHRhID0gKGJhc2UgKyBzdWJrZXkuY2hhaW5jb2RlIC0gY2hhaW5jb2RlKSAlIGJhc2U7XG4gICAgY29udHJpYkNoYWluY29kZSA9IChjb250cmliQ2hhaW5jb2RlICsgY2hhaW5jb2RlRGVsdGEpICUgYmFzZTtcblxuICAgIC8vIENhbGN1bGF0ZSBuZXcgdSB2YWx1ZXMuXG4gICAgY29uc3Qgc3BsaXRfdSA9IEVkZHNhLnNoYW1pci5zcGxpdChzdWJrZXkuc2ssIHVTaGFyZS50LCB1U2hhcmUubik7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoc3Via2V5LnBrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzdWJrZXkuc2ssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcmVmaXg6IGJpZ0ludFRvQnVmZmVyQkUoc3Via2V5LnByZWZpeCwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShzdWJrZXkuY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG5cbiAgICBjb25zdCBzaGFyZXM6IFN1YmtleVNoYXJlID0ge1xuICAgICAgcFNoYXJlOiBQX2ksXG4gICAgICB5U2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgeVNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSB5U2hhcmVzW2luZF07XG4gICAgICBzaGFyZXMueVNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgICAgeTogYmlnSW50VG9CdWZmZXJMRShjb250cmliWSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W1Bfai5qXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNvbnRyaWJDaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cblxuICBzaWduU2hhcmUobWVzc2FnZTogQnVmZmVyLCBwU2hhcmU6IFBTaGFyZSwgalNoYXJlczogSlNoYXJlW10pOiBTaWduU2hhcmUge1xuICAgIGNvbnN0IGluZGljZXMgPSBbcFNoYXJlLCAuLi5qU2hhcmVzXS5tYXAoKHsgaSB9KSA9PiBpKTtcbiAgICBjb25zdCBzcGxpdF91ID0gRWRkc2Euc2hhbWlyLnNwbGl0KGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShwU2hhcmUudSwgJ2hleCcpKSwgcFNoYXJlLnQsIHBTaGFyZS5uKTtcblxuICAgIC8vIEdlbmVyYXRlIG5vbmNlIGNvbnRyaWJ1dGlvbi5cbiAgICBjb25zdCBwcmVmaXggPSBCdWZmZXIuZnJvbShwU2hhcmUucHJlZml4LCAnaGV4Jyk7XG4gICAgY29uc3QgcmFuZG9tQnVmZmVyID0gcmFuZG9tQnl0ZXMoMzIpO1xuICAgIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpXG4gICAgICAudXBkYXRlKEJ1ZmZlci5jb25jYXQoW3ByZWZpeCwgbWVzc2FnZSwgcmFuZG9tQnVmZmVyXSkpXG4gICAgICAuZGlnZXN0KCk7XG5cbiAgICBjb25zdCByID0gRWRkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJpZ0ludEZyb21CdWZmZXJMRShkaWdlc3QpKTtcbiAgICBjb25zdCBSID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChyKTtcbiAgICBjb25zdCBzcGxpdF9yID0gRWRkc2Euc2hhbWlyLnNwbGl0KHIsIGluZGljZXMubGVuZ3RoLCBpbmRpY2VzLmxlbmd0aCwgaW5kaWNlcyk7XG5cbiAgICBjb25zdCBQX2k6IFhTaGFyZSA9IHtcbiAgICAgIGk6IHBTaGFyZS5pLFxuICAgICAgeTogcFNoYXJlLnksXG4gICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbcFNoYXJlLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcjogYmlnSW50VG9CdWZmZXJMRShzcGxpdF9yW3BTaGFyZS5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIFI6IGJpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0U2hhcmVzOiBTaWduU2hhcmUgPSB7XG4gICAgICB4U2hhcmU6IFBfaSxcbiAgICAgIHJTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCBqU2hhcmVzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IFNfaiA9IGpTaGFyZXNbaW5kXTtcbiAgICAgIHJlc3VsdFNoYXJlcy5yU2hhcmVzW1Nfai5pXSA9IHtcbiAgICAgICAgaTogU19qLmksXG4gICAgICAgIGo6IHBTaGFyZS5pLFxuICAgICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbU19qLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICByOiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3JbU19qLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0U2hhcmVzO1xuICB9XG5cbiAgc2lnbihtZXNzYWdlOiBCdWZmZXIsIHBsYXllclNoYXJlOiBYU2hhcmUsIHJTaGFyZXM6IFJTaGFyZVtdLCB5U2hhcmVzOiBZU2hhcmVbXSA9IFtdKTogR1NoYXJlIHtcbiAgICBjb25zdCBTX2kgPSBwbGF5ZXJTaGFyZTtcblxuICAgIGNvbnN0IHVWYWx1ZXMgPSBbcGxheWVyU2hhcmUsIC4uLnJTaGFyZXMsIC4uLnlTaGFyZXNdLm1hcCgoeyB1IH0pID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbSh1LCAnaGV4JykpKTtcbiAgICBjb25zdCB4ID0gdVZhbHVlcy5yZWR1Y2UoKGFjYywgdSkgPT4gRWRkc2EuY3VydmUuc2NhbGFyQWRkKGFjYywgdSkpO1xuXG4gICAgY29uc3QgUlZhbHVlcyA9IFtwbGF5ZXJTaGFyZSwgLi4uclNoYXJlc10ubWFwKCh7IFIgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKFIsICdoZXgnKSkpO1xuICAgIGNvbnN0IFIgPSBSVmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG5cbiAgICBjb25zdCByVmFsdWVzID0gW3BsYXllclNoYXJlLCAuLi5yU2hhcmVzXS5tYXAoKHsgciB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20ociwgJ2hleCcpKSk7XG4gICAgY29uc3QgciA9IHJWYWx1ZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gRWRkc2EuY3VydmUuc2NhbGFyQWRkKHBhcnRpYWwsIHNoYXJlKSk7XG5cbiAgICBjb25zdCBjb21iaW5lZEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2JpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLCBCdWZmZXIuZnJvbShTX2kueSwgJ2hleCcpLCBtZXNzYWdlXSk7XG4gICAgY29uc3QgZGlnZXN0ID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKGNvbWJpbmVkQnVmZmVyKS5kaWdlc3QoKTtcbiAgICBjb25zdCBrID0gRWRkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJpZ0ludEZyb21CdWZmZXJMRShkaWdlc3QpKTtcblxuICAgIGNvbnN0IGdhbW1hID0gRWRkc2EuY3VydmUuc2NhbGFyQWRkKHIsIEVkZHNhLmN1cnZlLnNjYWxhck11bHQoaywgeCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIGk6IHBsYXllclNoYXJlLmksXG4gICAgICB5OiBwbGF5ZXJTaGFyZS55LFxuICAgICAgZ2FtbWE6IGJpZ0ludFRvQnVmZmVyTEUoZ2FtbWEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2lnbkNvbWJpbmUoc2hhcmVzOiBHU2hhcmVbXSk6IFNpZ25hdHVyZSB7XG4gICAgY29uc3QgeSA9IHNoYXJlc1swXS55O1xuICAgIGNvbnN0IFIgPSBzaGFyZXNbMF0uUjtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlcyA9IHt9O1xuICAgIGZvciAoY29uc3QgaW5kIGluIHNoYXJlcykge1xuICAgICAgY29uc3QgU19pID0gc2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXNbU19pLmldID0gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKFNfaS5nYW1tYSwgJ2hleCcpKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbWE6IGJpZ2ludCA9IEVkZHNhLnNoYW1pci5jb21iaW5lKHJlc3VsdFNoYXJlcyk7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgeSxcbiAgICAgIFIsXG4gICAgICBzaWdtYTogYmlnSW50VG9CdWZmZXJMRShzaWdtYSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IFNpZ25hdHVyZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaWduYXR1cmUueSwgJ2hleCcpKTtcbiAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oc2lnbmF0dXJlLlIsICdoZXgnKSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlLnNpZ21hLCAnaGV4JyldKTtcbiAgICByZXR1cm4gRWRkc2EuY3VydmUudmVyaWZ5KG1lc3NhZ2UsIHNpZ25lZE1lc3NhZ2UsIHB1YmxpY0tleSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +0,0 @@
1
- /// <reference types="node" />
2
- export declare function bigIntFromBufferLE(buf: Buffer): bigint;
3
- export declare function bigIntToBufferLE(n: bigint, bytes?: number): Buffer;
4
- export declare function bigIntFromBufferBE(buf: Buffer): bigint;
5
- export declare function bigIntFromU8ABE(buf: Uint8Array): bigint;
6
- export declare function bigIntToBufferBE(n: bigint, bytes?: number): Buffer;
7
- export declare function clamp(u: bigint): bigint;
8
- //# sourceMappingURL=util.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/mpc/util.ts"],"names":[],"mappings":";AAAA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvC"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clamp = exports.bigIntToBufferBE = exports.bigIntFromU8ABE = exports.bigIntFromBufferBE = exports.bigIntToBufferLE = exports.bigIntFromBufferLE = void 0;
4
- function bigIntFromBufferLE(buf) {
5
- return BigInt('0x' + Buffer.from(buf).reverse().toString('hex'));
6
- }
7
- exports.bigIntFromBufferLE = bigIntFromBufferLE;
8
- function bigIntToBufferLE(n, bytes) {
9
- let v = n.toString(16);
10
- v = '0'.slice(0, v.length % 2) + v;
11
- const buf = Buffer.from(v, 'hex').reverse();
12
- if (bytes && buf.length < bytes) {
13
- return Buffer.concat([buf, Buffer.alloc(bytes - buf.length)]);
14
- }
15
- return buf;
16
- }
17
- exports.bigIntToBufferLE = bigIntToBufferLE;
18
- function bigIntFromBufferBE(buf) {
19
- return BigInt('0x' + buf.toString('hex'));
20
- }
21
- exports.bigIntFromBufferBE = bigIntFromBufferBE;
22
- function bigIntFromU8ABE(buf) {
23
- return bigIntFromBufferBE(Buffer.from(buf));
24
- }
25
- exports.bigIntFromU8ABE = bigIntFromU8ABE;
26
- function bigIntToBufferBE(n, bytes) {
27
- let v = n.toString(16);
28
- v = '0'.slice(0, v.length % 2) + v;
29
- const buf = Buffer.from(v, 'hex');
30
- if (bytes && buf.length < bytes) {
31
- return Buffer.concat([Buffer.alloc(bytes - buf.length), buf]);
32
- }
33
- return buf;
34
- }
35
- exports.bigIntToBufferBE = bigIntToBufferBE;
36
- function clamp(u) {
37
- u &= BigInt('0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8');
38
- u |= BigInt('0x4000000000000000000000000000000000000000000000000000000000000000');
39
- return u;
40
- }
41
- exports.clamp = clamp;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tcGMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFnQixrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFGRCxnREFFQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLENBQVMsRUFBRSxLQUFjO0lBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVDLElBQUksS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFO1FBQy9CLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9EO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBUkQsNENBUUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUZELGdEQUVDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLEdBQWU7SUFDN0MsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUZELDBDQUVDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsQ0FBUyxFQUFFLEtBQWM7SUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUU7UUFDL0IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDL0Q7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFSRCw0Q0FRQztBQUVELFNBQWdCLEtBQUssQ0FBQyxDQUFTO0lBQzdCLENBQUMsSUFBSSxNQUFNLENBQUMsb0VBQW9FLENBQUMsQ0FBQztJQUNsRixDQUFDLElBQUksTUFBTSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7SUFDbEYsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBSkQsc0JBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYmlnSW50RnJvbUJ1ZmZlckxFKGJ1ZjogQnVmZmVyKTogYmlnaW50IHtcbiAgcmV0dXJuIEJpZ0ludCgnMHgnICsgQnVmZmVyLmZyb20oYnVmKS5yZXZlcnNlKCkudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpZ0ludFRvQnVmZmVyTEUobjogYmlnaW50LCBieXRlcz86IG51bWJlcik6IEJ1ZmZlciB7XG4gIGxldCB2ID0gbi50b1N0cmluZygxNik7XG4gIHYgPSAnMCcuc2xpY2UoMCwgdi5sZW5ndGggJSAyKSArIHY7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKHYsICdoZXgnKS5yZXZlcnNlKCk7XG4gIGlmIChieXRlcyAmJiBidWYubGVuZ3RoIDwgYnl0ZXMpIHtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbYnVmLCBCdWZmZXIuYWxsb2MoYnl0ZXMgLSBidWYubGVuZ3RoKV0pO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaWdJbnRGcm9tQnVmZmVyQkUoYnVmOiBCdWZmZXIpOiBiaWdpbnQge1xuICByZXR1cm4gQmlnSW50KCcweCcgKyBidWYudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpZ0ludEZyb21VOEFCRShidWY6IFVpbnQ4QXJyYXkpOiBiaWdpbnQge1xuICByZXR1cm4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGJ1ZikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50VG9CdWZmZXJCRShuOiBiaWdpbnQsIGJ5dGVzPzogbnVtYmVyKTogQnVmZmVyIHtcbiAgbGV0IHYgPSBuLnRvU3RyaW5nKDE2KTtcbiAgdiA9ICcwJy5zbGljZSgwLCB2Lmxlbmd0aCAlIDIpICsgdjtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20odiwgJ2hleCcpO1xuICBpZiAoYnl0ZXMgJiYgYnVmLmxlbmd0aCA8IGJ5dGVzKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5hbGxvYyhieXRlcyAtIGJ1Zi5sZW5ndGgpLCBidWZdKTtcbiAgfVxuICByZXR1cm4gYnVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAodTogYmlnaW50KTogYmlnaW50IHtcbiAgdSAmPSBCaWdJbnQoJzB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOCcpO1xuICB1IHw9IEJpZ0ludCgnMHg0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG4gIHJldHVybiB1O1xufVxuIl19