@bitgo/sdk-core 1.0.2-rc.0 → 1.1.0-rc.10

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 (354) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts +27 -0
  3. package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts.map +1 -0
  4. package/dist/src/account-lib/baseCoin/baseKeyPair.js +3 -0
  5. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +71 -0
  6. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -0
  7. package/dist/src/account-lib/baseCoin/baseTransaction.js +69 -0
  8. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +128 -0
  9. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -0
  10. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +138 -0
  11. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts +29 -0
  12. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -0
  13. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.js +19 -0
  14. package/dist/src/account-lib/baseCoin/baseUtils.d.ts +45 -0
  15. package/dist/src/account-lib/baseCoin/baseUtils.d.ts.map +1 -0
  16. package/dist/src/account-lib/baseCoin/baseUtils.js +3 -0
  17. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +75 -0
  18. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -0
  19. package/dist/src/account-lib/baseCoin/blsKeyPair.js +179 -0
  20. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +50 -0
  21. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -0
  22. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +145 -0
  23. package/dist/src/account-lib/baseCoin/enum.d.ts +43 -0
  24. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -0
  25. package/dist/src/account-lib/baseCoin/enum.js +70 -0
  26. package/dist/src/account-lib/baseCoin/errors.d.ts +59 -0
  27. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -0
  28. package/dist/src/account-lib/baseCoin/errors.js +105 -0
  29. package/dist/src/account-lib/baseCoin/iface.d.ts +155 -0
  30. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -0
  31. package/dist/src/account-lib/baseCoin/iface.js +38 -0
  32. package/dist/src/account-lib/baseCoin/index.d.ts +12 -0
  33. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -0
  34. package/dist/src/account-lib/baseCoin/index.js +31 -0
  35. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +55 -0
  36. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -0
  37. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +124 -0
  38. package/dist/src/account-lib/index.d.ts +5 -0
  39. package/dist/src/account-lib/index.d.ts.map +1 -0
  40. package/dist/src/account-lib/index.js +17 -0
  41. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts +19 -0
  42. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts.map +1 -0
  43. package/dist/src/account-lib/mpc/curves/baseCurve.js +6 -0
  44. package/dist/src/account-lib/mpc/curves/ed25519.d.ts +17 -0
  45. package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -0
  46. package/dist/src/account-lib/mpc/curves/ed25519.js +57 -0
  47. package/dist/src/account-lib/mpc/curves/index.d.ts +6 -0
  48. package/dist/src/account-lib/mpc/curves/index.d.ts.map +1 -0
  49. package/dist/src/account-lib/mpc/curves/index.js +8 -0
  50. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts +17 -0
  51. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -0
  52. package/dist/src/account-lib/mpc/curves/secp256k1.js +70 -0
  53. package/dist/src/account-lib/mpc/hdTree.d.ts +24 -0
  54. package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -0
  55. package/dist/src/account-lib/mpc/hdTree.js +94 -0
  56. package/dist/src/account-lib/mpc/index.d.ts +8 -0
  57. package/dist/src/account-lib/mpc/index.d.ts.map +1 -0
  58. package/dist/src/account-lib/mpc/index.js +23 -0
  59. package/dist/src/account-lib/mpc/shamir.d.ts +26 -0
  60. package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -0
  61. package/dist/src/account-lib/mpc/shamir.js +86 -0
  62. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +25 -0
  63. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
  64. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +121 -0
  65. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts +4 -0
  66. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts.map +1 -0
  67. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +29 -0
  68. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +40 -0
  69. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -0
  70. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +3 -0
  71. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +29 -0
  72. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
  73. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +273 -0
  74. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts +4 -0
  75. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts.map +1 -0
  76. package/dist/src/account-lib/mpc/tss/eddsa/index.js +30 -0
  77. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +70 -0
  78. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -0
  79. package/dist/src/account-lib/mpc/tss/eddsa/types.js +3 -0
  80. package/dist/src/account-lib/mpc/tss/index.d.ts +6 -0
  81. package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -0
  82. package/dist/src/account-lib/mpc/tss/index.js +35 -0
  83. package/dist/src/account-lib/mpc/util.d.ts +8 -0
  84. package/dist/src/account-lib/mpc/util.d.ts.map +1 -0
  85. package/dist/src/account-lib/mpc/util.js +42 -0
  86. package/dist/src/account-lib/util/crypto.d.ts +106 -0
  87. package/dist/src/account-lib/util/crypto.d.ts.map +1 -0
  88. package/dist/src/account-lib/util/crypto.js +269 -0
  89. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +49 -0
  90. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -0
  91. package/dist/src/account-lib/util/ed25519KeyDeriver.js +87 -0
  92. package/dist/src/api/bip32path.d.ts +24 -0
  93. package/dist/src/api/bip32path.d.ts.map +1 -0
  94. package/dist/src/api/bip32path.js +45 -0
  95. package/dist/src/api/index.d.ts +3 -0
  96. package/dist/src/api/index.d.ts.map +1 -0
  97. package/dist/src/{v2 → api}/index.js +2 -2
  98. package/dist/src/api/types.d.ts +20 -0
  99. package/dist/src/api/types.d.ts.map +1 -0
  100. package/dist/src/api/types.js +3 -0
  101. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +230 -0
  102. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -0
  103. package/dist/src/bitgo/baseCoin/baseCoin.js +292 -0
  104. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +257 -0
  105. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -0
  106. package/dist/src/bitgo/baseCoin/iBaseCoin.js +3 -0
  107. package/dist/src/bitgo/baseCoin/index.d.ts +3 -0
  108. package/dist/src/bitgo/baseCoin/index.d.ts.map +1 -0
  109. package/dist/src/bitgo/baseCoin/index.js +15 -0
  110. package/dist/src/bitgo/bip32util.d.ts +17 -0
  111. package/dist/src/bitgo/bip32util.d.ts.map +1 -0
  112. package/dist/src/bitgo/bip32util.js +59 -0
  113. package/dist/src/bitgo/bitcoin.d.ts +16 -0
  114. package/dist/src/bitgo/bitcoin.d.ts.map +1 -0
  115. package/dist/src/bitgo/bitcoin.js +52 -0
  116. package/dist/src/bitgo/bitgoBase.d.ts +22 -0
  117. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -0
  118. package/dist/src/bitgo/bitgoBase.js +3 -0
  119. package/dist/src/bitgo/coinFactory.d.ts +31 -0
  120. package/dist/src/bitgo/coinFactory.d.ts.map +1 -0
  121. package/dist/src/bitgo/coinFactory.js +59 -0
  122. package/dist/src/bitgo/config.d.ts +8 -0
  123. package/dist/src/bitgo/config.d.ts.map +1 -0
  124. package/dist/src/bitgo/config.js +25 -0
  125. package/dist/src/bitgo/ecdh.d.ts +24 -0
  126. package/dist/src/bitgo/ecdh.d.ts.map +1 -0
  127. package/dist/src/bitgo/ecdh.js +80 -0
  128. package/dist/src/bitgo/enterprise/enterprise.d.ts +64 -0
  129. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -0
  130. package/dist/src/bitgo/enterprise/enterprise.js +120 -0
  131. package/dist/src/bitgo/enterprise/enterprises.d.ts +25 -0
  132. package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -0
  133. package/dist/src/bitgo/enterprise/enterprises.js +70 -0
  134. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +15 -0
  135. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -0
  136. package/dist/src/bitgo/enterprise/iEnterprise.js +3 -0
  137. package/dist/src/bitgo/enterprise/iEnterprises.d.ts +10 -0
  138. package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -0
  139. package/dist/src/bitgo/enterprise/iEnterprises.js +3 -0
  140. package/dist/src/bitgo/enterprise/index.d.ts +5 -0
  141. package/dist/src/bitgo/enterprise/index.d.ts.map +1 -0
  142. package/dist/src/bitgo/enterprise/index.js +17 -0
  143. package/dist/src/{v2 → bitgo}/environments.d.ts +0 -0
  144. package/dist/src/bitgo/environments.d.ts.map +1 -0
  145. package/dist/src/bitgo/environments.js +142 -0
  146. package/dist/src/bitgo/errors.d.ts +83 -0
  147. package/dist/src/bitgo/errors.d.ts.map +1 -0
  148. package/dist/src/bitgo/errors.js +163 -0
  149. package/dist/src/bitgo/index.d.ts +26 -0
  150. package/dist/src/bitgo/index.d.ts.map +1 -0
  151. package/dist/src/bitgo/index.js +51 -0
  152. package/dist/src/bitgo/internal/index.d.ts +3 -0
  153. package/dist/src/bitgo/internal/index.d.ts.map +1 -0
  154. package/dist/src/bitgo/internal/index.js +15 -0
  155. package/dist/src/bitgo/internal/internal.d.ts +19 -0
  156. package/dist/src/bitgo/internal/internal.d.ts.map +1 -0
  157. package/dist/src/bitgo/internal/internal.js +33 -0
  158. package/dist/src/bitgo/internal/keycard.d.ts +33 -0
  159. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -0
  160. package/dist/src/bitgo/internal/keycard.js +304 -0
  161. package/dist/src/bitgo/keychain/iKeychains.d.ts +118 -0
  162. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -0
  163. package/dist/src/bitgo/keychain/iKeychains.js +10 -0
  164. package/dist/src/bitgo/keychain/index.d.ts +3 -0
  165. package/dist/src/bitgo/keychain/index.d.ts.map +1 -0
  166. package/dist/src/bitgo/keychain/index.js +15 -0
  167. package/dist/src/bitgo/keychain/keychains.d.ts +90 -0
  168. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -0
  169. package/dist/src/bitgo/keychain/keychains.js +280 -0
  170. package/dist/src/bitgo/market/iMarkets.d.ts +12 -0
  171. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -0
  172. package/dist/src/bitgo/market/iMarkets.js +3 -0
  173. package/dist/src/bitgo/market/index.d.ts +3 -0
  174. package/dist/src/bitgo/market/index.d.ts.map +1 -0
  175. package/dist/src/bitgo/market/index.js +15 -0
  176. package/dist/src/bitgo/market/markets.d.ts +29 -0
  177. package/dist/src/bitgo/market/markets.d.ts.map +1 -0
  178. package/dist/src/bitgo/market/markets.js +70 -0
  179. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +73 -0
  180. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -0
  181. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +28 -0
  182. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts +16 -0
  183. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts.map +1 -0
  184. package/dist/src/bitgo/pendingApproval/iPendingApprovals.js +3 -0
  185. package/dist/src/bitgo/pendingApproval/index.d.ts +5 -0
  186. package/dist/src/bitgo/pendingApproval/index.d.ts.map +1 -0
  187. package/dist/src/bitgo/pendingApproval/index.js +17 -0
  188. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +99 -0
  189. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -0
  190. package/dist/src/bitgo/pendingApproval/pendingApproval.js +319 -0
  191. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts +19 -0
  192. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts.map +1 -0
  193. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +76 -0
  194. package/dist/src/bitgo/recovery/index.d.ts +2 -0
  195. package/dist/src/bitgo/recovery/index.d.ts.map +1 -0
  196. package/dist/src/bitgo/recovery/index.js +14 -0
  197. package/dist/src/bitgo/recovery/initiate.d.ts +49 -0
  198. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -0
  199. package/dist/src/bitgo/recovery/initiate.js +119 -0
  200. package/dist/src/bitgo/trading/affirmation.d.ts +35 -0
  201. package/dist/src/bitgo/trading/affirmation.d.ts.map +1 -0
  202. package/dist/src/bitgo/trading/affirmation.js +53 -0
  203. package/dist/src/bitgo/trading/affirmations.d.ts +23 -0
  204. package/dist/src/bitgo/trading/affirmations.d.ts.map +1 -0
  205. package/dist/src/bitgo/trading/affirmations.js +45 -0
  206. package/dist/src/bitgo/trading/iAffirmation.d.ts +15 -0
  207. package/dist/src/bitgo/trading/iAffirmation.d.ts.map +1 -0
  208. package/dist/src/bitgo/trading/iAffirmation.js +13 -0
  209. package/dist/src/bitgo/trading/iAffirmations.d.ts +10 -0
  210. package/dist/src/bitgo/trading/iAffirmations.d.ts.map +1 -0
  211. package/dist/src/bitgo/trading/iAffirmations.js +3 -0
  212. package/dist/src/bitgo/trading/iSettlement.d.ts +25 -0
  213. package/dist/src/bitgo/trading/iSettlement.d.ts.map +1 -0
  214. package/dist/src/bitgo/trading/iSettlement.js +17 -0
  215. package/dist/src/bitgo/trading/iSettlements.d.ts +19 -0
  216. package/dist/src/bitgo/trading/iSettlements.d.ts.map +1 -0
  217. package/dist/src/bitgo/trading/iSettlements.js +3 -0
  218. package/dist/src/bitgo/trading/iTradingAccount.d.ts +41 -0
  219. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -0
  220. package/dist/src/bitgo/trading/iTradingAccount.js +3 -0
  221. package/dist/src/bitgo/trading/iTradingPartner.d.ts +14 -0
  222. package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +1 -0
  223. package/dist/src/bitgo/trading/iTradingPartner.js +17 -0
  224. package/dist/src/bitgo/trading/iTradingPartners.d.ts +15 -0
  225. package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +1 -0
  226. package/dist/src/bitgo/trading/iTradingPartners.js +9 -0
  227. package/dist/src/bitgo/trading/index.d.ts +18 -0
  228. package/dist/src/bitgo/trading/index.d.ts.map +1 -0
  229. package/dist/src/bitgo/trading/index.js +30 -0
  230. package/dist/src/bitgo/trading/lock.d.ts +16 -0
  231. package/dist/src/bitgo/trading/lock.d.ts.map +1 -0
  232. package/dist/src/bitgo/trading/lock.js +12 -0
  233. package/dist/src/bitgo/trading/payload.d.ts +22 -0
  234. package/dist/src/bitgo/trading/payload.d.ts.map +1 -0
  235. package/dist/src/bitgo/trading/payload.js +3 -0
  236. package/dist/src/bitgo/trading/settlement.d.ts +16 -0
  237. package/dist/src/bitgo/trading/settlement.d.ts.map +1 -0
  238. package/dist/src/bitgo/trading/settlement.js +21 -0
  239. package/dist/src/bitgo/trading/settlements.d.ts +32 -0
  240. package/dist/src/bitgo/trading/settlements.d.ts.map +1 -0
  241. package/dist/src/bitgo/trading/settlements.js +61 -0
  242. package/dist/src/bitgo/trading/trade.d.ts +29 -0
  243. package/dist/src/bitgo/trading/trade.d.ts.map +1 -0
  244. package/dist/src/bitgo/trading/trade.js +11 -0
  245. package/dist/src/bitgo/trading/tradingAccount.d.ts +53 -0
  246. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -0
  247. package/dist/src/bitgo/trading/tradingAccount.js +127 -0
  248. package/dist/src/bitgo/trading/tradingPartner.d.ts +26 -0
  249. package/dist/src/bitgo/trading/tradingPartner.d.ts.map +1 -0
  250. package/dist/src/bitgo/trading/tradingPartner.js +31 -0
  251. package/dist/src/bitgo/trading/tradingPartners.d.ts +24 -0
  252. package/dist/src/bitgo/trading/tradingPartners.d.ts.map +1 -0
  253. package/dist/src/bitgo/trading/tradingPartners.js +32 -0
  254. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +102 -0
  255. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -0
  256. package/dist/src/bitgo/tss/eddsa/eddsa.js +256 -0
  257. package/dist/src/bitgo/tss/eddsa/index.d.ts +6 -0
  258. package/dist/src/bitgo/tss/eddsa/index.d.ts.map +1 -0
  259. package/dist/src/bitgo/tss/eddsa/index.js +37 -0
  260. package/dist/src/bitgo/tss/eddsa/types.d.ts +23 -0
  261. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -0
  262. package/dist/src/bitgo/tss/eddsa/types.js +3 -0
  263. package/dist/src/bitgo/tss/index.d.ts +5 -0
  264. package/dist/src/bitgo/tss/index.d.ts.map +1 -0
  265. package/dist/src/bitgo/tss/index.js +39 -0
  266. package/dist/src/bitgo/tss/types.d.ts +6 -0
  267. package/dist/src/bitgo/tss/types.d.ts.map +1 -0
  268. package/dist/src/bitgo/tss/types.js +10 -0
  269. package/dist/src/bitgo/types.d.ts +4 -0
  270. package/dist/src/bitgo/types.d.ts.map +1 -0
  271. package/dist/src/bitgo/types.js +3 -0
  272. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +6 -0
  273. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
  274. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +30 -0
  275. package/dist/src/bitgo/utils/blsUtils.d.ts +51 -0
  276. package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -0
  277. package/dist/src/bitgo/utils/blsUtils.js +166 -0
  278. package/dist/src/bitgo/utils/iBlsUtils.d.ts +14 -0
  279. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +1 -0
  280. package/dist/src/bitgo/utils/iBlsUtils.js +3 -0
  281. package/dist/src/bitgo/utils/index.d.ts +12 -0
  282. package/dist/src/bitgo/utils/index.d.ts.map +1 -0
  283. package/dist/src/bitgo/utils/index.js +37 -0
  284. package/dist/src/bitgo/utils/mpcUtils.d.ts +31 -0
  285. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -0
  286. package/dist/src/bitgo/utils/mpcUtils.js +55 -0
  287. package/dist/src/bitgo/utils/opengpgUtils.d.ts +51 -0
  288. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -0
  289. package/dist/src/bitgo/utils/opengpgUtils.js +136 -0
  290. package/dist/src/bitgo/utils/promise-utils.d.ts +5 -0
  291. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -0
  292. package/dist/src/bitgo/utils/promise-utils.js +12 -0
  293. package/dist/src/bitgo/utils/triple.d.ts +3 -0
  294. package/dist/src/bitgo/utils/triple.d.ts.map +1 -0
  295. package/dist/src/bitgo/utils/triple.js +8 -0
  296. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +117 -0
  297. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -0
  298. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +351 -0
  299. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  300. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -0
  301. package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -0
  302. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +72 -0
  303. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -0
  304. package/dist/src/bitgo/utils/tss/eddsa/types.js +10 -0
  305. package/dist/src/bitgo/utils/tss/index.d.ts +4 -0
  306. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -0
  307. package/dist/src/bitgo/utils/tss/index.js +29 -0
  308. package/dist/src/bitgo/utils/util.d.ts +77 -0
  309. package/dist/src/bitgo/utils/util.d.ts.map +1 -0
  310. package/dist/src/bitgo/utils/util.js +198 -0
  311. package/dist/src/bitgo/wallet/iWallet.d.ts +510 -0
  312. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -0
  313. package/dist/src/bitgo/wallet/iWallet.js +3 -0
  314. package/dist/src/bitgo/wallet/iWallets.d.ts +105 -0
  315. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -0
  316. package/dist/src/bitgo/wallet/iWallets.js +3 -0
  317. package/dist/src/bitgo/wallet/index.d.ts +5 -0
  318. package/dist/src/bitgo/wallet/index.d.ts.map +1 -0
  319. package/dist/src/bitgo/wallet/index.js +17 -0
  320. package/dist/src/bitgo/wallet/wallet.d.ts +650 -0
  321. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -0
  322. package/dist/src/bitgo/wallet/wallet.js +2039 -0
  323. package/dist/src/bitgo/wallet/wallets.d.ts +134 -0
  324. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -0
  325. package/dist/src/bitgo/wallet/wallets.js +605 -0
  326. package/dist/src/bitgo/webhook/iWebhooks.d.ts +26 -0
  327. package/dist/src/bitgo/webhook/iWebhooks.d.ts.map +1 -0
  328. package/dist/src/bitgo/webhook/iWebhooks.js +3 -0
  329. package/dist/src/bitgo/webhook/index.d.ts +3 -0
  330. package/dist/src/bitgo/webhook/index.d.ts.map +1 -0
  331. package/dist/src/bitgo/webhook/index.js +15 -0
  332. package/dist/src/bitgo/webhook/webhooks.d.ts +43 -0
  333. package/dist/src/bitgo/webhook/webhooks.d.ts.map +1 -0
  334. package/dist/src/bitgo/webhook/webhooks.js +102 -0
  335. package/dist/src/{bigojsError.d.ts → bitgojsError.d.ts} +1 -1
  336. package/dist/src/bitgojsError.d.ts.map +1 -0
  337. package/dist/src/bitgojsError.js +11 -0
  338. package/dist/src/common.d.ts +1 -1
  339. package/dist/src/common.d.ts.map +1 -1
  340. package/dist/src/common.js +3 -3
  341. package/dist/src/index.d.ts +4 -2
  342. package/dist/src/index.d.ts.map +1 -1
  343. package/dist/src/index.js +6 -5
  344. package/dist/tsconfig.tsbuildinfo +3458 -153
  345. package/package.json +27 -3
  346. package/dist/src/bigojsError.d.ts.map +0 -1
  347. package/dist/src/bigojsError.js +0 -11
  348. package/dist/src/v2/environments.d.ts.map +0 -1
  349. package/dist/src/v2/environments.js +0 -142
  350. package/dist/src/v2/index.d.ts +0 -3
  351. package/dist/src/v2/index.d.ts.map +0 -1
  352. package/dist/src/v2/types.d.ts +0 -2
  353. package/dist/src/v2/types.d.ts.map +0 -1
  354. package/dist/src/v2/types.js +0 -3
@@ -0,0 +1,273 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lZGRzYS9lZGRzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsbUNBQWlEO0FBQ2pELHlDQUE0QztBQUM1QywwREFBa0M7QUFFbEMscUNBQStHO0FBZ0IvRyxRQUFRO0FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFFNUYsTUFBcUIsS0FBSztJQWdCeEIsWUFBWSxNQUFlO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFiRCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFlO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQ3RCLE1BQU0scUJBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUVELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQVFELFFBQVEsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxTQUFpQixFQUFFLElBQWE7UUFDekUsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLG9CQUFXLENB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Q0FBQyxDQUFDO0lBQy9ELENBQUM7O0FBOVFILHdCQStRQztBQTlRUSxXQUFLLEdBQWlCLElBQUkscUJBQVksRUFBRSxDQUFDO0FBQ3pDLFlBQU0sR0FBVyxJQUFJLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLGlCQUFXLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBNUEMgdXNpbmcgdGhyZXNob2xkIHNpZ25hdHVyZSBzY2hlbWUgKFRTUykuIEl0IGNvbnRhaW5zXG4gKiBmdW5jdGlvbnMgZm9yIGtleSBnZW5lcmF0aW9uIGFuZCBtZXNzYWdlIHNpZ25pbmcgd2l0aCBFZERTQS5cbiAqXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgS2V5IEdlbmVyYXRpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIDEuIEVhY2ggc2lnbmVyIGdlbmVyYXRlcyB0aGVpciBvd24ga2V5IHNoYXJlLCB3aGljaCBpbnZvbHZlcyBhIHByaXZhdGUgdS1zaGFyZSBhbmQgYSBwdWJsaWMgeS1zaGFyZS5cbiAqIDIuIFNpZ25lcnMgZGlzdHJpYnV0ZSB0aGVpciB5LXNoYXJlIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHktc2hhcmVzIHRoZSBuZXh0IHBoYXNlIGlzIHRvIGNvbWJpbmUga2V5IHNoYXJlcy4gRWFjaCBzaWduZXIgY29tYmluZXMgdGhlaXIgdS1zaGFyZVxuICogICAgd2l0aCB0aGUgeS1zaGFyZXMgcmVjZWl2ZWQgZnJvbSBvdGhlciBzaWduZXJzIGluIG9yZGVyIHRvIGdlbmVyYXRlIGEgcC1zaGFyZSBmb3IgdGhlbXNlbHZlcy4gV2VcbiAqICAgIGFsc28gc2F2ZSBqLXNoYXJlcyBmb3Igb3RoZXIgc2lnbmVycy5cbiAqIDQuIEF0IHRoaXMgcG9pbnQgdGhlIHBsYXllcnMgZG8gbm90IGRpc3RyaWJ1dGUgYW55IHNoYXJlcyBhbmQgdGhlIGZpcnN0IHBoYXNlIG9mIHRoZVxuICogICAgc2lnbmluZyBwcm90b2NvbCBpcyBjb21wbGV0ZS5cbiAqXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiBFZERTQSBTaWduaW5nXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBUaGUgcGFydGllcyBmcm9tIGtleSBnZW5lcmF0aW9uIGRlY2lkZSB0aGV5IHdhbnQgdG8gc2lnbiBzb21ldGhpbmcuIFRoZXkgYmVnaW4gdGhlIHNpZ25pbmcgcHJvdG9jb2xcbiAqICAgIGJ5IGdlbmVyYXRpbmcgc2hhcmVzIG9mIGFuIGVwaGVtZXJhbCBrZXkuXG4gKlxuICogICAgYSkgRWFjaCBzaWduZXIgdXNlcyBoaXMgcC1zaGFyZSBhbmQgdGhlIGotc2hhcmVzIHN0b3JlZCBmb3Igb3RoZXIgcGxheWVycyB0byBnZW5lcmF0ZSBoaXMgc2lnbmluZyBzaGFyZS5cbiAqICAgIGIpIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwcml2YXRlIHgtc2hhcmUgYW5kIHB1YmxpYyByLXNoYXJlcy5cbiAqXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgci1zaGFyZXMgdG8gb3RoZXIgc2lnbmVycy5cbiAqIDMuIEFmdGVyIGV4Y2hhbmdpbmcgci1zaGFyZXMsIGVhY2ggc2lnbmVyIHNpZ25zIHRoZWlyIHNoYXJlIG9mIHRoZSBlcGhlbWVyYWwga2V5IHVzaW5nIHRoZWlyIHByaXZhdGVcbiAqICAgIHgtc2hhcmUgd2l0aCB0aGUgci1zaGFyZXMgZnJvbSBvdGhlciBzaWduZXJzLlxuICogNC4gVGhpcyByZXN1bHRzIGluIGVhY2ggc2lnbmVyIGhhdmluZyBhIHB1YmxpYyBnLXNoYXJlIHdoaWNoIHRoZXkgc2VuZCB0byB0aGUgb3RoZXIgc2lnbmVycy5cbiAqIDUuIEFmdGVyIHRoZSBzaWduZXJzIGJyb2FkY2FzdCB0aGVpciBnLXNoYXJlcywgdGhlIGZpbmFsIHNpZ25hdHVyZSBjYW4gYmUgcmUtY29uc3RydWN0ZWQgaW5kZXBlbmRlbnRseS5cbiAqL1xuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5pbXBvcnQgeyByYW5kb21CeXRlcywgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBFZDI1NTE5Q3VydmUgfSBmcm9tICcuLi8uLi9jdXJ2ZXMnO1xuaW1wb3J0IFNoYW1pciBmcm9tICcuLi8uLi9zaGFtaXInO1xuaW1wb3J0IEhEVHJlZSBmcm9tICcuLi8uLi9oZFRyZWUnO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckxFLCBiaWdJbnRUb0J1ZmZlckxFLCBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUsIGNsYW1wIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQge1xuICBLZXlTaGFyZSxcbiAgVVNoYXJlLFxuICBZU2hhcmUsXG4gIEtleUNvbWJpbmUsXG4gIFBTaGFyZSxcbiAgU3Via2V5U2hhcmUsXG4gIEpTaGFyZSxcbiAgU2lnblNoYXJlLFxuICBTaWduYXR1cmUsXG4gIFhTaGFyZSxcbiAgUlNoYXJlLFxuICBHU2hhcmUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyAyXjI1NlxuY29uc3QgYmFzZSA9IEJpZ0ludCgnMHgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRkc2Ege1xuICBzdGF0aWMgY3VydmU6IEVkMjU1MTlDdXJ2ZSA9IG5ldyBFZDI1NTE5Q3VydmUoKTtcbiAgc3RhdGljIHNoYW1pcjogU2hhbWlyID0gbmV3IFNoYW1pcihFZGRzYS5jdXJ2ZSk7XG4gIHN0YXRpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHN0YXRpYyBhc3luYyBpbml0aWFsaXplKGhkVHJlZT86IEhEVHJlZSk6IFByb21pc2U8RWRkc2E+IHtcbiAgICBpZiAoIUVkZHNhLmluaXRpYWxpemVkKSB7XG4gICAgICBhd2FpdCBFZDI1NTE5Q3VydmUuaW5pdGlhbGl6ZSgpO1xuICAgICAgRWRkc2EuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRWRkc2EoaGRUcmVlKTtcbiAgfVxuXG4gIGhkVHJlZT86IEhEVHJlZTtcblxuICBjb25zdHJ1Y3RvcihoZFRyZWU/OiBIRFRyZWUpIHtcbiAgICB0aGlzLmhkVHJlZSA9IGhkVHJlZTtcbiAgfVxuXG4gIGtleVNoYXJlKGluZGV4OiBudW1iZXIsIHRocmVzaG9sZDogbnVtYmVyLCBudW1TaGFyZXM6IG51bWJlciwgc2VlZD86IEJ1ZmZlcik6IEtleVNoYXJlIHtcbiAgICBhc3NlcnQoaW5kZXggPiAwICYmIGluZGV4IDw9IG51bVNoYXJlcyk7XG4gICAgaWYgKHNlZWQgJiYgc2VlZC5sZW5ndGggIT09IDY0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlZWQgbXVzdCBoYXZlIGxlbmd0aCA2NCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlZWRjaGFpbiA9IHNlZWQgPz8gcmFuZG9tQnl0ZXMoNjQpO1xuICAgIGNvbnN0IGFjdHVhbFNlZWQgPSBzZWVkY2hhaW4uc2xpY2UoMCwgMzIpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IHNlZWRjaGFpbi5zbGljZSgzMik7XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShhY3R1YWxTZWVkKS5kaWdlc3QoKTtcbiAgICBjb25zdCB1ID0gY2xhbXAoYmlnSW50RnJvbUJ1ZmZlckxFKGguc2xpY2UoMCwgMzIpKSk7XG4gICAgY29uc3QgeSA9IEVkZHNhLmN1cnZlLmJhc2VQb2ludE11bHQodSk7XG4gICAgY29uc3Qgc3BsaXRfdSA9IEVkZHNhLnNoYW1pci5zcGxpdCh1LCB0aHJlc2hvbGQsIG51bVNoYXJlcyk7XG5cbiAgICBjb25zdCBQX2k6IFVTaGFyZSA9IHtcbiAgICAgIGk6IGluZGV4LFxuICAgICAgdDogdGhyZXNob2xkLFxuICAgICAgbjogbnVtU2hhcmVzLFxuICAgICAgeTogYmlnSW50VG9CdWZmZXJMRSh5LCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgc2VlZDogYWN0dWFsU2VlZC50b1N0cmluZygnaGV4JyksXG4gICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICBjb25zdCBzaGFyZXM6IEtleVNoYXJlID0ge1xuICAgICAgdVNoYXJlOiBQX2ksXG4gICAgICB5U2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBpbmQgaW4gc3BsaXRfdSkge1xuICAgICAgY29uc3QgaSA9IHBhcnNlSW50KGluZCwgMTApO1xuICAgICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgc2hhcmVzLnlTaGFyZXNbaV0gPSB7XG4gICAgICAgIGksXG4gICAgICAgIGo6IFBfaS5pLFxuICAgICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUoc3BsaXRfdVtpbmRdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc2hhcmVzO1xuICB9XG5cbiAga2V5Q29tYmluZSh1U2hhcmU6IFVTaGFyZSwgeVNoYXJlczogWVNoYXJlW10pOiBLZXlDb21iaW5lIHtcbiAgICBjb25zdCBoID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKEJ1ZmZlci5mcm9tKHVTaGFyZS5zZWVkLCAnaGV4JykpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHUgPSBjbGFtcChiaWdJbnRGcm9tQnVmZmVyTEUoaC5zbGljZSgwLCAzMikpKTtcbiAgICBjb25zdCB5VmFsdWVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKChzaGFyZSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHNoYXJlLnksICdoZXgnKSkpO1xuICAgIGNvbnN0IHkgPSB5VmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG4gICAgY29uc3QgY2hhaW5jb2RlcyA9IFt1U2hhcmUsIC4uLnlTaGFyZXNdLm1hcCgoeyBjaGFpbmNvZGUgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNoYWluY29kZSwgJ2hleCcpKSk7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gY2hhaW5jb2Rlcy5yZWR1Y2UoKGFjYywgY2hhaW5jb2RlKSA9PiAoYWNjICsgY2hhaW5jb2RlKSAlIGJhc2UpO1xuXG4gICAgY29uc3QgUF9pOiBQU2hhcmUgPSB7XG4gICAgICBpOiB1U2hhcmUuaSxcbiAgICAgIHQ6IHVTaGFyZS50LFxuICAgICAgbjogdVNoYXJlLm4sXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcmVmaXg6IGguc2xpY2UoMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICBjb25zdCBwbGF5ZXJzOiBLZXlDb21iaW5lID0ge1xuICAgICAgcFNoYXJlOiBQX2ksXG4gICAgICBqU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgeVNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSB5U2hhcmVzW2luZF07XG4gICAgICBwbGF5ZXJzLmpTaGFyZXNbUF9qLmpdID0ge1xuICAgICAgICBpOiBQX2ouaixcbiAgICAgICAgajogUF9pLmksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcGxheWVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmVzIGEgY2hpbGQgY29tbW9uIGtleWNoYWluIGZyb20gY29tbW9uIGtleWNoYWluXG4gICAqXG4gICAqIEBwYXJhbSBjb21tb25LZXljaGFpbiAtIGNvbW1vbiBrZXljaGFpbiBhcyBhIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHBhdGggLSBiaXAzMiBwYXRoXG4gICAqIEByZXR1cm4ge3N0cmluZ30gZGVyaXZlZCBjb21tb24ga2V5Y2hhaW4gYXMgYSBoZXggc3RyaW5nXG4gICAqL1xuICBkZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluOiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaGRUcmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGRlcml2ZSBrZXkgd2l0aG91dCBIRFRyZWUgaW1wbGVtZW50YXRpb25cIik7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5Y2hhaW4gPSBCdWZmZXIuZnJvbShjb21tb25LZXljaGFpbiwgJ2hleCcpO1xuXG4gICAgY29uc3QgZGVyaXZlZFB1YmxpY0tleWNoYWluID0gdGhpcy5oZFRyZWUucHVibGljRGVyaXZlKFxuICAgICAge1xuICAgICAgICBwazogYmlnSW50RnJvbUJ1ZmZlckxFKGtleWNoYWluLnNsaWNlKDAsIDMyKSksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50RnJvbUJ1ZmZlckJFKGtleWNoYWluLnNsaWNlKDMyKSksXG4gICAgICB9LFxuICAgICAgcGF0aFxuICAgICk7XG5cbiAgICBjb25zdCBkZXJpdmVkUGsgPSBiaWdJbnRUb0J1ZmZlckxFKGRlcml2ZWRQdWJsaWNLZXljaGFpbi5waywgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBkZXJpdmVkQ2hhaW5jb2RlID0gYmlnSW50VG9CdWZmZXJCRShkZXJpdmVkUHVibGljS2V5Y2hhaW4uY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgcmV0dXJuIGRlcml2ZWRQayArIGRlcml2ZWRDaGFpbmNvZGU7XG4gIH1cblxuICBrZXlEZXJpdmUodVNoYXJlOiBVU2hhcmUsIHlTaGFyZXM6IFlTaGFyZVtdLCBwYXRoOiBzdHJpbmcpOiBTdWJrZXlTaGFyZSB7XG4gICAgaWYgKHRoaXMuaGRUcmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGRlcml2ZSBrZXkgd2l0aG91dCBIRFRyZWUgaW1wbGVtZW50YXRpb25cIik7XG4gICAgfVxuICAgIGNvbnN0IGggPSBjcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoQnVmZmVyLmZyb20odVNoYXJlLnNlZWQsICdoZXgnKSkuZGlnZXN0KCk7XG4gICAgY29uc3QgeVZhbHVlcyA9IFt1U2hhcmUsIC4uLnlTaGFyZXNdLm1hcCgoc2hhcmUpID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS55LCAnaGV4JykpKTtcbiAgICBjb25zdCB5ID0geVZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFZGRzYS5jdXJ2ZS5wb2ludEFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuICAgIGNvbnN0IHUgPSBjbGFtcChiaWdJbnRGcm9tQnVmZmVyTEUoaC5zbGljZSgwLCAzMikpKTtcbiAgICBjb25zdCBwcmVmaXggPSBiaWdJbnRGcm9tQnVmZmVyQkUoaC5zbGljZSgzMikpO1xuICAgIGxldCBjb250cmliQ2hhaW5jb2RlID0gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKHVTaGFyZS5jaGFpbmNvZGUsICdoZXgnKSk7XG4gICAgY29uc3QgY2hhaW5jb2RlcyA9IFtcbiAgICAgIGNvbnRyaWJDaGFpbmNvZGUsXG4gICAgICAuLi55U2hhcmVzLm1hcCgoeyBjaGFpbmNvZGUgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNoYWluY29kZSwgJ2hleCcpKSksXG4gICAgXTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZSgoYWNjLCBjaGFpbmNvZGUpID0+IChhY2MgKyBjaGFpbmNvZGUpICUgYmFzZSk7XG5cbiAgICAvLyBEZXJpdmUgc3Via2V5LlxuICAgIGNvbnN0IHN1YmtleSA9IHRoaXMuaGRUcmVlLnByaXZhdGVEZXJpdmUoeyBwazogeSwgc2s6IHUsIHByZWZpeCwgY2hhaW5jb2RlIH0sIHBhdGgpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG5ldyBwdWJsaWMga2V5IGNvbnRyaWJ1dGlvbi5cbiAgICBjb25zdCBjb250cmliWSA9IEVkZHNhLmN1cnZlLmJhc2VQb2ludE11bHQoc3Via2V5LnNrKTtcblxuICAgIC8vIENhbGN1bGF0ZSBuZXcgY2hhaW5jb2RlIGNvbnRyaWJ1dGlvbi5cbiAgICBjb25zdCBjaGFpbmNvZGVEZWx0YSA9IChiYXNlICsgc3Via2V5LmNoYWluY29kZSAtIGNoYWluY29kZSkgJSBiYXNlO1xuICAgIGNvbnRyaWJDaGFpbmNvZGUgPSAoY29udHJpYkNoYWluY29kZSArIGNoYWluY29kZURlbHRhKSAlIGJhc2U7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IHUgdmFsdWVzLlxuICAgIGNvbnN0IHNwbGl0X3UgPSBFZGRzYS5zaGFtaXIuc3BsaXQoc3Via2V5LnNrLCB1U2hhcmUudCwgdVNoYXJlLm4pO1xuXG4gICAgY29uc3QgUF9pOiBQU2hhcmUgPSB7XG4gICAgICBpOiB1U2hhcmUuaSxcbiAgICAgIHQ6IHVTaGFyZS50LFxuICAgICAgbjogdVNoYXJlLm4sXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHN1YmtleS5waywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUoc3Via2V5LnNrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcHJlZml4OiBiaWdJbnRUb0J1ZmZlckJFKHN1YmtleS5wcmVmaXgsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBjaGFpbmNvZGU6IGJpZ0ludFRvQnVmZmVyQkUoc3Via2V5LmNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2hhcmVzOiBTdWJrZXlTaGFyZSA9IHtcbiAgICAgIHBTaGFyZTogUF9pLFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAobGV0IGluZCA9IDA7IGluZCA8IHlTaGFyZXMubGVuZ3RoOyBpbmQrKykge1xuICAgICAgY29uc3QgUF9qID0geVNoYXJlc1tpbmRdO1xuICAgICAgc2hhcmVzLnlTaGFyZXNbUF9qLmpdID0ge1xuICAgICAgICBpOiBQX2ouaixcbiAgICAgICAgajogUF9pLmksXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoY29udHJpYlksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUoc3BsaXRfdVtQX2oual0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShjb250cmliQ2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVzO1xuICB9XG5cbiAgc2lnblNoYXJlKG1lc3NhZ2U6IEJ1ZmZlciwgcFNoYXJlOiBQU2hhcmUsIGpTaGFyZXM6IEpTaGFyZVtdKTogU2lnblNoYXJlIHtcbiAgICBjb25zdCBpbmRpY2VzID0gW3BTaGFyZSwgLi4ualNoYXJlc10ubWFwKCh7IGkgfSkgPT4gaSk7XG4gICAgY29uc3Qgc3BsaXRfdSA9IEVkZHNhLnNoYW1pci5zcGxpdChiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20ocFNoYXJlLnUsICdoZXgnKSksIHBTaGFyZS50LCBwU2hhcmUubik7XG5cbiAgICAvLyBHZW5lcmF0ZSBub25jZSBjb250cmlidXRpb24uXG4gICAgY29uc3QgcHJlZml4ID0gQnVmZmVyLmZyb20ocFNoYXJlLnByZWZpeCwgJ2hleCcpO1xuICAgIGNvbnN0IHJhbmRvbUJ1ZmZlciA9IHJhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBkaWdlc3QgPSBjcmVhdGVIYXNoKCdzaGE1MTInKVxuICAgICAgLnVwZGF0ZShCdWZmZXIuY29uY2F0KFtwcmVmaXgsIG1lc3NhZ2UsIHJhbmRvbUJ1ZmZlcl0pKVxuICAgICAgLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgciA9IEVkZHNhLmN1cnZlLnNjYWxhclJlZHVjZShiaWdJbnRGcm9tQnVmZmVyTEUoZGlnZXN0KSk7XG4gICAgY29uc3QgUiA9IEVkZHNhLmN1cnZlLmJhc2VQb2ludE11bHQocik7XG4gICAgY29uc3Qgc3BsaXRfciA9IEVkZHNhLnNoYW1pci5zcGxpdChyLCBpbmRpY2VzLmxlbmd0aCwgaW5kaWNlcy5sZW5ndGgsIGluZGljZXMpO1xuXG4gICAgY29uc3QgUF9pOiBYU2hhcmUgPSB7XG4gICAgICBpOiBwU2hhcmUuaSxcbiAgICAgIHk6IHBTaGFyZS55LFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W3BTaGFyZS5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHI6IGJpZ0ludFRvQnVmZmVyTEUoc3BsaXRfcltwU2hhcmUuaV0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlczogU2lnblNoYXJlID0ge1xuICAgICAgeFNoYXJlOiBQX2ksXG4gICAgICByU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgalNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBTX2ogPSBqU2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXMuclNoYXJlc1tTX2ouaV0gPSB7XG4gICAgICAgIGk6IFNfai5pLFxuICAgICAgICBqOiBwU2hhcmUuaSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W1Nfai5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgcjogYmlnSW50VG9CdWZmZXJMRShzcGxpdF9yW1Nfai5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgUjogYmlnSW50VG9CdWZmZXJMRShSLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFNoYXJlcztcbiAgfVxuXG4gIHNpZ24obWVzc2FnZTogQnVmZmVyLCBwbGF5ZXJTaGFyZTogWFNoYXJlLCByU2hhcmVzOiBSU2hhcmVbXSwgeVNoYXJlczogWVNoYXJlW10gPSBbXSk6IEdTaGFyZSB7XG4gICAgY29uc3QgU19pID0gcGxheWVyU2hhcmU7XG5cbiAgICBjb25zdCB1VmFsdWVzID0gW3BsYXllclNoYXJlLCAuLi5yU2hhcmVzLCAuLi55U2hhcmVzXS5tYXAoKHsgdSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20odSwgJ2hleCcpKSk7XG4gICAgY29uc3QgeCA9IHVWYWx1ZXMucmVkdWNlKChhY2MsIHUpID0+IEVkZHNhLmN1cnZlLnNjYWxhckFkZChhY2MsIHUpKTtcblxuICAgIGNvbnN0IFJWYWx1ZXMgPSBbcGxheWVyU2hhcmUsIC4uLnJTaGFyZXNdLm1hcCgoeyBSIH0pID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShSLCAnaGV4JykpKTtcbiAgICBjb25zdCBSID0gUlZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFZGRzYS5jdXJ2ZS5wb2ludEFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuXG4gICAgY29uc3QgclZhbHVlcyA9IFtwbGF5ZXJTaGFyZSwgLi4uclNoYXJlc10ubWFwKCh7IHIgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHIsICdoZXgnKSkpO1xuICAgIGNvbnN0IHIgPSByVmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnNjYWxhckFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuXG4gICAgY29uc3QgY29tYmluZWRCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFtiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKSwgQnVmZmVyLmZyb20oU19pLnksICdoZXgnKSwgbWVzc2FnZV0pO1xuICAgIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShjb21iaW5lZEJ1ZmZlcikuZGlnZXN0KCk7XG4gICAgY29uc3QgayA9IEVkZHNhLmN1cnZlLnNjYWxhclJlZHVjZShiaWdJbnRGcm9tQnVmZmVyTEUoZGlnZXN0KSk7XG5cbiAgICBjb25zdCBnYW1tYSA9IEVkZHNhLmN1cnZlLnNjYWxhckFkZChyLCBFZGRzYS5jdXJ2ZS5zY2FsYXJNdWx0KGssIHgpKTtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBpOiBwbGF5ZXJTaGFyZS5pLFxuICAgICAgeTogcGxheWVyU2hhcmUueSxcbiAgICAgIGdhbW1hOiBiaWdJbnRUb0J1ZmZlckxFKGdhbW1hLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgUjogYmlnSW50VG9CdWZmZXJMRShSLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNpZ25Db21iaW5lKHNoYXJlczogR1NoYXJlW10pOiBTaWduYXR1cmUge1xuICAgIGNvbnN0IHkgPSBzaGFyZXNbMF0ueTtcbiAgICBjb25zdCBSID0gc2hhcmVzWzBdLlI7XG5cbiAgICBjb25zdCByZXN1bHRTaGFyZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGluZCBpbiBzaGFyZXMpIHtcbiAgICAgIGNvbnN0IFNfaSA9IHNoYXJlc1tpbmRdO1xuICAgICAgcmVzdWx0U2hhcmVzW1NfaS5pXSA9IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShTX2kuZ2FtbWEsICdoZXgnKSk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ21hOiBiaWdpbnQgPSBFZGRzYS5zaGFtaXIuY29tYmluZShyZXN1bHRTaGFyZXMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIHksXG4gICAgICBSLFxuICAgICAgc2lnbWE6IGJpZ0ludFRvQnVmZmVyTEUoc2lnbWEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgdmVyaWZ5KG1lc3NhZ2U6IEJ1ZmZlciwgc2lnbmF0dXJlOiBTaWduYXR1cmUpOiBib29sZWFuIHtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc2lnbmF0dXJlLnksICdoZXgnKSk7XG4gICAgY29uc3Qgc2lnbmVkTWVzc2FnZSA9IEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKHNpZ25hdHVyZS5SLCAnaGV4JyksIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS5zaWdtYSwgJ2hleCcpXSk7XG4gICAgcmV0dXJuIEVkZHNhLmN1cnZlLnZlcmlmeShtZXNzYWdlLCBzaWduZWRNZXNzYWdlLCBwdWJsaWNLZXkpO1xuICB9XG59XG4iXX0=
@@ -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"}
@@ -0,0 +1,30 @@
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.EDDSA = void 0;
26
+ const eddsa_1 = __importDefault(require("./eddsa"));
27
+ // EDDSA Specific types
28
+ exports.EDDSA = __importStar(require("./types"));
29
+ exports.default = eddsa_1.default;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lZGRzYS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLHVCQUF1QjtBQUN2QixpREFBaUM7QUFFakMsa0JBQWUsZUFBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEVkZHNhIGZyb20gJy4vZWRkc2EnO1xuXG4vLyBFRERTQSBTcGVjaWZpYyB0eXBlc1xuZXhwb3J0ICogYXMgRUREU0EgZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IEVkZHNhO1xuIl19
@@ -0,0 +1,70 @@
1
+ export interface UShare {
2
+ i: number;
3
+ t: number;
4
+ n: number;
5
+ y: string;
6
+ seed: string;
7
+ chaincode: string;
8
+ }
9
+ export interface YShare {
10
+ i: number;
11
+ j: number;
12
+ y: string;
13
+ u: string;
14
+ chaincode: string;
15
+ }
16
+ export interface KeyShare {
17
+ uShare: UShare;
18
+ yShares: Record<number, YShare>;
19
+ }
20
+ export interface PShare {
21
+ i: number;
22
+ t: number;
23
+ n: number;
24
+ y: string;
25
+ u: string;
26
+ prefix: string;
27
+ chaincode: string;
28
+ }
29
+ export interface JShare {
30
+ i: number;
31
+ j: number;
32
+ }
33
+ export interface KeyCombine {
34
+ pShare: PShare;
35
+ jShares: Record<number, JShare>;
36
+ }
37
+ export interface SubkeyShare {
38
+ pShare: PShare;
39
+ yShares: Record<number, YShare>;
40
+ }
41
+ export interface XShare {
42
+ i: number;
43
+ y: string;
44
+ u: string;
45
+ r: string;
46
+ R: string;
47
+ }
48
+ export interface RShare {
49
+ i: number;
50
+ j: number;
51
+ u: string;
52
+ r: string;
53
+ R: string;
54
+ }
55
+ export interface SignShare {
56
+ xShare: XShare;
57
+ rShares: Record<number, RShare>;
58
+ }
59
+ export interface GShare {
60
+ i: number;
61
+ y: string;
62
+ gamma: string;
63
+ R: string;
64
+ }
65
+ export interface Signature {
66
+ y: string;
67
+ R: string;
68
+ sigma: string;
69
+ }
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/account-lib/mpc/tss/eddsa/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,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,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,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,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,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;CACX;AAED,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;CACX;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lZGRzYS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBVU2hhcmUge1xuICBpOiBudW1iZXI7XG4gIHQ6IG51bWJlcjtcbiAgbjogbnVtYmVyO1xuICB5OiBzdHJpbmc7XG4gIHNlZWQ6IHN0cmluZztcbiAgY2hhaW5jb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWVNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG4gIHk6IHN0cmluZztcbiAgdTogc3RyaW5nO1xuICBjaGFpbmNvZGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLZXlTaGFyZSB7XG4gIHVTaGFyZTogVVNoYXJlO1xuICB5U2hhcmVzOiBSZWNvcmQ8bnVtYmVyLCBZU2hhcmU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBTaGFyZSB7XG4gIGk6IG51bWJlcjtcbiAgdDogbnVtYmVyO1xuICBuOiBudW1iZXI7XG4gIHk6IHN0cmluZztcbiAgdTogc3RyaW5nO1xuICBwcmVmaXg6IHN0cmluZztcbiAgY2hhaW5jb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSlNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Q29tYmluZSB7XG4gIHBTaGFyZTogUFNoYXJlO1xuICBqU2hhcmVzOiBSZWNvcmQ8bnVtYmVyLCBKU2hhcmU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YmtleVNoYXJlIHtcbiAgcFNoYXJlOiBQU2hhcmU7XG4gIHlTaGFyZXM6IFJlY29yZDxudW1iZXIsIFlTaGFyZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWFNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICB5OiBzdHJpbmc7XG4gIHU6IHN0cmluZztcbiAgcjogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUlNoYXJlIHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG4gIHU6IHN0cmluZztcbiAgcjogc3RyaW5nO1xuICBSOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblNoYXJlIHtcbiAgeFNoYXJlOiBYU2hhcmU7XG4gIHJTaGFyZXM6IFJlY29yZDxudW1iZXIsIFJTaGFyZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR1NoYXJlIHtcbiAgaTogbnVtYmVyO1xuICB5OiBzdHJpbmc7XG4gIGdhbW1hOiBzdHJpbmc7XG4gIFI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXR1cmUge1xuICB5OiBzdHJpbmc7XG4gIFI6IHN0cmluZztcbiAgc2lnbWE6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ import Eddsa, { EDDSA } from './eddsa';
2
+ import Ecdsa, { ECDSA } from './ecdsa';
3
+ export * from './eddsa/types';
4
+ export default Eddsa;
5
+ export { Eddsa, EDDSA, Ecdsa, ECDSA };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/account-lib/mpc/tss/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGvC,cAAc,eAAe,CAAC;AAC9B,eAAe,KAAK,CAAC;AAErB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,35 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
22
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ECDSA = exports.Ecdsa = exports.EDDSA = exports.Eddsa = void 0;
26
+ const eddsa_1 = __importStar(require("./eddsa"));
27
+ exports.Eddsa = eddsa_1.default;
28
+ Object.defineProperty(exports, "EDDSA", { enumerable: true, get: function () { return eddsa_1.EDDSA; } });
29
+ const ecdsa_1 = __importStar(require("./ecdsa"));
30
+ exports.Ecdsa = ecdsa_1.default;
31
+ Object.defineProperty(exports, "ECDSA", { enumerable: true, get: function () { return ecdsa_1.ECDSA; } });
32
+ // exporting all eddsa types and making eddsa as default for backward compatibility
33
+ __exportStar(require("./eddsa/types"), exports);
34
+ exports.default = eddsa_1.default;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQXVDO0FBTzlCLGdCQVBGLGVBQUssQ0FPRTtBQUFFLHNGQVBBLGFBQUssT0FPQTtBQU5yQixpREFBdUM7QUFNaEIsZ0JBTmhCLGVBQUssQ0FNZ0I7QUFBRSxzRkFOZCxhQUFLLE9BTWM7QUFKbkMsbUZBQW1GO0FBQ25GLGdEQUE4QjtBQUM5QixrQkFBZSxlQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRWRkc2EsIHsgRUREU0EgfSBmcm9tICcuL2VkZHNhJztcbmltcG9ydCBFY2RzYSwgeyBFQ0RTQSB9IGZyb20gJy4vZWNkc2EnO1xuXG4vLyBleHBvcnRpbmcgYWxsIGVkZHNhIHR5cGVzIGFuZCBtYWtpbmcgZWRkc2EgYXMgZGVmYXVsdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0ICogZnJvbSAnLi9lZGRzYS90eXBlcyc7XG5leHBvcnQgZGVmYXVsdCBFZGRzYTtcblxuZXhwb3J0IHsgRWRkc2EsIEVERFNBLCBFY2RzYSwgRUNEU0EgfTtcbiJdfQ==
@@ -0,0 +1,8 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/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"}
@@ -0,0 +1,42 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY2NvdW50LWxpYi9tcGMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFnQixrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFGRCxnREFFQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLENBQVMsRUFBRSxLQUFjO0lBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVDLElBQUksS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFO1FBQy9CLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9EO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBUkQsNENBUUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUZELGdEQUVDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLEdBQWU7SUFDN0MsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUZELDBDQUVDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsQ0FBUyxFQUFFLEtBQWM7SUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUU7UUFDL0IsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDL0Q7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFSRCw0Q0FRQztBQUVELFNBQWdCLEtBQUssQ0FBQyxDQUFTO0lBQzdCLENBQUMsSUFBSSxNQUFNLENBQUMsb0VBQW9FLENBQUMsQ0FBQztJQUNsRixDQUFDLElBQUksTUFBTSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7SUFDbEYsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBSkQsc0JBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYmlnSW50RnJvbUJ1ZmZlckxFKGJ1ZjogQnVmZmVyKTogYmlnaW50IHtcbiAgcmV0dXJuIEJpZ0ludCgnMHgnICsgQnVmZmVyLmZyb20oYnVmKS5yZXZlcnNlKCkudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpZ0ludFRvQnVmZmVyTEUobjogYmlnaW50LCBieXRlcz86IG51bWJlcik6IEJ1ZmZlciB7XG4gIGxldCB2ID0gbi50b1N0cmluZygxNik7XG4gIHYgPSAnMCcuc2xpY2UoMCwgdi5sZW5ndGggJSAyKSArIHY7XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKHYsICdoZXgnKS5yZXZlcnNlKCk7XG4gIGlmIChieXRlcyAmJiBidWYubGVuZ3RoIDwgYnl0ZXMpIHtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbYnVmLCBCdWZmZXIuYWxsb2MoYnl0ZXMgLSBidWYubGVuZ3RoKV0pO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaWdJbnRGcm9tQnVmZmVyQkUoYnVmOiBCdWZmZXIpOiBiaWdpbnQge1xuICByZXR1cm4gQmlnSW50KCcweCcgKyBidWYudG9TdHJpbmcoJ2hleCcpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpZ0ludEZyb21VOEFCRShidWY6IFVpbnQ4QXJyYXkpOiBiaWdpbnQge1xuICByZXR1cm4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGJ1ZikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50VG9CdWZmZXJCRShuOiBiaWdpbnQsIGJ5dGVzPzogbnVtYmVyKTogQnVmZmVyIHtcbiAgbGV0IHYgPSBuLnRvU3RyaW5nKDE2KTtcbiAgdiA9ICcwJy5zbGljZSgwLCB2Lmxlbmd0aCAlIDIpICsgdjtcbiAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20odiwgJ2hleCcpO1xuICBpZiAoYnl0ZXMgJiYgYnVmLmxlbmd0aCA8IGJ5dGVzKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5hbGxvYyhieXRlcyAtIGJ1Zi5sZW5ndGgpLCBidWZdKTtcbiAgfVxuICByZXR1cm4gYnVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAodTogYmlnaW50KTogYmlnaW50IHtcbiAgdSAmPSBCaWdJbnQoJzB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOCcpO1xuICB1IHw9IEJpZ0ludCgnMHg0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG4gIHJldHVybiB1O1xufVxuIl19