@bitgo/sdk-core 1.1.0-rc.0 → 1.1.0-rc.11

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 (331) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/dist/src/account-lib/baseCoin/enum.d.ts +3 -1
  3. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/enum.js +5 -1
  5. package/dist/src/account-lib/baseCoin/errors.d.ts +0 -6
  6. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
  7. package/dist/src/account-lib/baseCoin/errors.js +2 -11
  8. package/dist/src/account-lib/baseCoin/iface.d.ts +2 -9
  9. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  10. package/dist/src/account-lib/baseCoin/iface.js +1 -1
  11. package/dist/src/account-lib/index.d.ts +1 -0
  12. package/dist/src/account-lib/index.d.ts.map +1 -1
  13. package/dist/src/account-lib/index.js +2 -1
  14. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts +19 -0
  15. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts.map +1 -0
  16. package/dist/src/account-lib/mpc/curves/baseCurve.js +6 -0
  17. package/dist/src/account-lib/mpc/curves/ed25519.d.ts +17 -0
  18. package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -0
  19. package/dist/src/account-lib/mpc/curves/ed25519.js +57 -0
  20. package/dist/src/account-lib/mpc/curves/index.d.ts +6 -0
  21. package/dist/src/account-lib/mpc/curves/index.d.ts.map +1 -0
  22. package/dist/src/account-lib/mpc/curves/index.js +8 -0
  23. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts +17 -0
  24. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -0
  25. package/dist/src/account-lib/mpc/curves/secp256k1.js +70 -0
  26. package/dist/src/account-lib/mpc/hdTree.d.ts +24 -0
  27. package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -0
  28. package/dist/src/account-lib/mpc/hdTree.js +94 -0
  29. package/dist/src/account-lib/mpc/index.d.ts +8 -0
  30. package/dist/src/account-lib/mpc/index.d.ts.map +1 -0
  31. package/dist/src/account-lib/mpc/index.js +23 -0
  32. package/dist/src/account-lib/mpc/shamir.d.ts +26 -0
  33. package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -0
  34. package/dist/src/account-lib/mpc/shamir.js +86 -0
  35. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +25 -0
  36. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
  37. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +121 -0
  38. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts +4 -0
  39. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts.map +1 -0
  40. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +29 -0
  41. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +40 -0
  42. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -0
  43. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +3 -0
  44. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +29 -0
  45. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
  46. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +276 -0
  47. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts +4 -0
  48. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts.map +1 -0
  49. package/dist/src/account-lib/mpc/tss/eddsa/index.js +30 -0
  50. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +70 -0
  51. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -0
  52. package/dist/src/account-lib/mpc/tss/eddsa/types.js +3 -0
  53. package/dist/src/account-lib/mpc/tss/index.d.ts +6 -0
  54. package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -0
  55. package/dist/src/account-lib/mpc/tss/index.js +35 -0
  56. package/dist/src/account-lib/mpc/util.d.ts +8 -0
  57. package/dist/src/account-lib/mpc/util.d.ts.map +1 -0
  58. package/dist/src/account-lib/mpc/util.js +42 -0
  59. package/dist/src/account-lib/util/crypto.js +3 -3
  60. package/dist/src/api/bip32path.d.ts +24 -0
  61. package/dist/src/api/bip32path.d.ts.map +1 -0
  62. package/dist/src/api/bip32path.js +45 -0
  63. package/dist/src/api/index.d.ts +3 -0
  64. package/dist/src/api/index.d.ts.map +1 -0
  65. package/dist/src/{v2 → api}/index.js +2 -2
  66. package/dist/src/api/types.d.ts +20 -0
  67. package/dist/src/api/types.d.ts.map +1 -0
  68. package/dist/src/api/types.js +3 -0
  69. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +230 -0
  70. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -0
  71. package/dist/src/bitgo/baseCoin/baseCoin.js +292 -0
  72. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +257 -0
  73. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -0
  74. package/dist/src/bitgo/baseCoin/iBaseCoin.js +3 -0
  75. package/dist/src/bitgo/baseCoin/index.d.ts +3 -0
  76. package/dist/src/bitgo/baseCoin/index.d.ts.map +1 -0
  77. package/dist/src/bitgo/baseCoin/index.js +15 -0
  78. package/dist/src/bitgo/bip32util.d.ts +17 -0
  79. package/dist/src/bitgo/bip32util.d.ts.map +1 -0
  80. package/dist/src/bitgo/bip32util.js +59 -0
  81. package/dist/src/bitgo/bitcoin.d.ts +16 -0
  82. package/dist/src/bitgo/bitcoin.d.ts.map +1 -0
  83. package/dist/src/bitgo/bitcoin.js +52 -0
  84. package/dist/src/bitgo/bitgoBase.d.ts +22 -0
  85. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -0
  86. package/dist/src/bitgo/bitgoBase.js +3 -0
  87. package/dist/src/bitgo/coinFactory.d.ts +31 -0
  88. package/dist/src/bitgo/coinFactory.d.ts.map +1 -0
  89. package/dist/src/bitgo/coinFactory.js +59 -0
  90. package/dist/src/bitgo/config.d.ts +8 -0
  91. package/dist/src/bitgo/config.d.ts.map +1 -0
  92. package/dist/src/bitgo/config.js +25 -0
  93. package/dist/src/bitgo/ecdh.d.ts +24 -0
  94. package/dist/src/bitgo/ecdh.d.ts.map +1 -0
  95. package/dist/src/bitgo/ecdh.js +80 -0
  96. package/dist/src/bitgo/enterprise/enterprise.d.ts +64 -0
  97. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -0
  98. package/dist/src/bitgo/enterprise/enterprise.js +120 -0
  99. package/dist/src/bitgo/enterprise/enterprises.d.ts +25 -0
  100. package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -0
  101. package/dist/src/bitgo/enterprise/enterprises.js +70 -0
  102. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +15 -0
  103. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -0
  104. package/dist/src/bitgo/enterprise/iEnterprise.js +3 -0
  105. package/dist/src/bitgo/enterprise/iEnterprises.d.ts +10 -0
  106. package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -0
  107. package/dist/src/bitgo/enterprise/iEnterprises.js +3 -0
  108. package/dist/src/bitgo/enterprise/index.d.ts +5 -0
  109. package/dist/src/bitgo/enterprise/index.d.ts.map +1 -0
  110. package/dist/src/bitgo/enterprise/index.js +17 -0
  111. package/dist/src/{v2 → bitgo}/environments.d.ts +0 -0
  112. package/dist/src/bitgo/environments.d.ts.map +1 -0
  113. package/dist/src/bitgo/environments.js +142 -0
  114. package/dist/src/bitgo/errors.d.ts +83 -0
  115. package/dist/src/bitgo/errors.d.ts.map +1 -0
  116. package/dist/src/bitgo/errors.js +163 -0
  117. package/dist/src/bitgo/index.d.ts +26 -0
  118. package/dist/src/bitgo/index.d.ts.map +1 -0
  119. package/dist/src/bitgo/index.js +51 -0
  120. package/dist/src/bitgo/internal/index.d.ts +3 -0
  121. package/dist/src/bitgo/internal/index.d.ts.map +1 -0
  122. package/dist/src/bitgo/internal/index.js +15 -0
  123. package/dist/src/bitgo/internal/internal.d.ts +19 -0
  124. package/dist/src/bitgo/internal/internal.d.ts.map +1 -0
  125. package/dist/src/bitgo/internal/internal.js +33 -0
  126. package/dist/src/bitgo/internal/keycard.d.ts +33 -0
  127. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -0
  128. package/dist/src/bitgo/internal/keycard.js +304 -0
  129. package/dist/src/bitgo/keychain/iKeychains.d.ts +118 -0
  130. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -0
  131. package/dist/src/bitgo/keychain/iKeychains.js +10 -0
  132. package/dist/src/bitgo/keychain/index.d.ts +3 -0
  133. package/dist/src/bitgo/keychain/index.d.ts.map +1 -0
  134. package/dist/src/bitgo/keychain/index.js +15 -0
  135. package/dist/src/bitgo/keychain/keychains.d.ts +90 -0
  136. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -0
  137. package/dist/src/bitgo/keychain/keychains.js +280 -0
  138. package/dist/src/bitgo/market/iMarkets.d.ts +12 -0
  139. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -0
  140. package/dist/src/bitgo/market/iMarkets.js +3 -0
  141. package/dist/src/bitgo/market/index.d.ts +3 -0
  142. package/dist/src/bitgo/market/index.d.ts.map +1 -0
  143. package/dist/src/bitgo/market/index.js +15 -0
  144. package/dist/src/bitgo/market/markets.d.ts +29 -0
  145. package/dist/src/bitgo/market/markets.d.ts.map +1 -0
  146. package/dist/src/bitgo/market/markets.js +70 -0
  147. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +73 -0
  148. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -0
  149. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +28 -0
  150. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts +16 -0
  151. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts.map +1 -0
  152. package/dist/src/bitgo/pendingApproval/iPendingApprovals.js +3 -0
  153. package/dist/src/bitgo/pendingApproval/index.d.ts +5 -0
  154. package/dist/src/bitgo/pendingApproval/index.d.ts.map +1 -0
  155. package/dist/src/bitgo/pendingApproval/index.js +17 -0
  156. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +99 -0
  157. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -0
  158. package/dist/src/bitgo/pendingApproval/pendingApproval.js +319 -0
  159. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts +19 -0
  160. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts.map +1 -0
  161. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +76 -0
  162. package/dist/src/bitgo/recovery/index.d.ts +2 -0
  163. package/dist/src/bitgo/recovery/index.d.ts.map +1 -0
  164. package/dist/src/bitgo/recovery/index.js +14 -0
  165. package/dist/src/bitgo/recovery/initiate.d.ts +49 -0
  166. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -0
  167. package/dist/src/bitgo/recovery/initiate.js +119 -0
  168. package/dist/src/bitgo/trading/affirmation.d.ts +35 -0
  169. package/dist/src/bitgo/trading/affirmation.d.ts.map +1 -0
  170. package/dist/src/bitgo/trading/affirmation.js +53 -0
  171. package/dist/src/bitgo/trading/affirmations.d.ts +23 -0
  172. package/dist/src/bitgo/trading/affirmations.d.ts.map +1 -0
  173. package/dist/src/bitgo/trading/affirmations.js +45 -0
  174. package/dist/src/bitgo/trading/iAffirmation.d.ts +15 -0
  175. package/dist/src/bitgo/trading/iAffirmation.d.ts.map +1 -0
  176. package/dist/src/bitgo/trading/iAffirmation.js +13 -0
  177. package/dist/src/bitgo/trading/iAffirmations.d.ts +10 -0
  178. package/dist/src/bitgo/trading/iAffirmations.d.ts.map +1 -0
  179. package/dist/src/bitgo/trading/iAffirmations.js +3 -0
  180. package/dist/src/bitgo/trading/iSettlement.d.ts +25 -0
  181. package/dist/src/bitgo/trading/iSettlement.d.ts.map +1 -0
  182. package/dist/src/bitgo/trading/iSettlement.js +17 -0
  183. package/dist/src/bitgo/trading/iSettlements.d.ts +19 -0
  184. package/dist/src/bitgo/trading/iSettlements.d.ts.map +1 -0
  185. package/dist/src/bitgo/trading/iSettlements.js +3 -0
  186. package/dist/src/bitgo/trading/iTradingAccount.d.ts +41 -0
  187. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -0
  188. package/dist/src/bitgo/trading/iTradingAccount.js +3 -0
  189. package/dist/src/bitgo/trading/iTradingPartner.d.ts +14 -0
  190. package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +1 -0
  191. package/dist/src/bitgo/trading/iTradingPartner.js +17 -0
  192. package/dist/src/bitgo/trading/iTradingPartners.d.ts +15 -0
  193. package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +1 -0
  194. package/dist/src/bitgo/trading/iTradingPartners.js +9 -0
  195. package/dist/src/bitgo/trading/index.d.ts +18 -0
  196. package/dist/src/bitgo/trading/index.d.ts.map +1 -0
  197. package/dist/src/bitgo/trading/index.js +30 -0
  198. package/dist/src/bitgo/trading/lock.d.ts +16 -0
  199. package/dist/src/bitgo/trading/lock.d.ts.map +1 -0
  200. package/dist/src/bitgo/trading/lock.js +12 -0
  201. package/dist/src/bitgo/trading/payload.d.ts +22 -0
  202. package/dist/src/bitgo/trading/payload.d.ts.map +1 -0
  203. package/dist/src/bitgo/trading/payload.js +3 -0
  204. package/dist/src/bitgo/trading/settlement.d.ts +16 -0
  205. package/dist/src/bitgo/trading/settlement.d.ts.map +1 -0
  206. package/dist/src/bitgo/trading/settlement.js +21 -0
  207. package/dist/src/bitgo/trading/settlements.d.ts +32 -0
  208. package/dist/src/bitgo/trading/settlements.d.ts.map +1 -0
  209. package/dist/src/bitgo/trading/settlements.js +61 -0
  210. package/dist/src/bitgo/trading/trade.d.ts +29 -0
  211. package/dist/src/bitgo/trading/trade.d.ts.map +1 -0
  212. package/dist/src/bitgo/trading/trade.js +11 -0
  213. package/dist/src/bitgo/trading/tradingAccount.d.ts +53 -0
  214. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -0
  215. package/dist/src/bitgo/trading/tradingAccount.js +127 -0
  216. package/dist/src/bitgo/trading/tradingPartner.d.ts +26 -0
  217. package/dist/src/bitgo/trading/tradingPartner.d.ts.map +1 -0
  218. package/dist/src/bitgo/trading/tradingPartner.js +31 -0
  219. package/dist/src/bitgo/trading/tradingPartners.d.ts +24 -0
  220. package/dist/src/bitgo/trading/tradingPartners.d.ts.map +1 -0
  221. package/dist/src/bitgo/trading/tradingPartners.js +32 -0
  222. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +35 -0
  223. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -0
  224. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +95 -0
  225. package/dist/src/bitgo/tss/ecdsa/index.d.ts +4 -0
  226. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -0
  227. package/dist/src/bitgo/tss/ecdsa/index.js +26 -0
  228. package/dist/src/bitgo/tss/ecdsa/types.d.ts +30 -0
  229. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -0
  230. package/dist/src/bitgo/tss/ecdsa/types.js +3 -0
  231. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +102 -0
  232. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -0
  233. package/dist/src/bitgo/tss/eddsa/eddsa.js +256 -0
  234. package/dist/src/bitgo/tss/eddsa/index.d.ts +6 -0
  235. package/dist/src/bitgo/tss/eddsa/index.d.ts.map +1 -0
  236. package/dist/src/bitgo/tss/eddsa/index.js +37 -0
  237. package/dist/src/bitgo/tss/eddsa/types.d.ts +23 -0
  238. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -0
  239. package/dist/src/bitgo/tss/eddsa/types.js +3 -0
  240. package/dist/src/bitgo/tss/index.d.ts +6 -0
  241. package/dist/src/bitgo/tss/index.d.ts.map +1 -0
  242. package/dist/src/bitgo/tss/index.js +42 -0
  243. package/dist/src/bitgo/tss/types.d.ts +6 -0
  244. package/dist/src/bitgo/tss/types.d.ts.map +1 -0
  245. package/dist/src/bitgo/tss/types.js +10 -0
  246. package/dist/src/bitgo/types.d.ts +4 -0
  247. package/dist/src/bitgo/types.d.ts.map +1 -0
  248. package/dist/src/bitgo/types.js +3 -0
  249. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +6 -0
  250. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
  251. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +30 -0
  252. package/dist/src/bitgo/utils/blsUtils.d.ts +51 -0
  253. package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -0
  254. package/dist/src/bitgo/utils/blsUtils.js +166 -0
  255. package/dist/src/bitgo/utils/iBlsUtils.d.ts +14 -0
  256. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +1 -0
  257. package/dist/src/bitgo/utils/iBlsUtils.js +3 -0
  258. package/dist/src/bitgo/utils/index.d.ts +12 -0
  259. package/dist/src/bitgo/utils/index.d.ts.map +1 -0
  260. package/dist/src/bitgo/utils/index.js +37 -0
  261. package/dist/src/bitgo/utils/mpcUtils.d.ts +31 -0
  262. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -0
  263. package/dist/src/bitgo/utils/mpcUtils.js +55 -0
  264. package/dist/src/bitgo/utils/opengpgUtils.d.ts +51 -0
  265. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -0
  266. package/dist/src/bitgo/utils/opengpgUtils.js +136 -0
  267. package/dist/src/bitgo/utils/promise-utils.d.ts +5 -0
  268. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -0
  269. package/dist/src/bitgo/utils/promise-utils.js +12 -0
  270. package/dist/src/bitgo/utils/triple.d.ts +3 -0
  271. package/dist/src/bitgo/utils/triple.d.ts.map +1 -0
  272. package/dist/src/bitgo/utils/triple.js +8 -0
  273. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +117 -0
  274. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -0
  275. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +351 -0
  276. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  277. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -0
  278. package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -0
  279. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +72 -0
  280. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -0
  281. package/dist/src/bitgo/utils/tss/eddsa/types.js +10 -0
  282. package/dist/src/bitgo/utils/tss/index.d.ts +4 -0
  283. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -0
  284. package/dist/src/bitgo/utils/tss/index.js +29 -0
  285. package/dist/src/bitgo/utils/util.d.ts +77 -0
  286. package/dist/src/bitgo/utils/util.d.ts.map +1 -0
  287. package/dist/src/bitgo/utils/util.js +198 -0
  288. package/dist/src/bitgo/wallet/iWallet.d.ts +510 -0
  289. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -0
  290. package/dist/src/bitgo/wallet/iWallet.js +3 -0
  291. package/dist/src/bitgo/wallet/iWallets.d.ts +105 -0
  292. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -0
  293. package/dist/src/bitgo/wallet/iWallets.js +3 -0
  294. package/dist/src/bitgo/wallet/index.d.ts +5 -0
  295. package/dist/src/bitgo/wallet/index.d.ts.map +1 -0
  296. package/dist/src/bitgo/wallet/index.js +17 -0
  297. package/dist/src/bitgo/wallet/wallet.d.ts +650 -0
  298. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -0
  299. package/dist/src/bitgo/wallet/wallet.js +2039 -0
  300. package/dist/src/bitgo/wallet/wallets.d.ts +134 -0
  301. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -0
  302. package/dist/src/bitgo/wallet/wallets.js +605 -0
  303. package/dist/src/bitgo/webhook/iWebhooks.d.ts +26 -0
  304. package/dist/src/bitgo/webhook/iWebhooks.d.ts.map +1 -0
  305. package/dist/src/bitgo/webhook/iWebhooks.js +3 -0
  306. package/dist/src/bitgo/webhook/index.d.ts +3 -0
  307. package/dist/src/bitgo/webhook/index.d.ts.map +1 -0
  308. package/dist/src/bitgo/webhook/index.js +15 -0
  309. package/dist/src/bitgo/webhook/webhooks.d.ts +43 -0
  310. package/dist/src/bitgo/webhook/webhooks.d.ts.map +1 -0
  311. package/dist/src/bitgo/webhook/webhooks.js +102 -0
  312. package/dist/src/{bigojsError.d.ts → bitgojsError.d.ts} +1 -1
  313. package/dist/src/bitgojsError.d.ts.map +1 -0
  314. package/dist/src/bitgojsError.js +11 -0
  315. package/dist/src/common.d.ts +1 -1
  316. package/dist/src/common.d.ts.map +1 -1
  317. package/dist/src/common.js +3 -3
  318. package/dist/src/index.d.ts +3 -2
  319. package/dist/src/index.d.ts.map +1 -1
  320. package/dist/src/index.js +5 -5
  321. package/dist/tsconfig.tsbuildinfo +3047 -624
  322. package/package.json +18 -5
  323. package/dist/src/bigojsError.d.ts.map +0 -1
  324. package/dist/src/bigojsError.js +0 -11
  325. package/dist/src/v2/environments.d.ts.map +0 -1
  326. package/dist/src/v2/environments.js +0 -142
  327. package/dist/src/v2/index.d.ts +0 -3
  328. package/dist/src/v2/index.d.ts.map +0 -1
  329. package/dist/src/v2/types.d.ts +0 -2
  330. package/dist/src/v2/types.d.ts.map +0 -1
  331. package/dist/src/v2/types.js +0 -3
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isTriple = void 0;
4
+ function isTriple(arr) {
5
+ return arr.length === 3;
6
+ }
7
+ exports.isTriple = isTriple;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3RyaXBsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxTQUFnQixRQUFRLENBQUksR0FBUTtJQUNsQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFGRCw0QkFFQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFRyaXBsZTxUPiA9IFtULCBULCBUXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVHJpcGxlPFQ+KGFycjogVFtdKTogYXJyIGlzIFRyaXBsZTxUPiB7XG4gIHJldHVybiBhcnIubGVuZ3RoID09PSAzO1xufVxuIl19
@@ -0,0 +1,117 @@
1
+ import * as openpgp from 'openpgp';
2
+ import { KeyShare } from '../../../../account-lib/mpc/tss';
3
+ import { IRequestTracer } from '../../../../api';
4
+ import { IBaseCoin, KeychainsTriplet } from '../../../baseCoin';
5
+ import { BitGoBase } from '../../../bitgoBase';
6
+ import { Keychain } from '../../../keychain';
7
+ import { IWallet } from '../../../wallet';
8
+ import { ITssUtils, PrebuildTransactionWithIntentOptions, SignatureShareRecord, TxRequest } from './types';
9
+ import { MpcUtils } from '../../mpcUtils';
10
+ /**
11
+ * Utility functions for TSS work flows.
12
+ */
13
+ export declare class TssUtils extends MpcUtils implements ITssUtils {
14
+ private _wallet?;
15
+ constructor(bitgo: BitGoBase, baseCoin: IBaseCoin, wallet?: IWallet);
16
+ private get wallet();
17
+ /**
18
+ * Creates a Keychain containing the User's TSS signing materials.
19
+ *
20
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
21
+ * @param userKeyShare - user's TSS key share
22
+ * @param backupKeyShare - backup's TSS key share
23
+ * @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
24
+ * @param passphrase - wallet passphrase used to encrypt user's signing materials
25
+ * @param [originalPasscodeEncryptionCode] - optional encryption code needed for wallet password reset for hot wallets
26
+ */
27
+ createUserKeychain(userGpgKey: openpgp.SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase: string, originalPasscodeEncryptionCode?: string): Promise<Keychain>;
28
+ /**
29
+ * Creates a Keychain containing the Backup party's TSS signing materials.
30
+ *
31
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
32
+ * @param userKeyShare - User's TSS Keyshare
33
+ * @param backupKeyShare - Backup's TSS Keyshare
34
+ * @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
35
+ * @param passphrase - wallet passphrase used to encrypt user's signing materials
36
+ */
37
+ createBackupKeychain(userGpgKey: openpgp.SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, bitgoKeychain: Keychain, passphrase: string): Promise<Keychain>;
38
+ /**
39
+ * Creates a Keychain containing BitGo's TSS signing materials.
40
+ *
41
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
42
+ * @param userKeyShare - user's TSS key share
43
+ * @param backupKeyShare - backup's TSS key share
44
+ */
45
+ createBitgoKeychain(userGpgKey: openpgp.SerializedKeyPair<string>, userKeyShare: KeyShare, backupKeyShare: KeyShare, enterprise?: string): Promise<Keychain>;
46
+ /**
47
+ * Creates User, Backup, and BitGo TSS Keychains.
48
+ *
49
+ * @param params.passphrase - passphrase used to encrypt signing materials created for User and Backup
50
+ */
51
+ createKeychains(params: {
52
+ passphrase: string;
53
+ enterprise?: string;
54
+ originalPasscodeEncryptionCode?: string;
55
+ }): Promise<KeychainsTriplet>;
56
+ /**
57
+ * Signs the transaction associated to the transaction request.
58
+ *
59
+ * @param txRequest - transaction request object or id
60
+ * @param prv - decrypted private key
61
+ * @param reqId - request id
62
+ * @returns {Promise<TxRequest>} fully signed TxRequest object
63
+ */
64
+ signTxRequest(params: {
65
+ txRequest: string | TxRequest;
66
+ prv: string;
67
+ reqId: IRequestTracer;
68
+ }): Promise<TxRequest>;
69
+ /**
70
+ * Builds a tx request from params and verify it
71
+ *
72
+ * @param {PrebuildTransactionWithIntentOptions} params - parameters to build the tx
73
+ * @param apiVersion
74
+ * @returns {Promise<TxRequest>} - a built tx request
75
+ */
76
+ prebuildTxWithIntent(params: PrebuildTransactionWithIntentOptions, apiVersion?: string): Promise<TxRequest>;
77
+ /**
78
+ * Call delete signature shares for a txRequest, the endpoint delete the signatures and return them
79
+ *
80
+ * @param {string} txRequestId tx id reference to delete signature shares
81
+ * @returns {SignatureShareRecord[]}
82
+ */
83
+ deleteSignatureShares(txRequestId: string): Promise<SignatureShareRecord[]>;
84
+ /**
85
+ * Initialize the send procedure once Bitgo has the User To Bitgo GShare
86
+ *
87
+ * @param {String} txRequestId - the txRequest Id
88
+ * @returns {Promise<any>}
89
+ */
90
+ sendTxRequest(txRequestId: string): Promise<any>;
91
+ /**
92
+ * Delete signature shares, get the tx request without them from the db and sign it to finally send it.
93
+ *
94
+ * Note : This can be performed in order to reach latest network conditions required on pending approval flow.
95
+ *
96
+ * @param {String} txRequestId - the txRequest Id to make the requests.
97
+ * @param {String} decryptedPrv - decrypted prv to sign the tx request.
98
+ * @param {RequestTracer} reqId id tracer.
99
+ * @returns {Promise<any>}
100
+ */
101
+ recreateTxRequest(txRequestId: string, decryptedPrv: string, reqId: IRequestTracer): Promise<TxRequest>;
102
+ /**
103
+ * Gets the latest Tx Request by id
104
+ *
105
+ * @param {String} txRequestId - the txRequest Id
106
+ * @returns {Promise<TxRequest>}
107
+ */
108
+ getTxRequest(txRequestId: string): Promise<TxRequest>;
109
+ /**
110
+ * Get the commonPub portion of the commonKeychain.
111
+ *
112
+ * @param {String} commonKeychain
113
+ * @returns {string}
114
+ */
115
+ static getPublicKeyFromCommonKeychain(commonKeychain: string): string;
116
+ }
117
+ //# sourceMappingURL=eddsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/eddsa.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAc,EAAE,QAAQ,EAAU,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAsB,QAAQ,EAAW,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,oCAAoC,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC3G,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAY1C;;GAEG;AAEH,qBAAa,QAAS,SAAQ,QAAS,YAAW,SAAS;IACzD,OAAO,CAAC,OAAO,CAAC,CAAU;gBAEd,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO;IAKnE,OAAO,KAAK,MAAM,GAKjB;IAED;;;;;;;;;OASG;IACG,kBAAkB,CACtB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,EAClB,8BAA8B,CAAC,EAAE,MAAM,GACtC,OAAO,CAAC,QAAQ,CAAC;IA8CpB;;;;;;;;OAQG;IACG,oBAAoB,CACxB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,aAAa,EAAE,QAAQ,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC;IA6CpB;;;;;;OAMG;IACG,mBAAmB,CACvB,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC7C,YAAY,EAAE,QAAQ,EACtB,cAAc,EAAE,QAAQ,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAqCpB;;;;OAIG;IACG,eAAe,CAAC,MAAM,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;KACzC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkD7B;;;;;;;OAOG;IACG,aAAa,CAAC,MAAM,EAAE;QAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,cAAc,CAAC;KACvB,GAAG,OAAO,CAAC,SAAS,CAAC;IAqDtB;;;;;;OAMG;IACG,oBAAoB,CAAC,MAAM,EAAE,oCAAoC,EAAE,UAAU,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA4BjH;;;;;OAKG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAOjF;;;;;OAKG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAOtD;;;;;;;;;OASG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IAO7G;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3D;;;;;OAKG;IACH,MAAM,CAAC,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;CAOtE"}
@@ -0,0 +1,351 @@
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.TssUtils = void 0;
26
+ /**
27
+ * @prettier
28
+ */
29
+ const bs58 = __importStar(require("bs58"));
30
+ const crypto = __importStar(require("crypto"));
31
+ const _ = __importStar(require("lodash"));
32
+ const openpgp = __importStar(require("openpgp"));
33
+ const hdTree_1 = require("../../../../account-lib/mpc/hdTree");
34
+ const tss_1 = __importDefault(require("../../../../account-lib/mpc/tss"));
35
+ const mpcUtils_1 = require("../../mpcUtils");
36
+ const opengpgUtils_1 = require("../../opengpgUtils");
37
+ const tss_2 = require("../../../tss");
38
+ /**
39
+ * Utility functions for TSS work flows.
40
+ */
41
+ class TssUtils extends mpcUtils_1.MpcUtils {
42
+ constructor(bitgo, baseCoin, wallet) {
43
+ super(bitgo, baseCoin);
44
+ this._wallet = wallet;
45
+ }
46
+ get wallet() {
47
+ if (_.isNil(this._wallet)) {
48
+ throw new Error('Wallet not defined');
49
+ }
50
+ return this._wallet;
51
+ }
52
+ /**
53
+ * Creates a Keychain containing the User's TSS signing materials.
54
+ *
55
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
56
+ * @param userKeyShare - user's TSS key share
57
+ * @param backupKeyShare - backup's TSS key share
58
+ * @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
59
+ * @param passphrase - wallet passphrase used to encrypt user's signing materials
60
+ * @param [originalPasscodeEncryptionCode] - optional encryption code needed for wallet password reset for hot wallets
61
+ */
62
+ async createUserKeychain(userGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, passphrase, originalPasscodeEncryptionCode) {
63
+ const MPC = await tss_1.default.initialize();
64
+ const bitgoKeyShares = bitgoKeychain.keyShares;
65
+ if (!bitgoKeyShares) {
66
+ throw new Error('Missing BitGo key shares');
67
+ }
68
+ const bitGoToUserShare = bitgoKeyShares.find((keyShare) => keyShare.from === 'bitgo' && keyShare.to === 'user');
69
+ if (!bitGoToUserShare) {
70
+ throw new Error('Missing BitGo to User key share');
71
+ }
72
+ const bitGoToUserPrivateShare = await this.decryptPrivateShare(bitGoToUserShare.privateShare, userGpgKey);
73
+ const bitgoToUser = {
74
+ i: 1,
75
+ j: 3,
76
+ y: bitGoToUserShare.publicShare.slice(0, 64),
77
+ u: bitGoToUserPrivateShare.slice(0, 64),
78
+ chaincode: bitGoToUserPrivateShare.slice(64),
79
+ };
80
+ // TODO(BG-47170): use tss.createCombinedKey helper when signatures are supported
81
+ const userCombined = MPC.keyCombine(userKeyShare.uShare, [backupKeyShare.yShares[1], bitgoToUser]);
82
+ const commonKeychain = userCombined.pShare.y + userCombined.pShare.chaincode;
83
+ if (commonKeychain !== bitgoKeychain.commonKeychain) {
84
+ throw new Error('Failed to create user keychain - commonKeychains do not match.');
85
+ }
86
+ const userSigningMaterial = {
87
+ uShare: userKeyShare.uShare,
88
+ bitgoYShare: bitgoToUser,
89
+ backupYShare: backupKeyShare.yShares[1],
90
+ };
91
+ const userKeychainParams = {
92
+ source: 'user',
93
+ keyType: 'tss',
94
+ commonKeychain: bitgoKeychain.commonKeychain,
95
+ encryptedPrv: this.bitgo.encrypt({ input: JSON.stringify(userSigningMaterial), password: passphrase }),
96
+ originalPasscodeEncryptionCode,
97
+ };
98
+ return await this.baseCoin.keychains().add(userKeychainParams);
99
+ }
100
+ /**
101
+ * Creates a Keychain containing the Backup party's TSS signing materials.
102
+ *
103
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
104
+ * @param userKeyShare - User's TSS Keyshare
105
+ * @param backupKeyShare - Backup's TSS Keyshare
106
+ * @param bitgoKeychain - previously created BitGo keychain; must be compatible with user and backup key shares
107
+ * @param passphrase - wallet passphrase used to encrypt user's signing materials
108
+ */
109
+ async createBackupKeychain(userGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, passphrase) {
110
+ const MPC = await tss_1.default.initialize();
111
+ const bitgoKeyShares = bitgoKeychain.keyShares;
112
+ if (!bitgoKeyShares) {
113
+ throw new Error('Invalid bitgo keyshares');
114
+ }
115
+ const bitGoToBackupShare = bitgoKeyShares.find((keyShare) => keyShare.from === 'bitgo' && keyShare.to === 'backup');
116
+ if (!bitGoToBackupShare) {
117
+ throw new Error('Missing BitGo to User key share');
118
+ }
119
+ const bitGoToBackupPrivateShare = await this.decryptPrivateShare(bitGoToBackupShare.privateShare, userGpgKey);
120
+ const bitgoToBackup = {
121
+ i: 2,
122
+ j: 3,
123
+ y: bitGoToBackupShare.publicShare.slice(0, 64),
124
+ u: bitGoToBackupPrivateShare.slice(0, 64),
125
+ chaincode: bitGoToBackupPrivateShare.slice(64),
126
+ };
127
+ // TODO(BG-47170): use tss.createCombinedKey helper when signatures are supported
128
+ const backupCombined = MPC.keyCombine(backupKeyShare.uShare, [userKeyShare.yShares[2], bitgoToBackup]);
129
+ const commonKeychain = backupCombined.pShare.y + backupCombined.pShare.chaincode;
130
+ if (commonKeychain !== bitgoKeychain.commonKeychain) {
131
+ throw new Error('Failed to create backup keychain - commonKeychains do not match.');
132
+ }
133
+ const backupSigningMaterial = {
134
+ uShare: backupKeyShare.uShare,
135
+ bitgoYShare: bitgoToBackup,
136
+ userYShare: userKeyShare.yShares[2],
137
+ };
138
+ const prv = JSON.stringify(backupSigningMaterial);
139
+ return await this.baseCoin.keychains().createBackup({
140
+ source: 'backup',
141
+ keyType: 'tss',
142
+ commonKeychain: bitgoKeychain.commonKeychain,
143
+ prv: prv,
144
+ encryptedPrv: this.bitgo.encrypt({ input: prv, password: passphrase }),
145
+ });
146
+ }
147
+ /**
148
+ * Creates a Keychain containing BitGo's TSS signing materials.
149
+ *
150
+ * @param userGpgKey - ephemeral GPG key to encrypt / decrypt sensitve data exchanged between user and server
151
+ * @param userKeyShare - user's TSS key share
152
+ * @param backupKeyShare - backup's TSS key share
153
+ */
154
+ async createBitgoKeychain(userGpgKey, userKeyShare, backupKeyShare, enterprise) {
155
+ // TODO(BG-47170): use tss.encryptYShare helper when signatures are supported
156
+ const userToBitgoPublicShare = Buffer.concat([
157
+ Buffer.from(userKeyShare.uShare.y, 'hex'),
158
+ Buffer.from(userKeyShare.uShare.chaincode, 'hex'),
159
+ ]).toString('hex');
160
+ const userToBitgoPrivateShare = Buffer.concat([
161
+ Buffer.from(userKeyShare.yShares[3].u, 'hex'),
162
+ Buffer.from(userKeyShare.yShares[3].chaincode, 'hex'),
163
+ ]).toString('hex');
164
+ const userToBitgoKeyShare = {
165
+ publicShare: userToBitgoPublicShare,
166
+ privateShare: userToBitgoPrivateShare,
167
+ };
168
+ const backupToBitgoPublicShare = Buffer.concat([
169
+ Buffer.from(backupKeyShare.uShare.y, 'hex'),
170
+ Buffer.from(backupKeyShare.uShare.chaincode, 'hex'),
171
+ ]).toString('hex');
172
+ const backupToBitgoPrivateShare = Buffer.concat([
173
+ Buffer.from(backupKeyShare.yShares[3].u, 'hex'),
174
+ Buffer.from(backupKeyShare.yShares[3].chaincode, 'hex'),
175
+ ]).toString('hex');
176
+ const backupToBitgoKeyShare = {
177
+ publicShare: backupToBitgoPublicShare,
178
+ privateShare: backupToBitgoPrivateShare,
179
+ };
180
+ return await this.createBitgoKeychainInWP(userGpgKey, userToBitgoKeyShare, backupToBitgoKeyShare, 'tss', enterprise);
181
+ }
182
+ /**
183
+ * Creates User, Backup, and BitGo TSS Keychains.
184
+ *
185
+ * @param params.passphrase - passphrase used to encrypt signing materials created for User and Backup
186
+ */
187
+ async createKeychains(params) {
188
+ const MPC = await tss_1.default.initialize();
189
+ const m = 2;
190
+ const n = 3;
191
+ const userKeyShare = MPC.keyShare(1, m, n);
192
+ const backupKeyShare = MPC.keyShare(2, m, n);
193
+ const randomHexString = crypto.randomBytes(12).toString('hex');
194
+ // Allow generating secp256k1 key pairs
195
+ openpgp.config.rejectCurves = new Set();
196
+ const userGpgKey = await openpgp.generateKey({
197
+ userIDs: [
198
+ {
199
+ name: randomHexString,
200
+ email: `user-${randomHexString}@${randomHexString}.com`,
201
+ },
202
+ ],
203
+ curve: 'secp256k1',
204
+ });
205
+ const bitgoKeychain = await this.createBitgoKeychain(userGpgKey, userKeyShare, backupKeyShare, params.enterprise);
206
+ const userKeychainPromise = this.createUserKeychain(userGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, params.passphrase, params.originalPasscodeEncryptionCode);
207
+ const backupKeychainPromise = this.createBackupKeychain(userGpgKey, userKeyShare, backupKeyShare, bitgoKeychain, params.passphrase);
208
+ const [userKeychain, backupKeychain] = await Promise.all([userKeychainPromise, backupKeychainPromise]);
209
+ // create wallet
210
+ const keychains = {
211
+ userKeychain,
212
+ backupKeychain,
213
+ bitgoKeychain,
214
+ };
215
+ return keychains;
216
+ }
217
+ /**
218
+ * Signs the transaction associated to the transaction request.
219
+ *
220
+ * @param txRequest - transaction request object or id
221
+ * @param prv - decrypted private key
222
+ * @param reqId - request id
223
+ * @returns {Promise<TxRequest>} fully signed TxRequest object
224
+ */
225
+ async signTxRequest(params) {
226
+ let txRequestResolved;
227
+ let txRequestId;
228
+ const { txRequest, prv } = params;
229
+ if (typeof txRequest === 'string') {
230
+ txRequestResolved = await tss_2.getTxRequest(this.bitgo, this.wallet.id(), txRequest);
231
+ txRequestId = txRequestResolved.txRequestId;
232
+ }
233
+ else {
234
+ txRequestResolved = txRequest;
235
+ txRequestId = txRequest.txRequestId;
236
+ }
237
+ const hdTree = await hdTree_1.Ed25519BIP32.initialize();
238
+ const MPC = await tss_1.default.initialize(hdTree);
239
+ const userSigningMaterial = JSON.parse(prv);
240
+ if (!userSigningMaterial.backupYShare) {
241
+ throw new Error('Invalid user key - missing backupYShare');
242
+ }
243
+ const signingKey = MPC.keyDerive(userSigningMaterial.uShare, [userSigningMaterial.bitgoYShare, userSigningMaterial.backupYShare], txRequestResolved.unsignedTxs[0].derivationPath);
244
+ const signablePayload = Buffer.from(txRequestResolved.unsignedTxs[0].signableHex, 'hex');
245
+ const userSignShare = await tss_2.createUserSignShare(signablePayload, signingKey.pShare);
246
+ const signerShare = signingKey.yShares[3].u + signingKey.yShares[3].chaincode;
247
+ const bitgoGpgKey = await opengpgUtils_1.getBitgoGpgPubKey(this.bitgo);
248
+ const encryptedSignerShare = await opengpgUtils_1.encryptText(signerShare, bitgoGpgKey);
249
+ await tss_2.offerUserToBitgoRShare(this.bitgo, this.wallet.id(), txRequestId, userSignShare, encryptedSignerShare);
250
+ const bitgoToUserRShare = await tss_2.getBitgoToUserRShare(this.bitgo, this.wallet.id(), txRequestId);
251
+ const userToBitGoGShare = await tss_2.createUserToBitGoGShare(userSignShare, bitgoToUserRShare, userSigningMaterial.backupYShare, userSigningMaterial.bitgoYShare, signablePayload);
252
+ await tss_2.sendUserToBitgoGShare(this.bitgo, this.wallet.id(), txRequestId, userToBitGoGShare);
253
+ return await tss_2.getTxRequest(this.bitgo, this.wallet.id(), txRequestId);
254
+ }
255
+ /**
256
+ * Builds a tx request from params and verify it
257
+ *
258
+ * @param {PrebuildTransactionWithIntentOptions} params - parameters to build the tx
259
+ * @param apiVersion
260
+ * @returns {Promise<TxRequest>} - a built tx request
261
+ */
262
+ async prebuildTxWithIntent(params, apiVersion = 'lite') {
263
+ var _a;
264
+ const chain = this.baseCoin.getChain();
265
+ const intentRecipients = params.recipients.map((recipient) => ({
266
+ address: { address: recipient.address },
267
+ amount: { value: `${recipient.amount}`, symbol: chain },
268
+ }));
269
+ const whitelistedParams = {
270
+ intent: {
271
+ intentType: params.intentType,
272
+ sequenceId: params.sequenceId,
273
+ comment: params.comment,
274
+ recipients: intentRecipients,
275
+ memo: (_a = params.memo) === null || _a === void 0 ? void 0 : _a.value,
276
+ token: params.tokenName,
277
+ nonce: params.nonce,
278
+ },
279
+ apiVersion: apiVersion,
280
+ };
281
+ const unsignedTx = (await this.bitgo
282
+ .post(this.bitgo.url('/wallet/' + this.wallet.id() + '/txrequests', 2))
283
+ .send(whitelistedParams)
284
+ .result());
285
+ return unsignedTx;
286
+ }
287
+ /**
288
+ * Call delete signature shares for a txRequest, the endpoint delete the signatures and return them
289
+ *
290
+ * @param {string} txRequestId tx id reference to delete signature shares
291
+ * @returns {SignatureShareRecord[]}
292
+ */
293
+ async deleteSignatureShares(txRequestId) {
294
+ return this.bitgo
295
+ .del(this.bitgo.url(`/wallet/${this.wallet.id()}/txrequests/${txRequestId}/signatureshares`, 2))
296
+ .send()
297
+ .result();
298
+ }
299
+ /**
300
+ * Initialize the send procedure once Bitgo has the User To Bitgo GShare
301
+ *
302
+ * @param {String} txRequestId - the txRequest Id
303
+ * @returns {Promise<any>}
304
+ */
305
+ async sendTxRequest(txRequestId) {
306
+ return this.bitgo
307
+ .post(this.baseCoin.url('/wallet/' + this.wallet.id() + '/tx/send'))
308
+ .send({ txRequestId })
309
+ .result();
310
+ }
311
+ /**
312
+ * Delete signature shares, get the tx request without them from the db and sign it to finally send it.
313
+ *
314
+ * Note : This can be performed in order to reach latest network conditions required on pending approval flow.
315
+ *
316
+ * @param {String} txRequestId - the txRequest Id to make the requests.
317
+ * @param {String} decryptedPrv - decrypted prv to sign the tx request.
318
+ * @param {RequestTracer} reqId id tracer.
319
+ * @returns {Promise<any>}
320
+ */
321
+ async recreateTxRequest(txRequestId, decryptedPrv, reqId) {
322
+ await this.deleteSignatureShares(txRequestId);
323
+ // after delete signatures shares get the tx without them
324
+ const txRequest = await tss_2.getTxRequest(this.bitgo, this.wallet.id(), txRequestId);
325
+ return await this.signTxRequest({ txRequest, prv: decryptedPrv, reqId });
326
+ }
327
+ /**
328
+ * Gets the latest Tx Request by id
329
+ *
330
+ * @param {String} txRequestId - the txRequest Id
331
+ * @returns {Promise<TxRequest>}
332
+ */
333
+ async getTxRequest(txRequestId) {
334
+ return tss_2.getTxRequest(this.bitgo, this.wallet.id(), txRequestId);
335
+ }
336
+ /**
337
+ * Get the commonPub portion of the commonKeychain.
338
+ *
339
+ * @param {String} commonKeychain
340
+ * @returns {string}
341
+ */
342
+ static getPublicKeyFromCommonKeychain(commonKeychain) {
343
+ if (commonKeychain.length !== 128) {
344
+ throw new Error(`Invalid commonKeychain length, expected 128, got ${commonKeychain.length}`);
345
+ }
346
+ const commonPubHexStr = commonKeychain.slice(0, 64);
347
+ return bs58.encode(Buffer.from(commonPubHexStr, 'hex'));
348
+ }
349
+ }
350
+ exports.TssUtils = TssUtils;
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VkZHNhL2VkZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILDJDQUE2QjtBQUM3QiwrQ0FBaUM7QUFDakMsMENBQTRCO0FBQzVCLGlEQUFtQztBQUNuQywrREFBa0U7QUFDbEUsMEVBQTBFO0FBTzFFLDZDQUEwQztBQUMxQyxxREFBb0U7QUFDcEUsc0NBUXNCO0FBRXRCOztHQUVHO0FBRUgsTUFBYSxRQUFTLFNBQVEsbUJBQVE7SUFHcEMsWUFBWSxLQUFnQixFQUFFLFFBQW1CLEVBQUUsTUFBZ0I7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBWSxNQUFNO1FBQ2hCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQ3RCLFVBQTZDLEVBQzdDLFlBQXNCLEVBQ3RCLGNBQXdCLEVBQ3hCLGFBQXVCLEVBQ3ZCLFVBQWtCLEVBQ2xCLDhCQUF1QztRQUV2QyxNQUFNLEdBQUcsR0FBRyxNQUFNLGFBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyQyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQzdDO1FBRUQs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TUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxjQUFzQjtRQUMxRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQzlGO1FBQ0QsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGO0FBNVpELDRCQTRaQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCAqIGFzIGJzNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCAqIGFzIG9wZW5wZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQgeyBFZDI1NTE5QklQMzIgfSBmcm9tICcuLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvaGRUcmVlJztcbmltcG9ydCBFZGRzYSwgeyBLZXlTaGFyZSwgWVNoYXJlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQgeyBJUmVxdWVzdFRyYWNlciB9IGZyb20gJy4uLy4uLy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBJQmFzZUNvaW4sIEtleWNoYWluc1RyaXBsZXQgfSBmcm9tICcuLi8uLi8uLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi8uLi8uLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgQWRkS2V5Y2hhaW5PcHRpb25zLCBLZXljaGFpbiwgS2V5VHlwZSB9IGZyb20gJy4uLy4uLy4uL2tleWNoYWluJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi8uLi8uLi93YWxsZXQnO1xuaW1wb3J0IHsgSVRzc1V0aWxzLCBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMsIFNpZ25hdHVyZVNoYXJlUmVjb3JkLCBUeFJlcXVlc3QgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IE1wY1V0aWxzIH0gZnJvbSAnLi4vLi4vbXBjVXRpbHMnO1xuaW1wb3J0IHsgZW5jcnlwdFRleHQsIGdldEJpdGdvR3BnUHViS2V5IH0gZnJvbSAnLi4vLi4vb3BlbmdwZ1V0aWxzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVVzZXJTaWduU2hhcmUsXG4gIGNyZWF0ZVVzZXJUb0JpdEdvR1NoYXJlLFxuICBnZXRCaXRnb1RvVXNlclJTaGFyZSxcbiAgZ2V0VHhSZXF1ZXN0LFxuICBvZmZlclVzZXJUb0JpdGdvUlNoYXJlLFxuICBzZW5kVXNlclRvQml0Z29HU2hhcmUsXG4gIFNpZ25pbmdNYXRlcmlhbCxcbn0gZnJvbSAnLi4vLi4vLi4vdHNzJztcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgVFNTIHdvcmsgZmxvd3MuXG4gKi9cblxuZXhwb3J0IGNsYXNzIFRzc1V0aWxzIGV4dGVuZHMgTXBjVXRpbHMgaW1wbGVtZW50cyBJVHNzVXRpbHMge1xuICBwcml2YXRlIF93YWxsZXQ/OiBJV2FsbGV0O1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4sIHdhbGxldD86IElXYWxsZXQpIHtcbiAgICBzdXBlcihiaXRnbywgYmFzZUNvaW4pO1xuICAgIHRoaXMuX3dhbGxldCA9IHdhbGxldDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHdhbGxldCgpOiBJV2FsbGV0IHtcbiAgICBpZiAoXy5pc05pbCh0aGlzLl93YWxsZXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dhbGxldCBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fd2FsbGV0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBLZXljaGFpbiBjb250YWluaW5nIHRoZSBVc2VyJ3MgVFNTIHNpZ25pbmcgbWF0ZXJpYWxzLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlckdwZ0tleSAtIGVwaGVtZXJhbCBHUEcga2V5IHRvIGVuY3J5cHQgLyBkZWNyeXB0IHNlbnNpdHZlIGRhdGEgZXhjaGFuZ2VkIGJldHdlZW4gdXNlciBhbmQgc2VydmVyXG4gICAqIEBwYXJhbSB1c2VyS2V5U2hhcmUgLSB1c2VyJ3MgVFNTIGtleSBzaGFyZVxuICAgKiBAcGFyYW0gYmFja3VwS2V5U2hhcmUgLSBiYWNrdXAncyBUU1Mga2V5IHNoYXJlXG4gICAqIEBwYXJhbSBiaXRnb0tleWNoYWluIC0gcHJldmlvdXNseSBjcmVhdGVkIEJpdEdvIGtleWNoYWluOyBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCB1c2VyIGFuZCBiYWNrdXAga2V5IHNoYXJlc1xuICAgKiBAcGFyYW0gcGFzc3BocmFzZSAtIHdhbGxldCBwYXNzcGhyYXNlIHVzZWQgdG8gZW5jcnlwdCB1c2VyJ3Mgc2lnbmluZyBtYXRlcmlhbHNcbiAgICogQHBhcmFtIFtvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGVdIC0gb3B0aW9uYWwgZW5jcnlwdGlvbiBjb2RlIG5lZWRlZCBmb3Igd2FsbGV0IHBhc3N3b3JkIHJlc2V0IGZvciBob3Qgd2FsbGV0c1xuICAgKi9cbiAgYXN5bmMgY3JlYXRlVXNlcktleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IG9wZW5wZ3AuU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBjb25zdCBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG4gICAgY29uc3QgYml0Z29LZXlTaGFyZXMgPSBiaXRnb0tleWNoYWluLmtleVNoYXJlcztcbiAgICBpZiAoIWJpdGdvS2V5U2hhcmVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28ga2V5IHNoYXJlcycpO1xuICAgIH1cblxuICAgIGNvbnN0IGJpdEdvVG9Vc2VyU2hhcmUgPSBiaXRnb0tleVNoYXJlcy5maW5kKChrZXlTaGFyZSkgPT4ga2V5U2hhcmUuZnJvbSA9PT0gJ2JpdGdvJyAmJiBrZXlTaGFyZS50byA9PT0gJ3VzZXInKTtcbiAgICBpZiAoIWJpdEdvVG9Vc2VyU2hhcmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBCaXRHbyB0byBVc2VyIGtleSBzaGFyZScpO1xuICAgIH1cblxuICAgIGNvbnN0IGJpdEdvVG9Vc2VyUHJpdmF0ZVNoYXJlID0gYXdhaXQgdGhpcy5kZWNyeXB0UHJpdmF0ZVNoYXJlKGJpdEdvVG9Vc2VyU2hhcmUucHJpdmF0ZVNoYXJlLCB1c2VyR3BnS2V5KTtcblxuICAgIGNvbnN0IGJpdGdvVG9Vc2VyOiBZU2hhcmUgPSB7XG4gICAgICBpOiAxLFxuICAgICAgajogMyxcbiAgICAgIHk6IGJpdEdvVG9Vc2VyU2hhcmUucHVibGljU2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgICAgdTogYml0R29Ub1VzZXJQcml2YXRlU2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgICAgY2hhaW5jb2RlOiBiaXRHb1RvVXNlclByaXZhdGVTaGFyZS5zbGljZSg2NCksXG4gICAgfTtcblxuICAgIC8vIFRPRE8oQkctNDcxNzApOiB1c2UgdHNzLmNyZWF0ZUNvbWJpbmVkS2V5IGhlbHBlciB3aGVuIHNpZ25hdHVyZXMgYXJlIHN1cHBvcnRlZFxuICAgIGNvbnN0IHVzZXJDb21iaW5lZCA9IE1QQy5rZXlDb21iaW5lKHVzZXJLZXlTaGFyZS51U2hhcmUsIFtiYWNrdXBLZXlTaGFyZS55U2hhcmVzWzFdLCBiaXRnb1RvVXNlcl0pO1xuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID0gdXNlckNvbWJpbmVkLnBTaGFyZS55ICsgdXNlckNvbWJpbmVkLnBTaGFyZS5jaGFpbmNvZGU7XG4gICAgaWYgKGNvbW1vbktleWNoYWluICE9PSBiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgdXNlciBrZXljaGFpbiAtIGNvbW1vbktleWNoYWlucyBkbyBub3QgbWF0Y2guJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlclNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsID0ge1xuICAgICAgdVNoYXJlOiB1c2VyS2V5U2hhcmUudVNoYXJlLFxuICAgICAgYml0Z29ZU2hhcmU6IGJpdGdvVG9Vc2VyLFxuICAgICAgYmFja3VwWVNoYXJlOiBiYWNrdXBLZXlTaGFyZS55U2hhcmVzWzFdLFxuICAgIH07XG5cbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5QYXJhbXM6IEFkZEtleWNoYWluT3B0aW9ucyA9IHtcbiAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAga2V5VHlwZTogJ3RzcycgYXMgS2V5VHlwZSxcbiAgICAgIGNvbW1vbktleWNoYWluOiBiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluLFxuICAgICAgZW5jcnlwdGVkUHJ2OiB0aGlzLmJpdGdvLmVuY3J5cHQoeyBpbnB1dDogSlNPTi5zdHJpbmdpZnkodXNlclNpZ25pbmdNYXRlcmlhbCksIHBhc3N3b3JkOiBwYXNzcGhyYXNlIH0pLFxuICAgICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKS5hZGQodXNlcktleWNoYWluUGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgS2V5Y2hhaW4gY29udGFpbmluZyB0aGUgQmFja3VwIHBhcnR5J3MgVFNTIHNpZ25pbmcgbWF0ZXJpYWxzLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlckdwZ0tleSAtIGVwaGVtZXJhbCBHUEcga2V5IHRvIGVuY3J5cHQgLyBkZWNyeXB0IHNlbnNpdHZlIGRhdGEgZXhjaGFuZ2VkIGJldHdlZW4gdXNlciBhbmQgc2VydmVyXG4gICAqIEBwYXJhbSB1c2VyS2V5U2hhcmUgLSBVc2VyJ3MgVFNTIEtleXNoYXJlXG4gICAqIEBwYXJhbSBiYWNrdXBLZXlTaGFyZSAtIEJhY2t1cCdzIFRTUyBLZXlzaGFyZVxuICAgKiBAcGFyYW0gYml0Z29LZXljaGFpbiAtIHByZXZpb3VzbHkgY3JlYXRlZCBCaXRHbyBrZXljaGFpbjsgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdXNlciBhbmQgYmFja3VwIGtleSBzaGFyZXNcbiAgICogQHBhcmFtIHBhc3NwaHJhc2UgLSB3YWxsZXQgcGFzc3BocmFzZSB1c2VkIHRvIGVuY3J5cHQgdXNlcidzIHNpZ25pbmcgbWF0ZXJpYWxzXG4gICAqL1xuICBhc3luYyBjcmVhdGVCYWNrdXBLZXljaGFpbihcbiAgICB1c2VyR3BnS2V5OiBvcGVucGdwLlNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgcGFzc3BocmFzZTogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBjb25zdCBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG4gICAgY29uc3QgYml0Z29LZXlTaGFyZXMgPSBiaXRnb0tleWNoYWluLmtleVNoYXJlcztcbiAgICBpZiAoIWJpdGdvS2V5U2hhcmVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYml0Z28ga2V5c2hhcmVzJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0R29Ub0JhY2t1cFNoYXJlID0gYml0Z29LZXlTaGFyZXMuZmluZCgoa2V5U2hhcmUpID0+IGtleVNoYXJlLmZyb20gPT09ICdiaXRnbycgJiYga2V5U2hhcmUudG8gPT09ICdiYWNrdXAnKTtcbiAgICBpZiAoIWJpdEdvVG9CYWNrdXBTaGFyZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIEJpdEdvIHRvIFVzZXIga2V5IHNoYXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYml0R29Ub0JhY2t1cFByaXZhdGVTaGFyZSA9IGF3YWl0IHRoaXMuZGVjcnlwdFByaXZhdGVTaGFyZShiaXRHb1RvQmFja3VwU2hhcmUucHJpdmF0ZVNoYXJlLCB1c2VyR3BnS2V5KTtcblxuICAgIGNvbnN0IGJpdGdvVG9CYWNrdXA6IFlTaGFyZSA9IHtcbiAgICAgIGk6IDIsXG4gICAgICBqOiAzLFxuICAgICAgeTogYml0R29Ub0JhY2t1cFNoYXJlLnB1YmxpY1NoYXJlLnNsaWNlKDAsIDY0KSxcbiAgICAgIHU6IGJpdEdvVG9CYWNrdXBQcml2YXRlU2hhcmUuc2xpY2UoMCwgNjQpLFxuICAgICAgY2hhaW5jb2RlOiBiaXRHb1RvQmFja3VwUHJpdmF0ZVNoYXJlLnNsaWNlKDY0KSxcbiAgICB9O1xuXG4gICAgLy8gVE9ETyhCRy00NzE3MCk6IHVzZSB0c3MuY3JlYXRlQ29tYmluZWRLZXkgaGVscGVyIHdoZW4gc2lnbmF0dXJlcyBhcmUgc3VwcG9ydGVkXG4gICAgY29uc3QgYmFja3VwQ29tYmluZWQgPSBNUEMua2V5Q29tYmluZShiYWNrdXBLZXlTaGFyZS51U2hhcmUsIFt1c2VyS2V5U2hhcmUueVNoYXJlc1syXSwgYml0Z29Ub0JhY2t1cF0pO1xuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID0gYmFja3VwQ29tYmluZWQucFNoYXJlLnkgKyBiYWNrdXBDb21iaW5lZC5wU2hhcmUuY2hhaW5jb2RlO1xuICAgIGlmIChjb21tb25LZXljaGFpbiAhPT0gYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gY3JlYXRlIGJhY2t1cCBrZXljaGFpbiAtIGNvbW1vbktleWNoYWlucyBkbyBub3QgbWF0Y2guJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFja3VwU2lnbmluZ01hdGVyaWFsOiBTaWduaW5nTWF0ZXJpYWwgPSB7XG4gICAgICB1U2hhcmU6IGJhY2t1cEtleVNoYXJlLnVTaGFyZSxcbiAgICAgIGJpdGdvWVNoYXJlOiBiaXRnb1RvQmFja3VwLFxuICAgICAgdXNlcllTaGFyZTogdXNlcktleVNoYXJlLnlTaGFyZXNbMl0sXG4gICAgfTtcbiAgICBjb25zdCBwcnYgPSBKU09OLnN0cmluZ2lmeShiYWNrdXBTaWduaW5nTWF0ZXJpYWwpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuY3JlYXRlQmFja3VwKHtcbiAgICAgIHNvdXJjZTogJ2JhY2t1cCcsXG4gICAgICBrZXlUeXBlOiAndHNzJyxcbiAgICAgIGNvbW1vbktleWNoYWluOiBiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluLFxuICAgICAgcHJ2OiBwcnYsXG4gICAgICBlbmNyeXB0ZWRQcnY6IHRoaXMuYml0Z28uZW5jcnlwdCh7IGlucHV0OiBwcnYsIHBhc3N3b3JkOiBwYXNzcGhyYXNlIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBLZXljaGFpbiBjb250YWluaW5nIEJpdEdvJ3MgVFNTIHNpZ25pbmcgbWF0ZXJpYWxzLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlckdwZ0tleSAtIGVwaGVtZXJhbCBHUEcga2V5IHRvIGVuY3J5cHQgLyBkZWNyeXB0IHNlbnNpdHZlIGRhdGEgZXhjaGFuZ2VkIGJldHdlZW4gdXNlciBhbmQgc2VydmVyXG4gICAqIEBwYXJhbSB1c2VyS2V5U2hhcmUgLSB1c2VyJ3MgVFNTIGtleSBzaGFyZVxuICAgKiBAcGFyYW0gYmFja3VwS2V5U2hhcmUgLSBiYWNrdXAncyBUU1Mga2V5IHNoYXJlXG4gICAqL1xuICBhc3luYyBjcmVhdGVCaXRnb0tleWNoYWluKFxuICAgIHVzZXJHcGdLZXk6IG9wZW5wZ3AuU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IEtleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICAvLyBUT0RPKEJHLTQ3MTcwKTogdXNlIHRzcy5lbmNyeXB0WVNoYXJlIGhlbHBlciB3aGVuIHNpZ25hdHVyZXMgYXJlIHN1cHBvcnRlZFxuICAgIGNvbnN0IHVzZXJUb0JpdGdvUHVibGljU2hhcmUgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgIEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZS51U2hhcmUueSwgJ2hleCcpLFxuICAgICAgQnVmZmVyLmZyb20odXNlcktleVNoYXJlLnVTaGFyZS5jaGFpbmNvZGUsICdoZXgnKSxcbiAgICBdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgdXNlclRvQml0Z29Qcml2YXRlU2hhcmUgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgIEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZS55U2hhcmVzWzNdLnUsICdoZXgnKSxcbiAgICAgIEJ1ZmZlci5mcm9tKHVzZXJLZXlTaGFyZS55U2hhcmVzWzNdLmNoYWluY29kZSwgJ2hleCcpLFxuICAgIF0pLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCB1c2VyVG9CaXRnb0tleVNoYXJlID0ge1xuICAgICAgcHVibGljU2hhcmU6IHVzZXJUb0JpdGdvUHVibGljU2hhcmUsXG4gICAgICBwcml2YXRlU2hhcmU6IHVzZXJUb0JpdGdvUHJpdmF0ZVNoYXJlLFxuICAgIH07XG5cbiAgICBjb25zdCBiYWNrdXBUb0JpdGdvUHVibGljU2hhcmUgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgIEJ1ZmZlci5mcm9tKGJhY2t1cEtleVNoYXJlLnVTaGFyZS55LCAnaGV4JyksXG4gICAgICBCdWZmZXIuZnJvbShiYWNrdXBLZXlTaGFyZS51U2hhcmUuY2hhaW5jb2RlLCAnaGV4JyksXG4gICAgXSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGJhY2t1cFRvQml0Z29Qcml2YXRlU2hhcmUgPSBCdWZmZXIuY29uY2F0KFtcbiAgICAgIEJ1ZmZlci5mcm9tKGJhY2t1cEtleVNoYXJlLnlTaGFyZXNbM10udSwgJ2hleCcpLFxuICAgICAgQnVmZmVyLmZyb20oYmFja3VwS2V5U2hhcmUueVNoYXJlc1szXS5jaGFpbmNvZGUsICdoZXgnKSxcbiAgICBdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgYmFja3VwVG9CaXRnb0tleVNoYXJlID0ge1xuICAgICAgcHVibGljU2hhcmU6IGJhY2t1cFRvQml0Z29QdWJsaWNTaGFyZSxcbiAgICAgIHByaXZhdGVTaGFyZTogYmFja3VwVG9CaXRnb1ByaXZhdGVTaGFyZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlQml0Z29LZXljaGFpbkluV1AoXG4gICAgICB1c2VyR3BnS2V5LFxuICAgICAgdXNlclRvQml0Z29LZXlTaGFyZSxcbiAgICAgIGJhY2t1cFRvQml0Z29LZXlTaGFyZSxcbiAgICAgICd0c3MnLFxuICAgICAgZW50ZXJwcmlzZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBVc2VyLCBCYWNrdXAsIGFuZCBCaXRHbyBUU1MgS2V5Y2hhaW5zLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLnBhc3NwaHJhc2UgLSBwYXNzcGhyYXNlIHVzZWQgdG8gZW5jcnlwdCBzaWduaW5nIG1hdGVyaWFscyBjcmVhdGVkIGZvciBVc2VyIGFuZCBCYWNrdXBcbiAgICovXG4gIGFzeW5jIGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZT86IHN0cmluZztcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPEtleWNoYWluc1RyaXBsZXQ+IHtcbiAgICBjb25zdCBNUEMgPSBhd2FpdCBFZGRzYS5pbml0aWFsaXplKCk7XG4gICAgY29uc3QgbSA9IDI7XG4gICAgY29uc3QgbiA9IDM7XG5cbiAgICBjb25zdCB1c2VyS2V5U2hhcmUgPSBNUEMua2V5U2hhcmUoMSwgbSwgbik7XG4gICAgY29uc3QgYmFja3VwS2V5U2hhcmUgPSBNUEMua2V5U2hhcmUoMiwgbSwgbik7XG5cbiAgICBjb25zdCByYW5kb21IZXhTdHJpbmcgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTIpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIC8vIEFsbG93IGdlbmVyYXRpbmcgc2VjcDI1NmsxIGtleSBwYWlyc1xuICAgIG9wZW5wZ3AuY29uZmlnLnJlamVjdEN1cnZlcyA9IG5ldyBTZXQoKTtcbiAgICBjb25zdCB1c2VyR3BnS2V5ID0gYXdhaXQgb3BlbnBncC5nZW5lcmF0ZUtleSh7XG4gICAgICB1c2VySURzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiByYW5kb21IZXhTdHJpbmcsXG4gICAgICAgICAgZW1haWw6IGB1c2VyLSR7cmFuZG9tSGV4U3RyaW5nfUAke3JhbmRvbUhleFN0cmluZ30uY29tYCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBjdXJ2ZTogJ3NlY3AyNTZrMScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBiaXRnb0tleWNoYWluID0gYXdhaXQgdGhpcy5jcmVhdGVCaXRnb0tleWNoYWluKHVzZXJHcGdLZXksIHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIHBhcmFtcy5lbnRlcnByaXNlKTtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5Qcm9taXNlID0gdGhpcy5jcmVhdGVVc2VyS2V5Y2hhaW4oXG4gICAgICB1c2VyR3BnS2V5LFxuICAgICAgdXNlcktleVNoYXJlLFxuICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgICAgcGFyYW1zLnBhc3NwaHJhc2UsXG4gICAgICBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlXG4gICAgKTtcbiAgICBjb25zdCBiYWNrdXBLZXljaGFpblByb21pc2UgPSB0aGlzLmNyZWF0ZUJhY2t1cEtleWNoYWluKFxuICAgICAgdXNlckdwZ0tleSxcbiAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgIGJhY2t1cEtleVNoYXJlLFxuICAgICAgYml0Z29LZXljaGFpbixcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlXG4gICAgKTtcbiAgICBjb25zdCBbdXNlcktleWNoYWluLCBiYWNrdXBLZXljaGFpbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbdXNlcktleWNoYWluUHJvbWlzZSwgYmFja3VwS2V5Y2hhaW5Qcm9taXNlXSk7XG5cbiAgICAvLyBjcmVhdGUgd2FsbGV0XG4gICAgY29uc3Qga2V5Y2hhaW5zID0ge1xuICAgICAgdXNlcktleWNoYWluLFxuICAgICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgICBiaXRnb0tleWNoYWluLFxuICAgIH07XG5cbiAgICByZXR1cm4ga2V5Y2hhaW5zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRoZSB0cmFuc2FjdGlvbiBhc3NvY2lhdGVkIHRvIHRoZSB0cmFuc2FjdGlvbiByZXF1ZXN0LlxuICAgKlxuICAgKiBAcGFyYW0gdHhSZXF1ZXN0IC0gdHJhbnNhY3Rpb24gcmVxdWVzdCBvYmplY3Qgb3IgaWRcbiAgICogQHBhcmFtIHBydiAtIGRlY3J5cHRlZCBwcml2YXRlIGtleVxuICAgKiBAcGFyYW0gcmVxSWQgLSByZXF1ZXN0IGlkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFR4UmVxdWVzdD59IGZ1bGx5IHNpZ25lZCBUeFJlcXVlc3Qgb2JqZWN0XG4gICAqL1xuICBhc3luYyBzaWduVHhSZXF1ZXN0KHBhcmFtczoge1xuICAgIHR4UmVxdWVzdDogc3RyaW5nIHwgVHhSZXF1ZXN0O1xuICAgIHBydjogc3RyaW5nO1xuICAgIHJlcUlkOiBJUmVxdWVzdFRyYWNlcjtcbiAgfSk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgbGV0IHR4UmVxdWVzdFJlc29sdmVkOiBUeFJlcXVlc3Q7XG4gICAgbGV0IHR4UmVxdWVzdElkOiBzdHJpbmc7XG5cbiAgICBjb25zdCB7IHR4UmVxdWVzdCwgcHJ2IH0gPSBwYXJhbXM7XG5cbiAgICBpZiAodHlwZW9mIHR4UmVxdWVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR4UmVxdWVzdFJlc29sdmVkID0gYXdhaXQgZ2V0VHhSZXF1ZXN0KHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmlkKCksIHR4UmVxdWVzdCk7XG4gICAgICB0eFJlcXVlc3RJZCA9IHR4UmVxdWVzdFJlc29sdmVkLnR4UmVxdWVzdElkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eFJlcXVlc3RSZXNvbHZlZCA9IHR4UmVxdWVzdDtcbiAgICAgIHR4UmVxdWVzdElkID0gdHhSZXF1ZXN0LnR4UmVxdWVzdElkO1xuICAgIH1cblxuICAgIGNvbnN0IGhkVHJlZSA9IGF3YWl0IEVkMjU1MTlCSVAzMi5pbml0aWFsaXplKCk7XG4gICAgY29uc3QgTVBDID0gYXdhaXQgRWRkc2EuaW5pdGlhbGl6ZShoZFRyZWUpO1xuXG4gICAgY29uc3QgdXNlclNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsID0gSlNPTi5wYXJzZShwcnYpO1xuICAgIGlmICghdXNlclNpZ25pbmdNYXRlcmlhbC5iYWNrdXBZU2hhcmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGtleSAtIG1pc3NpbmcgYmFja3VwWVNoYXJlJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmluZ0tleSA9IE1QQy5rZXlEZXJpdmUoXG4gICAgICB1c2VyU2lnbmluZ01hdGVyaWFsLnVTaGFyZSxcbiAgICAgIFt1c2VyU2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLCB1c2VyU2lnbmluZ01hdGVyaWFsLmJhY2t1cFlTaGFyZV0sXG4gICAgICB0eFJlcXVlc3RSZXNvbHZlZC51bnNpZ25lZFR4c1swXS5kZXJpdmF0aW9uUGF0aFxuICAgICk7XG5cbiAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSBCdWZmZXIuZnJvbSh0eFJlcXVlc3RSZXNvbHZlZC51bnNpZ25lZFR4c1swXS5zaWduYWJsZUhleCwgJ2hleCcpO1xuXG4gICAgY29uc3QgdXNlclNpZ25TaGFyZSA9IGF3YWl0IGNyZWF0ZVVzZXJTaWduU2hhcmUoc2lnbmFibGVQYXlsb2FkLCBzaWduaW5nS2V5LnBTaGFyZSk7XG5cbiAgICBjb25zdCBzaWduZXJTaGFyZSA9IHNpZ25pbmdLZXkueVNoYXJlc1szXS51ICsgc2lnbmluZ0tleS55U2hhcmVzWzNdLmNoYWluY29kZTtcbiAgICBjb25zdCBiaXRnb0dwZ0tleSA9IGF3YWl0IGdldEJpdGdvR3BnUHViS2V5KHRoaXMuYml0Z28pO1xuICAgIGNvbnN0IGVuY3J5cHRlZFNpZ25lclNoYXJlID0gYXdhaXQgZW5jcnlwdFRleHQoc2lnbmVyU2hhcmUsIGJpdGdvR3BnS2V5KTtcblxuICAgIGF3YWl0IG9mZmVyVXNlclRvQml0Z29SU2hhcmUodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0SWQsIHVzZXJTaWduU2hhcmUsIGVuY3J5cHRlZFNpZ25lclNoYXJlKTtcblxuICAgIGNvbnN0IGJpdGdvVG9Vc2VyUlNoYXJlID0gYXdhaXQgZ2V0Qml0Z29Ub1VzZXJSU2hhcmUodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0SWQpO1xuXG4gICAgY29uc3QgdXNlclRvQml0R29HU2hhcmUgPSBhd2FpdCBjcmVhdGVVc2VyVG9CaXRHb0dTaGFyZShcbiAgICAgIHVzZXJTaWduU2hhcmUsXG4gICAgICBiaXRnb1RvVXNlclJTaGFyZSxcbiAgICAgIHVzZXJTaWduaW5nTWF0ZXJpYWwuYmFja3VwWVNoYXJlLFxuICAgICAgdXNlclNpZ25pbmdNYXRlcmlhbC5iaXRnb1lTaGFyZSxcbiAgICAgIHNpZ25hYmxlUGF5bG9hZFxuICAgICk7XG5cbiAgICBhd2FpdCBzZW5kVXNlclRvQml0Z29HU2hhcmUodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0SWQsIHVzZXJUb0JpdEdvR1NoYXJlKTtcblxuICAgIHJldHVybiBhd2FpdCBnZXRUeFJlcXVlc3QodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHR4IHJlcXVlc3QgZnJvbSBwYXJhbXMgYW5kIHZlcmlmeSBpdFxuICAgKlxuICAgKiBAcGFyYW0ge1ByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9uc30gcGFyYW1zIC0gcGFyYW1ldGVycyB0byBidWlsZCB0aGUgdHhcbiAgICogQHBhcmFtIGFwaVZlcnNpb25cbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gLSBhIGJ1aWx0IHR4IHJlcXVlc3RcbiAgICovXG4gIGFzeW5jIHByZWJ1aWxkVHhXaXRoSW50ZW50KHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLCBhcGlWZXJzaW9uID0gJ2xpdGUnKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBjb25zdCBjaGFpbiA9IHRoaXMuYmFzZUNvaW4uZ2V0Q2hhaW4oKTtcbiAgICBjb25zdCBpbnRlbnRSZWNpcGllbnRzID0gcGFyYW1zLnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+ICh7XG4gICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzIH0sXG4gICAgICBhbW91bnQ6IHsgdmFsdWU6IGAke3JlY2lwaWVudC5hbW91bnR9YCwgc3ltYm9sOiBjaGFpbiB9LFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHdoaXRlbGlzdGVkUGFyYW1zID0ge1xuICAgICAgaW50ZW50OiB7XG4gICAgICAgIGludGVudFR5cGU6IHBhcmFtcy5pbnRlbnRUeXBlLFxuICAgICAgICBzZXF1ZW5jZUlkOiBwYXJhbXMuc2VxdWVuY2VJZCxcbiAgICAgICAgY29tbWVudDogcGFyYW1zLmNvbW1lbnQsXG4gICAgICAgIHJlY2lwaWVudHM6IGludGVudFJlY2lwaWVudHMsXG4gICAgICAgIG1lbW86IHBhcmFtcy5tZW1vPy52YWx1ZSxcbiAgICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgIG5vbmNlOiBwYXJhbXMubm9uY2UsXG4gICAgICB9LFxuICAgICAgYXBpVmVyc2lvbjogYXBpVmVyc2lvbixcbiAgICB9O1xuXG4gICAgY29uc3QgdW5zaWduZWRUeCA9IChhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJpdGdvLnVybCgnL3dhbGxldC8nICsgdGhpcy53YWxsZXQuaWQoKSArICcvdHhyZXF1ZXN0cycsIDIpKVxuICAgICAgLnNlbmQod2hpdGVsaXN0ZWRQYXJhbXMpXG4gICAgICAucmVzdWx0KCkpIGFzIFR4UmVxdWVzdDtcblxuICAgIHJldHVybiB1bnNpZ25lZFR4O1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMgZm9yIGEgdHhSZXF1ZXN0LCB0aGUgZW5kcG9pbnQgZGVsZXRlIHRoZSBzaWduYXR1cmVzIGFuZCByZXR1cm4gdGhlbVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHhSZXF1ZXN0SWQgdHggaWQgcmVmZXJlbmNlIHRvIGRlbGV0ZSBzaWduYXR1cmUgc2hhcmVzXG4gICAqIEByZXR1cm5zIHtTaWduYXR1cmVTaGFyZVJlY29yZFtdfVxuICAgKi9cbiAgYXN5bmMgZGVsZXRlU2lnbmF0dXJlU2hhcmVzKHR4UmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFNpZ25hdHVyZVNoYXJlUmVjb3JkW10+IHtcbiAgICByZXR1cm4gdGhpcy5iaXRnb1xuICAgICAgLmRlbCh0aGlzLmJpdGdvLnVybChgL3dhbGxldC8ke3RoaXMud2FsbGV0LmlkKCl9L3R4cmVxdWVzdHMvJHt0eFJlcXVlc3RJZH0vc2lnbmF0dXJlc2hhcmVzYCwgMikpXG4gICAgICAuc2VuZCgpXG4gICAgICAucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgc2VuZCBwcm9jZWR1cmUgb25jZSBCaXRnbyBoYXMgdGhlIFVzZXIgVG8gQml0Z28gR1NoYXJlXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIGFzeW5jIHNlbmRUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMuYmFzZUNvaW4udXJsKCcvd2FsbGV0LycgKyB0aGlzLndhbGxldC5pZCgpICsgJy90eC9zZW5kJykpXG4gICAgICAuc2VuZCh7IHR4UmVxdWVzdElkIH0pXG4gICAgICAucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMsIGdldCB0aGUgdHggcmVxdWVzdCB3aXRob3V0IHRoZW0gZnJvbSB0aGUgZGIgYW5kIHNpZ24gaXQgdG8gZmluYWxseSBzZW5kIGl0LlxuICAgKlxuICAgKiBOb3RlIDogVGhpcyBjYW4gYmUgcGVyZm9ybWVkIGluIG9yZGVyIHRvIHJlYWNoIGxhdGVzdCBuZXR3b3JrIGNvbmRpdGlvbnMgcmVxdWlyZWQgb24gcGVuZGluZyBhcHByb3ZhbCBmbG93LlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkIHRvIG1ha2UgdGhlIHJlcXVlc3RzLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gZGVjcnlwdGVkUHJ2IC0gZGVjcnlwdGVkIHBydiB0byBzaWduIHRoZSB0eCByZXF1ZXN0LlxuICAgKiBAcGFyYW0ge1JlcXVlc3RUcmFjZXJ9IHJlcUlkIGlkIHRyYWNlci5cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlVHhSZXF1ZXN0KHR4UmVxdWVzdElkOiBzdHJpbmcsIGRlY3J5cHRlZFBydjogc3RyaW5nLCByZXFJZDogSVJlcXVlc3RUcmFjZXIpOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIGF3YWl0IHRoaXMuZGVsZXRlU2lnbmF0dXJlU2hhcmVzKHR4UmVxdWVzdElkKTtcbiAgICAvLyBhZnRlciBkZWxldGUgc2lnbmF0dXJlcyBzaGFyZXMgZ2V0IHRoZSB0eCB3aXRob3V0IHRoZW1cbiAgICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCBnZXRUeFJlcXVlc3QodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0SWQpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnNpZ25UeFJlcXVlc3QoeyB0eFJlcXVlc3QsIHBydjogZGVjcnlwdGVkUHJ2LCByZXFJZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsYXRlc3QgVHggUmVxdWVzdCBieSBpZFxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFR4UmVxdWVzdD59XG4gICAqL1xuICBhc3luYyBnZXRUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGdldFR4UmVxdWVzdCh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb21tb25QdWIgcG9ydGlvbiBvZiB0aGUgY29tbW9uS2V5Y2hhaW4uXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjb21tb25LZXljaGFpblxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgc3RhdGljIGdldFB1YmxpY0tleUZyb21Db21tb25LZXljaGFpbihjb21tb25LZXljaGFpbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoY29tbW9uS2V5Y2hhaW4ubGVuZ3RoICE9PSAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb21tb25LZXljaGFpbiBsZW5ndGgsIGV4cGVjdGVkIDEyOCwgZ290ICR7Y29tbW9uS2V5Y2hhaW4ubGVuZ3RofWApO1xuICAgIH1cbiAgICBjb25zdCBjb21tb25QdWJIZXhTdHIgPSBjb21tb25LZXljaGFpbi5zbGljZSgwLCA2NCk7XG4gICAgcmV0dXJuIGJzNTguZW5jb2RlKEJ1ZmZlci5mcm9tKGNvbW1vblB1YkhleFN0ciwgJ2hleCcpKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import { TssUtils } from './eddsa';
2
+ export * as TssUtilsTypes from './types';
3
+ export default TssUtils;
4
+ export { ITssUtils, PrebuildTransactionWithIntentOptions, SignatureShareRecord, SignatureShareType, TxRequest, UnsignedTransaction, } from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/bitgo/utils/tss/eddsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,aAAa,MAAM,SAAS,CAAC;AAEzC,eAAe,QAAQ,CAAC;AAGxB,OAAO,EACL,SAAS,EACT,oCAAoC,EACpC,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,mBAAmB,GACpB,MAAM,SAAS,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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.SignatureShareType = exports.TssUtilsTypes = void 0;
23
+ const eddsa_1 = require("./eddsa");
24
+ exports.TssUtilsTypes = __importStar(require("./types"));
25
+ exports.default = eddsa_1.TssUtils;
26
+ // exporting this types for backward compatibility.
27
+ var types_1 = require("./types");
28
+ Object.defineProperty(exports, "SignatureShareType", { enumerable: true, get: function () { return types_1.SignatureShareType; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VkZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMseURBQXlDO0FBRXpDLGtCQUFlLGdCQUFRLENBQUM7QUFFeEIsbURBQW1EO0FBQ25ELGlDQU9pQjtBQUhmLDJHQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHNzVXRpbHMgfSBmcm9tICcuL2VkZHNhJztcbmV4cG9ydCAqIGFzIFRzc1V0aWxzVHlwZXMgZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IFRzc1V0aWxzO1xuXG4vLyBleHBvcnRpbmcgdGhpcyB0eXBlcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbmV4cG9ydCB7XG4gIElUc3NVdGlscyxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBTaWduYXR1cmVTaGFyZVJlY29yZCxcbiAgU2lnbmF0dXJlU2hhcmVUeXBlLFxuICBUeFJlcXVlc3QsXG4gIFVuc2lnbmVkVHJhbnNhY3Rpb24sXG59IGZyb20gJy4vdHlwZXMnO1xuIl19