@bitgo-beta/sdk-core 8.2.1-beta.188 → 8.2.1-beta.1881

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 (640) hide show
  1. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +0 -1
  2. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -1
  3. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +3 -3
  4. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  5. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +4 -3
  6. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +1 -0
  7. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -1
  8. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +41 -29
  9. package/dist/src/account-lib/baseCoin/enum.d.ts +53 -5
  10. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  11. package/dist/src/account-lib/baseCoin/enum.js +97 -10
  12. package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
  13. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
  14. package/dist/src/account-lib/baseCoin/errors.js +8 -2
  15. package/dist/src/account-lib/baseCoin/iface.d.ts +19 -35
  16. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  17. package/dist/src/account-lib/baseCoin/iface.js +26 -18
  18. package/dist/src/account-lib/baseCoin/index.d.ts +1 -1
  19. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
  20. package/dist/src/account-lib/baseCoin/index.js +8 -5
  21. package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts +88 -0
  22. package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  23. package/dist/src/account-lib/baseCoin/messages/baseMessage.js +154 -0
  24. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +67 -0
  25. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  26. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.js +144 -0
  27. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +33 -0
  28. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  29. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +45 -0
  30. package/dist/src/account-lib/baseCoin/messages/iface.d.ts +164 -0
  31. package/dist/src/account-lib/baseCoin/messages/iface.d.ts.map +1 -0
  32. package/dist/src/account-lib/baseCoin/messages/iface.js +3 -0
  33. package/dist/src/account-lib/baseCoin/messages/index.d.ts +6 -0
  34. package/dist/src/account-lib/baseCoin/messages/index.d.ts.map +1 -0
  35. package/dist/src/account-lib/baseCoin/messages/index.js +22 -0
  36. package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts +3 -0
  37. package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts.map +1 -0
  38. package/dist/src/account-lib/baseCoin/messages/simple/index.js +19 -0
  39. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts +13 -0
  40. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts.map +1 -0
  41. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.js +28 -0
  42. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts +21 -0
  43. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts.map +1 -0
  44. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.js +28 -0
  45. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -2
  46. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
  47. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +38 -26
  48. package/dist/src/account-lib/index.js +23 -9
  49. package/dist/src/account-lib/mpc/index.d.ts +1 -1
  50. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  51. package/dist/src/account-lib/mpc/index.js +6 -2
  52. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -3
  53. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  54. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +376 -354
  55. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +23 -9
  56. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  57. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  58. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  59. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +46 -53
  60. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  61. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  62. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +0 -1
  63. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  64. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +66 -69
  65. package/dist/src/account-lib/mpc/tss/eddsa/index.js +23 -9
  66. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +1 -1
  67. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
  68. package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
  69. package/dist/src/account-lib/mpc/tss/index.js +23 -9
  70. package/dist/src/account-lib/mpc/util.d.ts +7 -1
  71. package/dist/src/account-lib/mpc/util.d.ts.map +1 -1
  72. package/dist/src/account-lib/mpc/util.js +24 -1
  73. package/dist/src/account-lib/staking/index.js +6 -2
  74. package/dist/src/account-lib/staking/utils.js +3 -3
  75. package/dist/src/account-lib/util/crypto.d.ts +8 -2
  76. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  77. package/dist/src/account-lib/util/crypto.js +69 -38
  78. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +2 -1
  79. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -1
  80. package/dist/src/account-lib/util/ed25519KeyDeriver.js +5 -3
  81. package/dist/src/api/bip32path.js +2 -3
  82. package/dist/src/api/index.js +6 -2
  83. package/dist/src/api/types.d.ts +31 -0
  84. package/dist/src/api/types.d.ts.map +1 -1
  85. package/dist/src/api/types.js +1 -1
  86. package/dist/src/bitgo/address-book/address-book.d.ts +61 -0
  87. package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -0
  88. package/dist/src/bitgo/address-book/address-book.js +150 -0
  89. package/dist/src/bitgo/address-book/index.d.ts +3 -0
  90. package/dist/src/bitgo/address-book/index.d.ts.map +1 -0
  91. package/dist/src/bitgo/address-book/index.js +19 -0
  92. package/dist/src/bitgo/address-book/types.d.ts +170 -0
  93. package/dist/src/bitgo/address-book/types.d.ts.map +1 -0
  94. package/dist/src/bitgo/address-book/types.js +3 -0
  95. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +112 -11
  96. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  97. package/dist/src/bitgo/baseCoin/baseCoin.js +183 -16
  98. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +270 -27
  99. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  100. package/dist/src/bitgo/baseCoin/iBaseCoin.js +14 -3
  101. package/dist/src/bitgo/baseCoin/index.js +6 -2
  102. package/dist/src/bitgo/bip32util.d.ts +3 -16
  103. package/dist/src/bitgo/bip32util.d.ts.map +1 -1
  104. package/dist/src/bitgo/bip32util.js +4 -56
  105. package/dist/src/bitgo/bitcoin.d.ts +0 -1
  106. package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
  107. package/dist/src/bitgo/bitcoin.js +26 -13
  108. package/dist/src/bitgo/bitgoBase.d.ts +8 -1
  109. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  110. package/dist/src/bitgo/bitgoBase.js +1 -1
  111. package/dist/src/bitgo/coinFactory.d.ts +17 -3
  112. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  113. package/dist/src/bitgo/coinFactory.js +26 -3
  114. package/dist/src/bitgo/config.d.ts +3 -95
  115. package/dist/src/bitgo/config.d.ts.map +1 -1
  116. package/dist/src/bitgo/config.js +26 -15
  117. package/dist/src/bitgo/defi/defiVault.d.ts +87 -0
  118. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -0
  119. package/dist/src/bitgo/defi/defiVault.js +225 -0
  120. package/dist/src/bitgo/defi/iDefiVault.d.ts +59 -0
  121. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -0
  122. package/dist/src/bitgo/defi/iDefiVault.js +6 -0
  123. package/dist/src/bitgo/defi/index.d.ts +3 -0
  124. package/dist/src/bitgo/defi/index.d.ts.map +1 -0
  125. package/dist/src/bitgo/defi/index.js +22 -0
  126. package/dist/src/bitgo/ecdh.d.ts +0 -1
  127. package/dist/src/bitgo/ecdh.d.ts.map +1 -1
  128. package/dist/src/bitgo/ecdh.js +26 -13
  129. package/dist/src/bitgo/enterprise/enterprise.d.ts +3 -4
  130. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  131. package/dist/src/bitgo/enterprise/enterprise.js +39 -21
  132. package/dist/src/bitgo/enterprise/enterprises.js +27 -13
  133. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +2 -3
  134. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  135. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  136. package/dist/src/bitgo/enterprise/index.js +6 -2
  137. package/dist/src/bitgo/environments.d.ts +69 -5
  138. package/dist/src/bitgo/environments.d.ts.map +1 -1
  139. package/dist/src/bitgo/environments.js +409 -40
  140. package/dist/src/bitgo/errors.d.ts +175 -0
  141. package/dist/src/bitgo/errors.d.ts.map +1 -1
  142. package/dist/src/bitgo/errors.js +166 -2
  143. package/dist/src/bitgo/evm/evmUtils.d.ts +26 -0
  144. package/dist/src/bitgo/evm/evmUtils.d.ts.map +1 -0
  145. package/dist/src/bitgo/evm/evmUtils.js +50 -0
  146. package/dist/src/bitgo/index.d.ts +4 -1
  147. package/dist/src/bitgo/index.d.ts.map +1 -1
  148. package/dist/src/bitgo/index.js +30 -11
  149. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +3 -3
  150. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
  151. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +1 -1
  152. package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
  153. package/dist/src/bitgo/internal/index.js +6 -2
  154. package/dist/src/bitgo/internal/internal.js +5 -6
  155. package/dist/src/bitgo/internal/keycard.d.ts +19 -6
  156. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  157. package/dist/src/bitgo/internal/keycard.js +108 -48
  158. package/dist/src/bitgo/keychain/decryptKeychain.d.ts +24 -0
  159. package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
  160. package/dist/src/bitgo/keychain/decryptKeychain.js +67 -0
  161. package/dist/src/bitgo/keychain/iKeychains.d.ts +95 -9
  162. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  163. package/dist/src/bitgo/keychain/iKeychains.js +2 -2
  164. package/dist/src/bitgo/keychain/index.d.ts +1 -0
  165. package/dist/src/bitgo/keychain/index.d.ts.map +1 -1
  166. package/dist/src/bitgo/keychain/index.js +7 -2
  167. package/dist/src/bitgo/keychain/keychains.d.ts +49 -6
  168. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  169. package/dist/src/bitgo/keychain/keychains.js +249 -46
  170. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +3 -3
  171. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
  172. package/dist/src/bitgo/keychain/ovcJsonCodec.js +23 -9
  173. package/dist/src/bitgo/legacyBitcoin.d.ts +0 -1
  174. package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
  175. package/dist/src/bitgo/legacyBitcoin.js +27 -13
  176. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts +7 -0
  177. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts.map +1 -0
  178. package/dist/src/bitgo/lightning/lightningWalletUtil.js +25 -0
  179. package/dist/src/bitgo/market/iMarkets.d.ts +2 -2
  180. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -1
  181. package/dist/src/bitgo/market/index.js +6 -2
  182. package/dist/src/bitgo/market/markets.js +23 -9
  183. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +1 -0
  184. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  185. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +4 -4
  186. package/dist/src/bitgo/pendingApproval/index.js +6 -2
  187. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +20 -8
  188. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  189. package/dist/src/bitgo/pendingApproval/pendingApproval.js +228 -110
  190. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +23 -9
  191. package/dist/src/bitgo/proofs/WalletProofs.d.ts +19 -0
  192. package/dist/src/bitgo/proofs/WalletProofs.d.ts.map +1 -0
  193. package/dist/src/bitgo/proofs/WalletProofs.js +37 -0
  194. package/dist/src/bitgo/proofs/index.d.ts +2 -0
  195. package/dist/src/bitgo/proofs/index.d.ts.map +1 -0
  196. package/dist/src/bitgo/proofs/index.js +6 -0
  197. package/dist/src/bitgo/proofs/types.d.ts +80 -0
  198. package/dist/src/bitgo/proofs/types.d.ts.map +1 -0
  199. package/dist/src/bitgo/proofs/types.js +80 -0
  200. package/dist/src/bitgo/recovery/index.js +6 -2
  201. package/dist/src/bitgo/recovery/initiate.d.ts +24 -1
  202. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
  203. package/dist/src/bitgo/recovery/initiate.js +88 -40
  204. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +136 -0
  205. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts.map +1 -0
  206. package/dist/src/bitgo/staking/goStakingInterfaces.js +3 -0
  207. package/dist/src/bitgo/staking/goStakingWallet.d.ts +62 -0
  208. package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -0
  209. package/dist/src/bitgo/staking/goStakingWallet.js +141 -0
  210. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts +17 -0
  211. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts.map +1 -0
  212. package/dist/src/bitgo/staking/iGoStakingWallet.js +3 -0
  213. package/dist/src/bitgo/staking/iStakingWallet.d.ts +178 -7
  214. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  215. package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
  216. package/dist/src/bitgo/staking/index.d.ts +3 -0
  217. package/dist/src/bitgo/staking/index.d.ts.map +1 -1
  218. package/dist/src/bitgo/staking/index.js +9 -2
  219. package/dist/src/bitgo/staking/stakingWallet.d.ts +21 -8
  220. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  221. package/dist/src/bitgo/staking/stakingWallet.js +140 -7
  222. package/dist/src/bitgo/trading/iTradingAccount.d.ts +15 -1
  223. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  224. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  225. package/dist/src/bitgo/trading/index.d.ts +1 -0
  226. package/dist/src/bitgo/trading/index.d.ts.map +1 -1
  227. package/dist/src/bitgo/trading/index.js +7 -2
  228. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
  229. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
  230. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
  231. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
  232. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
  233. package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
  234. package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
  235. package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
  236. package/dist/src/bitgo/trading/network/decrypt.js +23 -0
  237. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
  238. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
  239. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
  240. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
  241. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
  242. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
  243. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
  244. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
  245. package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
  246. package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
  247. package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
  248. package/dist/src/bitgo/trading/network/encrypt.js +58 -0
  249. package/dist/src/bitgo/trading/network/index.d.ts +5 -0
  250. package/dist/src/bitgo/trading/network/index.d.ts.map +1 -0
  251. package/dist/src/bitgo/trading/network/index.js +21 -0
  252. package/dist/src/bitgo/trading/network/network.d.ts +36 -0
  253. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -0
  254. package/dist/src/bitgo/trading/network/network.js +99 -0
  255. package/dist/src/bitgo/trading/network/types.d.ts +277 -0
  256. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -0
  257. package/dist/src/bitgo/trading/network/types.js +3 -0
  258. package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
  259. package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
  260. package/dist/src/bitgo/trading/network/utils.js +54 -0
  261. package/dist/src/bitgo/trading/tradingAccount.d.ts +22 -1
  262. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  263. package/dist/src/bitgo/trading/tradingAccount.js +64 -7
  264. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +38 -0
  265. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  266. package/dist/src/bitgo/tss/bitgoPubKeys.js +72 -0
  267. package/dist/src/bitgo/tss/common.d.ts +40 -6
  268. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  269. package/dist/src/bitgo/tss/common.js +122 -17
  270. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
  271. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  272. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
  273. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
  274. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  275. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +167 -0
  276. package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
  277. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
  278. package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
  279. package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
  280. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  281. package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
  282. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +15 -6
  283. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  284. package/dist/src/bitgo/tss/eddsa/eddsa.js +47 -40
  285. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts +37 -0
  286. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  287. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +95 -0
  288. package/dist/src/bitgo/tss/eddsa/index.js +23 -9
  289. package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
  290. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
  291. package/dist/src/bitgo/tss/index.d.ts +3 -2
  292. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  293. package/dist/src/bitgo/tss/index.js +26 -10
  294. package/dist/src/bitgo/tss/types.d.ts +3 -3
  295. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  296. package/dist/src/bitgo/tss/types.js +2 -2
  297. package/dist/src/bitgo/types.d.ts +3 -3
  298. package/dist/src/bitgo/types.d.ts.map +1 -1
  299. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +8 -0
  300. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
  301. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +55 -13
  302. package/dist/src/bitgo/utils/codecProps.js +24 -11
  303. package/dist/src/bitgo/utils/codecs.d.ts +11 -0
  304. package/dist/src/bitgo/utils/codecs.d.ts.map +1 -0
  305. package/dist/src/bitgo/utils/codecs.js +59 -0
  306. package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
  307. package/dist/src/bitgo/utils/decode.js +30 -16
  308. package/dist/src/bitgo/utils/index.d.ts +4 -2
  309. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  310. package/dist/src/bitgo/utils/index.js +27 -11
  311. package/dist/src/bitgo/utils/messageTypes.d.ts +40 -0
  312. package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
  313. package/dist/src/bitgo/utils/messageTypes.js +17 -0
  314. package/dist/src/bitgo/utils/mpcUtils.d.ts +4 -4
  315. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  316. package/dist/src/bitgo/utils/mpcUtils.js +153 -14
  317. package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
  318. package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
  319. package/dist/src/bitgo/utils/notEmpty.js +7 -0
  320. package/dist/src/bitgo/utils/opengpgUtils.d.ts +10 -7
  321. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  322. package/dist/src/bitgo/utils/opengpgUtils.js +75 -62
  323. package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -1
  324. package/dist/src/bitgo/utils/postWithCodec.js +4 -38
  325. package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
  326. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
  327. package/dist/src/bitgo/utils/promise-utils.js +2 -3
  328. package/dist/src/bitgo/utils/transactionUtils.d.ts +9 -0
  329. package/dist/src/bitgo/utils/transactionUtils.d.ts.map +1 -0
  330. package/dist/src/bitgo/utils/transactionUtils.js +29 -0
  331. package/dist/src/bitgo/utils/triple.d.ts +1 -1
  332. package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
  333. package/dist/src/bitgo/utils/triple.js +2 -3
  334. package/dist/src/bitgo/utils/tss/addressVerification.d.ts +62 -0
  335. package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  336. package/dist/src/bitgo/utils/tss/addressVerification.js +100 -0
  337. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +97 -18
  338. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  339. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +307 -46
  340. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +414 -46
  341. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  342. package/dist/src/bitgo/utils/tss/baseTypes.js +47 -22
  343. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
  344. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
  345. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
  346. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +28 -0
  347. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
  348. package/dist/src/bitgo/utils/tss/ecdsa/base.js +53 -0
  349. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +24 -51
  350. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  351. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +172 -246
  352. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +210 -0
  353. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  354. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1074 -0
  355. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +8 -0
  356. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
  357. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +13 -0
  358. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +4 -0
  359. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  360. package/dist/src/bitgo/utils/tss/ecdsa/index.js +10 -2
  361. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +7 -10
  362. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  363. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  364. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +107 -0
  365. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
  366. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
  367. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts +21 -0
  368. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts.map +1 -0
  369. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.js +118 -0
  370. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +18 -0
  371. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -0
  372. package/dist/src/bitgo/utils/tss/eddsa/base.js +64 -0
  373. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +28 -11
  374. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  375. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +218 -103
  376. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +137 -0
  377. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  378. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +659 -0
  379. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +6 -0
  380. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -0
  381. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +13 -0
  382. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +4 -0
  383. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  384. package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -8
  385. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +12 -7
  386. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  387. package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
  388. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +40 -0
  389. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -0
  390. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +44 -0
  391. package/dist/src/bitgo/utils/tss/index.d.ts +3 -0
  392. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  393. package/dist/src/bitgo/utils/tss/index.js +26 -9
  394. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts +23 -0
  395. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  396. package/dist/src/bitgo/utils/tss/preHashedSignable.js +26 -0
  397. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +33 -0
  398. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  399. package/dist/src/bitgo/utils/tss/recipientUtils.js +117 -0
  400. package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
  401. package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
  402. package/dist/src/bitgo/utils/txRequest.js +49 -0
  403. package/dist/src/bitgo/utils/util.js +24 -10
  404. package/dist/src/bitgo/utils/wallet.d.ts +7 -0
  405. package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
  406. package/dist/src/bitgo/utils/wallet.js +48 -0
  407. package/dist/src/bitgo/wallet/BuildParams.d.ts +50 -1
  408. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  409. package/dist/src/bitgo/wallet/BuildParams.js +58 -11
  410. package/dist/src/bitgo/wallet/iWallet.d.ts +496 -21
  411. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  412. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  413. package/dist/src/bitgo/wallet/iWallets.d.ts +157 -16
  414. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  415. package/dist/src/bitgo/wallet/iWallets.js +63 -3
  416. package/dist/src/bitgo/wallet/index.js +6 -2
  417. package/dist/src/bitgo/wallet/wallet.d.ts +360 -24
  418. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  419. package/dist/src/bitgo/wallet/wallet.js +2017 -355
  420. package/dist/src/bitgo/wallet/wallets.d.ts +88 -4
  421. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  422. package/dist/src/bitgo/wallet/wallets.js +1048 -155
  423. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts +12 -0
  424. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts.map +1 -0
  425. package/dist/src/bitgo/walletUtil/iMessageProvider.js +3 -0
  426. package/dist/src/bitgo/walletUtil/index.d.ts +3 -0
  427. package/dist/src/bitgo/walletUtil/index.d.ts.map +1 -0
  428. package/dist/src/bitgo/walletUtil/index.js +19 -0
  429. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts +22 -0
  430. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts.map +1 -0
  431. package/dist/src/bitgo/walletUtil/midnightMessageProvider.js +95 -0
  432. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts +9 -0
  433. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts.map +1 -0
  434. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.js +72 -0
  435. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts +15 -0
  436. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts.map +1 -0
  437. package/dist/src/bitgo/walletUtil/utxoMessageProof.js +40 -0
  438. package/dist/src/bitgo/webhook/index.js +6 -2
  439. package/dist/src/bitgo/webhook/webhooks.js +23 -9
  440. package/dist/src/coins/fiat.d.ts +45 -0
  441. package/dist/src/coins/fiat.d.ts.map +1 -0
  442. package/dist/src/coins/fiat.js +94 -0
  443. package/dist/src/coins/index.d.ts +1 -6
  444. package/dist/src/coins/index.d.ts.map +1 -1
  445. package/dist/src/coins/index.js +7 -8
  446. package/dist/src/coins/ofc.d.ts +21 -2
  447. package/dist/src/coins/ofc.d.ts.map +1 -1
  448. package/dist/src/coins/ofc.js +29 -3
  449. package/dist/src/coins/ofcToken.d.ts +15 -4
  450. package/dist/src/coins/ofcToken.d.ts.map +1 -1
  451. package/dist/src/coins/ofcToken.js +43 -5
  452. package/dist/src/coins/susd.d.ts +3 -2
  453. package/dist/src/coins/susd.d.ts.map +1 -1
  454. package/dist/src/coins/susd.js +5 -1
  455. package/dist/src/common.js +27 -13
  456. package/dist/src/index.d.ts +6 -1
  457. package/dist/src/index.d.ts.map +1 -1
  458. package/dist/src/index.js +32 -11
  459. package/dist/src/lightning.d.ts +20 -0
  460. package/dist/src/lightning.d.ts.map +1 -0
  461. package/dist/src/lightning.js +13 -0
  462. package/dist/src/units.js +5 -6
  463. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts +2 -0
  464. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  465. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.js +207 -0
  466. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +2 -0
  467. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  468. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.js +174 -0
  469. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +2 -0
  470. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  471. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +108 -0
  472. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts +46 -0
  473. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts.map +1 -0
  474. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.js +69 -0
  475. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +91 -29
  476. package/dist/test/unit/account-lib/mpc/util.d.ts +2 -0
  477. package/dist/test/unit/account-lib/mpc/util.d.ts.map +1 -0
  478. package/dist/test/unit/account-lib/mpc/util.js +53 -0
  479. package/dist/test/unit/bitgo/address-book/address-book.d.ts +2 -0
  480. package/dist/test/unit/bitgo/address-book/address-book.d.ts.map +1 -0
  481. package/dist/test/unit/bitgo/address-book/address-book.js +159 -0
  482. package/dist/test/unit/bitgo/defi/defiVault.d.ts +2 -0
  483. package/dist/test/unit/bitgo/defi/defiVault.d.ts.map +1 -0
  484. package/dist/test/unit/bitgo/defi/defiVault.js +338 -0
  485. package/dist/test/unit/bitgo/environment.d.ts +2 -0
  486. package/dist/test/unit/bitgo/environment.d.ts.map +1 -0
  487. package/dist/test/unit/bitgo/environment.js +38 -0
  488. package/dist/test/unit/bitgo/errors.d.ts +2 -0
  489. package/dist/test/unit/bitgo/errors.d.ts.map +1 -0
  490. package/dist/test/unit/bitgo/errors.js +262 -0
  491. package/dist/test/unit/bitgo/recovery/initiate.d.ts +2 -0
  492. package/dist/test/unit/bitgo/recovery/initiate.d.ts.map +1 -0
  493. package/dist/test/unit/bitgo/recovery/initiate.js +230 -0
  494. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
  495. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
  496. package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
  497. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
  498. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
  499. package/dist/test/unit/bitgo/trading/tradingAccount.js +192 -0
  500. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +24 -4
  501. package/dist/test/unit/bitgo/utils/messageTypes.d.ts +2 -0
  502. package/dist/test/unit/bitgo/utils/messageTypes.d.ts.map +1 -0
  503. package/dist/test/unit/bitgo/utils/messageTypes.js +64 -0
  504. package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
  505. package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
  506. package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
  507. package/dist/test/unit/bitgo/utils/postWithCodec.js +32 -38
  508. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts +2 -0
  509. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  510. package/dist/test/unit/bitgo/utils/tss/addressVerification.js +247 -0
  511. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts +2 -0
  512. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -0
  513. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.js +399 -0
  514. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts +2 -0
  515. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts.map +1 -0
  516. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.js +94 -0
  517. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +2 -0
  518. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  519. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +880 -0
  520. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts +5 -0
  521. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts.map +1 -0
  522. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.js +36 -0
  523. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +2 -0
  524. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  525. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +1307 -0
  526. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts +2 -0
  527. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts.map +1 -0
  528. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.js +311 -0
  529. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts +2 -0
  530. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  531. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.js +55 -0
  532. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +2 -0
  533. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  534. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +171 -0
  535. package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
  536. package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
  537. package/dist/test/unit/bitgo/utils/txRequest.js +179 -0
  538. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
  539. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
  540. package/dist/test/unit/bitgo/wallet/BuildParams.js +97 -0
  541. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +23 -9
  542. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts +2 -0
  543. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts.map +1 -0
  544. package/dist/test/unit/bitgo/wallet/getAccountResources.js +133 -0
  545. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts +2 -0
  546. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts.map +1 -0
  547. package/dist/test/unit/bitgo/wallet/getResourceDelegations.js +118 -0
  548. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts +2 -0
  549. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts.map +1 -0
  550. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.js +141 -0
  551. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
  552. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
  553. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +185 -0
  554. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts +3 -0
  555. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts.map +1 -0
  556. package/dist/test/unit/bitgo/wallet/resourceManagement.js +441 -0
  557. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts +2 -0
  558. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts.map +1 -0
  559. package/dist/test/unit/bitgo/wallet/tokenApproval.js +201 -0
  560. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts +2 -0
  561. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts.map +1 -0
  562. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.js +181 -0
  563. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts +2 -0
  564. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts.map +1 -0
  565. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +43 -0
  566. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts +2 -0
  567. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts.map +1 -0
  568. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.js +320 -0
  569. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts +2 -0
  570. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts.map +1 -0
  571. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +228 -0
  572. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts +2 -0
  573. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts.map +1 -0
  574. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.js +216 -0
  575. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts +2 -0
  576. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts.map +1 -0
  577. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +320 -0
  578. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts +2 -0
  579. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts.map +1 -0
  580. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +204 -0
  581. package/dist/test/unit/coins/ofc.d.ts +2 -0
  582. package/dist/test/unit/coins/ofc.d.ts.map +1 -0
  583. package/dist/test/unit/coins/ofc.js +124 -0
  584. package/dist/test/unit/lightning.d.ts +2 -0
  585. package/dist/test/unit/lightning.d.ts.map +1 -0
  586. package/dist/test/unit/lightning.js +23 -0
  587. package/dist/test/unit/units.d.ts.map +1 -1
  588. package/dist/test/unit/units.js +64 -64
  589. package/dist/tsconfig.tsbuildinfo +1 -1
  590. package/package.json +24 -21
  591. package/.eslintignore +0 -5
  592. package/CHANGELOG.md +0 -1568
  593. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -77
  594. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
  595. package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -209
  596. package/dist/src/bitgo/lightning/iLightning.d.ts +0 -186
  597. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  598. package/dist/src/bitgo/lightning/iLightning.js +0 -106
  599. package/dist/src/bitgo/lightning/index.d.ts +0 -5
  600. package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
  601. package/dist/src/bitgo/lightning/index.js +0 -17
  602. package/dist/src/bitgo/lightning/lightning.d.ts +0 -25
  603. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  604. package/dist/src/bitgo/lightning/lightning.js +0 -111
  605. package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -46
  606. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
  607. package/dist/src/bitgo/lightning/lightningUtils.js +0 -133
  608. package/dist/src/bitgo/lightning/lnurlCodec.d.ts +0 -3
  609. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  610. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  611. package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
  612. package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
  613. package/dist/src/bitgo/utils/blsUtils.js +0 -237
  614. package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
  615. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
  616. package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
  617. package/dist/src/coins/fiateur.d.ts +0 -31
  618. package/dist/src/coins/fiateur.d.ts.map +0 -1
  619. package/dist/src/coins/fiateur.js +0 -57
  620. package/dist/src/coins/fiatgbp.d.ts +0 -31
  621. package/dist/src/coins/fiatgbp.d.ts.map +0 -1
  622. package/dist/src/coins/fiatgbp.js +0 -57
  623. package/dist/src/coins/fiatusd.d.ts +0 -31
  624. package/dist/src/coins/fiatusd.d.ts.map +0 -1
  625. package/dist/src/coins/fiatusd.js +0 -57
  626. package/dist/src/coins/tfiateur.d.ts +0 -11
  627. package/dist/src/coins/tfiateur.d.ts.map +0 -1
  628. package/dist/src/coins/tfiateur.js +0 -17
  629. package/dist/src/coins/tfiatgbp.d.ts +0 -11
  630. package/dist/src/coins/tfiatgbp.d.ts.map +0 -1
  631. package/dist/src/coins/tfiatgbp.js +0 -17
  632. package/dist/src/coins/tfiatusd.d.ts +0 -11
  633. package/dist/src/coins/tfiatusd.d.ts.map +0 -1
  634. package/dist/src/coins/tfiatusd.js +0 -17
  635. package/dist/src/openssl/index.d.ts +0 -5
  636. package/dist/src/openssl/index.d.ts.map +0 -1
  637. package/dist/src/openssl/index.js +0 -9
  638. package/dist/test/unit/openssl.d.ts +0 -2
  639. package/dist/test/unit/openssl.d.ts.map +0 -1
  640. package/dist/test/unit/openssl.js +0 -39
@@ -3,7 +3,8 @@
3
3
  * @hidden
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.drawKeycard = void 0;
6
+ exports.drawKeycard = drawKeycard;
7
+ exports.drawKeycardAsync = drawKeycardAsync;
7
8
  /**
8
9
  */
9
10
  const lodash_1 = require("lodash");
@@ -80,27 +81,10 @@ const generateQuestions = (coin) => {
80
81
  ];
81
82
  };
82
83
  /**
83
- * Collect all data which will go onto the keycard
84
- * @param options
84
+ * Build QR code payload for each keycard box. Does not perform encryption.
85
85
  */
86
- function getKeyData(options) {
87
- const { encrypt, userKeychain, bitgoKeychain, backupKeychain, coinShortName, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, } = options;
88
- // When using just 'generateWallet', we get back an unencrypted prv for the backup keychain
89
- // If the user passes in their passphrase, we can encrypt it
90
- if (backupKeychain.prv && passphrase) {
91
- backupKeychain.encryptedPrv = encrypt({
92
- input: backupKeychain.prv,
93
- password: passphrase,
94
- });
95
- }
96
- // If we have the passcode encryption code, create a box D with the encryptedWalletPasscode
97
- let encryptedWalletPasscode;
98
- if (passphrase && passcodeEncryptionCode) {
99
- encryptedWalletPasscode = encrypt({
100
- input: passphrase,
101
- password: passcodeEncryptionCode,
102
- });
103
- }
86
+ function buildKeycardQrData(options, encryptedWalletPasscode) {
87
+ const { userKeychain, bitgoKeychain, backupKeychain, coinShortName, walletKeyID, backupKeyID } = options;
104
88
  // PDF QR Code data
105
89
  const qrData = {
106
90
  user: {
@@ -114,14 +98,13 @@ function getKeyData(options) {
114
98
  data: backupKeychain.encryptedPrv,
115
99
  },
116
100
  bitgo: {
117
- title: 'C: BitGo Public Key',
118
- desc: 'This is the public part of the key that BitGo will use to ' +
119
- 'co-sign transactions\r\nwith you on your wallet.',
101
+ title: 'C: BitGo Key',
102
+ desc: 'This is the public part of the key held by BitGo.',
120
103
  data: bitgoKeychain.pub,
121
104
  },
122
105
  passcode: {
123
106
  title: 'D: Encrypted Wallet Password',
124
- desc: 'This is the wallet password, encrypted client-side ' + 'with a key held by\r\nBitGo.',
107
+ desc: 'This is the wallet password, encrypted client-side ' + 'with a key held by\r\nBitGo.',
125
108
  data: encryptedWalletPasscode,
126
109
  },
127
110
  };
@@ -131,7 +114,7 @@ function getKeyData(options) {
131
114
  if (backupKeyID) {
132
115
  qrData.backup.keyID = backupKeyID;
133
116
  }
134
- if (lodash_1.isUndefined(userKeychain.encryptedPrv)) {
117
+ if ((0, lodash_1.isUndefined)(userKeychain.encryptedPrv)) {
135
118
  // User provided their own key - this is a cold wallet
136
119
  qrData.user.title = 'A: Provided User Key';
137
120
  qrData.user.desc = 'This is the public key you provided for your wallet.';
@@ -139,10 +122,10 @@ function getKeyData(options) {
139
122
  // The user provided their own public key, we can remove box D
140
123
  delete qrData.passcode;
141
124
  }
142
- else if (lodash_1.isUndefined(encryptedWalletPasscode)) {
125
+ else if ((0, lodash_1.isUndefined)(encryptedWalletPasscode)) {
143
126
  delete qrData.passcode;
144
127
  }
145
- if (!lodash_1.isUndefined(backupKeychain.provider)) {
128
+ if (!(0, lodash_1.isUndefined)(backupKeychain.provider)) {
146
129
  const backupKeyProviderName = backupKeychain.provider;
147
130
  // Backup key held with KRS
148
131
  qrData.backup = {
@@ -153,7 +136,7 @@ function getKeyData(options) {
153
136
  data: backupKeychain.pub,
154
137
  };
155
138
  }
156
- else if (lodash_1.isUndefined(backupKeychain.encryptedPrv)) {
139
+ else if ((0, lodash_1.isUndefined)(backupKeychain.encryptedPrv)) {
157
140
  // User supplied the xpub
158
141
  qrData.backup = {
159
142
  title: 'B: Backup Key',
@@ -164,11 +147,59 @@ function getKeyData(options) {
164
147
  return qrData;
165
148
  }
166
149
  /**
167
- * Draw a keycard into a new pdf document object
150
+ * TODO: Deprecate this function in favor of getKeyDataAsync once v2 encryption is default.
151
+ * Collect all data which will go onto the keycard
168
152
  * @param options
169
153
  */
170
- function drawKeycard(options) {
171
- const { jsPDF, QRCode, coinShortName, activationCode, walletLabel, coinName } = options;
154
+ function getKeyData(options) {
155
+ const { encrypt, backupKeychain, passphrase, passcodeEncryptionCode, ...qrOptions } = options;
156
+ // When using just 'generateWallet', we get back an unencrypted prv for the backup keychain
157
+ // If the user passes in their passphrase, we can encrypt it
158
+ if (backupKeychain.prv && passphrase) {
159
+ backupKeychain.encryptedPrv = encrypt({
160
+ input: backupKeychain.prv,
161
+ password: passphrase,
162
+ });
163
+ }
164
+ // If we have the passcode encryption code, create a box D with the encryptedWalletPasscode
165
+ let encryptedWalletPasscode;
166
+ if (passphrase && passcodeEncryptionCode) {
167
+ encryptedWalletPasscode = encrypt({
168
+ input: passphrase,
169
+ password: passcodeEncryptionCode,
170
+ });
171
+ }
172
+ return buildKeycardQrData({ ...qrOptions, backupKeychain }, encryptedWalletPasscode);
173
+ }
174
+ /**
175
+ * Async version of getKeyData with support for v2 (Argon2id) encryption.
176
+ * Sequential encrypt: backup key first, then passcode (matches original getKeyDataAsync).
177
+ * @param options
178
+ */
179
+ async function getKeyDataAsync(options) {
180
+ const { encrypt, backupKeychain, passphrase, passcodeEncryptionCode, encryptionVersion, ...qrOptions } = options;
181
+ if (backupKeychain.prv && passphrase) {
182
+ backupKeychain.encryptedPrv = await encrypt({
183
+ input: backupKeychain.prv,
184
+ password: passphrase,
185
+ encryptionVersion,
186
+ });
187
+ }
188
+ let encryptedWalletPasscode;
189
+ if (passphrase && passcodeEncryptionCode) {
190
+ encryptedWalletPasscode = await encrypt({
191
+ input: passphrase,
192
+ password: passcodeEncryptionCode,
193
+ encryptionVersion,
194
+ });
195
+ }
196
+ return buildKeycardQrData({ ...qrOptions, backupKeychain }, encryptedWalletPasscode);
197
+ }
198
+ /**
199
+ * Render keycard PDF pages from pre-built QR data.
200
+ */
201
+ function renderKeycardPdf(options, keyData) {
202
+ const { jsPDF, QRCode, activationCode, walletLabel, coinName } = options;
172
203
  const margin = 30;
173
204
  const font = {
174
205
  header: 24,
@@ -222,20 +253,6 @@ function drawKeycard(options) {
222
253
  moveDown(20);
223
254
  doc.setFontSize(font.body).setTextColor(color.red);
224
255
  doc.text('Print this document, or keep it securely offline. See second page for FAQ.', left(75), y);
225
- const { encrypt, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, userKeychain, bitgoKeychain, backupKeychain, } = options;
226
- // Get the data for the first page (qr codes)
227
- const keyData = getKeyData({
228
- encrypt,
229
- coinShortName,
230
- passphrase,
231
- passcodeEncryptionCode,
232
- walletKeyID,
233
- backupKeyID,
234
- userKeychain,
235
- bitgoKeychain,
236
- backupKeychain,
237
- });
238
- // Generate the first page's data for the backup PDF
239
256
  moveDown(35);
240
257
  const qrSize = 130;
241
258
  // Draw each Box with QR code and description
@@ -300,5 +317,48 @@ function drawKeycard(options) {
300
317
  });
301
318
  return doc;
302
319
  }
303
- exports.drawKeycard = drawKeycard;
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUg7R0FDRztBQUNILG1DQUFxQztBQUdyQzs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDekMsT0FBTztRQUNMO1lBQ0UsQ0FBQyxFQUFFLHNCQUFzQjtZQUN6QixDQUFDLEVBQUU7Z0JBQ0QsK0VBQStFLElBQUksR0FBRztnQkFDdEYsMkRBQTJELEdBQUcsZ0NBQWdDO2dCQUM5Rix1RkFBdUY7YUFDeEY7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDJCQUEyQjtZQUM5QixDQUFDLEVBQUU7Z0JBQ0QsK0ZBQStGO2dCQUMvRixtR0FBbUc7Z0JBQ25HLGdEQUFnRDtnQkFDaEQsRUFBRTtnQkFDRiw2RkFBNkY7Z0JBQzdGLCtGQUErRjtnQkFDL0Ysc0RBQXNEO2FBQ3ZEO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSxnQ0FBZ0M7WUFDbkMsQ0FBQyxFQUFFO2dCQUNELGdFQUFnRSxJQUFJLDJCQUEyQjtnQkFDL0YsK0ZBQStGO2dCQUMvRix1Q0FBdUM7Z0JBQ3ZDLDBDQUEwQzthQUMzQztTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsa0NBQWtDO1lBQ3JDLENBQUMsRUFBRTtnQkFDRCxrR0FBa0c7Z0JBQ2xHLHVGQUF1RjtnQkFDdkYsc0ZBQXNGO2dCQUN0Riw2RkFBNkY7Z0JBQzdGLCtDQUErQzthQUNoRDtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsOENBQThDO1lBQ2pELENBQUMsRUFBRTtnQkFDRCx3RkFBd0Y7Z0JBQ3hGLDZGQUE2RjthQUM5RjtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsNERBQTREO1lBQy9ELENBQUMsRUFBRTtnQkFDRCxvRkFBb0Y7Z0JBQ3BGLDREQUE0RCxJQUFJLGlDQUFp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LENBQUMsQ0FBQztRQUMxRCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBNUtELGtDQTRLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGhpZGRlblxuICovXG5cbi8qKlxuICovXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJy4uL2tleWNoYWluJztcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcXVlc3Rpb25zIHRoYXQgd2lsbCBhcHBlYXIgb24gdGhlIHNlY29uZCBwYWdlIG9mIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gY29pbiBuYW1lIG9mIHRoZSBjb2luXG4gKi9cbmNvbnN0IGdlbmVyYXRlUXVlc3Rpb25zID0gKGNvaW46IHN0cmluZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlzIHRoZSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIGBUaGUgS2V5Q2FyZCBjb250YWlucyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUgJHtjb2lufSBgLFxuICAgICAgICAnZnJvbSB5b3VyIHdhbGxldCBpbiBzZXZlcmFsIHNpdHVhdGlvbnMuIEVhY2ggQml0R28gd2FsbGV0JyArICcgaGFzIGl0cyBvd24sIHVuaXF1ZSBLZXlDYXJkLiAnLFxuICAgICAgICAnSWYgeW91IGhhdmUgY3JlYXRlZCBtdWx0aXBsZSB3YWxsZXRzLCB5b3Ugc2hvdWxkIHJldGFpbiB0aGUgS2V5Q2FyZCBmb3IgZWFjaCBvZiB0aGVtLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICAnWW91IHNob3VsZCBwcmludCB0aGUgS2V5Q2FyZCBhbmQvb3Igc2F2ZSB0aGUgUERGIHRvIGFuIG9mZmxpbmUgc3RvcmFnZSBkZXZpY2UuIFRoZSBwcmludC1vdXQgJyxcbiAgICAgICAgXCJvciBVU0Igc3RpY2sgc2hvdWxkIGJlIGtlcHQgaW4gYSBzYWZlIHBsYWNlLCBzdWNoIGFzIGEgYmFuayB2YXVsdCBvciBob21lIHNhZmUuIEl0J3MgYSBnb29kIGlkZWEgXCIsXG4gICAgICAgICd0byBrZWVwIGEgc2Vjb25kIGNvcHkgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uJyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiSW1wb3J0YW50OiBJZiB5b3UgaGF2ZW4ndCBwcm92aWRlZCBhbiBleHRlcm5hbCBiYWNrdXAga2V5LCB0aGVuIHRoZSBvcmlnaW5hbCBQREYgc2hvdWxkIGJlIFwiLFxuICAgICAgICAnZGVsZXRlZCBmcm9tIGFueSBtYWNoaW5lIHdoZXJlIHRoZSB3YWxsZXQgd2lsbCBiZSByZWd1bGFybHkgYWNjZXNzZWQgdG8gcHJldmVudCBtYWx3YXJlIGZyb20gJyxcbiAgICAgICAgJ2NhcHR1cmluZyBib3RoIHRoZSBLZXlDYXJkIGFuZCB5b3VyIHdhbGxldCBwYXNzY29kZS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IHNob3VsZCBJIGRvIGlmIEkgbG9zZSBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICBgSWYgeW91IGhhdmUgbG9zdCBvciBkYW1hZ2VkIGFsbCBjb3BpZXMgb2YgeW91ciBLZXlDYXJkLCB5b3VyICR7Y29pbn0gaXMgc3RpbGwgc2FmZSwgYnV0IHRoaXMgYCxcbiAgICAgICAgJ3dhbGxldCBzaG91bGQgYmUgY29uc2lkZXJlZCBhdCByaXNrIGZvciBsb3NzLiBBcyBzb29uIGFzIGlzIGNvbnZlbmllbnQsIHlvdSBzaG91bGQgdXNlIEJpdEdvICcsXG4gICAgICAgICd0byBlbXB0eSB0aGUgd2FsbGV0IGludG8gYSBuZXcgd2FsbGV0JyxcbiAgICAgICAgJywgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIHNvbWVvbmUgc2VlcyBteSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIFwiRG9uJ3QgcGFuaWMhIEFsbCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gb24gdGhlIEtleUNhcmQgaXMgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZSwgb3Igd2l0aCBhXCIsXG4gICAgICAgICdrZXkgd2hpY2ggb25seSBCaXRHbyBoYXMuIEJ1dCwgaW4gZ2VuZXJhbCwgeW91IHNob3VsZCBtYWtlIGJlc3QgZWZmb3J0cyB0byBrZWVwIHlvdXIgJyxcbiAgICAgICAgJ0tleUNhcmQgcHJpdmF0ZS4gSWYgeW91ciBLZXlDYXJkIGRvZXMgZ2V0IGV4cG9zZWQgb3IgY29waWVkIGluIGEgd2F5IHRoYXQgbWFrZXMgeW91ICcsXG4gICAgICAgICd1bmNvbWZvcnRhYmxlLCB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIGVtcHR5IHRoZSBjb3JyZXNwb25kaW5nIHdhbGxldCBpbnRvIGFub3RoZXIgJyxcbiAgICAgICAgJ3dhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgaWYgSSBmb3JnZXQgb3IgbG9zZSBteSB3YWxsZXQgcGFzc3dvcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ0JpdEdvIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIGluIFFSIENvZGUgRCB0byBoZWxwIHlvdSByZWNvdmVyIGFjY2VzcyB0byB5b3VyIHdhbGxldC4gJyxcbiAgICAgICAgJ1dpdGhvdXQgdGhlIEtleUNhcmQsIEJpdEdvIGlzIG5vdCBhYmxlIHRvIHJlY292ZXIgZnVuZHMgZnJvbSBhIHdhbGxldCB3aXRoIGEgbG9zdCBwYXNzd29yZC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIEJpdEdvIGJlY29tZXMgaW5hY2Nlc3NpYmxlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Q/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ1lvdXIgS2V5Q2FyZCBhbmQgd2FsbGV0IHBhc3Njb2RlIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQml0R2/igJlzIHB1Ymxpc2hlZCBvcGVuICcsXG4gICAgICAgIGBzb3VyY2UgdG9vbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2JpdGdvIHRvIHJlY292ZXIgeW91ciAke2NvaW59LiBOb3RlOiBZb3Ugc2hvdWxkIG5ldmVyIGVudGVyIGAsXG4gICAgICAgICdpbmZvcm1hdGlvbiBmcm9tIHlvdXIgS2V5Q2FyZCBpbnRvIHRvb2xzIG90aGVyIHRoYW4gdGhlIHRvb2xzIEJpdEdvIGhhcyBwdWJsaXNoZWQsIG9yIHlvdXIgJyxcbiAgICAgICAgJ2Z1bmRzIG1heSBiZSBhdCByaXNrIGZvciB0aGVmdC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdTaG91bGQgSSB3cml0ZSBteSB3YWxsZXQgcGFzc3dvcmQgb24gbXkgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICAnTm8hIEJpdEdv4oCZcyBtdWx0aS1zaWduYXR1cmUgYXBwcm9hY2ggdG8gc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGVyZSBub3QgYmVpbmcgYSBzaW5nbGUgcG9pbnQgJyxcbiAgICAgICAgJ29mIGF0dGFjay4gQnV0IGlmIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGlzIG9uIHlvdXIgS2V5Q2FyZCwgdGhlbiBhbnlvbmUgd2hvIGdhaW5zIGFjY2VzcyB0byAnLFxuICAgICAgICBgeW91ciBLZXlDYXJkIHdpbGwgYmUgYWJsZSB0byBzdGVhbCB5b3VyICR7Y29pbn0uIFdlIHJlY29tbWVuZCBrZWVwaW5nIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGAsXG4gICAgICAgICdzYWZlIGluIGEgc2VjdXJlIHBhc3N3b3JkIG1hbmFnZXIgc3VjaCBhcyBMYXN0UGFzcywgMVBhc3N3b3JkIG9yIEtlZVBhc3MuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn07XG5cbmludGVyZmFjZSBHZXRLZXlEYXRhT3B0aW9ucyB7XG4gIGVuY3J5cHQ6IChwYXJhbXM6IHsgaW5wdXQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiBzdHJpbmc7XG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbiAgcGFzc3BocmFzZT86IHN0cmluZztcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgd2FsbGV0S2V5SUQ/OiBzdHJpbmc7XG4gIGJhY2t1cEtleUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbGxlY3QgYWxsIGRhdGEgd2hpY2ggd2lsbCBnbyBvbnRvIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRLZXlEYXRhKG9wdGlvbnM6IEdldEtleURhdGFPcHRpb25zKTogYW55IHtcbiAgY29uc3Qge1xuICAgIGVuY3J5cHQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIFdoZW4gdXNpbmcganVzdCAnZ2VuZXJhdGVXYWxsZXQnLCB3ZSBnZXQgYmFjayBhbiB1bmVuY3J5cHRlZCBwcnYgZm9yIHRoZSBiYWNrdXAga2V5Y2hhaW5cbiAgLy8gSWYgdGhlIHVzZXIgcGFzc2VzIGluIHRoZWlyIHBhc3NwaHJhc2UsIHdlIGNhbiBlbmNyeXB0IGl0XG4gIGlmIChiYWNrdXBLZXljaGFpbi5wcnYgJiYgcGFzc3BocmFzZSkge1xuICAgIGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydiA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IGJhY2t1cEtleWNoYWluLnBydixcbiAgICAgIHBhc3N3b3JkOiBwYXNzcGhyYXNlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSWYgd2UgaGF2ZSB0aGUgcGFzc2NvZGUgZW5jcnlwdGlvbiBjb2RlLCBjcmVhdGUgYSBib3ggRCB3aXRoIHRoZSBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZVxuICBsZXQgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGU7XG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFBERiBRUiBDb2RlIGRhdGFcbiAgY29uc3QgcXJEYXRhOiBhbnkgPSB7XG4gICAgdXNlcjoge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gICAgYmFja3VwOiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9LFxuICAgIGJpdGdvOiB7XG4gICAgICB0aXRsZTogJ0M6IEJpdEdvIFB1YmxpYyBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgdGhhdCBCaXRHbyB3aWxsIHVzZSB0byAnICtcbiAgICAgICAgJ2NvLXNpZ24gdHJhbnNhY3Rpb25zXFxyXFxud2l0aCB5b3Ugb24geW91ciB3YWxsZXQuJyxcbiAgICAgIGRhdGE6IGJpdGdvS2V5Y2hhaW4ucHViLFxuICAgIH0sXG4gICAgcGFzc2NvZGU6IHtcbiAgICAgIHRpdGxlOiAnRDogRW5jcnlwdGVkIFdhbGxldCBQYXNzd29yZCcsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB0aGUgd2FsbGV0ICBwYXNzd29yZCwgZW5jcnlwdGVkIGNsaWVudC1zaWRlICcgKyAnd2l0aCBhIGtleSBoZWxkIGJ5XFxyXFxuQml0R28uJyxcbiAgICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICAgIH0sXG4gIH07XG5cbiAgaWYgKHdhbGxldEtleUlEKSB7XG4gICAgcXJEYXRhLnVzZXIua2V5SUQgPSB3YWxsZXRLZXlJRDtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlJRCkge1xuICAgIHFyRGF0YS5iYWNrdXAua2V5SUQgPSBiYWNrdXBLZXlJRDtcbiAgfVxuXG4gIGlmIChpc1VuZGVmaW5lZCh1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIGtleSAtIHRoaXMgaXMgYSBjb2xkIHdhbGxldFxuICAgIHFyRGF0YS51c2VyLnRpdGxlID0gJ0E6IFByb3ZpZGVkIFVzZXIgS2V5JztcbiAgICBxckRhdGEudXNlci5kZXNjID0gJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nO1xuICAgIHFyRGF0YS51c2VyLmRhdGEgPSB1c2VyS2V5Y2hhaW4ucHViO1xuXG4gICAgLy8gVGhlIHVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIHB1YmxpYyBrZXksIHdlIGNhbiByZW1vdmUgYm94IERcbiAgICBkZWxldGUgcXJEYXRhLnBhc3Njb2RlO1xuICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKSkge1xuICAgIGRlbGV0ZSBxckRhdGEucGFzc2NvZGU7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKGJhY2t1cEtleWNoYWluLnByb3ZpZGVyKSkge1xuICAgIGNvbnN0IGJhY2t1cEtleVByb3ZpZGVyTmFtZSA9IGJhY2t1cEtleWNoYWluLnByb3ZpZGVyO1xuICAgIC8vIEJhY2t1cCBrZXkgaGVsZCB3aXRoIEtSU1xuICAgIHFyRGF0YS5iYWNrdXAgPSB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgYFRoaXMgaXMgdGhlIHB1YmxpYyBrZXkgaGVsZCBhdCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgYCwgYW4gJHtjb2luU2hvcnROYW1lfSByZWNvdmVyeSBzZXJ2aWNlLiBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgJyB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgc3VwcGxpZWQgdGhlIHhwdWJcbiAgICBxckRhdGEuYmFja3VwID0ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSBwdWJsaWMgcG9ydGlvbiBvZiB5b3VyIGJhY2t1cCBrZXksIHdoaWNoIHlvdSBwcm92aWRlZC4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRPcHRpb25zIGV4dGVuZHMgR2V0S2V5RGF0YU9wdGlvbnMge1xuICBqc1BERjogYW55O1xuICBRUkNvZGU6IGFueTtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xuICBhY3RpdmF0aW9uQ29kZTogc3RyaW5nO1xuICB3YWxsZXRMYWJlbDogc3RyaW5nO1xuICBjb2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERyYXcgYSBrZXljYXJkIGludG8gYSBuZXcgcGRmIGRvY3VtZW50IG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdLZXljYXJkKG9wdGlvbnM6IERyYXdLZXljYXJkT3B0aW9ucyk6IGFueSB7XG4gIGNvbnN0IHsganNQREYsIFFSQ29kZSwgY29pblNob3J0TmFtZSwgYWN0aXZhdGlvbkNvZGUsIHdhbGxldExhYmVsLCBjb2luTmFtZSB9ID0gb3B0aW9ucztcblxuICBjb25zdCBtYXJnaW4gPSAzMDtcblxuICBjb25zdCBmb250ID0ge1xuICAgIGhlYWRlcjogMjQsXG4gICAgc3ViaGVhZGVyOiAxNSxcbiAgICBib2R5OiAxMixcbiAgfTtcblxuICBjb25zdCBjb2xvciA9IHtcbiAgICBibGFjazogJyMwMDAwMDAnLFxuICAgIGRhcmtncmF5OiAnIzRjNGM0YycsXG4gICAgZ3JheTogJyM5YjliOWInLFxuICAgIHJlZDogJyNlMjFlMWUnLFxuICB9O1xuXG4gIC8vIGRvY3VtZW50IGRldGFpbHNcbiAgY29uc3Qgd2lkdGggPSA4LjUgKiA3MjtcbiAgbGV0IHkgPSAwO1xuXG4gIC8vIEhlbHBlcnMgZm9yIGRhdGEgZm9ybWF0dGluZyAvIHBvc2l0aW9uaW5nIG9uIHRoZSBwYXBlclxuICBjb25zdCBsZWZ0ID0gKHgpID0+IG1hcmdpbiArIHg7XG4gIGNvbnN0IG1vdmVEb3duID0gKHlEZWx0YSkgPT4ge1xuICAgIHkgKz0geURlbHRhO1xuICB9O1xuXG4gIGNvbnN0IGRvYyA9IG5ldyBqc1BERigncG9ydHJhaXQnLCAncHQnLCAnbGV0dGVyJyk7XG4gIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnKTtcblxuICAvLyBQREYgSGVhZGVyIEFyZWEgLSBpbmNsdWRlcyB0aGUgbG9nbyBhbmQgY29tcGFueSBuYW1lXG4gIC8vIFRoaXMgaXMgZGF0YSBmb3IgdGhlIEJpdEdvIGxvZ28gaW4gdGhlIHRvcCBsZWZ0IG9mIHRoZSBQREZcbiAgbW92ZURvd24oMzApO1xuXG4gIC8vIFdlIGRvbid0IGN1cnJlbnRseSBhZGQgYW4gaW1hZ2UsIHNpbmNlIHRoYXQgcGF0aCBpcyBkZXBlbmRlbnQgb24gQml0R28gZnJvbnRlbmRcbiAgLy8gZG9jLmFkZEltYWdlKGNvaW5VdGlsaXR5LmdldFNlbGVjdGVkQ29pbk9iaigpLmtleUNhcmRJbWFnZSwgbGVmdCgwKSwgeSArIDEwKTtcblxuICAvLyBBY3RpdmF0aW9uIENvZGVcbiAgbW92ZURvd24oOCk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoJ0FjdGl2YXRpb24gQ29kZScsIGxlZnQoNDYwKSwgeSk7XG5cbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICBtb3ZlRG93bigyNSk7XG4gIGRvYy50ZXh0KCdZb3VyIEJpdEdvIEtleUNhcmQnLCBsZWZ0KDE1MCksIHkpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoYWN0aXZhdGlvbkNvZGUudG9TdHJpbmcoKSwgbGVmdCg0NjApLCB5KTtcblxuICAvLyBTdWJoZWFkZXJcbiAgLy8gdGl0bGVzXG4gIG1vdmVEb3duKG1hcmdpbik7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoXG4gICAgYENyZWF0ZWQgb24gJHtuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpfSBieSAke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0gZm9yIHdhbGxldCBuYW1lZCAke3dhbGxldExhYmVsfWAsXG4gICAgbGVmdCgwKSxcbiAgICB5XG4gICk7XG4gIC8vIGNvcHlcbiAgbW92ZURvd24oMjUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KHdhbGxldExhYmVsLCBsZWZ0KDApLCB5KTtcbiAgLy8gUmVkIEJhclxuICBtb3ZlRG93bigyMCk7XG4gIGRvYy5zZXRGaWxsQ29sb3IoMjU1LCAyMzAsIDIzMCk7XG4gIGRvYy5yZWN0KGxlZnQoMCksIHksIHdpZHRoIC0gMiAqIG1hcmdpbiwgMzIsICdGJyk7XG5cbiAgLy8gd2FybmluZyBtZXNzYWdlXG4gIG1vdmVEb3duKDIwKTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLnJlZCk7XG4gIGRvYy50ZXh0KCdQcmludCB0aGlzIGRvY3VtZW50LCBvciBrZWVwIGl0IHNlY3VyZWx5IG9mZmxpbmUuIFNlZSBzZWNvbmQgcGFnZSBmb3IgRkFRLicsIGxlZnQoNzUpLCB5KTtcblxuICBjb25zdCB7XG4gICAgZW5jcnlwdCxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpcnN0IHBhZ2UgKHFyIGNvZGVzKVxuICBjb25zdCBrZXlEYXRhID0gZ2V0S2V5RGF0YSh7XG4gICAgZW5jcnlwdCxcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgfSk7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGZpcnN0IHBhZ2UncyBkYXRhIGZvciB0aGUgYmFja3VwIFBERlxuICBtb3ZlRG93bigzNSk7XG4gIGNvbnN0IHFyU2l6ZSA9IDEzMDtcblxuICAvLyBEcmF3IGVhY2ggQm94IHdpdGggUVIgY29kZSBhbmQgZGVzY3JpcHRpb25cbiAgT2JqZWN0LmtleXMoa2V5RGF0YSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5VHlwZSkge1xuICAgIGNvbnN0IGtleSA9IGtleURhdGFba2V5VHlwZV07XG4gICAgY29uc3QgdG9wWSA9IHk7XG5cbiAgICAvLyBEb24ndCBpbmRlbnQgaWYgd2UncmUgbm90IHByb2R1Y2luZyBRUiBjb2Rlc1xuICAgIGNvbnN0IHRleHRMZWZ0ID0gISFRUkNvZGUgPyBsZWZ0KHFyU2l6ZSArIDE1KSA6IGxlZnQoMTUpO1xuXG4gICAgLy8gRHJhdyBhIFFSIGNvZGUgaWYgbGlicmFyeSBpcyBhdmFpbGFibGVcbiAgICBpZiAoUVJDb2RlKSB7XG4gICAgICBjb25zdCBkYXRhVVJMID0gbmV3IFFSQ29kZSh7IHZhbHVlOiBrZXkuZGF0YSwgc2l6ZTogcXJTaXplIH0pLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xuICAgICAgZG9jLmFkZEltYWdlKGRhdGFVUkwsIGxlZnQoMCksIHksIHFyU2l6ZSwgcXJTaXplKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgbW92ZURvd24oMTApO1xuICAgIGRvYy50ZXh0KGtleS50aXRsZSwgdGV4dExlZnQsIHkpO1xuICAgIG1vdmVEb3duKDE1KTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZGFya2dyYXkpO1xuICAgIGRvYy50ZXh0KGtleS5kZXNjLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMzApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkgLSAyKTtcbiAgICBkb2MudGV4dCgnRGF0YTonLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMTUpO1xuICAgIGNvbnN0IGlubmVyV2lkdGggPSA3MiAqIDguNSAtIHRleHRMZWZ0IC0gMzA7XG4gICAgZG9jLnNldEZvbnQoJ2NvdXJpZXInKS5zZXRGb250U2l6ZSg5KS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGNvbnN0IGxpbmVzID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShrZXkuZGF0YSwgaW5uZXJXaWR0aCk7XG4gICAgZG9jLnRleHQobGluZXMsIHRleHRMZWZ0LCB5KTtcblxuICAgIC8vIEFkZCBrZXkgSUQgKGRlcml2YXRpb24gc3RyaW5nKSBpZiBpdCBleGlzdHNcbiAgICBpZiAoa2V5LmtleUlEKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gJ0tleSBJZDogJyArIGtleS5rZXlJRDtcbiAgICAgIC8vIEdyYXkgYmFyXG4gICAgICBtb3ZlRG93big0NSk7XG4gICAgICBkb2Muc2V0RmlsbENvbG9yKDI0NywgMjQ5LCAyNDkpOyAvLyBHcmF5IGJhY2tncm91bmRcbiAgICAgIGRvYy5zZXREcmF3Q29sb3IoMCwgMCwgMCk7IC8vIEJvcmRlclxuICAgICAgZG9jLnJlY3QodGV4dExlZnQsIHksIHdpZHRoLCAxNSwgJ0ZEJyk7XG5cbiAgICAgIGRvYy50ZXh0KHRleHQsIHRleHRMZWZ0ICsgNSwgeSArIDEwKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJyk7XG4gICAgLy8gTW92ZSBkb3duIHRoZSBzaXplIG9mIHRoZSBRUiBjb2RlIG1pbnVzIGFjY3VtdWxhdGVkIGhlaWdodCBvbiB0aGUgcmlnaHQgc2lkZSwgcGx1cyBidWZmZXJcbiAgICBtb3ZlRG93bihxclNpemUgLSAoeSAtIHRvcFkpICsgMTUpO1xuICB9KTtcblxuICAvLyBBZGQgYSBuZXcgcGFnZSAoUSArIEEgcGFnZSlcbiAgZG9jLmFkZFBhZ2UoKTtcblxuICAvLyAybmQgcGFnZSB0aXRsZVxuICB5ID0gMDtcbiAgbW92ZURvd24oNTUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KCdCaXRHbyBLZXlDYXJkIEZBUScsIGxlZnQoMCksIHkpO1xuXG4gIGNvbnN0IHF1ZXN0aW9ucyA9IGdlbmVyYXRlUXVlc3Rpb25zKGNvaW5OYW1lKTtcblxuICAvLyBEcmF3IHRoZSBRICsgQSBkYXRhIG9uIHRoZSBzZWNvbmQgcGFnZVxuICBtb3ZlRG93bigzMCk7XG4gIHF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChxKSB7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGRvYy50ZXh0KHEucSwgbGVmdCgwKSwgeSk7XG4gICAgbW92ZURvd24oMjApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5kYXJrZ3JheSk7XG4gICAgcS5hLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGRvYy50ZXh0KGxpbmUsIGxlZnQoMCksIHkpO1xuICAgICAgbW92ZURvd24oZm9udC5ib2R5ICsgMyk7XG4gICAgfSk7XG4gICAgbW92ZURvd24oMjIpO1xuICB9KTtcblxuICByZXR1cm4gZG9jO1xufVxuIl19
320
+ /**
321
+ * TODO: Deprecate this function in favor of drawKeycardAsync once v2 encryption is default.
322
+ * Draw a keycard into a new pdf document object
323
+ * @param options
324
+ */
325
+ function drawKeycard(options) {
326
+ const { encrypt, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, userKeychain, bitgoKeychain, backupKeychain, coinShortName, jsPDF, QRCode, activationCode, walletLabel, coinName, } = options;
327
+ const keyData = getKeyData({
328
+ encrypt,
329
+ coinShortName,
330
+ passphrase,
331
+ passcodeEncryptionCode,
332
+ walletKeyID,
333
+ backupKeyID,
334
+ userKeychain,
335
+ bitgoKeychain,
336
+ backupKeychain,
337
+ });
338
+ return renderKeycardPdf({ jsPDF, QRCode, activationCode, walletLabel, coinName }, keyData);
339
+ }
340
+ /**
341
+ * Async version of drawKeycard with support for v2 (Argon2id) encryption.
342
+ * Use this when the encrypt callback may return a Promise (e.g. encryptAsync).
343
+ *
344
+ * Draw a keycard into a new pdf document object
345
+ * @param options
346
+ */
347
+ async function drawKeycardAsync(options) {
348
+ const { encrypt, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, userKeychain, bitgoKeychain, backupKeychain, coinShortName, jsPDF, QRCode, activationCode, walletLabel, coinName, encryptionVersion, } = options;
349
+ // Get the data for the first page (qr codes)
350
+ const keyData = await getKeyDataAsync({
351
+ encrypt,
352
+ coinShortName,
353
+ passphrase,
354
+ passcodeEncryptionCode,
355
+ walletKeyID,
356
+ backupKeyID,
357
+ userKeychain,
358
+ bitgoKeychain,
359
+ backupKeychain,
360
+ encryptionVersion,
361
+ });
362
+ return renderKeycardPdf({ jsPDF, QRCode, activationCode, walletLabel, coinName }, keyData);
363
+ }
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUEyWkgsa0NBK0JDO0FBU0QsNENBa0NDO0FBbmVEO0dBQ0c7QUFDSCxtQ0FBcUM7QUFJckM7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3pDLE9BQU87UUFDTDtZQUNFLENBQUMsRUFBRSxzQkFBc0I7WUFDekIsQ0FBQyxFQUFFO2dCQUNELCtFQUErRSxJQUFJLEdBQUc7Z0JBQ3RGLDJEQUEyRCxHQUFHLGdDQUFnQztnQkFDOUYsdUZBQXVGO2FBQ3hGO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSwyQkFBMkI7WUFDOUIsQ0FBQyxFQUFFO2dCQUNELCtGQUErRjtnQkFDL0YsbUdBQW1HO2dCQUNuRyxnREFBZ0Q7Z0JBQ2hELEVBQUU7Z0JBQ0YsNkZBQTZGO2dCQUM3RiwrRkFBK0Y7Z0JBQy9GLHNEQUFzRDthQUN2RDtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsZ0NBQWdDO1lBQ25DLENBQUMsRUFBRTtnQkFDRCxnRUFBZ0UsSUFBSSwyQkFBMkI7Z0JBQy9GLCtGQUErRjtnQkFDL0YsdUNBQXVDO2dCQUN2QywwQ0FBMEM7YUFDM0M7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLGtDQUFrQztZQUNyQyxDQUFDLEVBQUU7Z0JBQ0Qsa0dBQWtHO2dCQUNsRyx1RkFBdUY7Z0JBQ3ZGLHNGQUFzRjtnQkFDdEYsNkZBQTZGO2dCQUM3RiwrQ0FBK0M7YUFDaEQ7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDhDQUE4QztZQUNqRCxDQUFDLEVBQUU7Z0JBQ0Qsd0ZBQXdGO2dCQUN4Riw2RkFBNkY7YUFDOUY7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDREQUE0RDtZQUMvRCxDQUFDLEVBQUU7Z0JBQ0Qsb0ZBQW9G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R0FBRyxPQUFPLENBQUM7SUFFWiw2Q0FBNkM7SUFDN0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7UUFDcEMsT0FBTztRQUNQLGFBQWE7UUFDYixVQUFVO1FBQ1Ysc0JBQXNCO1FBQ3RCLFdBQVc7UUFDWCxXQUFXO1FBQ1gsWUFBWTtRQUNaLGFBQWE7UUFDYixjQUFjO1FBQ2QsaUJBQWlCO0tBQ2xCLENBQUMsQ0FBQztJQUVILE9BQU8sZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGhpZGRlblxuICovXG5cbi8qKlxuICovXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJy4uL2tleWNoYWluJztcbmltcG9ydCB7IEVuY3J5cHRGbiwgRW5jcnlwdEZuQXN5bmMsIEVuY3J5cHRpb25WZXJzaW9uIH0gZnJvbSAnLi4vLi4vYXBpJztcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcXVlc3Rpb25zIHRoYXQgd2lsbCBhcHBlYXIgb24gdGhlIHNlY29uZCBwYWdlIG9mIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gY29pbiBuYW1lIG9mIHRoZSBjb2luXG4gKi9cbmNvbnN0IGdlbmVyYXRlUXVlc3Rpb25zID0gKGNvaW46IHN0cmluZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlzIHRoZSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIGBUaGUgS2V5Q2FyZCBjb250YWlucyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUgJHtjb2lufSBgLFxuICAgICAgICAnZnJvbSB5b3VyIHdhbGxldCBpbiBzZXZlcmFsIHNpdHVhdGlvbnMuIEVhY2ggQml0R28gd2FsbGV0JyArICcgaGFzIGl0cyBvd24sIHVuaXF1ZSBLZXlDYXJkLiAnLFxuICAgICAgICAnSWYgeW91IGhhdmUgY3JlYXRlZCBtdWx0aXBsZSB3YWxsZXRzLCB5b3Ugc2hvdWxkIHJldGFpbiB0aGUgS2V5Q2FyZCBmb3IgZWFjaCBvZiB0aGVtLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICAnWW91IHNob3VsZCBwcmludCB0aGUgS2V5Q2FyZCBhbmQvb3Igc2F2ZSB0aGUgUERGIHRvIGFuIG9mZmxpbmUgc3RvcmFnZSBkZXZpY2UuIFRoZSBwcmludC1vdXQgJyxcbiAgICAgICAgXCJvciBVU0Igc3RpY2sgc2hvdWxkIGJlIGtlcHQgaW4gYSBzYWZlIHBsYWNlLCBzdWNoIGFzIGEgYmFuayB2YXVsdCBvciBob21lIHNhZmUuIEl0J3MgYSBnb29kIGlkZWEgXCIsXG4gICAgICAgICd0byBrZWVwIGEgc2Vjb25kIGNvcHkgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uJyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiSW1wb3J0YW50OiBJZiB5b3UgaGF2ZW4ndCBwcm92aWRlZCBhbiBleHRlcm5hbCBiYWNrdXAga2V5LCB0aGVuIHRoZSBvcmlnaW5hbCBQREYgc2hvdWxkIGJlIFwiLFxuICAgICAgICAnZGVsZXRlZCBmcm9tIGFueSBtYWNoaW5lIHdoZXJlIHRoZSB3YWxsZXQgd2lsbCBiZSByZWd1bGFybHkgYWNjZXNzZWQgdG8gcHJldmVudCBtYWx3YXJlIGZyb20gJyxcbiAgICAgICAgJ2NhcHR1cmluZyBib3RoIHRoZSBLZXlDYXJkIGFuZCB5b3VyIHdhbGxldCBwYXNzY29kZS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IHNob3VsZCBJIGRvIGlmIEkgbG9zZSBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICBgSWYgeW91IGhhdmUgbG9zdCBvciBkYW1hZ2VkIGFsbCBjb3BpZXMgb2YgeW91ciBLZXlDYXJkLCB5b3VyICR7Y29pbn0gaXMgc3RpbGwgc2FmZSwgYnV0IHRoaXMgYCxcbiAgICAgICAgJ3dhbGxldCBzaG91bGQgYmUgY29uc2lkZXJlZCBhdCByaXNrIGZvciBsb3NzLiBBcyBzb29uIGFzIGlzIGNvbnZlbmllbnQsIHlvdSBzaG91bGQgdXNlIEJpdEdvICcsXG4gICAgICAgICd0byBlbXB0eSB0aGUgd2FsbGV0IGludG8gYSBuZXcgd2FsbGV0JyxcbiAgICAgICAgJywgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIHNvbWVvbmUgc2VlcyBteSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIFwiRG9uJ3QgcGFuaWMhIEFsbCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gb24gdGhlIEtleUNhcmQgaXMgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZSwgb3Igd2l0aCBhXCIsXG4gICAgICAgICdrZXkgd2hpY2ggb25seSBCaXRHbyBoYXMuIEJ1dCwgaW4gZ2VuZXJhbCwgeW91IHNob3VsZCBtYWtlIGJlc3QgZWZmb3J0cyB0byBrZWVwIHlvdXIgJyxcbiAgICAgICAgJ0tleUNhcmQgcHJpdmF0ZS4gSWYgeW91ciBLZXlDYXJkIGRvZXMgZ2V0IGV4cG9zZWQgb3IgY29waWVkIGluIGEgd2F5IHRoYXQgbWFrZXMgeW91ICcsXG4gICAgICAgICd1bmNvbWZvcnRhYmxlLCB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIGVtcHR5IHRoZSBjb3JyZXNwb25kaW5nIHdhbGxldCBpbnRvIGFub3RoZXIgJyxcbiAgICAgICAgJ3dhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgaWYgSSBmb3JnZXQgb3IgbG9zZSBteSB3YWxsZXQgcGFzc3dvcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ0JpdEdvIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIGluIFFSIENvZGUgRCB0byBoZWxwIHlvdSByZWNvdmVyIGFjY2VzcyB0byB5b3VyIHdhbGxldC4gJyxcbiAgICAgICAgJ1dpdGhvdXQgdGhlIEtleUNhcmQsIEJpdEdvIGlzIG5vdCBhYmxlIHRvIHJlY292ZXIgZnVuZHMgZnJvbSBhIHdhbGxldCB3aXRoIGEgbG9zdCBwYXNzd29yZC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIEJpdEdvIGJlY29tZXMgaW5hY2Nlc3NpYmxlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Q/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ1lvdXIgS2V5Q2FyZCBhbmQgd2FsbGV0IHBhc3Njb2RlIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQml0R2/igJlzIHB1Ymxpc2hlZCBvcGVuICcsXG4gICAgICAgIGBzb3VyY2UgdG9vbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2JpdGdvIHRvIHJlY292ZXIgeW91ciAke2NvaW59LiBOb3RlOiBZb3Ugc2hvdWxkIG5ldmVyIGVudGVyIGAsXG4gICAgICAgICdpbmZvcm1hdGlvbiBmcm9tIHlvdXIgS2V5Q2FyZCBpbnRvIHRvb2xzIG90aGVyIHRoYW4gdGhlIHRvb2xzIEJpdEdvIGhhcyBwdWJsaXNoZWQsIG9yIHlvdXIgJyxcbiAgICAgICAgJ2Z1bmRzIG1heSBiZSBhdCByaXNrIGZvciB0aGVmdC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdTaG91bGQgSSB3cml0ZSBteSB3YWxsZXQgcGFzc3dvcmQgb24gbXkgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICAnTm8hIEJpdEdv4oCZcyBtdWx0aS1zaWduYXR1cmUgYXBwcm9hY2ggdG8gc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGVyZSBub3QgYmVpbmcgYSBzaW5nbGUgcG9pbnQgJyxcbiAgICAgICAgJ29mIGF0dGFjay4gQnV0IGlmIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGlzIG9uIHlvdXIgS2V5Q2FyZCwgdGhlbiBhbnlvbmUgd2hvIGdhaW5zIGFjY2VzcyB0byAnLFxuICAgICAgICBgeW91ciBLZXlDYXJkIHdpbGwgYmUgYWJsZSB0byBzdGVhbCB5b3VyICR7Y29pbn0uIFdlIHJlY29tbWVuZCBrZWVwaW5nIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGAsXG4gICAgICAgICdzYWZlIGluIGEgc2VjdXJlIHBhc3N3b3JkIG1hbmFnZXIgc3VjaCBhcyBMYXN0UGFzcywgMVBhc3N3b3JkIG9yIEtlZVBhc3MuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn07XG5cbmludGVyZmFjZSBHZXRLZXlEYXRhT3B0aW9ucyB7XG4gIGVuY3J5cHQ6IEVuY3J5cHRGbjtcbiAgdXNlcktleWNoYWluOiBLZXljaGFpbjtcbiAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW47XG4gIGJhY2t1cEtleWNoYWluOiBLZXljaGFpbjtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xuICBwYXNzcGhyYXNlPzogc3RyaW5nO1xuICBwYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICB3YWxsZXRLZXlJRD86IHN0cmluZztcbiAgYmFja3VwS2V5SUQ/OiBzdHJpbmc7XG59XG5cbnR5cGUgR2V0S2V5RGF0YUFzeW5jT3B0aW9ucyA9IE9taXQ8R2V0S2V5RGF0YU9wdGlvbnMsICdlbmNyeXB0Jz4gJiB7XG4gIGVuY3J5cHQ6IEVuY3J5cHRGbkFzeW5jO1xuICBlbmNyeXB0aW9uVmVyc2lvbj86IEVuY3J5cHRpb25WZXJzaW9uO1xufTtcblxuaW50ZXJmYWNlIEJ1aWxkS2V5Y2FyZFFyRGF0YU9wdGlvbnMge1xuICB1c2VyS2V5Y2hhaW46IEtleWNoYWluO1xuICBiaXRnb0tleWNoYWluOiBLZXljaGFpbjtcbiAgYmFja3VwS2V5Y2hhaW46IEtleWNoYWluO1xuICBjb2luU2hvcnROYW1lOiBzdHJpbmc7XG4gIHdhbGxldEtleUlEPzogc3RyaW5nO1xuICBiYWNrdXBLZXlJRD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCdWlsZCBRUiBjb2RlIHBheWxvYWQgZm9yIGVhY2gga2V5Y2FyZCBib3guIERvZXMgbm90IHBlcmZvcm0gZW5jcnlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gYnVpbGRLZXljYXJkUXJEYXRhKG9wdGlvbnM6IEJ1aWxkS2V5Y2FyZFFyRGF0YU9wdGlvbnMsIGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBhbnkge1xuICBjb25zdCB7IHVzZXJLZXljaGFpbiwgYml0Z29LZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGNvaW5TaG9ydE5hbWUsIHdhbGxldEtleUlELCBiYWNrdXBLZXlJRCB9ID0gb3B0aW9ucztcblxuICAvLyBQREYgUVIgQ29kZSBkYXRhXG4gIGNvbnN0IHFyRGF0YTogYW55ID0ge1xuICAgIHVzZXI6IHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgeW91ciBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZS4nLFxuICAgICAgZGF0YTogdXNlcktleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9LFxuICAgIGJhY2t1cDoge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHlvdXIgYmFja3VwIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfSxcbiAgICBiaXRnbzoge1xuICAgICAgdGl0bGU6ICdDOiBCaXRHbyBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgaGVsZCBieSBCaXRHby4nLFxuICAgICAgZGF0YTogYml0Z29LZXljaGFpbi5wdWIsXG4gICAgfSxcbiAgICBwYXNzY29kZToge1xuICAgICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgV2FsbGV0IFBhc3N3b3JkJyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSB3YWxsZXQgcGFzc3dvcmQsIGVuY3J5cHRlZCBjbGllbnQtc2lkZSAnICsgJ3dpdGggYSBrZXkgaGVsZCBieVxcclxcbkJpdEdvLicsXG4gICAgICBkYXRhOiBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSxcbiAgICB9LFxuICB9O1xuXG4gIGlmICh3YWxsZXRLZXlJRCkge1xuICAgIHFyRGF0YS51c2VyLmtleUlEID0gd2FsbGV0S2V5SUQ7XG4gIH1cblxuICBpZiAoYmFja3VwS2V5SUQpIHtcbiAgICBxckRhdGEuYmFja3VwLmtleUlEID0gYmFja3VwS2V5SUQ7XG4gIH1cblxuICBpZiAoaXNVbmRlZmluZWQodXNlcktleWNoYWluLmVuY3J5cHRlZFBydikpIHtcbiAgICAvLyBVc2VyIHByb3ZpZGVkIHRoZWlyIG93biBrZXkgLSB0aGlzIGlzIGEgY29sZCB3YWxsZXRcbiAgICBxckRhdGEudXNlci50aXRsZSA9ICdBOiBQcm92aWRlZCBVc2VyIEtleSc7XG4gICAgcXJEYXRhLnVzZXIuZGVzYyA9ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJztcbiAgICBxckRhdGEudXNlci5kYXRhID0gdXNlcktleWNoYWluLnB1YjtcblxuICAgIC8vIFRoZSB1c2VyIHByb3ZpZGVkIHRoZWlyIG93biBwdWJsaWMga2V5LCB3ZSBjYW4gcmVtb3ZlIGJveCBEXG4gICAgZGVsZXRlIHFyRGF0YS5wYXNzY29kZTtcbiAgfSBlbHNlIGlmIChpc1VuZGVmaW5lZChlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSkpIHtcbiAgICBkZWxldGUgcXJEYXRhLnBhc3Njb2RlO1xuICB9XG5cbiAgaWYgKCFpc1VuZGVmaW5lZChiYWNrdXBLZXljaGFpbi5wcm92aWRlcikpIHtcbiAgICBjb25zdCBiYWNrdXBLZXlQcm92aWRlck5hbWUgPSBiYWNrdXBLZXljaGFpbi5wcm92aWRlcjtcbiAgICAvLyBCYWNrdXAga2V5IGhlbGQgd2l0aCBLUlNcbiAgICBxckRhdGEuYmFja3VwID0ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6XG4gICAgICAgIGBUaGlzIGlzIHRoZSBwdWJsaWMga2V5IGhlbGQgYXQgJHtiYWNrdXBLZXlQcm92aWRlck5hbWV9YCArXG4gICAgICAgIGAsIGFuICR7Y29pblNob3J0TmFtZX0gcmVjb3Zlcnkgc2VydmljZS4gSWYgeW91IGxvc2VcXHJcXG55b3VyIGtleSwgJHtiYWNrdXBLZXlQcm92aWRlck5hbWV9YCArXG4gICAgICAgICcgd2lsbCBiZSBhYmxlIHRvIHNpZ24gdHJhbnNhY3Rpb25zIHRvIHJlY292ZXIgZnVuZHMuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLnB1YixcbiAgICB9O1xuICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydikpIHtcbiAgICAvLyBVc2VyIHN1cHBsaWVkIHRoZSB4cHViXG4gICAgcXJEYXRhLmJhY2t1cCA9IHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB0aGUgcHVibGljIHBvcnRpb24gb2YgeW91ciBiYWNrdXAga2V5LCB3aGljaCB5b3UgcHJvdmlkZWQuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLnB1YixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHFyRGF0YTtcbn1cblxuLyoqXG4gKiBUT0RPOiBEZXByZWNhdGUgdGhpcyBmdW5jdGlvbiBpbiBmYXZvciBvZiBnZXRLZXlEYXRhQXN5bmMgb25jZSB2MiBlbmNyeXB0aW9uIGlzIGRlZmF1bHQuXG4gKiBDb2xsZWN0IGFsbCBkYXRhIHdoaWNoIHdpbGwgZ28gb250byB0aGUga2V5Y2FyZFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gZ2V0S2V5RGF0YShvcHRpb25zOiBHZXRLZXlEYXRhT3B0aW9ucyk6IGFueSB7XG4gIGNvbnN0IHsgZW5jcnlwdCwgYmFja3VwS2V5Y2hhaW4sIHBhc3NwaHJhc2UsIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIC4uLnFyT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICAvLyBXaGVuIHVzaW5nIGp1c3QgJ2dlbmVyYXRlV2FsbGV0Jywgd2UgZ2V0IGJhY2sgYW4gdW5lbmNyeXB0ZWQgcHJ2IGZvciB0aGUgYmFja3VwIGtleWNoYWluXG4gIC8vIElmIHRoZSB1c2VyIHBhc3NlcyBpbiB0aGVpciBwYXNzcGhyYXNlLCB3ZSBjYW4gZW5jcnlwdCBpdFxuICBpZiAoYmFja3VwS2V5Y2hhaW4ucHJ2ICYmIHBhc3NwaHJhc2UpIHtcbiAgICBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYgPSBlbmNyeXB0KHtcbiAgICAgIGlucHV0OiBiYWNrdXBLZXljaGFpbi5wcnYsXG4gICAgICBwYXNzd29yZDogcGFzc3BocmFzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIElmIHdlIGhhdmUgdGhlIHBhc3Njb2RlIGVuY3J5cHRpb24gY29kZSwgY3JlYXRlIGEgYm94IEQgd2l0aCB0aGUgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGVcbiAgbGV0IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBidWlsZEtleWNhcmRRckRhdGEoeyAuLi5xck9wdGlvbnMsIGJhY2t1cEtleWNoYWluIH0sIGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKTtcbn1cblxuLyoqXG4gKiBBc3luYyB2ZXJzaW9uIG9mIGdldEtleURhdGEgd2l0aCBzdXBwb3J0IGZvciB2MiAoQXJnb24yaWQpIGVuY3J5cHRpb24uXG4gKiBTZXF1ZW50aWFsIGVuY3J5cHQ6IGJhY2t1cCBrZXkgZmlyc3QsIHRoZW4gcGFzc2NvZGUgKG1hdGNoZXMgb3JpZ2luYWwgZ2V0S2V5RGF0YUFzeW5jKS5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEtleURhdGFBc3luYyhvcHRpb25zOiBHZXRLZXlEYXRhQXN5bmNPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgY29uc3QgeyBlbmNyeXB0LCBiYWNrdXBLZXljaGFpbiwgcGFzc3BocmFzZSwgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSwgZW5jcnlwdGlvblZlcnNpb24sIC4uLnFyT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICBpZiAoYmFja3VwS2V5Y2hhaW4ucHJ2ICYmIHBhc3NwaHJhc2UpIHtcbiAgICBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYgPSBhd2FpdCBlbmNyeXB0KHtcbiAgICAgIGlucHV0OiBiYWNrdXBLZXljaGFpbi5wcnYsXG4gICAgICBwYXNzd29yZDogcGFzc3BocmFzZSxcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uLFxuICAgIH0pO1xuICB9XG5cbiAgbGV0IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGF3YWl0IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkS2V5Y2FyZFFyRGF0YSh7IC4uLnFyT3B0aW9ucywgYmFja3VwS2V5Y2hhaW4gfSwgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUpO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRMYXlvdXRPcHRpb25zIHtcbiAganNQREY6IGFueTtcbiAgUVJDb2RlOiBhbnk7XG4gIGFjdGl2YXRpb25Db2RlOiBzdHJpbmc7XG4gIHdhbGxldExhYmVsOiBzdHJpbmc7XG4gIGNvaW5OYW1lOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEcmF3S2V5Y2FyZE9wdGlvbnMgZXh0ZW5kcyBHZXRLZXlEYXRhT3B0aW9ucywgRHJhd0tleWNhcmRMYXlvdXRPcHRpb25zIHtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEcmF3S2V5Y2FyZEFzeW5jT3B0aW9ucyA9IE9taXQ8RHJhd0tleWNhcmRPcHRpb25zLCAnZW5jcnlwdCc+ICYge1xuICBlbmNyeXB0OiBFbmNyeXB0Rm5Bc3luYztcbiAgZW5jcnlwdGlvblZlcnNpb24/OiBFbmNyeXB0aW9uVmVyc2lvbjtcbn07XG5cbi8qKlxuICogUmVuZGVyIGtleWNhcmQgUERGIHBhZ2VzIGZyb20gcHJlLWJ1aWx0IFFSIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlcktleWNhcmRQZGYob3B0aW9uczogRHJhd0tleWNhcmRMYXlvdXRPcHRpb25zLCBrZXlEYXRhOiBhbnkpOiBhbnkge1xuICBjb25zdCB7IGpzUERGLCBRUkNvZGUsIGFjdGl2YXRpb25Db2RlLCB3YWxsZXRMYWJlbCwgY29pbk5hbWUgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgbWFyZ2luID0gMzA7XG5cbiAgY29uc3QgZm9udCA9IHtcbiAgICBoZWFkZXI6IDI0LFxuICAgIHN1YmhlYWRlcjogMTUsXG4gICAgYm9keTogMTIsXG4gIH07XG5cbiAgY29uc3QgY29sb3IgPSB7XG4gICAgYmxhY2s6ICcjMDAwMDAwJyxcbiAgICBkYXJrZ3JheTogJyM0YzRjNGMnLFxuICAgIGdyYXk6ICcjOWI5YjliJyxcbiAgICByZWQ6ICcjZTIxZTFlJyxcbiAgfTtcblxuICAvLyBkb2N1bWVudCBkZXRhaWxzXG4gIGNvbnN0IHdpZHRoID0gOC41ICogNzI7XG4gIGxldCB5ID0gMDtcblxuICAvLyBIZWxwZXJzIGZvciBkYXRhIGZvcm1hdHRpbmcgLyBwb3NpdGlvbmluZyBvbiB0aGUgcGFwZXJcbiAgY29uc3QgbGVmdCA9ICh4KSA9PiBtYXJnaW4gKyB4O1xuICBjb25zdCBtb3ZlRG93biA9ICh5RGVsdGEpID0+IHtcbiAgICB5ICs9IHlEZWx0YTtcbiAgfTtcblxuICBjb25zdCBkb2MgPSBuZXcganNQREYoJ3BvcnRyYWl0JywgJ3B0JywgJ2xldHRlcicpO1xuICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJyk7XG5cbiAgLy8gUERGIEhlYWRlciBBcmVhIC0gaW5jbHVkZXMgdGhlIGxvZ28gYW5kIGNvbXBhbnkgbmFtZVxuICAvLyBUaGlzIGlzIGRhdGEgZm9yIHRoZSBCaXRHbyBsb2dvIGluIHRoZSB0b3AgbGVmdCBvZiB0aGUgUERGXG4gIG1vdmVEb3duKDMwKTtcblxuICAvLyBXZSBkb24ndCBjdXJyZW50bHkgYWRkIGFuIGltYWdlLCBzaW5jZSB0aGF0IHBhdGggaXMgZGVwZW5kZW50IG9uIEJpdEdvIGZyb250ZW5kXG4gIC8vIGRvYy5hZGRJbWFnZShjb2luVXRpbGl0eS5nZXRTZWxlY3RlZENvaW5PYmooKS5rZXlDYXJkSW1hZ2UsIGxlZnQoMCksIHkgKyAxMCk7XG5cbiAgLy8gQWN0aXZhdGlvbiBDb2RlXG4gIG1vdmVEb3duKDgpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZ3JheSk7XG4gIGRvYy50ZXh0KCdBY3RpdmF0aW9uIENvZGUnLCBsZWZ0KDQ2MCksIHkpO1xuXG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgbW92ZURvd24oMjUpO1xuICBkb2MudGV4dCgnWW91ciBCaXRHbyBLZXlDYXJkJywgbGVmdCgxNTApLCB5KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuZ3JheSk7XG4gIGRvYy50ZXh0KGFjdGl2YXRpb25Db2RlLnRvU3RyaW5nKCksIGxlZnQoNDYwKSwgeSk7XG5cbiAgLy8gU3ViaGVhZGVyXG4gIC8vIHRpdGxlc1xuICBtb3ZlRG93bihtYXJnaW4pO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZ3JheSk7XG4gIGRvYy50ZXh0KFxuICAgIGBDcmVhdGVkIG9uICR7bmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKX0gYnkgJHt3aW5kb3cubG9jYXRpb24uaG9zdG5hbWV9IGZvciB3YWxsZXQgbmFtZWQgJHt3YWxsZXRMYWJlbH1gLFxuICAgIGxlZnQoMCksXG4gICAgeVxuICApO1xuICAvLyBjb3B5XG4gIG1vdmVEb3duKDI1KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICBkb2MudGV4dCh3YWxsZXRMYWJlbCwgbGVmdCgwKSwgeSk7XG4gIC8vIFJlZCBCYXJcbiAgbW92ZURvd24oMjApO1xuICBkb2Muc2V0RmlsbENvbG9yKDI1NSwgMjMwLCAyMzApO1xuICBkb2MucmVjdChsZWZ0KDApLCB5LCB3aWR0aCAtIDIgKiBtYXJnaW4sIDMyLCAnRicpO1xuXG4gIC8vIHdhcm5pbmcgbWVzc2FnZVxuICBtb3ZlRG93bigyMCk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5yZWQpO1xuICBkb2MudGV4dCgnUHJpbnQgdGhpcyBkb2N1bWVudCwgb3Iga2VlcCBpdCBzZWN1cmVseSBvZmZsaW5lLiBTZWUgc2Vjb25kIHBhZ2UgZm9yIEZBUS4nLCBsZWZ0KDc1KSwgeSk7XG5cbiAgbW92ZURvd24oMzUpO1xuICBjb25zdCBxclNpemUgPSAxMzA7XG5cbiAgLy8gRHJhdyBlYWNoIEJveCB3aXRoIFFSIGNvZGUgYW5kIGRlc2NyaXB0aW9uXG4gIE9iamVjdC5rZXlzKGtleURhdGEpLmZvckVhY2goZnVuY3Rpb24gKGtleVR5cGUpIHtcbiAgICBjb25zdCBrZXkgPSBrZXlEYXRhW2tleVR5cGVdO1xuICAgIGNvbnN0IHRvcFkgPSB5O1xuXG4gICAgLy8gRG9uJ3QgaW5kZW50IGlmIHdlJ3JlIG5vdCBwcm9kdWNpbmcgUVIgY29kZXNcbiAgICBjb25zdCB0ZXh0TGVmdCA9ICEhUVJDb2RlID8gbGVmdChxclNpemUgKyAxNSkgOiBsZWZ0KDE1KTtcblxuICAgIC8vIERyYXcgYSBRUiBjb2RlIGlmIGxpYnJhcnkgaXMgYXZhaWxhYmxlXG4gICAgaWYgKFFSQ29kZSkge1xuICAgICAgY29uc3QgZGF0YVVSTCA9IG5ldyBRUkNvZGUoeyB2YWx1ZToga2V5LmRhdGEsIHNpemU6IHFyU2l6ZSB9KS50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcbiAgICAgIGRvYy5hZGRJbWFnZShkYXRhVVJMLCBsZWZ0KDApLCB5LCBxclNpemUsIHFyU2l6ZSk7XG4gICAgfVxuXG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIG1vdmVEb3duKDEwKTtcbiAgICBkb2MudGV4dChrZXkudGl0bGUsIHRleHRMZWZ0LCB5KTtcbiAgICBtb3ZlRG93bigxNSk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmRhcmtncmF5KTtcbiAgICBkb2MudGV4dChrZXkuZGVzYywgdGV4dExlZnQsIHkpO1xuICAgIG1vdmVEb3duKDMwKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5IC0gMik7XG4gICAgZG9jLnRleHQoJ0RhdGE6JywgdGV4dExlZnQsIHkpO1xuICAgIG1vdmVEb3duKDE1KTtcbiAgICBjb25zdCBpbm5lcldpZHRoID0gNzIgKiA4LjUgLSB0ZXh0TGVmdCAtIDMwO1xuICAgIGRvYy5zZXRGb250KCdjb3VyaWVyJykuc2V0Rm9udFNpemUoOSkuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICBjb25zdCBsaW5lcyA9IGRvYy5zcGxpdFRleHRUb1NpemUoa2V5LmRhdGEsIGlubmVyV2lkdGgpO1xuICAgIGRvYy50ZXh0KGxpbmVzLCB0ZXh0TGVmdCwgeSk7XG5cbiAgICAvLyBBZGQga2V5IElEIChkZXJpdmF0aW9uIHN0cmluZykgaWYgaXQgZXhpc3RzXG4gICAgaWYgKGtleS5rZXlJRCkge1xuICAgICAgY29uc3QgdGV4dCA9ICdLZXkgSWQ6ICcgKyBrZXkua2V5SUQ7XG4gICAgICAvLyBHcmF5IGJhclxuICAgICAgbW92ZURvd24oNDUpO1xuICAgICAgZG9jLnNldEZpbGxDb2xvcigyNDcsIDI0OSwgMjQ5KTsgLy8gR3JheSBiYWNrZ3JvdW5kXG4gICAgICBkb2Muc2V0RHJhd0NvbG9yKDAsIDAsIDApOyAvLyBCb3JkZXJcbiAgICAgIGRvYy5yZWN0KHRleHRMZWZ0LCB5LCB3aWR0aCwgMTUsICdGRCcpO1xuXG4gICAgICBkb2MudGV4dCh0ZXh0LCB0ZXh0TGVmdCArIDUsIHkgKyAxMCk7XG4gICAgfVxuXG4gICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScpO1xuICAgIC8vIE1vdmUgZG93biB0aGUgc2l6ZSBvZiB0aGUgUVIgY29kZSBtaW51cyBhY2N1bXVsYXRlZCBoZWlnaHQgb24gdGhlIHJpZ2h0IHNpZGUsIHBsdXMgYnVmZmVyXG4gICAgbW92ZURvd24ocXJTaXplIC0gKHkgLSB0b3BZKSArIDE1KTtcbiAgfSk7XG5cbiAgLy8gQWRkIGEgbmV3IHBhZ2UgKFEgKyBBIHBhZ2UpXG4gIGRvYy5hZGRQYWdlKCk7XG5cbiAgLy8gMm5kIHBhZ2UgdGl0bGVcbiAgeSA9IDA7XG4gIG1vdmVEb3duKDU1KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICBkb2MudGV4dCgnQml0R28gS2V5Q2FyZCBGQVEnLCBsZWZ0KDApLCB5KTtcblxuICBjb25zdCBxdWVzdGlvbnMgPSBnZW5lcmF0ZVF1ZXN0aW9ucyhjb2luTmFtZSk7XG5cbiAgLy8gRHJhdyB0aGUgUSArIEEgZGF0YSBvbiB0aGUgc2Vjb25kIHBhZ2VcbiAgbW92ZURvd24oMzApO1xuICBxdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAocSkge1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICBkb2MudGV4dChxLnEsIGxlZnQoMCksIHkpO1xuICAgIG1vdmVEb3duKDIwKTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZGFya2dyYXkpO1xuICAgIHEuYS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICBkb2MudGV4dChsaW5lLCBsZWZ0KDApLCB5KTtcbiAgICAgIG1vdmVEb3duKGZvbnQuYm9keSArIDMpO1xuICAgIH0pO1xuICAgIG1vdmVEb3duKDIyKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRvYztcbn1cblxuLyoqXG4gKiBUT0RPOiBEZXByZWNhdGUgdGhpcyBmdW5jdGlvbiBpbiBmYXZvciBvZiBkcmF3S2V5Y2FyZEFzeW5jIG9uY2UgdjIgZW5jcnlwdGlvbiBpcyBkZWZhdWx0LlxuICogRHJhdyBhIGtleWNhcmQgaW50byBhIG5ldyBwZGYgZG9jdW1lbnQgb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZHJhd0tleWNhcmQob3B0aW9uczogRHJhd0tleWNhcmRPcHRpb25zKTogYW55IHtcbiAgY29uc3Qge1xuICAgIGVuY3J5cHQsXG4gICAgcGFzc3BocmFzZSxcbiAgICBwYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgIHdhbGxldEtleUlELFxuICAgIGJhY2t1cEtleUlELFxuICAgIHVzZXJLZXljaGFpbixcbiAgICBiaXRnb0tleWNoYWluLFxuICAgIGJhY2t1cEtleWNoYWluLFxuICAgIGNvaW5TaG9ydE5hbWUsXG4gICAganNQREYsXG4gICAgUVJDb2RlLFxuICAgIGFjdGl2YXRpb25Db2RlLFxuICAgIHdhbGxldExhYmVsLFxuICAgIGNvaW5OYW1lLFxuICB9ID0gb3B0aW9ucztcblxuICBjb25zdCBrZXlEYXRhID0gZ2V0S2V5RGF0YSh7XG4gICAgZW5jcnlwdCxcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgfSk7XG5cbiAgcmV0dXJuIHJlbmRlcktleWNhcmRQZGYoeyBqc1BERiwgUVJDb2RlLCBhY3RpdmF0aW9uQ29kZSwgd2FsbGV0TGFiZWwsIGNvaW5OYW1lIH0sIGtleURhdGEpO1xufVxuXG4vKipcbiAqIEFzeW5jIHZlcnNpb24gb2YgZHJhd0tleWNhcmQgd2l0aCBzdXBwb3J0IGZvciB2MiAoQXJnb24yaWQpIGVuY3J5cHRpb24uXG4gKiBVc2UgdGhpcyB3aGVuIHRoZSBlbmNyeXB0IGNhbGxiYWNrIG1heSByZXR1cm4gYSBQcm9taXNlIChlLmcuIGVuY3J5cHRBc3luYykuXG4gKlxuICogRHJhdyBhIGtleWNhcmQgaW50byBhIG5ldyBwZGYgZG9jdW1lbnQgb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZHJhd0tleWNhcmRBc3luYyhvcHRpb25zOiBEcmF3S2V5Y2FyZEFzeW5jT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gIGNvbnN0IHtcbiAgICBlbmNyeXB0LFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIGpzUERGLFxuICAgIFFSQ29kZSxcbiAgICBhY3RpdmF0aW9uQ29kZSxcbiAgICB3YWxsZXRMYWJlbCxcbiAgICBjb2luTmFtZSxcbiAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gR2V0IHRoZSBkYXRhIGZvciB0aGUgZmlyc3QgcGFnZSAocXIgY29kZXMpXG4gIGNvbnN0IGtleURhdGEgPSBhd2FpdCBnZXRLZXlEYXRhQXN5bmMoe1xuICAgIGVuY3J5cHQsXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgZW5jcnlwdGlvblZlcnNpb24sXG4gIH0pO1xuXG4gIHJldHVybiByZW5kZXJLZXljYXJkUGRmKHsganNQREYsIFFSQ29kZSwgYWN0aXZhdGlvbkNvZGUsIHdhbGxldExhYmVsLCBjb2luTmFtZSB9LCBrZXlEYXRhKTtcbn1cbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { BitGoBase } from '../bitgoBase';
2
+ import { OptionalKeychainEncryptedKey } from './iKeychains';
3
+ /**
4
+ * Decrypts the private key of a keychain (sync, v1 only).
5
+ * This method will try the password against the traditional encryptedPrv,
6
+ * and any webauthn device encryptedPrvs.
7
+ *
8
+ * @param bitgo
9
+ * @param keychain
10
+ * @param password
11
+ */
12
+ export declare function decryptKeychainPrivateKey(bitgo: BitGoBase, keychain: OptionalKeychainEncryptedKey, password: string): string | undefined;
13
+ /**
14
+ * Decrypts the private key of a keychain (async, supports v1 and v2 envelopes).
15
+ * This method will try the password against the traditional encryptedPrv,
16
+ * and any webauthn device encryptedPrvs.
17
+ * Auto-detects v1 (SJCL) and v2 (Argon2id) envelopes.
18
+ *
19
+ * @param bitgo
20
+ * @param keychain
21
+ * @param password
22
+ */
23
+ export declare function decryptKeychainPrivateKeyAsync(bitgo: BitGoBase, keychain: OptionalKeychainEncryptedKey, password: string): Promise<string | undefined>;
24
+ //# sourceMappingURL=decryptKeychain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decryptKeychain.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/decryptKeychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAyB5D;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,4BAA4B,EACtC,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CASpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,4BAA4B,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS7B"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decryptKeychainPrivateKey = decryptKeychainPrivateKey;
4
+ exports.decryptKeychainPrivateKeyAsync = decryptKeychainPrivateKeyAsync;
5
+ const utils_1 = require("../utils");
6
+ function maybeDecrypt(bitgo, input, password) {
7
+ try {
8
+ return bitgo.decrypt({
9
+ input,
10
+ password,
11
+ });
12
+ }
13
+ catch (_e) {
14
+ return undefined;
15
+ }
16
+ }
17
+ async function maybeDecryptAsync(bitgo, input, password) {
18
+ try {
19
+ return await bitgo.decryptAsync({
20
+ input,
21
+ password,
22
+ });
23
+ }
24
+ catch (_e) {
25
+ return undefined;
26
+ }
27
+ }
28
+ /**
29
+ * Decrypts the private key of a keychain (sync, v1 only).
30
+ * This method will try the password against the traditional encryptedPrv,
31
+ * and any webauthn device encryptedPrvs.
32
+ *
33
+ * @param bitgo
34
+ * @param keychain
35
+ * @param password
36
+ */
37
+ function decryptKeychainPrivateKey(bitgo, keychain, password) {
38
+ const prvs = [keychain.encryptedPrv, ...(keychain.webauthnDevices ?? []).map((d) => d.encryptedPrv)].filter(utils_1.notEmpty);
39
+ for (const prv of prvs) {
40
+ const decrypted = maybeDecrypt(bitgo, prv, password);
41
+ if (decrypted) {
42
+ return decrypted;
43
+ }
44
+ }
45
+ return undefined;
46
+ }
47
+ /**
48
+ * Decrypts the private key of a keychain (async, supports v1 and v2 envelopes).
49
+ * This method will try the password against the traditional encryptedPrv,
50
+ * and any webauthn device encryptedPrvs.
51
+ * Auto-detects v1 (SJCL) and v2 (Argon2id) envelopes.
52
+ *
53
+ * @param bitgo
54
+ * @param keychain
55
+ * @param password
56
+ */
57
+ async function decryptKeychainPrivateKeyAsync(bitgo, keychain, password) {
58
+ const prvs = [keychain.encryptedPrv, ...(keychain.webauthnDevices ?? []).map((d) => d.encryptedPrv)].filter(utils_1.notEmpty);
59
+ for (const prv of prvs) {
60
+ const decrypted = await maybeDecryptAsync(bitgo, prv, password);
61
+ if (decrypted) {
62
+ return decrypted;
63
+ }
64
+ }
65
+ return undefined;
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdEtleWNoYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2tleWNoYWluL2RlY3J5cHRLZXljaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1DQSw4REFhQztBQVlELHdFQWFDO0FBdkVELG9DQUFvQztBQUVwQyxTQUFTLFlBQVksQ0FBQyxLQUFnQixFQUFFLEtBQWEsRUFBRSxRQUFnQjtJQUNyRSxJQUFJLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbkIsS0FBSztZQUNMLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNaLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLGlCQUFpQixDQUFDLEtBQWdCLEVBQUUsS0FBYSxFQUFFLFFBQWdCO0lBQ2hGLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzlCLEtBQUs7WUFDTCxRQUFRO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDWixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQ3ZDLEtBQWdCLEVBQ2hCLFFBQXNDLEVBQ3RDLFFBQWdCO0lBRWhCLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBUSxDQUFDLENBQUM7SUFDdEgsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0ksS0FBSyxVQUFVLDhCQUE4QixDQUNsRCxLQUFnQixFQUNoQixRQUFzQyxFQUN0QyxRQUFnQjtJQUVoQixNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQVEsQ0FBQyxDQUFDO0lBQ3RILEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgT3B0aW9uYWxLZXljaGFpbkVuY3J5cHRlZEtleSB9IGZyb20gJy4vaUtleWNoYWlucyc7XG5pbXBvcnQgeyBub3RFbXB0eSB9IGZyb20gJy4uL3V0aWxzJztcblxuZnVuY3Rpb24gbWF5YmVEZWNyeXB0KGJpdGdvOiBCaXRHb0Jhc2UsIGlucHV0OiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIHJldHVybiBiaXRnby5kZWNyeXB0KHtcbiAgICAgIGlucHV0LFxuICAgICAgcGFzc3dvcmQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBtYXliZURlY3J5cHRBc3luYyhiaXRnbzogQml0R29CYXNlLCBpbnB1dDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYml0Z28uZGVjcnlwdEFzeW5jKHtcbiAgICAgIGlucHV0LFxuICAgICAgcGFzc3dvcmQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIERlY3J5cHRzIHRoZSBwcml2YXRlIGtleSBvZiBhIGtleWNoYWluIChzeW5jLCB2MSBvbmx5KS5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRoZSBwYXNzd29yZCBhZ2FpbnN0IHRoZSB0cmFkaXRpb25hbCBlbmNyeXB0ZWRQcnYsXG4gKiBhbmQgYW55IHdlYmF1dGhuIGRldmljZSBlbmNyeXB0ZWRQcnZzLlxuICpcbiAqIEBwYXJhbSBiaXRnb1xuICogQHBhcmFtIGtleWNoYWluXG4gKiBAcGFyYW0gcGFzc3dvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRLZXljaGFpblByaXZhdGVLZXkoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIGtleWNoYWluOiBPcHRpb25hbEtleWNoYWluRW5jcnlwdGVkS2V5LFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBwcnZzID0gW2tleWNoYWluLmVuY3J5cHRlZFBydiwgLi4uKGtleWNoYWluLndlYmF1dGhuRGV2aWNlcyA/PyBbXSkubWFwKChkKSA9PiBkLmVuY3J5cHRlZFBydildLmZpbHRlcihub3RFbXB0eSk7XG4gIGZvciAoY29uc3QgcHJ2IG9mIHBydnMpIHtcbiAgICBjb25zdCBkZWNyeXB0ZWQgPSBtYXliZURlY3J5cHQoYml0Z28sIHBydiwgcGFzc3dvcmQpO1xuICAgIGlmIChkZWNyeXB0ZWQpIHtcbiAgICAgIHJldHVybiBkZWNyeXB0ZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGVjcnlwdHMgdGhlIHByaXZhdGUga2V5IG9mIGEga2V5Y2hhaW4gKGFzeW5jLCBzdXBwb3J0cyB2MSBhbmQgdjIgZW52ZWxvcGVzKS5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRoZSBwYXNzd29yZCBhZ2FpbnN0IHRoZSB0cmFkaXRpb25hbCBlbmNyeXB0ZWRQcnYsXG4gKiBhbmQgYW55IHdlYmF1dGhuIGRldmljZSBlbmNyeXB0ZWRQcnZzLlxuICogQXV0by1kZXRlY3RzIHYxIChTSkNMKSBhbmQgdjIgKEFyZ29uMmlkKSBlbnZlbG9wZXMuXG4gKlxuICogQHBhcmFtIGJpdGdvXG4gKiBAcGFyYW0ga2V5Y2hhaW5cbiAqIEBwYXJhbSBwYXNzd29yZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleUFzeW5jKFxuICBiaXRnbzogQml0R29CYXNlLFxuICBrZXljaGFpbjogT3B0aW9uYWxLZXljaGFpbkVuY3J5cHRlZEtleSxcbiAgcGFzc3dvcmQ6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgcHJ2cyA9IFtrZXljaGFpbi5lbmNyeXB0ZWRQcnYsIC4uLihrZXljaGFpbi53ZWJhdXRobkRldmljZXMgPz8gW10pLm1hcCgoZCkgPT4gZC5lbmNyeXB0ZWRQcnYpXS5maWx0ZXIobm90RW1wdHkpO1xuICBmb3IgKGNvbnN0IHBydiBvZiBwcnZzKSB7XG4gICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgbWF5YmVEZWNyeXB0QXN5bmMoYml0Z28sIHBydiwgcGFzc3dvcmQpO1xuICAgIGlmIChkZWNyeXB0ZWQpIHtcbiAgICAgIHJldHVybiBkZWNyeXB0ZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -1,25 +1,57 @@
1
- /// <reference types="node" />
2
- import { IRequestTracer } from '../../api';
3
- import { KeyPair, KeychainsTriplet } from '../baseCoin';
4
- import { BackupProvider, IWallet } from '../wallet';
1
+ import { EncryptionVersion, IRequestTracer } from '../../api';
2
+ import { KeychainsTriplet, KeyPair } from '../baseCoin';
3
+ import { BitgoPubKeyType } from '../utils/tss/baseTypes';
4
+ import { IWallet } from '../wallet';
5
5
  import { BitGoKeyFromOvcShares, OvcToBitGoJSON } from './ovcJsonCodec';
6
- export declare type KeyType = 'tss' | 'independent' | 'blsdkg';
7
- export declare type SourceType = 'bitgo' | 'backup' | 'user' | 'cold';
6
+ export type KeyType = 'tss' | 'independent' | 'blsdkg';
7
+ export interface WebauthnInfo {
8
+ prfSalt: string;
9
+ otpDeviceId: string;
10
+ encryptedPrv: string;
11
+ /** Required by POST /key to validate the PRF salt; not needed on the PUT /key/:id update path. */
12
+ enterpriseId?: string;
13
+ }
14
+ import type { WebauthnKeyEncryptionInfo } from '../wallet/iWallets';
15
+ export type { WebauthnKeyEncryptionInfo };
16
+ export type SourceType = 'bitgo' | 'backup' | 'user' | 'cold';
17
+ export type WebauthnFmt = 'none' | 'packed' | 'fido-u2f';
18
+ export interface WebauthnAuthenticatorInfo {
19
+ credID: string;
20
+ fmt: WebauthnFmt;
21
+ publicKey: string;
22
+ }
23
+ export interface KeychainWebauthnDevice {
24
+ otpDeviceId: string;
25
+ authenticatorInfo: WebauthnAuthenticatorInfo;
26
+ prfSalt: string;
27
+ encryptedPrv: string;
28
+ }
8
29
  export interface Keychain {
9
30
  id: string;
10
31
  pub?: string;
11
32
  prv?: string;
12
33
  provider?: string;
13
34
  encryptedPrv?: string;
35
+ reducedEncryptedPrv?: string;
14
36
  derivationPath?: string;
15
37
  derivedFromParentWithSeed?: string;
16
38
  commonPub?: string;
17
39
  commonKeychain?: string;
18
40
  keyShares?: ApiKeyShare[];
19
41
  walletHSMGPGPublicKeySigs?: string;
42
+ hsmType?: BitgoPubKeyType;
20
43
  type: KeyType;
21
44
  source?: SourceType;
45
+ coinSpecific?: {
46
+ [coinName: string]: unknown;
47
+ };
48
+ webauthnDevices?: KeychainWebauthnDevice[];
49
+ ethAddress?: string;
22
50
  }
51
+ export type OptionalKeychainEncryptedKey = Pick<Keychain, 'encryptedPrv' | 'webauthnDevices'>;
52
+ export type KeychainWithEncryptedPrv = Omit<Keychain, 'encryptedPrv'> & {
53
+ encryptedPrv: string;
54
+ };
23
55
  export interface ChangedKeychains {
24
56
  [pubkey: string]: string;
25
57
  }
@@ -46,6 +78,23 @@ export interface UpdateSingleKeychainPasswordOptions {
46
78
  oldPassword?: string;
47
79
  newPassword?: string;
48
80
  }
81
+ /**
82
+ * Parameters for the rotateKeychain method for ofc multi-user-key
83
+ * @property {string} id - the public id of the keychain
84
+ * @property {string} password - the user password use to encrypt/decrypt the private key
85
+ * @property {IRequestTracer} reqId - optional reqId
86
+ */
87
+ export type RotateKeychainOptions = {
88
+ id: string;
89
+ password: string;
90
+ reqId?: IRequestTracer;
91
+ encryptionVersion?: EncryptionVersion;
92
+ } | {
93
+ id: string;
94
+ pub: string;
95
+ encryptedPrv: string;
96
+ reqId?: IRequestTracer;
97
+ };
49
98
  export interface AddKeychainOptions {
50
99
  pub?: string;
51
100
  commonPub?: string;
@@ -66,6 +115,17 @@ export interface AddKeychainOptions {
66
115
  backupGPGPublicKey?: string;
67
116
  algoUsed?: string;
68
117
  isDistributedCustody?: boolean;
118
+ isMPCv2?: boolean;
119
+ coinSpecific?: {
120
+ [coinName: string]: unknown;
121
+ };
122
+ /** WebAuthn devices that have an additional encrypted copy of the private key, keyed by PRF-derived passphrases.
123
+ * @deprecated Use {@link webauthnInfo} instead — the backend reads `webauthnInfo` (single object), not `webauthnDevices`. */
124
+ webauthnDevices?: WebauthnInfo[];
125
+ /** Single webauthn device to atomically attach during key creation.
126
+ * Sent as `webauthnInfo` in the POST /key body so the backend can link
127
+ * the passkey to the keychain in the same request. */
128
+ webauthnInfo?: WebauthnInfo;
69
129
  }
70
130
  export interface ApiKeyShare {
71
131
  from: 'user' | 'backup' | 'bitgo';
@@ -89,6 +149,8 @@ export interface CreateBackupOptions {
89
149
  commonKeychain?: string;
90
150
  prv?: string;
91
151
  encryptedPrv?: string;
152
+ passphrase?: string;
153
+ encryptionVersion?: EncryptionVersion;
92
154
  }
93
155
  export interface CreateBitGoOptions {
94
156
  source?: 'bitgo';
@@ -97,12 +159,31 @@ export interface CreateBitGoOptions {
97
159
  keyType?: KeyType;
98
160
  isDistributedCustody?: boolean;
99
161
  }
162
+ export type DecryptedRetrofitPayload = {
163
+ decryptedUserKey: string;
164
+ decryptedBackupKey: string;
165
+ walletId: string;
166
+ };
100
167
  export interface CreateMpcOptions {
101
- multisigType: 'onchain' | 'tss' | 'blsdkg';
168
+ multisigType: 'onchain' | 'tss';
102
169
  passphrase?: string;
103
170
  originalPasscodeEncryptionCode?: string;
104
171
  enterprise?: string;
105
- backupProvider?: BackupProvider;
172
+ retrofit?: DecryptedRetrofitPayload;
173
+ webauthnInfo?: WebauthnKeyEncryptionInfo;
174
+ encryptionVersion?: EncryptionVersion;
175
+ }
176
+ export interface RecreateMpcOptions extends Omit<CreateMpcOptions, 'retrofit' | 'multisigType'> {
177
+ coin: string;
178
+ walletId: string;
179
+ passphrase: string;
180
+ otp: string;
181
+ enterprise: string;
182
+ encryptedMaterial: {
183
+ encryptedUserKey: string;
184
+ encryptedBackupKey: string;
185
+ encryptedWalletPassphrase: string;
186
+ };
106
187
  }
107
188
  export interface GetKeysForSigningOptions {
108
189
  reqId?: IRequestTracer;
@@ -130,14 +211,19 @@ export interface IKeychains {
130
211
  list(params?: ListKeychainOptions): Promise<ListKeychainsResult>;
131
212
  updatePassword(params: UpdatePasswordOptions): Promise<ChangedKeychains>;
132
213
  updateSingleKeychainPassword(params?: UpdateSingleKeychainPasswordOptions): Keychain;
214
+ updateSingleKeychainPasswordAsync(params?: UpdateSingleKeychainPasswordOptions): Promise<Keychain>;
133
215
  create(params?: {
134
216
  seed?: Buffer;
217
+ isRootKey?: boolean;
135
218
  }): KeyPair;
136
219
  add(params?: AddKeychainOptions): Promise<Keychain>;
137
220
  createBitGo(params?: CreateBitGoOptions): Promise<Keychain>;
138
221
  createBackup(params?: CreateBackupOptions): Promise<Keychain>;
139
222
  getKeysForSigning(params?: GetKeysForSigningOptions): Promise<Keychain[]>;
140
223
  createMpc(params: CreateMpcOptions): Promise<KeychainsTriplet>;
141
- createTssBitGoKeyFromOvcShares(ovcOutput: OvcToBitGoJSON): Promise<BitGoKeyFromOvcShares>;
224
+ recreateMpc(params: RecreateMpcOptions): Promise<KeychainsTriplet>;
225
+ createTssBitGoKeyFromOvcShares(ovcOutput: OvcToBitGoJSON, enterprise?: string): Promise<BitGoKeyFromOvcShares>;
226
+ createUserKeychain(userPassword: string, encryptionVersion?: EncryptionVersion): Promise<Keychain>;
227
+ rotateKeychain(params: RotateKeychainOptions): Promise<Keychain>;
142
228
  }
143
229
  //# sourceMappingURL=iKeychains.d.ts.map