@bitgo/sdk-core 1.0.1-rc.0 → 1.1.0-dev.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 (362) hide show
  1. package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts +27 -0
  2. package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts.map +1 -0
  3. package/dist/src/account-lib/baseCoin/baseKeyPair.js +3 -0
  4. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +71 -0
  5. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -0
  6. package/dist/src/account-lib/baseCoin/baseTransaction.js +69 -0
  7. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +128 -0
  8. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -0
  9. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +138 -0
  10. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts +29 -0
  11. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -0
  12. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.js +19 -0
  13. package/dist/src/account-lib/baseCoin/baseUtils.d.ts +45 -0
  14. package/dist/src/account-lib/baseCoin/baseUtils.d.ts.map +1 -0
  15. package/dist/src/account-lib/baseCoin/baseUtils.js +3 -0
  16. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +75 -0
  17. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -0
  18. package/dist/src/account-lib/baseCoin/blsKeyPair.js +179 -0
  19. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +50 -0
  20. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -0
  21. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +145 -0
  22. package/dist/src/account-lib/baseCoin/enum.d.ts +45 -0
  23. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -0
  24. package/dist/src/account-lib/baseCoin/enum.js +74 -0
  25. package/dist/src/account-lib/baseCoin/errors.d.ts +59 -0
  26. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -0
  27. package/dist/src/account-lib/baseCoin/errors.js +105 -0
  28. package/dist/src/account-lib/baseCoin/iface.d.ts +155 -0
  29. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -0
  30. package/dist/src/account-lib/baseCoin/iface.js +38 -0
  31. package/dist/src/account-lib/baseCoin/index.d.ts +12 -0
  32. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -0
  33. package/dist/src/account-lib/baseCoin/index.js +31 -0
  34. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +55 -0
  35. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -0
  36. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +124 -0
  37. package/dist/src/account-lib/index.d.ts +5 -0
  38. package/dist/src/account-lib/index.d.ts.map +1 -0
  39. package/dist/src/account-lib/index.js +17 -0
  40. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts +19 -0
  41. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts.map +1 -0
  42. package/dist/src/account-lib/mpc/curves/baseCurve.js +6 -0
  43. package/dist/src/account-lib/mpc/curves/ed25519.d.ts +17 -0
  44. package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -0
  45. package/dist/src/account-lib/mpc/curves/ed25519.js +57 -0
  46. package/dist/src/account-lib/mpc/curves/index.d.ts +6 -0
  47. package/dist/src/account-lib/mpc/curves/index.d.ts.map +1 -0
  48. package/dist/src/account-lib/mpc/curves/index.js +8 -0
  49. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts +17 -0
  50. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -0
  51. package/dist/src/account-lib/mpc/curves/secp256k1.js +70 -0
  52. package/dist/src/account-lib/mpc/hdTree.d.ts +24 -0
  53. package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -0
  54. package/dist/src/account-lib/mpc/hdTree.js +94 -0
  55. package/dist/src/account-lib/mpc/index.d.ts +8 -0
  56. package/dist/src/account-lib/mpc/index.d.ts.map +1 -0
  57. package/dist/src/account-lib/mpc/index.js +23 -0
  58. package/dist/src/account-lib/mpc/shamir.d.ts +26 -0
  59. package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -0
  60. package/dist/src/account-lib/mpc/shamir.js +86 -0
  61. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +25 -0
  62. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
  63. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +121 -0
  64. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts +4 -0
  65. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts.map +1 -0
  66. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +29 -0
  67. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +40 -0
  68. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -0
  69. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +3 -0
  70. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +29 -0
  71. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
  72. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +276 -0
  73. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts +4 -0
  74. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts.map +1 -0
  75. package/dist/src/account-lib/mpc/tss/eddsa/index.js +30 -0
  76. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +70 -0
  77. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -0
  78. package/dist/src/account-lib/mpc/tss/eddsa/types.js +3 -0
  79. package/dist/src/account-lib/mpc/tss/index.d.ts +6 -0
  80. package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -0
  81. package/dist/src/account-lib/mpc/tss/index.js +35 -0
  82. package/dist/src/account-lib/mpc/util.d.ts +8 -0
  83. package/dist/src/account-lib/mpc/util.d.ts.map +1 -0
  84. package/dist/src/account-lib/mpc/util.js +42 -0
  85. package/dist/src/account-lib/util/crypto.d.ts +106 -0
  86. package/dist/src/account-lib/util/crypto.d.ts.map +1 -0
  87. package/dist/src/account-lib/util/crypto.js +269 -0
  88. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +49 -0
  89. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -0
  90. package/dist/src/account-lib/util/ed25519KeyDeriver.js +87 -0
  91. package/dist/src/api/bip32path.d.ts +24 -0
  92. package/dist/src/api/bip32path.d.ts.map +1 -0
  93. package/dist/src/api/bip32path.js +45 -0
  94. package/dist/src/api/index.d.ts +3 -0
  95. package/dist/src/api/index.d.ts.map +1 -0
  96. package/dist/src/{v2 → api}/index.js +2 -2
  97. package/dist/src/api/types.d.ts +20 -0
  98. package/dist/src/api/types.d.ts.map +1 -0
  99. package/dist/src/api/types.js +3 -0
  100. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +230 -0
  101. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -0
  102. package/dist/src/bitgo/baseCoin/baseCoin.js +292 -0
  103. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +257 -0
  104. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -0
  105. package/dist/src/bitgo/baseCoin/iBaseCoin.js +3 -0
  106. package/dist/src/bitgo/baseCoin/index.d.ts +3 -0
  107. package/dist/src/bitgo/baseCoin/index.d.ts.map +1 -0
  108. package/dist/src/bitgo/baseCoin/index.js +15 -0
  109. package/dist/src/bitgo/bip32util.d.ts +17 -0
  110. package/dist/src/bitgo/bip32util.d.ts.map +1 -0
  111. package/dist/src/bitgo/bip32util.js +59 -0
  112. package/dist/src/bitgo/bitcoin.d.ts +16 -0
  113. package/dist/src/bitgo/bitcoin.d.ts.map +1 -0
  114. package/dist/src/bitgo/bitcoin.js +52 -0
  115. package/dist/src/bitgo/bitgoBase.d.ts +22 -0
  116. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -0
  117. package/dist/src/bitgo/bitgoBase.js +3 -0
  118. package/dist/src/bitgo/coinFactory.d.ts +31 -0
  119. package/dist/src/bitgo/coinFactory.d.ts.map +1 -0
  120. package/dist/src/bitgo/coinFactory.js +59 -0
  121. package/dist/src/bitgo/config.d.ts +8 -0
  122. package/dist/src/bitgo/config.d.ts.map +1 -0
  123. package/dist/src/bitgo/config.js +25 -0
  124. package/dist/src/bitgo/ecdh.d.ts +24 -0
  125. package/dist/src/bitgo/ecdh.d.ts.map +1 -0
  126. package/dist/src/bitgo/ecdh.js +80 -0
  127. package/dist/src/bitgo/enterprise/enterprise.d.ts +64 -0
  128. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -0
  129. package/dist/src/bitgo/enterprise/enterprise.js +120 -0
  130. package/dist/src/bitgo/enterprise/enterprises.d.ts +25 -0
  131. package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -0
  132. package/dist/src/bitgo/enterprise/enterprises.js +70 -0
  133. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +15 -0
  134. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -0
  135. package/dist/src/bitgo/enterprise/iEnterprise.js +3 -0
  136. package/dist/src/bitgo/enterprise/iEnterprises.d.ts +10 -0
  137. package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -0
  138. package/dist/src/bitgo/enterprise/iEnterprises.js +3 -0
  139. package/dist/src/bitgo/enterprise/index.d.ts +5 -0
  140. package/dist/src/bitgo/enterprise/index.d.ts.map +1 -0
  141. package/dist/src/bitgo/enterprise/index.js +17 -0
  142. package/dist/src/{v2 → bitgo}/environments.d.ts +0 -0
  143. package/dist/src/bitgo/environments.d.ts.map +1 -0
  144. package/dist/src/bitgo/environments.js +142 -0
  145. package/dist/src/bitgo/errors.d.ts +83 -0
  146. package/dist/src/bitgo/errors.d.ts.map +1 -0
  147. package/dist/src/bitgo/errors.js +163 -0
  148. package/dist/src/bitgo/index.d.ts +26 -0
  149. package/dist/src/bitgo/index.d.ts.map +1 -0
  150. package/dist/src/bitgo/index.js +51 -0
  151. package/dist/src/bitgo/internal/index.d.ts +3 -0
  152. package/dist/src/bitgo/internal/index.d.ts.map +1 -0
  153. package/dist/src/bitgo/internal/index.js +15 -0
  154. package/dist/src/bitgo/internal/internal.d.ts +19 -0
  155. package/dist/src/bitgo/internal/internal.d.ts.map +1 -0
  156. package/dist/src/bitgo/internal/internal.js +33 -0
  157. package/dist/src/bitgo/internal/keycard.d.ts +33 -0
  158. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -0
  159. package/dist/src/bitgo/internal/keycard.js +304 -0
  160. package/dist/src/bitgo/keychain/iKeychains.d.ts +118 -0
  161. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -0
  162. package/dist/src/bitgo/keychain/iKeychains.js +10 -0
  163. package/dist/src/bitgo/keychain/index.d.ts +3 -0
  164. package/dist/src/bitgo/keychain/index.d.ts.map +1 -0
  165. package/dist/src/bitgo/keychain/index.js +15 -0
  166. package/dist/src/bitgo/keychain/keychains.d.ts +90 -0
  167. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -0
  168. package/dist/src/bitgo/keychain/keychains.js +280 -0
  169. package/dist/src/bitgo/market/iMarkets.d.ts +12 -0
  170. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -0
  171. package/dist/src/bitgo/market/iMarkets.js +3 -0
  172. package/dist/src/bitgo/market/index.d.ts +3 -0
  173. package/dist/src/bitgo/market/index.d.ts.map +1 -0
  174. package/dist/src/bitgo/market/index.js +15 -0
  175. package/dist/src/bitgo/market/markets.d.ts +29 -0
  176. package/dist/src/bitgo/market/markets.d.ts.map +1 -0
  177. package/dist/src/bitgo/market/markets.js +70 -0
  178. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +73 -0
  179. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -0
  180. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +28 -0
  181. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts +16 -0
  182. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts.map +1 -0
  183. package/dist/src/bitgo/pendingApproval/iPendingApprovals.js +3 -0
  184. package/dist/src/bitgo/pendingApproval/index.d.ts +5 -0
  185. package/dist/src/bitgo/pendingApproval/index.d.ts.map +1 -0
  186. package/dist/src/bitgo/pendingApproval/index.js +17 -0
  187. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +99 -0
  188. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -0
  189. package/dist/src/bitgo/pendingApproval/pendingApproval.js +319 -0
  190. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts +19 -0
  191. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts.map +1 -0
  192. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +76 -0
  193. package/dist/src/bitgo/recovery/index.d.ts +2 -0
  194. package/dist/src/bitgo/recovery/index.d.ts.map +1 -0
  195. package/dist/src/bitgo/recovery/index.js +14 -0
  196. package/dist/src/bitgo/recovery/initiate.d.ts +49 -0
  197. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -0
  198. package/dist/src/bitgo/recovery/initiate.js +119 -0
  199. package/dist/src/bitgo/trading/affirmation.d.ts +35 -0
  200. package/dist/src/bitgo/trading/affirmation.d.ts.map +1 -0
  201. package/dist/src/bitgo/trading/affirmation.js +53 -0
  202. package/dist/src/bitgo/trading/affirmations.d.ts +23 -0
  203. package/dist/src/bitgo/trading/affirmations.d.ts.map +1 -0
  204. package/dist/src/bitgo/trading/affirmations.js +45 -0
  205. package/dist/src/bitgo/trading/iAffirmation.d.ts +15 -0
  206. package/dist/src/bitgo/trading/iAffirmation.d.ts.map +1 -0
  207. package/dist/src/bitgo/trading/iAffirmation.js +13 -0
  208. package/dist/src/bitgo/trading/iAffirmations.d.ts +10 -0
  209. package/dist/src/bitgo/trading/iAffirmations.d.ts.map +1 -0
  210. package/dist/src/bitgo/trading/iAffirmations.js +3 -0
  211. package/dist/src/bitgo/trading/iSettlement.d.ts +25 -0
  212. package/dist/src/bitgo/trading/iSettlement.d.ts.map +1 -0
  213. package/dist/src/bitgo/trading/iSettlement.js +17 -0
  214. package/dist/src/bitgo/trading/iSettlements.d.ts +19 -0
  215. package/dist/src/bitgo/trading/iSettlements.d.ts.map +1 -0
  216. package/dist/src/bitgo/trading/iSettlements.js +3 -0
  217. package/dist/src/bitgo/trading/iTradingAccount.d.ts +41 -0
  218. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -0
  219. package/dist/src/bitgo/trading/iTradingAccount.js +3 -0
  220. package/dist/src/bitgo/trading/iTradingPartner.d.ts +14 -0
  221. package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +1 -0
  222. package/dist/src/bitgo/trading/iTradingPartner.js +17 -0
  223. package/dist/src/bitgo/trading/iTradingPartners.d.ts +15 -0
  224. package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +1 -0
  225. package/dist/src/bitgo/trading/iTradingPartners.js +9 -0
  226. package/dist/src/bitgo/trading/index.d.ts +18 -0
  227. package/dist/src/bitgo/trading/index.d.ts.map +1 -0
  228. package/dist/src/bitgo/trading/index.js +30 -0
  229. package/dist/src/bitgo/trading/lock.d.ts +16 -0
  230. package/dist/src/bitgo/trading/lock.d.ts.map +1 -0
  231. package/dist/src/bitgo/trading/lock.js +12 -0
  232. package/dist/src/bitgo/trading/payload.d.ts +22 -0
  233. package/dist/src/bitgo/trading/payload.d.ts.map +1 -0
  234. package/dist/src/bitgo/trading/payload.js +3 -0
  235. package/dist/src/bitgo/trading/settlement.d.ts +16 -0
  236. package/dist/src/bitgo/trading/settlement.d.ts.map +1 -0
  237. package/dist/src/bitgo/trading/settlement.js +21 -0
  238. package/dist/src/bitgo/trading/settlements.d.ts +32 -0
  239. package/dist/src/bitgo/trading/settlements.d.ts.map +1 -0
  240. package/dist/src/bitgo/trading/settlements.js +61 -0
  241. package/dist/src/bitgo/trading/trade.d.ts +29 -0
  242. package/dist/src/bitgo/trading/trade.d.ts.map +1 -0
  243. package/dist/src/bitgo/trading/trade.js +11 -0
  244. package/dist/src/bitgo/trading/tradingAccount.d.ts +53 -0
  245. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -0
  246. package/dist/src/bitgo/trading/tradingAccount.js +127 -0
  247. package/dist/src/bitgo/trading/tradingPartner.d.ts +26 -0
  248. package/dist/src/bitgo/trading/tradingPartner.d.ts.map +1 -0
  249. package/dist/src/bitgo/trading/tradingPartner.js +31 -0
  250. package/dist/src/bitgo/trading/tradingPartners.d.ts +24 -0
  251. package/dist/src/bitgo/trading/tradingPartners.d.ts.map +1 -0
  252. package/dist/src/bitgo/trading/tradingPartners.js +32 -0
  253. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +35 -0
  254. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -0
  255. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +95 -0
  256. package/dist/src/bitgo/tss/ecdsa/index.d.ts +4 -0
  257. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -0
  258. package/dist/src/bitgo/tss/ecdsa/index.js +26 -0
  259. package/dist/src/bitgo/tss/ecdsa/types.d.ts +30 -0
  260. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -0
  261. package/dist/src/bitgo/tss/ecdsa/types.js +3 -0
  262. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +102 -0
  263. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -0
  264. package/dist/src/bitgo/tss/eddsa/eddsa.js +256 -0
  265. package/dist/src/bitgo/tss/eddsa/index.d.ts +6 -0
  266. package/dist/src/bitgo/tss/eddsa/index.d.ts.map +1 -0
  267. package/dist/src/bitgo/tss/eddsa/index.js +37 -0
  268. package/dist/src/bitgo/tss/eddsa/types.d.ts +23 -0
  269. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -0
  270. package/dist/src/bitgo/tss/eddsa/types.js +3 -0
  271. package/dist/src/bitgo/tss/index.d.ts +6 -0
  272. package/dist/src/bitgo/tss/index.d.ts.map +1 -0
  273. package/dist/src/bitgo/tss/index.js +42 -0
  274. package/dist/src/bitgo/tss/types.d.ts +6 -0
  275. package/dist/src/bitgo/tss/types.d.ts.map +1 -0
  276. package/dist/src/bitgo/tss/types.js +10 -0
  277. package/dist/src/bitgo/types.d.ts +4 -0
  278. package/dist/src/bitgo/types.d.ts.map +1 -0
  279. package/dist/src/bitgo/types.js +3 -0
  280. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +6 -0
  281. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
  282. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +30 -0
  283. package/dist/src/bitgo/utils/blsUtils.d.ts +51 -0
  284. package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -0
  285. package/dist/src/bitgo/utils/blsUtils.js +166 -0
  286. package/dist/src/bitgo/utils/iBlsUtils.d.ts +14 -0
  287. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +1 -0
  288. package/dist/src/bitgo/utils/iBlsUtils.js +3 -0
  289. package/dist/src/bitgo/utils/index.d.ts +12 -0
  290. package/dist/src/bitgo/utils/index.d.ts.map +1 -0
  291. package/dist/src/bitgo/utils/index.js +37 -0
  292. package/dist/src/bitgo/utils/mpcUtils.d.ts +31 -0
  293. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -0
  294. package/dist/src/bitgo/utils/mpcUtils.js +55 -0
  295. package/dist/src/bitgo/utils/opengpgUtils.d.ts +51 -0
  296. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -0
  297. package/dist/src/bitgo/utils/opengpgUtils.js +136 -0
  298. package/dist/src/bitgo/utils/promise-utils.d.ts +5 -0
  299. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -0
  300. package/dist/src/bitgo/utils/promise-utils.js +12 -0
  301. package/dist/src/bitgo/utils/triple.d.ts +3 -0
  302. package/dist/src/bitgo/utils/triple.d.ts.map +1 -0
  303. package/dist/src/bitgo/utils/triple.js +8 -0
  304. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +117 -0
  305. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -0
  306. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +351 -0
  307. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  308. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -0
  309. package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -0
  310. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +72 -0
  311. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -0
  312. package/dist/src/bitgo/utils/tss/eddsa/types.js +10 -0
  313. package/dist/src/bitgo/utils/tss/index.d.ts +4 -0
  314. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -0
  315. package/dist/src/bitgo/utils/tss/index.js +29 -0
  316. package/dist/src/bitgo/utils/util.d.ts +77 -0
  317. package/dist/src/bitgo/utils/util.d.ts.map +1 -0
  318. package/dist/src/bitgo/utils/util.js +198 -0
  319. package/dist/src/bitgo/wallet/iWallet.d.ts +510 -0
  320. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -0
  321. package/dist/src/bitgo/wallet/iWallet.js +3 -0
  322. package/dist/src/bitgo/wallet/iWallets.d.ts +105 -0
  323. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -0
  324. package/dist/src/bitgo/wallet/iWallets.js +3 -0
  325. package/dist/src/bitgo/wallet/index.d.ts +5 -0
  326. package/dist/src/bitgo/wallet/index.d.ts.map +1 -0
  327. package/dist/src/bitgo/wallet/index.js +17 -0
  328. package/dist/src/bitgo/wallet/wallet.d.ts +650 -0
  329. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -0
  330. package/dist/src/bitgo/wallet/wallet.js +2039 -0
  331. package/dist/src/bitgo/wallet/wallets.d.ts +134 -0
  332. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -0
  333. package/dist/src/bitgo/wallet/wallets.js +605 -0
  334. package/dist/src/bitgo/webhook/iWebhooks.d.ts +26 -0
  335. package/dist/src/bitgo/webhook/iWebhooks.d.ts.map +1 -0
  336. package/dist/src/bitgo/webhook/iWebhooks.js +3 -0
  337. package/dist/src/bitgo/webhook/index.d.ts +3 -0
  338. package/dist/src/bitgo/webhook/index.d.ts.map +1 -0
  339. package/dist/src/bitgo/webhook/index.js +15 -0
  340. package/dist/src/bitgo/webhook/webhooks.d.ts +43 -0
  341. package/dist/src/bitgo/webhook/webhooks.d.ts.map +1 -0
  342. package/dist/src/bitgo/webhook/webhooks.js +102 -0
  343. package/dist/src/{bigojsError.d.ts → bitgojsError.d.ts} +1 -1
  344. package/dist/src/bitgojsError.d.ts.map +1 -0
  345. package/dist/src/bitgojsError.js +11 -0
  346. package/dist/src/common.d.ts +1 -1
  347. package/dist/src/common.d.ts.map +1 -1
  348. package/dist/src/common.js +3 -3
  349. package/dist/src/index.d.ts +4 -2
  350. package/dist/src/index.d.ts.map +1 -1
  351. package/dist/src/index.js +6 -5
  352. package/dist/tsconfig.tsbuildinfo +4441 -457
  353. package/package.json +32 -13
  354. package/dist/src/bigojsError.d.ts.map +0 -1
  355. package/dist/src/bigojsError.js +0 -11
  356. package/dist/src/v2/environments.d.ts.map +0 -1
  357. package/dist/src/v2/environments.js +0 -142
  358. package/dist/src/v2/index.d.ts +0 -3
  359. package/dist/src/v2/index.d.ts.map +0 -1
  360. package/dist/src/v2/types.d.ts +0 -2
  361. package/dist/src/v2/types.d.ts.map +0 -1
  362. package/dist/src/v2/types.js +0 -3
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const paillierBigint = __importStar(require("paillier-bigint"));
26
+ const crypto_1 = require("crypto");
27
+ const crypto_2 = require("../../../util/crypto");
28
+ const util_1 = require("../../util");
29
+ const curves_1 = require("../../curves");
30
+ const shamir_1 = __importDefault(require("../../shamir"));
31
+ class Ecdsa {
32
+ /**
33
+ * Generate shares for participant at index and split keys `(threshold,numShares)` ways.
34
+ * @param {number} index participant index
35
+ * @param {number} threshold Signing threshold
36
+ * @param {number} numShares Number of shares
37
+ * @returns {Promise<KeyShare>} Returns the private p-share
38
+ * and n-shares to be distributed to participants at their corresponding index.
39
+ */
40
+ async keyShare(index, threshold, numShares) {
41
+ if (!(index > 0 && index <= numShares && threshold <= numShares && threshold > 0)) {
42
+ throw 'Invalid KeyShare Config';
43
+ }
44
+ // Generate additively homomorphic encryption key.
45
+ const { publicKey, privateKey } = await paillierBigint.generateRandomKeys(3072, true);
46
+ const u = Ecdsa.curve.scalarRandom();
47
+ const y = Ecdsa.curve.basePointMult(u);
48
+ const chaincode = crypto_1.randomBytes(32);
49
+ // Compute secret shares of the private key
50
+ const uShares = Ecdsa.shamir.split(u, threshold, numShares);
51
+ const currentParticipant = {
52
+ i: index,
53
+ l: crypto_2.bigIntToHex(privateKey.lambda),
54
+ m: crypto_2.bigIntToHex(privateKey.mu),
55
+ n: crypto_2.bigIntToHex(publicKey.n),
56
+ y: crypto_2.bigIntToHex(y),
57
+ u: crypto_2.bigIntToHex(uShares[index]),
58
+ chaincode: chaincode.toString('hex'),
59
+ };
60
+ const keyShare = {
61
+ pShare: currentParticipant,
62
+ nShares: {},
63
+ };
64
+ for (const share in uShares) {
65
+ const participantIndex = parseInt(share, 10);
66
+ if (participantIndex !== index) {
67
+ keyShare.nShares[participantIndex] = {
68
+ i: participantIndex,
69
+ j: currentParticipant['i'],
70
+ n: crypto_2.bigIntToHex(publicKey.n),
71
+ y: crypto_2.bigIntToHex(y),
72
+ u: crypto_2.bigIntToHex(uShares[participantIndex]),
73
+ chaincode: chaincode.toString('hex'),
74
+ };
75
+ }
76
+ }
77
+ return keyShare;
78
+ }
79
+ /**
80
+ * Combine data shared during the key generation protocol.
81
+ * @param {KeyShare} participantShares private p-share and
82
+ * n-shares received from all other participants.
83
+ * @returns {KeyCombined} Returns the participant private x-share
84
+ * and y-shares to be used when generating signing shares.
85
+ */
86
+ keyCombine(pShare, nShares) {
87
+ const allShares = [pShare, ...nShares];
88
+ // Compute the public key.
89
+ const y = allShares.map((participant) => BigInt(participant['y'])).reduce(Ecdsa.curve.pointAdd);
90
+ // Add secret shares
91
+ const x = allShares.map((participant) => BigInt(participant['u'])).reduce(Ecdsa.curve.scalarAdd);
92
+ // Chaincode will be used in future when we add support for key derivation for ecdsa
93
+ const chaincodes = [pShare, ...nShares].map(({ chaincode }) => util_1.bigIntFromBufferBE(Buffer.from(chaincode, 'hex')));
94
+ const chaincode = chaincodes.reduce((acc, chaincode) => Ecdsa.curve.scalarReduce(acc + chaincode));
95
+ const participants = {
96
+ xShare: {
97
+ i: pShare.i,
98
+ l: pShare.l,
99
+ m: pShare.m,
100
+ n: pShare.n,
101
+ y: crypto_2.bigIntToHex(y),
102
+ x: crypto_2.bigIntToHex(x),
103
+ chaincode: util_1.bigIntToBufferBE(chaincode, 32).toString('hex'),
104
+ },
105
+ yShares: {},
106
+ };
107
+ for (const share in nShares) {
108
+ const participantIndex = nShares[share]['j'];
109
+ participants.yShares[participantIndex] = {
110
+ i: pShare.i,
111
+ j: nShares[share]['j'],
112
+ n: nShares[share]['n'],
113
+ };
114
+ }
115
+ return participants;
116
+ }
117
+ }
118
+ exports.default = Ecdsa;
119
+ Ecdsa.curve = new curves_1.Secp256k1Curve();
120
+ Ecdsa.shamir = new shamir_1.default(Ecdsa.curve);
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9lY2RzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBa0Q7QUFDbEQsbUNBQXFDO0FBQ3JDLGlEQUFtRDtBQUNuRCxxQ0FBa0U7QUFDbEUseUNBQThDO0FBQzlDLDBEQUFrQztBQUdsQyxNQUFxQixLQUFLO0lBR3hCOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFNBQWlCO1FBQ2hFLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNqRixNQUFNLHlCQUF5QixDQUFDO1NBQ2pDO1FBQ0Qsa0RBQWtEO1FBQ2xELE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsTUFBTSxTQUFTLEdBQUcsb0JBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQywyQ0FBMkM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1RCxNQUFNLGtCQUFrQixHQUFXO1lBQ2pDLENBQUMsRUFBRSxLQUFLO1lBQ1IsQ0FBQyxFQUFFLG9CQUFX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QUMsQ0FBQztnQkFDakIsU0FBUyxFQUFFLHVCQUFnQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2FBQzNEO1lBQ0QsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUU7WUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHO2dCQUN2QyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ3RCLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ3ZCLENBQUM7U0FDSDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7O0FBNUZILHdCQTZGQztBQTVGUSxXQUFLLEdBQW1CLElBQUksdUJBQWMsRUFBRSxDQUFDO0FBQzdDLFlBQU0sR0FBVyxJQUFJLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGFpbGxpZXJCaWdpbnQgZnJvbSAncGFpbGxpZXItYmlnaW50JztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGJpZ0ludFRvSGV4IH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jcnlwdG8nO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBTZWNwMjU2azFDdXJ2ZSB9IGZyb20gJy4uLy4uL2N1cnZlcyc7XG5pbXBvcnQgU2hhbWlyIGZyb20gJy4uLy4uL3NoYW1pcic7XG5pbXBvcnQgeyBOU2hhcmUsIFBTaGFyZSwgS2V5U2hhcmUsIEtleUNvbWJpbmVkIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVjZHNhIHtcbiAgc3RhdGljIGN1cnZlOiBTZWNwMjU2azFDdXJ2ZSA9IG5ldyBTZWNwMjU2azFDdXJ2ZSgpO1xuICBzdGF0aWMgc2hhbWlyOiBTaGFtaXIgPSBuZXcgU2hhbWlyKEVjZHNhLmN1cnZlKTtcbiAgLyoqXG4gICAqIEdlbmVyYXRlIHNoYXJlcyBmb3IgcGFydGljaXBhbnQgYXQgaW5kZXggYW5kIHNwbGl0IGtleXMgYCh0aHJlc2hvbGQsbnVtU2hhcmVzKWAgd2F5cy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IHBhcnRpY2lwYW50IGluZGV4XG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aHJlc2hvbGQgU2lnbmluZyB0aHJlc2hvbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IG51bVNoYXJlcyAgTnVtYmVyIG9mIHNoYXJlc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxLZXlTaGFyZT59IFJldHVybnMgdGhlIHByaXZhdGUgcC1zaGFyZVxuICAgKiBhbmQgbi1zaGFyZXMgdG8gYmUgZGlzdHJpYnV0ZWQgdG8gcGFydGljaXBhbnRzIGF0IHRoZWlyIGNvcnJlc3BvbmRpbmcgaW5kZXguXG4gICAqL1xuICBhc3luYyBrZXlTaGFyZShpbmRleDogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlciwgbnVtU2hhcmVzOiBudW1iZXIpOiBQcm9taXNlPEtleVNoYXJlPiB7XG4gICAgaWYgKCEoaW5kZXggPiAwICYmIGluZGV4IDw9IG51bVNoYXJlcyAmJiB0aHJlc2hvbGQgPD0gbnVtU2hhcmVzICYmIHRocmVzaG9sZCA+IDApKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBLZXlTaGFyZSBDb25maWcnO1xuICAgIH1cbiAgICAvLyBHZW5lcmF0ZSBhZGRpdGl2ZWx5IGhvbW9tb3JwaGljIGVuY3J5cHRpb24ga2V5LlxuICAgIGNvbnN0IHsgcHVibGljS2V5LCBwcml2YXRlS2V5IH0gPSBhd2FpdCBwYWlsbGllckJpZ2ludC5nZW5lcmF0ZVJhbmRvbUtleXMoMzA3MiwgdHJ1ZSk7XG4gICAgY29uc3QgdSA9IEVjZHNhLmN1cnZlLnNjYWxhclJhbmRvbSgpO1xuICAgIGNvbnN0IHkgPSBFY2RzYS5jdXJ2ZS5iYXNlUG9pbnRNdWx0KHUpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IHJhbmRvbUJ5dGVzKDMyKTtcbiAgICAvLyBDb21wdXRlIHNlY3JldCBzaGFyZXMgb2YgdGhlIHByaXZhdGUga2V5XG4gICAgY29uc3QgdVNoYXJlcyA9IEVjZHNhLnNoYW1pci5zcGxpdCh1LCB0aHJlc2hvbGQsIG51bVNoYXJlcyk7XG4gICAgY29uc3QgY3VycmVudFBhcnRpY2lwYW50OiBQU2hhcmUgPSB7XG4gICAgICBpOiBpbmRleCxcbiAgICAgIGw6IGJpZ0ludFRvSGV4KHByaXZhdGVLZXkubGFtYmRhKSxcbiAgICAgIG06IGJpZ0ludFRvSGV4KHByaXZhdGVLZXkubXUpLFxuICAgICAgbjogYmlnSW50VG9IZXgocHVibGljS2V5Lm4pLFxuICAgICAgeTogYmlnSW50VG9IZXgoeSksXG4gICAgICB1OiBiaWdJbnRUb0hleCh1U2hhcmVzW2luZGV4XSksXG4gICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICBjb25zdCBrZXlTaGFyZTogS2V5U2hhcmUgPSB7XG4gICAgICBwU2hhcmU6IGN1cnJlbnRQYXJ0aWNpcGFudCxcbiAgICAgIG5TaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHNoYXJlIGluIHVTaGFyZXMpIHtcbiAgICAgIGNvbnN0IHBhcnRpY2lwYW50SW5kZXggPSBwYXJzZUludChzaGFyZSwgMTApO1xuICAgICAgaWYgKHBhcnRpY2lwYW50SW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgIGtleVNoYXJlLm5TaGFyZXNbcGFydGljaXBhbnRJbmRleF0gPSB7XG4gICAgICAgICAgaTogcGFydGljaXBhbnRJbmRleCxcbiAgICAgICAgICBqOiBjdXJyZW50UGFydGljaXBhbnRbJ2knXSxcbiAgICAgICAgICBuOiBiaWdJbnRUb0hleChwdWJsaWNLZXkubiksXG4gICAgICAgICAgeTogYmlnSW50VG9IZXgoeSksXG4gICAgICAgICAgdTogYmlnSW50VG9IZXgodVNoYXJlc1twYXJ0aWNpcGFudEluZGV4XSksXG4gICAgICAgICAgY2hhaW5jb2RlOiBjaGFpbmNvZGUudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9IGFzIE5TaGFyZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleVNoYXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbWJpbmUgZGF0YSBzaGFyZWQgZHVyaW5nIHRoZSBrZXkgZ2VuZXJhdGlvbiBwcm90b2NvbC5cbiAgICogQHBhcmFtIHtLZXlTaGFyZX0gcGFydGljaXBhbnRTaGFyZXMgcHJpdmF0ZSBwLXNoYXJlIGFuZFxuICAgKiBuLXNoYXJlcyByZWNlaXZlZCBmcm9tIGFsbCBvdGhlciBwYXJ0aWNpcGFudHMuXG4gICAqIEByZXR1cm5zIHtLZXlDb21iaW5lZH0gUmV0dXJucyB0aGUgcGFydGljaXBhbnQgcHJpdmF0ZSB4LXNoYXJlXG4gICAqIGFuZCB5LXNoYXJlcyB0byBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyBzaWduaW5nIHNoYXJlcy5cbiAgICovXG4gIGtleUNvbWJpbmUocFNoYXJlOiBQU2hhcmUsIG5TaGFyZXM6IE5TaGFyZVtdKTogS2V5Q29tYmluZWQge1xuICAgIGNvbnN0IGFsbFNoYXJlcyA9IFtwU2hhcmUsIC4uLm5TaGFyZXNdO1xuICAgIC8vIENvbXB1dGUgdGhlIHB1YmxpYyBrZXkuXG4gICAgY29uc3QgeSA9IGFsbFNoYXJlcy5tYXAoKHBhcnRpY2lwYW50KSA9PiBCaWdJbnQocGFydGljaXBhbnRbJ3knXSkpLnJlZHVjZShFY2RzYS5jdXJ2ZS5wb2ludEFkZCk7XG4gICAgLy8gQWRkIHNlY3JldCBzaGFyZXNcbiAgICBjb25zdCB4ID0gYWxsU2hhcmVzLm1hcCgocGFydGljaXBhbnQpID0+IEJpZ0ludChwYXJ0aWNpcGFudFsndSddKSkucmVkdWNlKEVjZHNhLmN1cnZlLnNjYWxhckFkZCk7XG5cbiAgICAvLyBDaGFpbmNvZGUgd2lsbCBiZSB1c2VkIGluIGZ1dHVyZSB3aGVuIHdlIGFkZCBzdXBwb3J0IGZvciBrZXkgZGVyaXZhdGlvbiBmb3IgZWNkc2FcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW3BTaGFyZSwgLi4ublNoYXJlc10ubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZSgoYWNjLCBjaGFpbmNvZGUpID0+IEVjZHNhLmN1cnZlLnNjYWxhclJlZHVjZShhY2MgKyBjaGFpbmNvZGUpKTtcblxuICAgIGNvbnN0IHBhcnRpY2lwYW50czogS2V5Q29tYmluZWQgPSB7XG4gICAgICB4U2hhcmU6IHtcbiAgICAgICAgaTogcFNoYXJlLmksXG4gICAgICAgIGw6IHBTaGFyZS5sLFxuICAgICAgICBtOiBwU2hhcmUubSxcbiAgICAgICAgbjogcFNoYXJlLm4sXG4gICAgICAgIHk6IGJpZ0ludFRvSGV4KHkpLFxuICAgICAgICB4OiBiaWdJbnRUb0hleCh4KSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0sXG4gICAgICB5U2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBzaGFyZSBpbiBuU2hhcmVzKSB7XG4gICAgICBjb25zdCBwYXJ0aWNpcGFudEluZGV4ID0gblNoYXJlc1tzaGFyZV1bJ2onXTtcbiAgICAgIHBhcnRpY2lwYW50cy55U2hhcmVzW3BhcnRpY2lwYW50SW5kZXhdID0ge1xuICAgICAgICBpOiBwU2hhcmUuaSxcbiAgICAgICAgajogblNoYXJlc1tzaGFyZV1bJ2onXSxcbiAgICAgICAgbjogblNoYXJlc1tzaGFyZV1bJ24nXSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBwYXJ0aWNpcGFudHM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ import Ecdsa from './ecdsa';
2
+ export * as ECDSA from './types';
3
+ export default Ecdsa;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,eAAe,KAAK,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ECDSA = void 0;
26
+ const ecdsa_1 = __importDefault(require("./ecdsa"));
27
+ exports.ECDSA = __importStar(require("./types"));
28
+ exports.default = ecdsa_1.default;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLGlEQUFpQztBQUVqQyxrQkFBZSxlQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWNkc2EgZnJvbSAnLi9lY2RzYSc7XG5cbmV4cG9ydCAqIGFzIEVDRFNBIGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBFY2RzYTtcbiJdfQ==
@@ -0,0 +1,40 @@
1
+ export interface PShare {
2
+ i: number;
3
+ l: string;
4
+ m: string;
5
+ u: string;
6
+ n: string;
7
+ y: string;
8
+ chaincode: string;
9
+ }
10
+ export interface NShare {
11
+ i: number;
12
+ j: number;
13
+ n: string;
14
+ u: string;
15
+ y: string;
16
+ chaincode: string;
17
+ }
18
+ export declare type KeyShare = {
19
+ pShare: PShare;
20
+ nShares: Record<number, NShare>;
21
+ };
22
+ export interface XShare {
23
+ i: number;
24
+ l: string;
25
+ m: string;
26
+ n: string;
27
+ y: string;
28
+ x: string;
29
+ chaincode: string;
30
+ }
31
+ export interface YShare {
32
+ i: number;
33
+ j: number;
34
+ n: string;
35
+ }
36
+ export interface KeyCombined {
37
+ xShare: XShare;
38
+ yShares: Record<number, YShare>;
39
+ }
40
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/ecdsa/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oBAAY,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAGF,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lY2RzYS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUHJpdmF0ZSBzaGFyZSBvZiB0aGUgdXNlciBnZW5lcmF0ZWQgZHVyaW5nIGtleSBnZW5lcmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFBTaGFyZSB7XG4gIGk6IG51bWJlcjsgLy8gcGFydGljaXBhbnQgaW5kZXhcbiAgbDogc3RyaW5nOyAvLyBsYW1iZGEgdmFsdWUgZm9yIHBhaWxsaWVyIHNlY3JldCBrZXlcbiAgbTogc3RyaW5nOyAvLyBtdSB2YWx1ZSBmb3IgcGFpbGxpZXIgc2VjcmV0IGtleVxuICB1OiBzdHJpbmc7IC8vIHNoYW1pciBzaGFyZSBvZiBzZWNyZXRcbiAgbjogc3RyaW5nOyAvLyBuID0+IChwIC4gcSkgd2hlcmUgcCBhbmQgcSBhcmUgdGhlIHR3byByYW5kb20gcHJpbWUgbnVtYmVycyBjaG9zZW4gZm9yIHBhaWxsaWVyIGVuY3J5cHRpb25cbiAgeTogc3RyaW5nO1xuICBjaGFpbmNvZGU6IHN0cmluZztcbn1cblxuLy8gTlNoYXJlcyB3aGljaCBpcyBzaGFyZWQgdG8gdGhlIG90aGVyIHBhcnRpY2lwYW50cyBkdXJpbmcga2V5IGdlbmVyYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgTlNoYXJlIHtcbiAgaTogbnVtYmVyOyAvLyBwYXJ0aWNpcGFudCBpbmRleFxuICBqOiBudW1iZXI7IC8vIHRhcmdldCBwYXJ0aWNpcGFudCBpbmRleFxuICBuOiBzdHJpbmc7XG4gIHU6IHN0cmluZzsgLy8gc2hhbWlyIHNoYXJlIG9mIHNlY3JldCBhdCBqJ3RoIGluZGV4XG4gIHk6IHN0cmluZztcbiAgY2hhaW5jb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEtleVNoYXJlID0ge1xuICBwU2hhcmU6IFBTaGFyZTtcbiAgblNoYXJlczogUmVjb3JkPG51bWJlciwgTlNoYXJlPjtcbn07XG5cbi8vIFByaXZhdGUgWFNoYXJlIG9mIHRoZSBjdXJyZW50IHBhcnRpY2lwYW50XG5leHBvcnQgaW50ZXJmYWNlIFhTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgbDogc3RyaW5nO1xuICBtOiBzdHJpbmc7XG4gIG46IHN0cmluZztcbiAgeTogc3RyaW5nOyAvLyBjb21iaW5lZCBwdWJsaWMga2V5XG4gIHg6IHN0cmluZzsgLy8gY29tYmluZWQgc2VjcmV0XG4gIGNoYWluY29kZTogc3RyaW5nO1xufVxuXG4vLyBZU2hhcmVzIHVzZWQgZHVyaW5nIHNpZ25hdHVyZSBnZW5lcmF0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFlTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgajogbnVtYmVyO1xuICBuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Q29tYmluZWQge1xuICB4U2hhcmU6IFhTaGFyZTtcbiAgeVNoYXJlczogUmVjb3JkPG51bWJlciwgWVNoYXJlPjtcbn1cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ /// <reference types="node" />
2
+ import { Ed25519Curve } from '../../curves';
3
+ import Shamir from '../../shamir';
4
+ import HDTree from '../../hdTree';
5
+ import { KeyShare, UShare, YShare, KeyCombine, PShare, SubkeyShare, JShare, SignShare, Signature, XShare, RShare, GShare } from './types';
6
+ export default class Eddsa {
7
+ static curve: Ed25519Curve;
8
+ static shamir: Shamir;
9
+ static initialized: boolean;
10
+ static initialize(hdTree?: HDTree): Promise<Eddsa>;
11
+ hdTree?: HDTree;
12
+ constructor(hdTree?: HDTree);
13
+ keyShare(index: number, threshold: number, numShares: number, seed?: Buffer): KeyShare;
14
+ keyCombine(uShare: UShare, yShares: YShare[]): KeyCombine;
15
+ /**
16
+ * Derives a child common keychain from common keychain
17
+ *
18
+ * @param commonKeychain - common keychain as a hex string
19
+ * @param path - bip32 path
20
+ * @return {string} derived common keychain as a hex string
21
+ */
22
+ deriveUnhardened(commonKeychain: string, path: string): string;
23
+ keyDerive(uShare: UShare, yShares: YShare[], path: string): SubkeyShare;
24
+ signShare(message: Buffer, pShare: PShare, jShares: JShare[], seed?: Buffer): SignShare;
25
+ sign(message: Buffer, playerShare: XShare, rShares: RShare[], yShares?: YShare[]): GShare;
26
+ signCombine(shares: GShare[]): Signature;
27
+ verify(message: Buffer, signature: Signature): boolean;
28
+ }
29
+ //# sourceMappingURL=eddsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/eddsa/eddsa.ts"],"names":[],"mappings":";AAiCA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,OAAO,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,UAAU,EACV,MAAM,EACN,WAAW,EACX,MAAM,EACN,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACP,MAAM,SAAS,CAAC;AAKjB,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,KAAK,EAAE,YAAY,CAAsB;IAChD,MAAM,CAAC,MAAM,EAAE,MAAM,CAA2B;IAChD,MAAM,CAAC,WAAW,UAAS;WAEd,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IASxD,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,MAAM,CAAC,EAAE,MAAM;IAI3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ;IA0CtF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU;IAgCzD;;;;;;OAMG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAqB9D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IA0DvE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS;IA6CvF,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,MAAM;IA0B7F,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;IAkBxC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;CAKvD"}
@@ -0,0 +1,276 @@
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, seed) {
193
+ if (seed && seed.length !== 64) {
194
+ throw new Error('Seed must have length 64');
195
+ }
196
+ const indices = [pShare, ...jShares].map(({ i }) => i);
197
+ const split_u = Eddsa.shamir.split(util_1.bigIntFromBufferLE(Buffer.from(pShare.u, 'hex')), pShare.t, pShare.n);
198
+ // Generate nonce contribution.
199
+ const prefix = Buffer.from(pShare.prefix, 'hex');
200
+ const randomBuffer = seed !== null && seed !== void 0 ? seed : crypto_1.randomBytes(64);
201
+ const digest = crypto_1.createHash('sha512')
202
+ .update(Buffer.concat([prefix, message, randomBuffer]))
203
+ .digest();
204
+ const r = Eddsa.curve.scalarReduce(util_1.bigIntFromBufferLE(digest));
205
+ const R = Eddsa.curve.basePointMult(r);
206
+ const split_r = Eddsa.shamir.split(r, indices.length, indices.length, indices);
207
+ const P_i = {
208
+ i: pShare.i,
209
+ y: pShare.y,
210
+ u: util_1.bigIntToBufferLE(split_u[pShare.i], 32).toString('hex'),
211
+ r: util_1.bigIntToBufferLE(split_r[pShare.i], 32).toString('hex'),
212
+ R: util_1.bigIntToBufferLE(R, 32).toString('hex'),
213
+ };
214
+ const resultShares = {
215
+ xShare: P_i,
216
+ rShares: {},
217
+ };
218
+ for (let ind = 0; ind < jShares.length; ind++) {
219
+ const S_j = jShares[ind];
220
+ resultShares.rShares[S_j.i] = {
221
+ i: S_j.i,
222
+ j: pShare.i,
223
+ u: util_1.bigIntToBufferLE(split_u[S_j.i], 32).toString('hex'),
224
+ r: util_1.bigIntToBufferLE(split_r[S_j.i], 32).toString('hex'),
225
+ R: util_1.bigIntToBufferLE(R, 32).toString('hex'),
226
+ };
227
+ }
228
+ return resultShares;
229
+ }
230
+ sign(message, playerShare, rShares, yShares = []) {
231
+ const S_i = playerShare;
232
+ const uValues = [playerShare, ...rShares, ...yShares].map(({ u }) => util_1.bigIntFromBufferLE(Buffer.from(u, 'hex')));
233
+ const x = uValues.reduce((acc, u) => Eddsa.curve.scalarAdd(acc, u));
234
+ const RValues = [playerShare, ...rShares].map(({ R }) => util_1.bigIntFromBufferLE(Buffer.from(R, 'hex')));
235
+ const R = RValues.reduce((partial, share) => Eddsa.curve.pointAdd(partial, share));
236
+ const rValues = [playerShare, ...rShares].map(({ r }) => util_1.bigIntFromBufferLE(Buffer.from(r, 'hex')));
237
+ const r = rValues.reduce((partial, share) => Eddsa.curve.scalarAdd(partial, share));
238
+ const combinedBuffer = Buffer.concat([util_1.bigIntToBufferLE(R, 32), Buffer.from(S_i.y, 'hex'), message]);
239
+ const digest = crypto_1.createHash('sha512').update(combinedBuffer).digest();
240
+ const k = Eddsa.curve.scalarReduce(util_1.bigIntFromBufferLE(digest));
241
+ const gamma = Eddsa.curve.scalarAdd(r, Eddsa.curve.scalarMult(k, x));
242
+ const result = {
243
+ i: playerShare.i,
244
+ y: playerShare.y,
245
+ gamma: util_1.bigIntToBufferLE(gamma, 32).toString('hex'),
246
+ R: util_1.bigIntToBufferLE(R, 32).toString('hex'),
247
+ };
248
+ return result;
249
+ }
250
+ signCombine(shares) {
251
+ const y = shares[0].y;
252
+ const R = shares[0].R;
253
+ const resultShares = {};
254
+ for (const ind in shares) {
255
+ const S_i = shares[ind];
256
+ resultShares[S_i.i] = util_1.bigIntFromBufferLE(Buffer.from(S_i.gamma, 'hex'));
257
+ }
258
+ const sigma = Eddsa.shamir.combine(resultShares);
259
+ const result = {
260
+ y,
261
+ R,
262
+ sigma: util_1.bigIntToBufferLE(sigma, 32).toString('hex'),
263
+ };
264
+ return result;
265
+ }
266
+ verify(message, signature) {
267
+ const publicKey = util_1.bigIntFromBufferLE(Buffer.from(signature.y, 'hex'));
268
+ const signedMessage = Buffer.concat([Buffer.from(signature.R, 'hex'), Buffer.from(signature.sigma, 'hex')]);
269
+ return Eddsa.curve.verify(message, signedMessage, publicKey);
270
+ }
271
+ }
272
+ exports.default = Eddsa;
273
+ Eddsa.curve = new curves_1.Ed25519Curve();
274
+ Eddsa.shamir = new shamir_1.default(Eddsa.curve);
275
+ Eddsa.initialized = false;
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lZGRzYS9lZGRzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsbUNBQWlEO0FBQ2pELHlDQUE0QztBQUM1QywwREFBa0M7QUFFbEMscUNBQStHO0FBZ0IvRyxRQUFRO0FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFFNUYsTUFBcUIsS0FBSztJQWdCeEIsWUFBWSxNQUFlO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFiRCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFlO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQ3RCLE1BQU0scUJBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUVELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQVFELFFBQVEsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxTQUFpQixFQUFFLElBQWE7UUFDekUsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLG9CQUFXLENB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QUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVHLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDOztBQWpSSCx3QkFrUkM7QUFqUlEsV0FBSyxHQUFpQixJQUFJLHFCQUFZLEVBQUUsQ0FBQztBQUN6QyxZQUFNLEdBQVcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxpQkFBVyxHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgTVBDIHVzaW5nIHRocmVzaG9sZCBzaWduYXR1cmUgc2NoZW1lIChUU1MpLiBJdCBjb250YWluc1xuICogZnVuY3Rpb25zIGZvciBrZXkgZ2VuZXJhdGlvbiBhbmQgbWVzc2FnZSBzaWduaW5nIHdpdGggRWREU0EuXG4gKlxuICpcbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIEVkRFNBIEtleSBHZW5lcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBFYWNoIHNpZ25lciBnZW5lcmF0ZXMgdGhlaXIgb3duIGtleSBzaGFyZSwgd2hpY2ggaW52b2x2ZXMgYSBwcml2YXRlIHUtc2hhcmUgYW5kIGEgcHVibGljIHktc2hhcmUuXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgeS1zaGFyZSB0byBvdGhlciBzaWduZXJzLlxuICogMy4gQWZ0ZXIgZXhjaGFuZ2luZyB5LXNoYXJlcyB0aGUgbmV4dCBwaGFzZSBpcyB0byBjb21iaW5lIGtleSBzaGFyZXMuIEVhY2ggc2lnbmVyIGNvbWJpbmVzIHRoZWlyIHUtc2hhcmVcbiAqICAgIHdpdGggdGhlIHktc2hhcmVzIHJlY2VpdmVkIGZyb20gb3RoZXIgc2lnbmVycyBpbiBvcmRlciB0byBnZW5lcmF0ZSBhIHAtc2hhcmUgZm9yIHRoZW1zZWx2ZXMuIFdlXG4gKiAgICBhbHNvIHNhdmUgai1zaGFyZXMgZm9yIG90aGVyIHNpZ25lcnMuXG4gKiA0LiBBdCB0aGlzIHBvaW50IHRoZSBwbGF5ZXJzIGRvIG5vdCBkaXN0cmlidXRlIGFueSBzaGFyZXMgYW5kIHRoZSBmaXJzdCBwaGFzZSBvZiB0aGVcbiAqICAgIHNpZ25pbmcgcHJvdG9jb2wgaXMgY29tcGxldGUuXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgU2lnbmluZ1xuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogMS4gVGhlIHBhcnRpZXMgZnJvbSBrZXkgZ2VuZXJhdGlvbiBkZWNpZGUgdGhleSB3YW50IHRvIHNpZ24gc29tZXRoaW5nLiBUaGV5IGJlZ2luIHRoZSBzaWduaW5nIHByb3RvY29sXG4gKiAgICBieSBnZW5lcmF0aW5nIHNoYXJlcyBvZiBhbiBlcGhlbWVyYWwga2V5LlxuICpcbiAqICAgIGEpIEVhY2ggc2lnbmVyIHVzZXMgaGlzIHAtc2hhcmUgYW5kIHRoZSBqLXNoYXJlcyBzdG9yZWQgZm9yIG90aGVyIHBsYXllcnMgdG8gZ2VuZXJhdGUgaGlzIHNpZ25pbmcgc2hhcmUuXG4gKiAgICBiKSBUaGlzIHJlc3VsdHMgaW4gZWFjaCBzaWduZXIgaGF2aW5nIGEgcHJpdmF0ZSB4LXNoYXJlIGFuZCBwdWJsaWMgci1zaGFyZXMuXG4gKlxuICogMi4gU2lnbmVycyBkaXN0cmlidXRlIHRoZWlyIHItc2hhcmVzIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHItc2hhcmVzLCBlYWNoIHNpZ25lciBzaWducyB0aGVpciBzaGFyZSBvZiB0aGUgZXBoZW1lcmFsIGtleSB1c2luZyB0aGVpciBwcml2YXRlXG4gKiAgICB4LXNoYXJlIHdpdGggdGhlIHItc2hhcmVzIGZyb20gb3RoZXIgc2lnbmVycy5cbiAqIDQuIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwdWJsaWMgZy1zaGFyZSB3aGljaCB0aGV5IHNlbmQgdG8gdGhlIG90aGVyIHNpZ25lcnMuXG4gKiA1LiBBZnRlciB0aGUgc2lnbmVycyBicm9hZGNhc3QgdGhlaXIgZy1zaGFyZXMsIHRoZSBmaW5hbCBzaWduYXR1cmUgY2FuIGJlIHJlLWNvbnN0cnVjdGVkIGluZGVwZW5kZW50bHkuXG4gKi9cbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgRWQyNTUxOUN1cnZlIH0gZnJvbSAnLi4vLi4vY3VydmVzJztcbmltcG9ydCBTaGFtaXIgZnJvbSAnLi4vLi4vc2hhbWlyJztcbmltcG9ydCBIRFRyZWUgZnJvbSAnLi4vLi4vaGRUcmVlJztcbmltcG9ydCB7IGJpZ0ludEZyb21CdWZmZXJMRSwgYmlnSW50VG9CdWZmZXJMRSwgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFLCBjbGFtcCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHtcbiAgS2V5U2hhcmUsXG4gIFVTaGFyZSxcbiAgWVNoYXJlLFxuICBLZXlDb21iaW5lLFxuICBQU2hhcmUsXG4gIFN1YmtleVNoYXJlLFxuICBKU2hhcmUsXG4gIFNpZ25TaGFyZSxcbiAgU2lnbmF0dXJlLFxuICBYU2hhcmUsXG4gIFJTaGFyZSxcbiAgR1NoYXJlLFxufSBmcm9tICcuL3R5cGVzJztcblxuLy8gMl4yNTZcbmNvbnN0IGJhc2UgPSBCaWdJbnQoJzB4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZHNhIHtcbiAgc3RhdGljIGN1cnZlOiBFZDI1NTE5Q3VydmUgPSBuZXcgRWQyNTUxOUN1cnZlKCk7XG4gIHN0YXRpYyBzaGFtaXI6IFNoYW1pciA9IG5ldyBTaGFtaXIoRWRkc2EuY3VydmUpO1xuICBzdGF0aWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBzdGF0aWMgYXN5bmMgaW5pdGlhbGl6ZShoZFRyZWU/OiBIRFRyZWUpOiBQcm9taXNlPEVkZHNhPiB7XG4gICAgaWYgKCFFZGRzYS5pbml0aWFsaXplZCkge1xuICAgICAgYXdhaXQgRWQyNTUxOUN1cnZlLmluaXRpYWxpemUoKTtcbiAgICAgIEVkZHNhLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEVkZHNhKGhkVHJlZSk7XG4gIH1cblxuICBoZFRyZWU/OiBIRFRyZWU7XG5cbiAgY29uc3RydWN0b3IoaGRUcmVlPzogSERUcmVlKSB7XG4gICAgdGhpcy5oZFRyZWUgPSBoZFRyZWU7XG4gIH1cblxuICBrZXlTaGFyZShpbmRleDogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlciwgbnVtU2hhcmVzOiBudW1iZXIsIHNlZWQ/OiBCdWZmZXIpOiBLZXlTaGFyZSB7XG4gICAgYXNzZXJ0KGluZGV4ID4gMCAmJiBpbmRleCA8PSBudW1TaGFyZXMpO1xuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNjQnKTtcbiAgICB9XG4gICAgY29uc3Qgc2VlZGNoYWluID0gc2VlZCA/PyByYW5kb21CeXRlcyg2NCk7XG4gICAgY29uc3QgYWN0dWFsU2VlZCA9IHNlZWRjaGFpbi5zbGljZSgwLCAzMik7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gc2VlZGNoYWluLnNsaWNlKDMyKTtcbiAgICBjb25zdCBoID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKGFjdHVhbFNlZWQpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHUgPSBjbGFtcChiaWdJbnRGcm9tQnVmZmVyTEUoaC5zbGljZSgwLCAzMikpKTtcbiAgICBjb25zdCB5ID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdCh1KTtcbiAgICBjb25zdCBzcGxpdF91ID0gRWRkc2Euc2hhbWlyLnNwbGl0KHUsIHRocmVzaG9sZCwgbnVtU2hhcmVzKTtcblxuICAgIGNvbnN0IFBfaTogVVNoYXJlID0ge1xuICAgICAgaTogaW5kZXgsXG4gICAgICB0OiB0aHJlc2hvbGQsXG4gICAgICBuOiBudW1TaGFyZXMsXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBzZWVkOiBhY3R1YWxTZWVkLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IHNoYXJlczogS2V5U2hhcmUgPSB7XG4gICAgICB1U2hhcmU6IFBfaSxcbiAgICAgIHlTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGluZCBpbiBzcGxpdF91KSB7XG4gICAgICBjb25zdCBpID0gcGFyc2VJbnQoaW5kLCAxMCk7XG4gICAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzaGFyZXMueVNoYXJlc1tpXSA9IHtcbiAgICAgICAgaSxcbiAgICAgICAgajogUF9pLmksXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W2luZF0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cblxuICBrZXlDb21iaW5lKHVTaGFyZTogVVNoYXJlLCB5U2hhcmVzOiBZU2hhcmVbXSk6IEtleUNvbWJpbmUge1xuICAgIGNvbnN0IGggPSBjcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoQnVmZmVyLmZyb20odVNoYXJlLnNlZWQsICdoZXgnKSkuZGlnZXN0KCk7XG4gICAgY29uc3QgdSA9IGNsYW1wKGJpZ0ludEZyb21CdWZmZXJMRShoLnNsaWNlKDAsIDMyKSkpO1xuICAgIGNvbnN0IHlWYWx1ZXMgPSBbdVNoYXJlLCAuLi55U2hhcmVzXS5tYXAoKHNoYXJlKSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc2hhcmUueSwgJ2hleCcpKSk7XG4gICAgY29uc3QgeSA9IHlWYWx1ZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gRWRkc2EuY3VydmUucG9pbnRBZGQocGFydGlhbCwgc2hhcmUpKTtcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZSgoYWNjLCBjaGFpbmNvZGUpID0+IChhY2MgKyBjaGFpbmNvZGUpICUgYmFzZSk7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUodSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHByZWZpeDogaC5zbGljZSgzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IHBsYXllcnM6IEtleUNvbWJpbmUgPSB7XG4gICAgICBwU2hhcmU6IFBfaSxcbiAgICAgIGpTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCB5U2hhcmVzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IFBfaiA9IHlTaGFyZXNbaW5kXTtcbiAgICAgIHBsYXllcnMualNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBwbGF5ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZXMgYSBjaGlsZCBjb21tb24ga2V5Y2hhaW4gZnJvbSBjb21tb24ga2V5Y2hhaW5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1vbktleWNoYWluIC0gY29tbW9uIGtleWNoYWluIGFzIGEgaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0gcGF0aCAtIGJpcDMyIHBhdGhcbiAgICogQHJldHVybiB7c3RyaW5nfSBkZXJpdmVkIGNvbW1vbiBrZXljaGFpbiBhcyBhIGhleCBzdHJpbmdcbiAgICovXG4gIGRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW46IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXljaGFpbiA9IEJ1ZmZlci5mcm9tKGNvbW1vbktleWNoYWluLCAnaGV4Jyk7XG5cbiAgICBjb25zdCBkZXJpdmVkUHVibGljS2V5Y2hhaW4gPSB0aGlzLmhkVHJlZS5wdWJsaWNEZXJpdmUoXG4gICAgICB7XG4gICAgICAgIHBrOiBiaWdJbnRGcm9tQnVmZmVyTEUoa2V5Y2hhaW4uc2xpY2UoMCwgMzIpKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRGcm9tQnVmZmVyQkUoa2V5Y2hhaW4uc2xpY2UoMzIpKSxcbiAgICAgIH0sXG4gICAgICBwYXRoXG4gICAgKTtcblxuICAgIGNvbnN0IGRlcml2ZWRQayA9IGJpZ0ludFRvQnVmZmVyTEUoZGVyaXZlZFB1YmxpY0tleWNoYWluLnBrLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGRlcml2ZWRDaGFpbmNvZGUgPSBiaWdJbnRUb0J1ZmZlckJFKGRlcml2ZWRQdWJsaWNLZXljaGFpbi5jaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICByZXR1cm4gZGVyaXZlZFBrICsgZGVyaXZlZENoYWluY29kZTtcbiAgfVxuXG4gIGtleURlcml2ZSh1U2hhcmU6IFVTaGFyZSwgeVNoYXJlczogWVNoYXJlW10sIHBhdGg6IHN0cmluZyk6IFN1YmtleVNoYXJlIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpKS5kaWdlc3QoKTtcbiAgICBjb25zdCB5VmFsdWVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKChzaGFyZSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHNoYXJlLnksICdoZXgnKSkpO1xuICAgIGNvbnN0IHkgPSB5VmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG4gICAgY29uc3QgdSA9IGNsYW1wKGJpZ0ludEZyb21CdWZmZXJMRShoLnNsaWNlKDAsIDMyKSkpO1xuICAgIGNvbnN0IHByZWZpeCA9IGJpZ0ludEZyb21CdWZmZXJCRShoLnNsaWNlKDMyKSk7XG4gICAgbGV0IGNvbnRyaWJDaGFpbmNvZGUgPSBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20odVNoYXJlLmNoYWluY29kZSwgJ2hleCcpKTtcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW1xuICAgICAgY29udHJpYkNoYWluY29kZSxcbiAgICAgIC4uLnlTaGFyZXMubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKSxcbiAgICBdO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKChhY2MsIGNoYWluY29kZSkgPT4gKGFjYyArIGNoYWluY29kZSkgJSBiYXNlKTtcblxuICAgIC8vIERlcml2ZSBzdWJrZXkuXG4gICAgY29uc3Qgc3Via2V5ID0gdGhpcy5oZFRyZWUucHJpdmF0ZURlcml2ZSh7IHBrOiB5LCBzazogdSwgcHJlZml4LCBjaGFpbmNvZGUgfSwgcGF0aCk7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IHB1YmxpYyBrZXkgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNvbnRyaWJZID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChzdWJrZXkuc2spO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG5ldyBjaGFpbmNvZGUgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNoYWluY29kZURlbHRhID0gKGJhc2UgKyBzdWJrZXkuY2hhaW5jb2RlIC0gY2hhaW5jb2RlKSAlIGJhc2U7XG4gICAgY29udHJpYkNoYWluY29kZSA9IChjb250cmliQ2hhaW5jb2RlICsgY2hhaW5jb2RlRGVsdGEpICUgYmFzZTtcblxuICAgIC8vIENhbGN1bGF0ZSBuZXcgdSB2YWx1ZXMuXG4gICAgY29uc3Qgc3BsaXRfdSA9IEVkZHNhLnNoYW1pci5zcGxpdChzdWJrZXkuc2ssIHVTaGFyZS50LCB1U2hhcmUubik7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoc3Via2V5LnBrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzdWJrZXkuc2ssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcmVmaXg6IGJpZ0ludFRvQnVmZmVyQkUoc3Via2V5LnByZWZpeCwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShzdWJrZXkuY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG5cbiAgICBjb25zdCBzaGFyZXM6IFN1YmtleVNoYXJlID0ge1xuICAgICAgcFNoYXJlOiBQX2ksXG4gICAgICB5U2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgeVNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSB5U2hhcmVzW2luZF07XG4gICAgICBzaGFyZXMueVNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgICAgeTogYmlnSW50VG9CdWZmZXJMRShjb250cmliWSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W1Bfai5qXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNvbnRyaWJDaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cblxuICBzaWduU2hhcmUobWVzc2FnZTogQnVmZmVyLCBwU2hhcmU6IFBTaGFyZSwgalNoYXJlczogSlNoYXJlW10sIHNlZWQ/OiBCdWZmZXIpOiBTaWduU2hhcmUge1xuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNjQnKTtcbiAgICB9XG4gICAgY29uc3QgaW5kaWNlcyA9IFtwU2hhcmUsIC4uLmpTaGFyZXNdLm1hcCgoeyBpIH0pID0+IGkpO1xuICAgIGNvbnN0IHNwbGl0X3UgPSBFZGRzYS5zaGFtaXIuc3BsaXQoYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHBTaGFyZS51LCAnaGV4JykpLCBwU2hhcmUudCwgcFNoYXJlLm4pO1xuXG4gICAgLy8gR2VuZXJhdGUgbm9uY2UgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IHByZWZpeCA9IEJ1ZmZlci5mcm9tKHBTaGFyZS5wcmVmaXgsICdoZXgnKTtcbiAgICBjb25zdCByYW5kb21CdWZmZXIgPSBzZWVkID8/IHJhbmRvbUJ5dGVzKDY0KTtcblxuICAgIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpXG4gICAgICAudXBkYXRlKEJ1ZmZlci5jb25jYXQoW3ByZWZpeCwgbWVzc2FnZSwgcmFuZG9tQnVmZmVyXSkpXG4gICAgICAuZGlnZXN0KCk7XG5cbiAgICBjb25zdCByID0gRWRkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJpZ0ludEZyb21CdWZmZXJMRShkaWdlc3QpKTtcbiAgICBjb25zdCBSID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChyKTtcbiAgICBjb25zdCBzcGxpdF9yID0gRWRkc2Euc2hhbWlyLnNwbGl0KHIsIGluZGljZXMubGVuZ3RoLCBpbmRpY2VzLmxlbmd0aCwgaW5kaWNlcyk7XG5cbiAgICBjb25zdCBQX2k6IFhTaGFyZSA9IHtcbiAgICAgIGk6IHBTaGFyZS5pLFxuICAgICAgeTogcFNoYXJlLnksXG4gICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbcFNoYXJlLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcjogYmlnSW50VG9CdWZmZXJMRShzcGxpdF9yW3BTaGFyZS5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIFI6IGJpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0U2hhcmVzOiBTaWduU2hhcmUgPSB7XG4gICAgICB4U2hhcmU6IFBfaSxcbiAgICAgIHJTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCBqU2hhcmVzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IFNfaiA9IGpTaGFyZXNbaW5kXTtcbiAgICAgIHJlc3VsdFNoYXJlcy5yU2hhcmVzW1Nfai5pXSA9IHtcbiAgICAgICAgaTogU19qLmksXG4gICAgICAgIGo6IHBTaGFyZS5pLFxuICAgICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbU19qLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICByOiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3JbU19qLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0U2hhcmVzO1xuICB9XG5cbiAgc2lnbihtZXNzYWdlOiBCdWZmZXIsIHBsYXllclNoYXJlOiBYU2hhcmUsIHJTaGFyZXM6IFJTaGFyZVtdLCB5U2hhcmVzOiBZU2hhcmVbXSA9IFtdKTogR1NoYXJlIHtcbiAgICBjb25zdCBTX2kgPSBwbGF5ZXJTaGFyZTtcblxuICAgIGNvbnN0IHVWYWx1ZXMgPSBbcGxheWVyU2hhcmUsIC4uLnJTaGFyZXMsIC4uLnlTaGFyZXNdLm1hcCgoeyB1IH0pID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbSh1LCAnaGV4JykpKTtcbiAgICBjb25zdCB4ID0gdVZhbHVlcy5yZWR1Y2UoKGFjYywgdSkgPT4gRWRkc2EuY3VydmUuc2NhbGFyQWRkKGFjYywgdSkpO1xuXG4gICAgY29uc3QgUlZhbHVlcyA9IFtwbGF5ZXJTaGFyZSwgLi4uclNoYXJlc10ubWFwKCh7IFIgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKFIsICdoZXgnKSkpO1xuICAgIGNvbnN0IFIgPSBSVmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG5cbiAgICBjb25zdCByVmFsdWVzID0gW3BsYXllclNoYXJlLCAuLi5yU2hhcmVzXS5tYXAoKHsgciB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20ociwgJ2hleCcpKSk7XG4gICAgY29uc3QgciA9IHJWYWx1ZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gRWRkc2EuY3VydmUuc2NhbGFyQWRkKHBhcnRpYWwsIHNoYXJlKSk7XG5cbiAgICBjb25zdCBjb21iaW5lZEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2JpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLCBCdWZmZXIuZnJvbShTX2kueSwgJ2hleCcpLCBtZXNzYWdlXSk7XG4gICAgY29uc3QgZGlnZXN0ID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKGNvbWJpbmVkQnVmZmVyKS5kaWdlc3QoKTtcbiAgICBjb25zdCBrID0gRWRkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJpZ0ludEZyb21CdWZmZXJMRShkaWdlc3QpKTtcblxuICAgIGNvbnN0IGdhbW1hID0gRWRkc2EuY3VydmUuc2NhbGFyQWRkKHIsIEVkZHNhLmN1cnZlLnNjYWxhck11bHQoaywgeCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIGk6IHBsYXllclNoYXJlLmksXG4gICAgICB5OiBwbGF5ZXJTaGFyZS55LFxuICAgICAgZ2FtbWE6IGJpZ0ludFRvQnVmZmVyTEUoZ2FtbWEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2lnbkNvbWJpbmUoc2hhcmVzOiBHU2hhcmVbXSk6IFNpZ25hdHVyZSB7XG4gICAgY29uc3QgeSA9IHNoYXJlc1swXS55O1xuICAgIGNvbnN0IFIgPSBzaGFyZXNbMF0uUjtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlcyA9IHt9O1xuICAgIGZvciAoY29uc3QgaW5kIGluIHNoYXJlcykge1xuICAgICAgY29uc3QgU19pID0gc2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXNbU19pLmldID0gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKFNfaS5nYW1tYSwgJ2hleCcpKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbWE6IGJpZ2ludCA9IEVkZHNhLnNoYW1pci5jb21iaW5lKHJlc3VsdFNoYXJlcyk7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgeSxcbiAgICAgIFIsXG4gICAgICBzaWdtYTogYmlnSW50VG9CdWZmZXJMRShzaWdtYSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IFNpZ25hdHVyZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaWduYXR1cmUueSwgJ2hleCcpKTtcbiAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oc2lnbmF0dXJlLlIsICdoZXgnKSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlLnNpZ21hLCAnaGV4JyldKTtcbiAgICByZXR1cm4gRWRkc2EuY3VydmUudmVyaWZ5KG1lc3NhZ2UsIHNpZ25lZE1lc3NhZ2UsIHB1YmxpY0tleSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ import Eddsa from './eddsa';
2
+ export * as EDDSA from './types';
3
+ export default Eddsa;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/eddsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAG5B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,eAAe,KAAK,CAAC"}