@bitgo-beta/sdk-core 8.2.1-beta.212 → 8.2.1-beta.2121

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 (809) 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 +43 -31
  9. package/dist/src/account-lib/baseCoin/enum.d.ts +59 -5
  10. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  11. package/dist/src/account-lib/baseCoin/enum.js +112 -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.d.ts +0 -1
  49. package/dist/src/account-lib/index.d.ts.map +1 -1
  50. package/dist/src/account-lib/index.js +23 -10
  51. package/dist/src/account-lib/mpc/index.d.ts +1 -1
  52. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  53. package/dist/src/account-lib/mpc/index.js +6 -2
  54. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -3
  55. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  56. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +376 -354
  57. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +23 -9
  58. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  59. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  60. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  61. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +46 -53
  62. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  63. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  64. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +0 -1
  65. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  66. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +66 -69
  67. package/dist/src/account-lib/mpc/tss/eddsa/index.js +23 -9
  68. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +1 -1
  69. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
  70. package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
  71. package/dist/src/account-lib/mpc/tss/index.js +23 -9
  72. package/dist/src/account-lib/mpc/util.d.ts +7 -1
  73. package/dist/src/account-lib/mpc/util.d.ts.map +1 -1
  74. package/dist/src/account-lib/mpc/util.js +24 -1
  75. package/dist/src/account-lib/staking/index.js +6 -2
  76. package/dist/src/account-lib/staking/utils.js +3 -3
  77. package/dist/src/account-lib/util/crypto.d.ts +8 -2
  78. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  79. package/dist/src/account-lib/util/crypto.js +69 -38
  80. package/dist/src/api/bip32path.js +2 -3
  81. package/dist/src/api/index.js +6 -2
  82. package/dist/src/api/types.d.ts +37 -0
  83. package/dist/src/api/types.d.ts.map +1 -1
  84. package/dist/src/api/types.js +8 -1
  85. package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -1
  86. package/dist/src/bitgo/address-book/address-book.js +20 -12
  87. package/dist/src/bitgo/address-book/index.js +6 -2
  88. package/dist/src/bitgo/address-book/types.d.ts +36 -36
  89. package/dist/src/bitgo/address-book/types.d.ts.map +1 -1
  90. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +123 -13
  91. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  92. package/dist/src/bitgo/baseCoin/baseCoin.js +200 -16
  93. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +337 -33
  94. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  95. package/dist/src/bitgo/baseCoin/iBaseCoin.js +14 -3
  96. package/dist/src/bitgo/baseCoin/index.js +6 -2
  97. package/dist/src/bitgo/bip32util.d.ts +3 -16
  98. package/dist/src/bitgo/bip32util.d.ts.map +1 -1
  99. package/dist/src/bitgo/bip32util.js +4 -56
  100. package/dist/src/bitgo/bitcoin.d.ts +0 -1
  101. package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
  102. package/dist/src/bitgo/bitcoin.js +26 -13
  103. package/dist/src/bitgo/bitgoBase.d.ts +17 -4
  104. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  105. package/dist/src/bitgo/bitgoBase.js +1 -1
  106. package/dist/src/bitgo/coinFactory.d.ts +24 -3
  107. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  108. package/dist/src/bitgo/coinFactory.js +35 -3
  109. package/dist/src/bitgo/config.d.ts +3 -101
  110. package/dist/src/bitgo/config.d.ts.map +1 -1
  111. package/dist/src/bitgo/config.js +26 -15
  112. package/dist/src/bitgo/defi/defiVault.d.ts +171 -0
  113. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -0
  114. package/dist/src/bitgo/defi/defiVault.js +445 -0
  115. package/dist/src/bitgo/defi/iDefiVault.d.ts +101 -0
  116. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -0
  117. package/dist/src/bitgo/defi/iDefiVault.js +6 -0
  118. package/dist/src/bitgo/defi/index.d.ts +3 -0
  119. package/dist/src/bitgo/defi/index.d.ts.map +1 -0
  120. package/dist/src/bitgo/defi/index.js +22 -0
  121. package/dist/src/bitgo/ecdh.d.ts +0 -1
  122. package/dist/src/bitgo/ecdh.d.ts.map +1 -1
  123. package/dist/src/bitgo/ecdh.js +26 -13
  124. package/dist/src/bitgo/enterprise/enterprise.d.ts +9 -4
  125. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  126. package/dist/src/bitgo/enterprise/enterprise.js +47 -21
  127. package/dist/src/bitgo/enterprise/enterprises.js +27 -13
  128. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +5 -3
  129. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  130. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  131. package/dist/src/bitgo/enterprise/index.js +6 -2
  132. package/dist/src/bitgo/environments.d.ts +73 -3
  133. package/dist/src/bitgo/environments.d.ts.map +1 -1
  134. package/dist/src/bitgo/environments.js +415 -34
  135. package/dist/src/bitgo/errors.d.ts +189 -1
  136. package/dist/src/bitgo/errors.d.ts.map +1 -1
  137. package/dist/src/bitgo/errors.js +187 -3
  138. package/dist/src/bitgo/evm/evmUtils.d.ts +26 -0
  139. package/dist/src/bitgo/evm/evmUtils.d.ts.map +1 -0
  140. package/dist/src/bitgo/evm/evmUtils.js +50 -0
  141. package/dist/src/bitgo/index.d.ts +6 -1
  142. package/dist/src/bitgo/index.d.ts.map +1 -1
  143. package/dist/src/bitgo/index.js +32 -11
  144. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +3 -3
  145. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
  146. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +1 -1
  147. package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
  148. package/dist/src/bitgo/internal/index.js +6 -2
  149. package/dist/src/bitgo/internal/internal.js +5 -6
  150. package/dist/src/bitgo/internal/keycard.d.ts +13 -8
  151. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  152. package/dist/src/bitgo/internal/keycard.js +63 -48
  153. package/dist/src/bitgo/keychain/decryptKeychain.d.ts +14 -0
  154. package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
  155. package/dist/src/bitgo/keychain/decryptKeychain.js +36 -0
  156. package/dist/src/bitgo/keychain/iKeychains.d.ts +180 -11
  157. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  158. package/dist/src/bitgo/keychain/iKeychains.js +2 -2
  159. package/dist/src/bitgo/keychain/index.d.ts +1 -0
  160. package/dist/src/bitgo/keychain/index.d.ts.map +1 -1
  161. package/dist/src/bitgo/keychain/index.js +7 -2
  162. package/dist/src/bitgo/keychain/keychains.d.ts +106 -13
  163. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  164. package/dist/src/bitgo/keychain/keychains.js +423 -72
  165. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +3 -3
  166. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
  167. package/dist/src/bitgo/keychain/ovcJsonCodec.js +23 -9
  168. package/dist/src/bitgo/legacyBitcoin.d.ts +0 -1
  169. package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
  170. package/dist/src/bitgo/legacyBitcoin.js +27 -13
  171. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts +7 -0
  172. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts.map +1 -0
  173. package/dist/src/bitgo/lightning/lightningWalletUtil.js +25 -0
  174. package/dist/src/bitgo/market/iMarkets.d.ts +2 -2
  175. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -1
  176. package/dist/src/bitgo/market/index.js +6 -2
  177. package/dist/src/bitgo/market/markets.js +23 -9
  178. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +5 -1
  179. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  180. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +4 -4
  181. package/dist/src/bitgo/pendingApproval/index.js +6 -2
  182. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +20 -8
  183. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  184. package/dist/src/bitgo/pendingApproval/pendingApproval.js +246 -111
  185. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +23 -9
  186. package/dist/src/bitgo/proofs/WalletProofs.d.ts +19 -0
  187. package/dist/src/bitgo/proofs/WalletProofs.d.ts.map +1 -0
  188. package/dist/src/bitgo/proofs/WalletProofs.js +37 -0
  189. package/dist/src/bitgo/proofs/index.d.ts +2 -0
  190. package/dist/src/bitgo/proofs/index.d.ts.map +1 -0
  191. package/dist/src/bitgo/proofs/index.js +6 -0
  192. package/dist/src/bitgo/proofs/types.d.ts +80 -0
  193. package/dist/src/bitgo/proofs/types.d.ts.map +1 -0
  194. package/dist/src/bitgo/proofs/types.js +80 -0
  195. package/dist/src/bitgo/recovery/index.js +6 -2
  196. package/dist/src/bitgo/recovery/initiate.d.ts +13 -3
  197. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
  198. package/dist/src/bitgo/recovery/initiate.js +49 -41
  199. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +51 -0
  200. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
  201. package/dist/src/bitgo/safe/derivableEd25519Pub.js +115 -0
  202. package/dist/src/bitgo/safe/iSafe.d.ts +124 -0
  203. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -0
  204. package/dist/src/bitgo/safe/iSafe.js +3 -0
  205. package/dist/src/bitgo/safe/iSafes.d.ts +94 -0
  206. package/dist/src/bitgo/safe/iSafes.d.ts.map +1 -0
  207. package/dist/src/bitgo/safe/iSafes.js +3 -0
  208. package/dist/src/bitgo/safe/index.d.ts +8 -0
  209. package/dist/src/bitgo/safe/index.d.ts.map +1 -0
  210. package/dist/src/bitgo/safe/index.js +24 -0
  211. package/dist/src/bitgo/safe/recovery.d.ts +133 -0
  212. package/dist/src/bitgo/safe/recovery.d.ts.map +1 -0
  213. package/dist/src/bitgo/safe/recovery.js +176 -0
  214. package/dist/src/bitgo/safe/rootCoin.d.ts +15 -0
  215. package/dist/src/bitgo/safe/rootCoin.d.ts.map +1 -0
  216. package/dist/src/bitgo/safe/rootCoin.js +47 -0
  217. package/dist/src/bitgo/safe/safe.d.ts +88 -0
  218. package/dist/src/bitgo/safe/safe.d.ts.map +1 -0
  219. package/dist/src/bitgo/safe/safe.js +417 -0
  220. package/dist/src/bitgo/safe/safes.d.ts +102 -0
  221. package/dist/src/bitgo/safe/safes.d.ts.map +1 -0
  222. package/dist/src/bitgo/safe/safes.js +281 -0
  223. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +136 -0
  224. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts.map +1 -0
  225. package/dist/src/bitgo/staking/goStakingInterfaces.js +3 -0
  226. package/dist/src/bitgo/staking/goStakingWallet.d.ts +62 -0
  227. package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -0
  228. package/dist/src/bitgo/staking/goStakingWallet.js +141 -0
  229. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts +17 -0
  230. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts.map +1 -0
  231. package/dist/src/bitgo/staking/iGoStakingWallet.js +3 -0
  232. package/dist/src/bitgo/staking/iStakingWallet.d.ts +161 -8
  233. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  234. package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
  235. package/dist/src/bitgo/staking/index.d.ts +3 -0
  236. package/dist/src/bitgo/staking/index.d.ts.map +1 -1
  237. package/dist/src/bitgo/staking/index.js +9 -2
  238. package/dist/src/bitgo/staking/stakingWallet.d.ts +21 -8
  239. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  240. package/dist/src/bitgo/staking/stakingWallet.js +153 -7
  241. package/dist/src/bitgo/trading/iTradingAccount.d.ts +13 -1
  242. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  243. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  244. package/dist/src/bitgo/trading/index.d.ts +1 -0
  245. package/dist/src/bitgo/trading/index.d.ts.map +1 -1
  246. package/dist/src/bitgo/trading/index.js +7 -2
  247. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
  248. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
  249. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
  250. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
  251. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
  252. package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
  253. package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
  254. package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
  255. package/dist/src/bitgo/trading/network/decrypt.js +23 -0
  256. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
  257. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
  258. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
  259. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
  260. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
  261. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
  262. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
  263. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
  264. package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
  265. package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
  266. package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
  267. package/dist/src/bitgo/trading/network/encrypt.js +58 -0
  268. package/dist/src/bitgo/trading/network/index.d.ts +2 -0
  269. package/dist/src/bitgo/trading/network/index.d.ts.map +1 -1
  270. package/dist/src/bitgo/trading/network/index.js +8 -2
  271. package/dist/src/bitgo/trading/network/network.d.ts +4 -3
  272. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
  273. package/dist/src/bitgo/trading/network/network.js +24 -27
  274. package/dist/src/bitgo/trading/network/types.d.ts +79 -46
  275. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
  276. package/dist/src/bitgo/trading/network/types.js +1 -1
  277. package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
  278. package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
  279. package/dist/src/bitgo/trading/network/utils.js +54 -0
  280. package/dist/src/bitgo/trading/tradingAccount.d.ts +15 -1
  281. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  282. package/dist/src/bitgo/trading/tradingAccount.js +55 -7
  283. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +49 -0
  284. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  285. package/dist/src/bitgo/tss/bitgoPubKeys.js +92 -0
  286. package/dist/src/bitgo/tss/common.d.ts +50 -6
  287. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  288. package/dist/src/bitgo/tss/common.js +139 -17
  289. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
  290. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  291. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
  292. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
  293. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  294. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +167 -0
  295. package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
  296. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
  297. package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
  298. package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
  299. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  300. package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
  301. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +15 -6
  302. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  303. package/dist/src/bitgo/tss/eddsa/eddsa.js +47 -40
  304. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts +42 -0
  305. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  306. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +104 -0
  307. package/dist/src/bitgo/tss/eddsa/index.js +23 -9
  308. package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
  309. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
  310. package/dist/src/bitgo/tss/index.d.ts +3 -2
  311. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  312. package/dist/src/bitgo/tss/index.js +26 -10
  313. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +84 -0
  314. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  315. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +184 -0
  316. package/dist/src/bitgo/tss/types.d.ts +3 -3
  317. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  318. package/dist/src/bitgo/tss/types.js +2 -2
  319. package/dist/src/bitgo/types.d.ts +3 -3
  320. package/dist/src/bitgo/types.d.ts.map +1 -1
  321. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +10 -0
  322. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
  323. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +76 -14
  324. package/dist/src/bitgo/utils/codecProps.js +24 -11
  325. package/dist/src/bitgo/utils/codecs.d.ts +11 -0
  326. package/dist/src/bitgo/utils/codecs.d.ts.map +1 -0
  327. package/dist/src/bitgo/utils/codecs.js +59 -0
  328. package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
  329. package/dist/src/bitgo/utils/decode.js +30 -16
  330. package/dist/src/bitgo/utils/index.d.ts +5 -2
  331. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  332. package/dist/src/bitgo/utils/index.js +28 -11
  333. package/dist/src/bitgo/utils/messageTypes.d.ts +46 -0
  334. package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
  335. package/dist/src/bitgo/utils/messageTypes.js +23 -0
  336. package/dist/src/bitgo/utils/mpcUtils.d.ts +4 -4
  337. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  338. package/dist/src/bitgo/utils/mpcUtils.js +208 -14
  339. package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
  340. package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
  341. package/dist/src/bitgo/utils/notEmpty.js +7 -0
  342. package/dist/src/bitgo/utils/opengpgUtils.d.ts +11 -7
  343. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  344. package/dist/src/bitgo/utils/opengpgUtils.js +79 -62
  345. package/dist/src/bitgo/utils/postWithCodec.js +2 -3
  346. package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
  347. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
  348. package/dist/src/bitgo/utils/promise-utils.js +2 -3
  349. package/dist/src/bitgo/utils/siws.d.ts +17 -0
  350. package/dist/src/bitgo/utils/siws.d.ts.map +1 -0
  351. package/dist/src/bitgo/utils/siws.js +171 -0
  352. package/dist/src/bitgo/utils/transactionUtils.d.ts +9 -0
  353. package/dist/src/bitgo/utils/transactionUtils.d.ts.map +1 -0
  354. package/dist/src/bitgo/utils/transactionUtils.js +29 -0
  355. package/dist/src/bitgo/utils/triple.d.ts +1 -1
  356. package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
  357. package/dist/src/bitgo/utils/triple.js +2 -3
  358. package/dist/src/bitgo/utils/tss/addressVerification.d.ts +62 -0
  359. package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  360. package/dist/src/bitgo/utils/tss/addressVerification.js +93 -0
  361. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +99 -17
  362. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  363. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +322 -45
  364. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +462 -55
  365. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  366. package/dist/src/bitgo/utils/tss/baseTypes.js +47 -22
  367. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
  368. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
  369. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
  370. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +28 -0
  371. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
  372. package/dist/src/bitgo/utils/tss/ecdsa/base.js +53 -0
  373. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +25 -51
  374. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  375. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +173 -246
  376. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +241 -0
  377. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  378. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1072 -0
  379. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +17 -0
  380. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
  381. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +39 -0
  382. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +65 -0
  383. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -0
  384. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +439 -0
  385. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +5 -0
  386. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  387. package/dist/src/bitgo/utils/tss/ecdsa/index.js +11 -2
  388. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +7 -10
  389. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  390. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  391. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +151 -0
  392. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
  393. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
  394. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts +21 -0
  395. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts.map +1 -0
  396. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.js +119 -0
  397. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +18 -0
  398. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -0
  399. package/dist/src/bitgo/utils/tss/eddsa/base.js +64 -0
  400. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +43 -11
  401. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  402. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +261 -96
  403. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +261 -0
  404. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  405. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +994 -0
  406. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +14 -0
  407. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -0
  408. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +29 -0
  409. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +44 -0
  410. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  411. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +268 -0
  412. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  413. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  414. package/dist/src/bitgo/utils/tss/eddsa/index.js +30 -8
  415. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +15 -7
  416. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  417. package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
  418. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +75 -0
  419. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -0
  420. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +44 -0
  421. package/dist/src/bitgo/utils/tss/index.d.ts +7 -0
  422. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  423. package/dist/src/bitgo/utils/tss/index.js +31 -10
  424. package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts +40 -0
  425. package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
  426. package/dist/src/bitgo/utils/tss/keyShareEnvelope.js +103 -0
  427. package/dist/src/bitgo/utils/tss/keyVerification.d.ts +45 -0
  428. package/dist/src/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
  429. package/dist/src/bitgo/utils/tss/keyVerification.js +192 -0
  430. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts +23 -0
  431. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  432. package/dist/src/bitgo/utils/tss/preHashedSignable.js +26 -0
  433. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +42 -0
  434. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  435. package/dist/src/bitgo/utils/tss/recipientUtils.js +179 -0
  436. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts +29 -0
  437. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts.map +1 -0
  438. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.js +126 -0
  439. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts +4 -0
  440. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts.map +1 -0
  441. package/dist/src/bitgo/utils/tss/redpallas/index.js +20 -0
  442. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +27 -0
  443. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  444. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.js +43 -0
  445. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts +45 -0
  446. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -0
  447. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.js +55 -0
  448. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts +8 -0
  449. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts.map +1 -0
  450. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.js +13 -0
  451. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts +12 -0
  452. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts.map +1 -0
  453. package/dist/src/bitgo/utils/tss/signableConsistency.js +9 -0
  454. package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
  455. package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
  456. package/dist/src/bitgo/utils/txRequest.js +49 -0
  457. package/dist/src/bitgo/utils/util.js +24 -10
  458. package/dist/src/bitgo/utils/wallet.d.ts +7 -0
  459. package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
  460. package/dist/src/bitgo/utils/wallet.js +48 -0
  461. package/dist/src/bitgo/v1Wallets.d.ts +170 -0
  462. package/dist/src/bitgo/v1Wallets.d.ts.map +1 -0
  463. package/dist/src/bitgo/v1Wallets.js +3 -0
  464. package/dist/src/bitgo/wallet/BuildParams.d.ts +91 -1
  465. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  466. package/dist/src/bitgo/wallet/BuildParams.js +96 -11
  467. package/dist/src/bitgo/wallet/iWallet.d.ts +636 -33
  468. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  469. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  470. package/dist/src/bitgo/wallet/iWallets.d.ts +311 -16
  471. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  472. package/dist/src/bitgo/wallet/iWallets.js +84 -3
  473. package/dist/src/bitgo/wallet/index.d.ts +1 -0
  474. package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
  475. package/dist/src/bitgo/wallet/index.js +7 -2
  476. package/dist/src/bitgo/wallet/safeKeychain.d.ts +75 -0
  477. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -0
  478. package/dist/src/bitgo/wallet/safeKeychain.js +152 -0
  479. package/dist/src/bitgo/wallet/wallet.d.ts +410 -27
  480. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  481. package/dist/src/bitgo/wallet/wallet.js +2518 -510
  482. package/dist/src/bitgo/wallet/wallets.d.ts +99 -4
  483. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  484. package/dist/src/bitgo/wallet/wallets.js +1256 -156
  485. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts +12 -0
  486. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts.map +1 -0
  487. package/dist/src/bitgo/walletUtil/iMessageProvider.js +3 -0
  488. package/dist/src/bitgo/walletUtil/index.d.ts +3 -0
  489. package/dist/src/bitgo/walletUtil/index.d.ts.map +1 -0
  490. package/dist/src/bitgo/walletUtil/index.js +19 -0
  491. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts +22 -0
  492. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts.map +1 -0
  493. package/dist/src/bitgo/walletUtil/midnightMessageProvider.js +95 -0
  494. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts +9 -0
  495. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts.map +1 -0
  496. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.js +72 -0
  497. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts +15 -0
  498. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts.map +1 -0
  499. package/dist/src/bitgo/walletUtil/utxoMessageProof.js +40 -0
  500. package/dist/src/bitgo/webauthn/base64url.d.ts +16 -0
  501. package/dist/src/bitgo/webauthn/base64url.d.ts.map +1 -0
  502. package/dist/src/bitgo/webauthn/base64url.js +27 -0
  503. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts +18 -0
  504. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts.map +1 -0
  505. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.js +26 -0
  506. package/dist/src/bitgo/webauthn/derivePassword.d.ts +11 -0
  507. package/dist/src/bitgo/webauthn/derivePassword.d.ts.map +1 -0
  508. package/dist/src/bitgo/webauthn/derivePassword.js +16 -0
  509. package/dist/src/bitgo/webauthn/index.d.ts +5 -0
  510. package/dist/src/bitgo/webauthn/index.d.ts.map +1 -0
  511. package/dist/src/bitgo/webauthn/index.js +21 -0
  512. package/dist/src/bitgo/webauthn/types.d.ts +18 -0
  513. package/dist/src/bitgo/webauthn/types.d.ts.map +1 -0
  514. package/dist/src/bitgo/webauthn/types.js +3 -0
  515. package/dist/src/bitgo/webhook/index.js +6 -2
  516. package/dist/src/bitgo/webhook/webhooks.js +23 -9
  517. package/dist/src/coins/fiat.d.ts +45 -0
  518. package/dist/src/coins/fiat.d.ts.map +1 -0
  519. package/dist/src/coins/fiat.js +94 -0
  520. package/dist/src/coins/index.d.ts +1 -6
  521. package/dist/src/coins/index.d.ts.map +1 -1
  522. package/dist/src/coins/index.js +7 -8
  523. package/dist/src/coins/ofc.d.ts +21 -2
  524. package/dist/src/coins/ofc.d.ts.map +1 -1
  525. package/dist/src/coins/ofc.js +29 -3
  526. package/dist/src/coins/ofcToken.d.ts +15 -4
  527. package/dist/src/coins/ofcToken.d.ts.map +1 -1
  528. package/dist/src/coins/ofcToken.js +43 -5
  529. package/dist/src/coins/susd.d.ts +3 -2
  530. package/dist/src/coins/susd.d.ts.map +1 -1
  531. package/dist/src/coins/susd.js +5 -1
  532. package/dist/src/common.js +27 -13
  533. package/dist/src/index.d.ts +9 -1
  534. package/dist/src/index.d.ts.map +1 -1
  535. package/dist/src/index.js +40 -11
  536. package/dist/src/lightning.d.ts +20 -0
  537. package/dist/src/lightning.d.ts.map +1 -0
  538. package/dist/src/lightning.js +13 -0
  539. package/dist/src/units.js +5 -6
  540. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts +2 -0
  541. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  542. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.js +207 -0
  543. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +2 -0
  544. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  545. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.js +174 -0
  546. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +2 -0
  547. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  548. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +108 -0
  549. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts +46 -0
  550. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts.map +1 -0
  551. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.js +69 -0
  552. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +91 -29
  553. package/dist/test/unit/account-lib/mpc/util.d.ts +2 -0
  554. package/dist/test/unit/account-lib/mpc/util.d.ts.map +1 -0
  555. package/dist/test/unit/account-lib/mpc/util.js +53 -0
  556. package/dist/test/unit/bitgo/address-book/address-book.d.ts +2 -0
  557. package/dist/test/unit/bitgo/address-book/address-book.d.ts.map +1 -0
  558. package/dist/test/unit/bitgo/address-book/address-book.js +159 -0
  559. package/dist/test/unit/bitgo/defi/defiVault.d.ts +2 -0
  560. package/dist/test/unit/bitgo/defi/defiVault.d.ts.map +1 -0
  561. package/dist/test/unit/bitgo/defi/defiVault.js +863 -0
  562. package/dist/test/unit/bitgo/environment.d.ts +2 -0
  563. package/dist/test/unit/bitgo/environment.d.ts.map +1 -0
  564. package/dist/test/unit/bitgo/environment.js +38 -0
  565. package/dist/test/unit/bitgo/errors.d.ts +2 -0
  566. package/dist/test/unit/bitgo/errors.d.ts.map +1 -0
  567. package/dist/test/unit/bitgo/errors.js +262 -0
  568. package/dist/test/unit/bitgo/keychain/keychains.d.ts +2 -0
  569. package/dist/test/unit/bitgo/keychain/keychains.d.ts.map +1 -0
  570. package/dist/test/unit/bitgo/keychain/keychains.js +426 -0
  571. package/dist/test/unit/bitgo/recovery/initiate.d.ts +2 -0
  572. package/dist/test/unit/bitgo/recovery/initiate.d.ts.map +1 -0
  573. package/dist/test/unit/bitgo/recovery/initiate.js +159 -0
  574. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts +2 -0
  575. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
  576. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +193 -0
  577. package/dist/test/unit/bitgo/safe/fixtures/derivableEd25519Pub.json +72 -0
  578. package/dist/test/unit/bitgo/safe/fixtures/safeBip44Vectors.json +319 -0
  579. package/dist/test/unit/bitgo/safe/recovery.d.ts +2 -0
  580. package/dist/test/unit/bitgo/safe/recovery.d.ts.map +1 -0
  581. package/dist/test/unit/bitgo/safe/recovery.js +478 -0
  582. package/dist/test/unit/bitgo/safe/rootCoin.d.ts +2 -0
  583. package/dist/test/unit/bitgo/safe/rootCoin.d.ts.map +1 -0
  584. package/dist/test/unit/bitgo/safe/rootCoin.js +13 -0
  585. package/dist/test/unit/bitgo/safe/safe.d.ts +2 -0
  586. package/dist/test/unit/bitgo/safe/safe.d.ts.map +1 -0
  587. package/dist/test/unit/bitgo/safe/safe.js +607 -0
  588. package/dist/test/unit/bitgo/safe/safeBip44Vectors.d.ts +2 -0
  589. package/dist/test/unit/bitgo/safe/safeBip44Vectors.d.ts.map +1 -0
  590. package/dist/test/unit/bitgo/safe/safeBip44Vectors.js +189 -0
  591. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts +2 -0
  592. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts.map +1 -0
  593. package/dist/test/unit/bitgo/safe/safeDerivation.js +37 -0
  594. package/dist/test/unit/bitgo/safe/safes.d.ts +2 -0
  595. package/dist/test/unit/bitgo/safe/safes.d.ts.map +1 -0
  596. package/dist/test/unit/bitgo/safe/safes.js +376 -0
  597. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
  598. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
  599. package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
  600. package/dist/test/unit/bitgo/trading/network/network.test.d.ts +2 -0
  601. package/dist/test/unit/bitgo/trading/network/network.test.d.ts.map +1 -0
  602. package/dist/test/unit/bitgo/trading/network/network.test.js +136 -0
  603. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
  604. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
  605. package/dist/test/unit/bitgo/trading/tradingAccount.js +192 -0
  606. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts +2 -0
  607. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  608. package/dist/test/unit/bitgo/tss/bitgoPubKeys.js +66 -0
  609. package/dist/test/unit/bitgo/tss/common.d.ts +2 -0
  610. package/dist/test/unit/bitgo/tss/common.d.ts.map +1 -0
  611. package/dist/test/unit/bitgo/tss/common.js +84 -0
  612. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  613. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  614. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +249 -0
  615. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +45 -4
  616. package/dist/test/unit/bitgo/utils/messageTypes.d.ts +2 -0
  617. package/dist/test/unit/bitgo/utils/messageTypes.d.ts.map +1 -0
  618. package/dist/test/unit/bitgo/utils/messageTypes.js +64 -0
  619. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts +2 -0
  620. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts.map +1 -0
  621. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.js +109 -0
  622. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts +2 -0
  623. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts.map +1 -0
  624. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.js +106 -0
  625. package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
  626. package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
  627. package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
  628. package/dist/test/unit/bitgo/utils/postWithCodec.js +24 -10
  629. package/dist/test/unit/bitgo/utils/siws.d.ts +2 -0
  630. package/dist/test/unit/bitgo/utils/siws.d.ts.map +1 -0
  631. package/dist/test/unit/bitgo/utils/siws.js +206 -0
  632. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts +2 -0
  633. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  634. package/dist/test/unit/bitgo/utils/tss/addressVerification.js +251 -0
  635. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts +2 -0
  636. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -0
  637. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.js +348 -0
  638. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts +2 -0
  639. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts.map +1 -0
  640. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.js +94 -0
  641. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +2 -0
  642. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  643. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1068 -0
  644. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts +5 -0
  645. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts.map +1 -0
  646. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.js +36 -0
  647. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts +2 -0
  648. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts.map +1 -0
  649. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.js +158 -0
  650. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +2 -0
  651. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  652. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +2410 -0
  653. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +2 -0
  654. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  655. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +553 -0
  656. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts +2 -0
  657. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts.map +1 -0
  658. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.js +376 -0
  659. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts +2 -0
  660. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
  661. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.js +83 -0
  662. package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts +2 -0
  663. package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
  664. package/dist/test/unit/bitgo/utils/tss/keyVerification.js +229 -0
  665. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts +2 -0
  666. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  667. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.js +55 -0
  668. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +2 -0
  669. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  670. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +498 -0
  671. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  672. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  673. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.js +80 -0
  674. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts +2 -0
  675. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts.map +1 -0
  676. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.js +279 -0
  677. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts +2 -0
  678. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts.map +1 -0
  679. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.js +111 -0
  680. package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
  681. package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
  682. package/dist/test/unit/bitgo/utils/txRequest.js +179 -0
  683. package/dist/test/unit/bitgo/utils/wallet.d.ts +2 -0
  684. package/dist/test/unit/bitgo/utils/wallet.d.ts.map +1 -0
  685. package/dist/test/unit/bitgo/utils/wallet.js +55 -0
  686. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
  687. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
  688. package/dist/test/unit/bitgo/wallet/BuildParams.js +167 -0
  689. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +79 -9
  690. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts +2 -0
  691. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts.map +1 -0
  692. package/dist/test/unit/bitgo/wallet/getAccountResources.js +133 -0
  693. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts +2 -0
  694. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts.map +1 -0
  695. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.js +88 -0
  696. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts +2 -0
  697. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts.map +1 -0
  698. package/dist/test/unit/bitgo/wallet/getResourceDelegations.js +118 -0
  699. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts +2 -0
  700. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts.map +1 -0
  701. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.js +141 -0
  702. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
  703. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
  704. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +185 -0
  705. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts +2 -0
  706. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts.map +1 -0
  707. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.js +20 -0
  708. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts +3 -0
  709. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts.map +1 -0
  710. package/dist/test/unit/bitgo/wallet/resourceManagement.js +441 -0
  711. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts +5 -0
  712. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts.map +1 -0
  713. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +651 -0
  714. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts +9 -0
  715. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts.map +1 -0
  716. package/dist/test/unit/bitgo/wallet/safeShareWallet.js +304 -0
  717. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts +2 -0
  718. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts.map +1 -0
  719. package/dist/test/unit/bitgo/wallet/tokenApproval.js +210 -0
  720. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts +2 -0
  721. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts.map +1 -0
  722. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.js +181 -0
  723. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts +2 -0
  724. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts.map +1 -0
  725. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +69 -0
  726. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts +2 -0
  727. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts.map +1 -0
  728. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.js +320 -0
  729. package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts +2 -0
  730. package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts.map +1 -0
  731. package/dist/test/unit/bitgo/wallet/walletVerifyKey.js +160 -0
  732. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts +2 -0
  733. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts.map +1 -0
  734. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +304 -0
  735. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts +2 -0
  736. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts.map +1 -0
  737. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.js +216 -0
  738. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts +2 -0
  739. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts.map +1 -0
  740. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +853 -0
  741. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts +2 -0
  742. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts.map +1 -0
  743. package/dist/test/unit/bitgo/wallet/walletsGoAccount.js +150 -0
  744. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts +2 -0
  745. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts.map +1 -0
  746. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +201 -0
  747. package/dist/test/unit/coins/ofc.d.ts +2 -0
  748. package/dist/test/unit/coins/ofc.d.ts.map +1 -0
  749. package/dist/test/unit/coins/ofc.js +124 -0
  750. package/dist/test/unit/lightning.d.ts +2 -0
  751. package/dist/test/unit/lightning.d.ts.map +1 -0
  752. package/dist/test/unit/lightning.js +23 -0
  753. package/dist/test/unit/units.d.ts.map +1 -1
  754. package/dist/test/unit/units.js +64 -64
  755. package/dist/tsconfig.tsbuildinfo +1 -1
  756. package/package.json +25 -22
  757. package/.eslintignore +0 -5
  758. package/CHANGELOG.md +0 -1866
  759. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -77
  760. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
  761. package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -209
  762. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +0 -49
  763. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +0 -1
  764. package/dist/src/account-lib/util/ed25519KeyDeriver.js +0 -87
  765. package/dist/src/bitgo/lightning/iLightning.d.ts +0 -186
  766. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  767. package/dist/src/bitgo/lightning/iLightning.js +0 -106
  768. package/dist/src/bitgo/lightning/index.d.ts +0 -5
  769. package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
  770. package/dist/src/bitgo/lightning/index.js +0 -17
  771. package/dist/src/bitgo/lightning/lightning.d.ts +0 -25
  772. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  773. package/dist/src/bitgo/lightning/lightning.js +0 -111
  774. package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -46
  775. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
  776. package/dist/src/bitgo/lightning/lightningUtils.js +0 -133
  777. package/dist/src/bitgo/lightning/lnurlCodec.d.ts +0 -3
  778. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  779. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  780. package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
  781. package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
  782. package/dist/src/bitgo/utils/blsUtils.js +0 -237
  783. package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
  784. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
  785. package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
  786. package/dist/src/coins/fiateur.d.ts +0 -31
  787. package/dist/src/coins/fiateur.d.ts.map +0 -1
  788. package/dist/src/coins/fiateur.js +0 -57
  789. package/dist/src/coins/fiatgbp.d.ts +0 -31
  790. package/dist/src/coins/fiatgbp.d.ts.map +0 -1
  791. package/dist/src/coins/fiatgbp.js +0 -57
  792. package/dist/src/coins/fiatusd.d.ts +0 -31
  793. package/dist/src/coins/fiatusd.d.ts.map +0 -1
  794. package/dist/src/coins/fiatusd.js +0 -57
  795. package/dist/src/coins/tfiateur.d.ts +0 -11
  796. package/dist/src/coins/tfiateur.d.ts.map +0 -1
  797. package/dist/src/coins/tfiateur.js +0 -17
  798. package/dist/src/coins/tfiatgbp.d.ts +0 -11
  799. package/dist/src/coins/tfiatgbp.d.ts.map +0 -1
  800. package/dist/src/coins/tfiatgbp.js +0 -17
  801. package/dist/src/coins/tfiatusd.d.ts +0 -11
  802. package/dist/src/coins/tfiatusd.d.ts.map +0 -1
  803. package/dist/src/coins/tfiatusd.js +0 -17
  804. package/dist/src/openssl/index.d.ts +0 -5
  805. package/dist/src/openssl/index.d.ts.map +0 -1
  806. package/dist/src/openssl/index.js +0 -9
  807. package/dist/test/unit/openssl.d.ts +0 -2
  808. package/dist/test/unit/openssl.d.ts.map +0 -1
  809. package/dist/test/unit/openssl.js +0 -39
@@ -3,10 +3,11 @@
3
3
  * @hidden
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.drawKeycard = void 0;
6
+ exports.drawKeycard = drawKeycard;
7
7
  /**
8
8
  */
9
9
  const lodash_1 = require("lodash");
10
+ const api_1 = require("../../api");
10
11
  /**
11
12
  * Return the list of questions that will appear on the second page of the keycard
12
13
  * @param coin name of the coin
@@ -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,35 @@ function getKeyData(options) {
164
147
  return qrData;
165
148
  }
166
149
  /**
167
- * Draw a keycard into a new pdf document object
150
+ * Collect all data which will go onto the keycard.
151
+ * Sequential encrypt: backup key first, then passcode.
168
152
  * @param options
169
153
  */
170
- function drawKeycard(options) {
171
- const { jsPDF, QRCode, coinShortName, activationCode, walletLabel, coinName } = options;
154
+ async function getKeyData(options) {
155
+ const { encrypt, backupKeychain, passphrase, passcodeEncryptionCode, encryptionVersion, ...qrOptions } = options;
156
+ if (backupKeychain.prv && passphrase) {
157
+ backupKeychain.encryptedPrv = await encrypt({
158
+ input: backupKeychain.prv,
159
+ password: passphrase,
160
+ encryptionVersion,
161
+ });
162
+ }
163
+ let encryptedWalletPasscode;
164
+ if (passphrase && passcodeEncryptionCode) {
165
+ // Box D uses its fixed version; the backup key follows encryptionVersion.
166
+ encryptedWalletPasscode = await encrypt({
167
+ input: passphrase,
168
+ password: passcodeEncryptionCode,
169
+ encryptionVersion: api_1.HIGH_ENTROPY_ENCRYPTION_VERSION,
170
+ });
171
+ }
172
+ return buildKeycardQrData({ ...qrOptions, backupKeychain }, encryptedWalletPasscode);
173
+ }
174
+ /**
175
+ * Render keycard PDF pages from pre-built QR data.
176
+ */
177
+ function renderKeycardPdf(options, keyData) {
178
+ const { jsPDF, QRCode, activationCode, walletLabel, coinName } = options;
172
179
  const margin = 30;
173
180
  const font = {
174
181
  header: 24,
@@ -222,20 +229,6 @@ function drawKeycard(options) {
222
229
  moveDown(20);
223
230
  doc.setFontSize(font.body).setTextColor(color.red);
224
231
  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
232
  moveDown(35);
240
233
  const qrSize = 130;
241
234
  // Draw each Box with QR code and description
@@ -300,5 +293,27 @@ function drawKeycard(options) {
300
293
  });
301
294
  return doc;
302
295
  }
303
- exports.drawKeycard = drawKeycard;
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUg7R0FDRztBQUNILG1DQUFxQztBQUdyQzs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDekMsT0FBTztRQUNMO1lBQ0UsQ0FBQyxFQUFFLHNCQUFzQjtZQUN6QixDQUFDLEVBQUU7Z0JBQ0QsK0VBQStFLElBQUksR0FBRztnQkFDdEYsMkRBQTJELEdBQUcsZ0NBQWdDO2dCQUM5Rix1RkFBdUY7YUFDeEY7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDJCQUEyQjtZQUM5QixDQUFDLEVBQUU7Z0JBQ0QsK0ZBQStGO2dCQUMvRixtR0FBbUc7Z0JBQ25HLGdEQUFnRDtnQkFDaEQsRUFBRTtnQkFDRiw2RkFBNkY7Z0JBQzdGLCtGQUErRjtnQkFDL0Ysc0RBQXNEO2FBQ3ZEO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSxnQ0FBZ0M7WUFDbkMsQ0FBQyxFQUFFO2dCQUNELGdFQUFnRSxJQUFJLDJCQUEyQjtnQkFDL0YsK0ZBQStGO2dCQUMvRix1Q0FBdUM7Z0JBQ3ZDLDBDQUEwQzthQUMzQztTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsa0NBQWtDO1lBQ3JDLENBQUMsRUFBRTtnQkFDRCxrR0FBa0c7Z0JBQ2xHLHVGQUF1RjtnQkFDdkYsc0ZBQXNGO2dCQUN0Riw2RkFBNkY7Z0JBQzdGLCtDQUErQzthQUNoRDtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsOENBQThDO1lBQ2pELENBQUMsRUFBRTtnQkFDRCx3RkFBd0Y7Z0JBQ3hGLDZGQUE2RjthQUM5RjtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsNERBQTREO1lBQy9ELENBQUMsRUFBRTtnQkFDRCxvRkFBb0Y7Z0JBQ3BGLDREQUE0RCxJQUFJLGlDQUFp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LENBQUMsQ0FBQztRQUMxRCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBNUtELGtDQTRLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGhpZGRlblxuICovXG5cbi8qKlxuICovXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJy4uL2tleWNoYWluJztcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcXVlc3Rpb25zIHRoYXQgd2lsbCBhcHBlYXIgb24gdGhlIHNlY29uZCBwYWdlIG9mIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gY29pbiBuYW1lIG9mIHRoZSBjb2luXG4gKi9cbmNvbnN0IGdlbmVyYXRlUXVlc3Rpb25zID0gKGNvaW46IHN0cmluZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlzIHRoZSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIGBUaGUgS2V5Q2FyZCBjb250YWlucyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUgJHtjb2lufSBgLFxuICAgICAgICAnZnJvbSB5b3VyIHdhbGxldCBpbiBzZXZlcmFsIHNpdHVhdGlvbnMuIEVhY2ggQml0R28gd2FsbGV0JyArICcgaGFzIGl0cyBvd24sIHVuaXF1ZSBLZXlDYXJkLiAnLFxuICAgICAgICAnSWYgeW91IGhhdmUgY3JlYXRlZCBtdWx0aXBsZSB3YWxsZXRzLCB5b3Ugc2hvdWxkIHJldGFpbiB0aGUgS2V5Q2FyZCBmb3IgZWFjaCBvZiB0aGVtLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICAnWW91IHNob3VsZCBwcmludCB0aGUgS2V5Q2FyZCBhbmQvb3Igc2F2ZSB0aGUgUERGIHRvIGFuIG9mZmxpbmUgc3RvcmFnZSBkZXZpY2UuIFRoZSBwcmludC1vdXQgJyxcbiAgICAgICAgXCJvciBVU0Igc3RpY2sgc2hvdWxkIGJlIGtlcHQgaW4gYSBzYWZlIHBsYWNlLCBzdWNoIGFzIGEgYmFuayB2YXVsdCBvciBob21lIHNhZmUuIEl0J3MgYSBnb29kIGlkZWEgXCIsXG4gICAgICAgICd0byBrZWVwIGEgc2Vjb25kIGNvcHkgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uJyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiSW1wb3J0YW50OiBJZiB5b3UgaGF2ZW4ndCBwcm92aWRlZCBhbiBleHRlcm5hbCBiYWNrdXAga2V5LCB0aGVuIHRoZSBvcmlnaW5hbCBQREYgc2hvdWxkIGJlIFwiLFxuICAgICAgICAnZGVsZXRlZCBmcm9tIGFueSBtYWNoaW5lIHdoZXJlIHRoZSB3YWxsZXQgd2lsbCBiZSByZWd1bGFybHkgYWNjZXNzZWQgdG8gcHJldmVudCBtYWx3YXJlIGZyb20gJyxcbiAgICAgICAgJ2NhcHR1cmluZyBib3RoIHRoZSBLZXlDYXJkIGFuZCB5b3VyIHdhbGxldCBwYXNzY29kZS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IHNob3VsZCBJIGRvIGlmIEkgbG9zZSBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICBgSWYgeW91IGhhdmUgbG9zdCBvciBkYW1hZ2VkIGFsbCBjb3BpZXMgb2YgeW91ciBLZXlDYXJkLCB5b3VyICR7Y29pbn0gaXMgc3RpbGwgc2FmZSwgYnV0IHRoaXMgYCxcbiAgICAgICAgJ3dhbGxldCBzaG91bGQgYmUgY29uc2lkZXJlZCBhdCByaXNrIGZvciBsb3NzLiBBcyBzb29uIGFzIGlzIGNvbnZlbmllbnQsIHlvdSBzaG91bGQgdXNlIEJpdEdvICcsXG4gICAgICAgICd0byBlbXB0eSB0aGUgd2FsbGV0IGludG8gYSBuZXcgd2FsbGV0JyxcbiAgICAgICAgJywgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIHNvbWVvbmUgc2VlcyBteSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIFwiRG9uJ3QgcGFuaWMhIEFsbCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gb24gdGhlIEtleUNhcmQgaXMgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZSwgb3Igd2l0aCBhXCIsXG4gICAgICAgICdrZXkgd2hpY2ggb25seSBCaXRHbyBoYXMuIEJ1dCwgaW4gZ2VuZXJhbCwgeW91IHNob3VsZCBtYWtlIGJlc3QgZWZmb3J0cyB0byBrZWVwIHlvdXIgJyxcbiAgICAgICAgJ0tleUNhcmQgcHJpdmF0ZS4gSWYgeW91ciBLZXlDYXJkIGRvZXMgZ2V0IGV4cG9zZWQgb3IgY29waWVkIGluIGEgd2F5IHRoYXQgbWFrZXMgeW91ICcsXG4gICAgICAgICd1bmNvbWZvcnRhYmxlLCB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIGVtcHR5IHRoZSBjb3JyZXNwb25kaW5nIHdhbGxldCBpbnRvIGFub3RoZXIgJyxcbiAgICAgICAgJ3dhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgaWYgSSBmb3JnZXQgb3IgbG9zZSBteSB3YWxsZXQgcGFzc3dvcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ0JpdEdvIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIGluIFFSIENvZGUgRCB0byBoZWxwIHlvdSByZWNvdmVyIGFjY2VzcyB0byB5b3VyIHdhbGxldC4gJyxcbiAgICAgICAgJ1dpdGhvdXQgdGhlIEtleUNhcmQsIEJpdEdvIGlzIG5vdCBhYmxlIHRvIHJlY292ZXIgZnVuZHMgZnJvbSBhIHdhbGxldCB3aXRoIGEgbG9zdCBwYXNzd29yZC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIEJpdEdvIGJlY29tZXMgaW5hY2Nlc3NpYmxlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Q/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ1lvdXIgS2V5Q2FyZCBhbmQgd2FsbGV0IHBhc3Njb2RlIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQml0R2/igJlzIHB1Ymxpc2hlZCBvcGVuICcsXG4gICAgICAgIGBzb3VyY2UgdG9vbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2JpdGdvIHRvIHJlY292ZXIgeW91ciAke2NvaW59LiBOb3RlOiBZb3Ugc2hvdWxkIG5ldmVyIGVudGVyIGAsXG4gICAgICAgICdpbmZvcm1hdGlvbiBmcm9tIHlvdXIgS2V5Q2FyZCBpbnRvIHRvb2xzIG90aGVyIHRoYW4gdGhlIHRvb2xzIEJpdEdvIGhhcyBwdWJsaXNoZWQsIG9yIHlvdXIgJyxcbiAgICAgICAgJ2Z1bmRzIG1heSBiZSBhdCByaXNrIGZvciB0aGVmdC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdTaG91bGQgSSB3cml0ZSBteSB3YWxsZXQgcGFzc3dvcmQgb24gbXkgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICAnTm8hIEJpdEdv4oCZcyBtdWx0aS1zaWduYXR1cmUgYXBwcm9hY2ggdG8gc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGVyZSBub3QgYmVpbmcgYSBzaW5nbGUgcG9pbnQgJyxcbiAgICAgICAgJ29mIGF0dGFjay4gQnV0IGlmIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGlzIG9uIHlvdXIgS2V5Q2FyZCwgdGhlbiBhbnlvbmUgd2hvIGdhaW5zIGFjY2VzcyB0byAnLFxuICAgICAgICBgeW91ciBLZXlDYXJkIHdpbGwgYmUgYWJsZSB0byBzdGVhbCB5b3VyICR7Y29pbn0uIFdlIHJlY29tbWVuZCBrZWVwaW5nIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGAsXG4gICAgICAgICdzYWZlIGluIGEgc2VjdXJlIHBhc3N3b3JkIG1hbmFnZXIgc3VjaCBhcyBMYXN0UGFzcywgMVBhc3N3b3JkIG9yIEtlZVBhc3MuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn07XG5cbmludGVyZmFjZSBHZXRLZXlEYXRhT3B0aW9ucyB7XG4gIGVuY3J5cHQ6IChwYXJhbXM6IHsgaW5wdXQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiBzdHJpbmc7XG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbiAgcGFzc3BocmFzZT86IHN0cmluZztcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgd2FsbGV0S2V5SUQ/OiBzdHJpbmc7XG4gIGJhY2t1cEtleUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbGxlY3QgYWxsIGRhdGEgd2hpY2ggd2lsbCBnbyBvbnRvIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRLZXlEYXRhKG9wdGlvbnM6IEdldEtleURhdGFPcHRpb25zKTogYW55IHtcbiAgY29uc3Qge1xuICAgIGVuY3J5cHQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIFdoZW4gdXNpbmcganVzdCAnZ2VuZXJhdGVXYWxsZXQnLCB3ZSBnZXQgYmFjayBhbiB1bmVuY3J5cHRlZCBwcnYgZm9yIHRoZSBiYWNrdXAga2V5Y2hhaW5cbiAgLy8gSWYgdGhlIHVzZXIgcGFzc2VzIGluIHRoZWlyIHBhc3NwaHJhc2UsIHdlIGNhbiBlbmNyeXB0IGl0XG4gIGlmIChiYWNrdXBLZXljaGFpbi5wcnYgJiYgcGFzc3BocmFzZSkge1xuICAgIGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydiA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IGJhY2t1cEtleWNoYWluLnBydixcbiAgICAgIHBhc3N3b3JkOiBwYXNzcGhyYXNlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSWYgd2UgaGF2ZSB0aGUgcGFzc2NvZGUgZW5jcnlwdGlvbiBjb2RlLCBjcmVhdGUgYSBib3ggRCB3aXRoIHRoZSBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZVxuICBsZXQgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGU7XG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFBERiBRUiBDb2RlIGRhdGFcbiAgY29uc3QgcXJEYXRhOiBhbnkgPSB7XG4gICAgdXNlcjoge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gICAgYmFja3VwOiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9LFxuICAgIGJpdGdvOiB7XG4gICAgICB0aXRsZTogJ0M6IEJpdEdvIFB1YmxpYyBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgdGhhdCBCaXRHbyB3aWxsIHVzZSB0byAnICtcbiAgICAgICAgJ2NvLXNpZ24gdHJhbnNhY3Rpb25zXFxyXFxud2l0aCB5b3Ugb24geW91ciB3YWxsZXQuJyxcbiAgICAgIGRhdGE6IGJpdGdvS2V5Y2hhaW4ucHViLFxuICAgIH0sXG4gICAgcGFzc2NvZGU6IHtcbiAgICAgIHRpdGxlOiAnRDogRW5jcnlwdGVkIFdhbGxldCBQYXNzd29yZCcsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB0aGUgd2FsbGV0ICBwYXNzd29yZCwgZW5jcnlwdGVkIGNsaWVudC1zaWRlICcgKyAnd2l0aCBhIGtleSBoZWxkIGJ5XFxyXFxuQml0R28uJyxcbiAgICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICAgIH0sXG4gIH07XG5cbiAgaWYgKHdhbGxldEtleUlEKSB7XG4gICAgcXJEYXRhLnVzZXIua2V5SUQgPSB3YWxsZXRLZXlJRDtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlJRCkge1xuICAgIHFyRGF0YS5iYWNrdXAua2V5SUQgPSBiYWNrdXBLZXlJRDtcbiAgfVxuXG4gIGlmIChpc1VuZGVmaW5lZCh1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIGtleSAtIHRoaXMgaXMgYSBjb2xkIHdhbGxldFxuICAgIHFyRGF0YS51c2VyLnRpdGxlID0gJ0E6IFByb3ZpZGVkIFVzZXIgS2V5JztcbiAgICBxckRhdGEudXNlci5kZXNjID0gJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nO1xuICAgIHFyRGF0YS51c2VyLmRhdGEgPSB1c2VyS2V5Y2hhaW4ucHViO1xuXG4gICAgLy8gVGhlIHVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIHB1YmxpYyBrZXksIHdlIGNhbiByZW1vdmUgYm94IERcbiAgICBkZWxldGUgcXJEYXRhLnBhc3Njb2RlO1xuICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKSkge1xuICAgIGRlbGV0ZSBxckRhdGEucGFzc2NvZGU7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKGJhY2t1cEtleWNoYWluLnByb3ZpZGVyKSkge1xuICAgIGNvbnN0IGJhY2t1cEtleVByb3ZpZGVyTmFtZSA9IGJhY2t1cEtleWNoYWluLnByb3ZpZGVyO1xuICAgIC8vIEJhY2t1cCBrZXkgaGVsZCB3aXRoIEtSU1xuICAgIHFyRGF0YS5iYWNrdXAgPSB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgYFRoaXMgaXMgdGhlIHB1YmxpYyBrZXkgaGVsZCBhdCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgYCwgYW4gJHtjb2luU2hvcnROYW1lfSByZWNvdmVyeSBzZXJ2aWNlLiBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgJyB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgc3VwcGxpZWQgdGhlIHhwdWJcbiAgICBxckRhdGEuYmFja3VwID0ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSBwdWJsaWMgcG9ydGlvbiBvZiB5b3VyIGJhY2t1cCBrZXksIHdoaWNoIHlvdSBwcm92aWRlZC4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRPcHRpb25zIGV4dGVuZHMgR2V0S2V5RGF0YU9wdGlvbnMge1xuICBqc1BERjogYW55O1xuICBRUkNvZGU6IGFueTtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xuICBhY3RpdmF0aW9uQ29kZTogc3RyaW5nO1xuICB3YWxsZXRMYWJlbDogc3RyaW5nO1xuICBjb2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERyYXcgYSBrZXljYXJkIGludG8gYSBuZXcgcGRmIGRvY3VtZW50IG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdLZXljYXJkKG9wdGlvbnM6IERyYXdLZXljYXJkT3B0aW9ucyk6IGFueSB7XG4gIGNvbnN0IHsganNQREYsIFFSQ29kZSwgY29pblNob3J0TmFtZSwgYWN0aXZhdGlvbkNvZGUsIHdhbGxldExhYmVsLCBjb2luTmFtZSB9ID0gb3B0aW9ucztcblxuICBjb25zdCBtYXJnaW4gPSAzMDtcblxuICBjb25zdCBmb250ID0ge1xuICAgIGhlYWRlcjogMjQsXG4gICAgc3ViaGVhZGVyOiAxNSxcbiAgICBib2R5OiAxMixcbiAgfTtcblxuICBjb25zdCBjb2xvciA9IHtcbiAgICBibGFjazogJyMwMDAwMDAnLFxuICAgIGRhcmtncmF5OiAnIzRjNGM0YycsXG4gICAgZ3JheTogJyM5YjliOWInLFxuICAgIHJlZDogJyNlMjFlMWUnLFxuICB9O1xuXG4gIC8vIGRvY3VtZW50IGRldGFpbHNcbiAgY29uc3Qgd2lkdGggPSA4LjUgKiA3MjtcbiAgbGV0IHkgPSAwO1xuXG4gIC8vIEhlbHBlcnMgZm9yIGRhdGEgZm9ybWF0dGluZyAvIHBvc2l0aW9uaW5nIG9uIHRoZSBwYXBlclxuICBjb25zdCBsZWZ0ID0gKHgpID0+IG1hcmdpbiArIHg7XG4gIGNvbnN0IG1vdmVEb3duID0gKHlEZWx0YSkgPT4ge1xuICAgIHkgKz0geURlbHRhO1xuICB9O1xuXG4gIGNvbnN0IGRvYyA9IG5ldyBqc1BERigncG9ydHJhaXQnLCAncHQnLCAnbGV0dGVyJyk7XG4gIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnKTtcblxuICAvLyBQREYgSGVhZGVyIEFyZWEgLSBpbmNsdWRlcyB0aGUgbG9nbyBhbmQgY29tcGFueSBuYW1lXG4gIC8vIFRoaXMgaXMgZGF0YSBmb3IgdGhlIEJpdEdvIGxvZ28gaW4gdGhlIHRvcCBsZWZ0IG9mIHRoZSBQREZcbiAgbW92ZURvd24oMzApO1xuXG4gIC8vIFdlIGRvbid0IGN1cnJlbnRseSBhZGQgYW4gaW1hZ2UsIHNpbmNlIHRoYXQgcGF0aCBpcyBkZXBlbmRlbnQgb24gQml0R28gZnJvbnRlbmRcbiAgLy8gZG9jLmFkZEltYWdlKGNvaW5VdGlsaXR5LmdldFNlbGVjdGVkQ29pbk9iaigpLmtleUNhcmRJbWFnZSwgbGVmdCgwKSwgeSArIDEwKTtcblxuICAvLyBBY3RpdmF0aW9uIENvZGVcbiAgbW92ZURvd24oOCk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoJ0FjdGl2YXRpb24gQ29kZScsIGxlZnQoNDYwKSwgeSk7XG5cbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICBtb3ZlRG93bigyNSk7XG4gIGRvYy50ZXh0KCdZb3VyIEJpdEdvIEtleUNhcmQnLCBsZWZ0KDE1MCksIHkpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoYWN0aXZhdGlvbkNvZGUudG9TdHJpbmcoKSwgbGVmdCg0NjApLCB5KTtcblxuICAvLyBTdWJoZWFkZXJcbiAgLy8gdGl0bGVzXG4gIG1vdmVEb3duKG1hcmdpbik7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoXG4gICAgYENyZWF0ZWQgb24gJHtuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpfSBieSAke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0gZm9yIHdhbGxldCBuYW1lZCAke3dhbGxldExhYmVsfWAsXG4gICAgbGVmdCgwKSxcbiAgICB5XG4gICk7XG4gIC8vIGNvcHlcbiAgbW92ZURvd24oMjUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KHdhbGxldExhYmVsLCBsZWZ0KDApLCB5KTtcbiAgLy8gUmVkIEJhclxuICBtb3ZlRG93bigyMCk7XG4gIGRvYy5zZXRGaWxsQ29sb3IoMjU1LCAyMzAsIDIzMCk7XG4gIGRvYy5yZWN0KGxlZnQoMCksIHksIHdpZHRoIC0gMiAqIG1hcmdpbiwgMzIsICdGJyk7XG5cbiAgLy8gd2FybmluZyBtZXNzYWdlXG4gIG1vdmVEb3duKDIwKTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLnJlZCk7XG4gIGRvYy50ZXh0KCdQcmludCB0aGlzIGRvY3VtZW50LCBvciBrZWVwIGl0IHNlY3VyZWx5IG9mZmxpbmUuIFNlZSBzZWNvbmQgcGFnZSBmb3IgRkFRLicsIGxlZnQoNzUpLCB5KTtcblxuICBjb25zdCB7XG4gICAgZW5jcnlwdCxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpcnN0IHBhZ2UgKHFyIGNvZGVzKVxuICBjb25zdCBrZXlEYXRhID0gZ2V0S2V5RGF0YSh7XG4gICAgZW5jcnlwdCxcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgfSk7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGZpcnN0IHBhZ2UncyBkYXRhIGZvciB0aGUgYmFja3VwIFBERlxuICBtb3ZlRG93bigzNSk7XG4gIGNvbnN0IHFyU2l6ZSA9IDEzMDtcblxuICAvLyBEcmF3IGVhY2ggQm94IHdpdGggUVIgY29kZSBhbmQgZGVzY3JpcHRpb25cbiAgT2JqZWN0LmtleXMoa2V5RGF0YSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5VHlwZSkge1xuICAgIGNvbnN0IGtleSA9IGtleURhdGFba2V5VHlwZV07XG4gICAgY29uc3QgdG9wWSA9IHk7XG5cbiAgICAvLyBEb24ndCBpbmRlbnQgaWYgd2UncmUgbm90IHByb2R1Y2luZyBRUiBjb2Rlc1xuICAgIGNvbnN0IHRleHRMZWZ0ID0gISFRUkNvZGUgPyBsZWZ0KHFyU2l6ZSArIDE1KSA6IGxlZnQoMTUpO1xuXG4gICAgLy8gRHJhdyBhIFFSIGNvZGUgaWYgbGlicmFyeSBpcyBhdmFpbGFibGVcbiAgICBpZiAoUVJDb2RlKSB7XG4gICAgICBjb25zdCBkYXRhVVJMID0gbmV3IFFSQ29kZSh7IHZhbHVlOiBrZXkuZGF0YSwgc2l6ZTogcXJTaXplIH0pLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xuICAgICAgZG9jLmFkZEltYWdlKGRhdGFVUkwsIGxlZnQoMCksIHksIHFyU2l6ZSwgcXJTaXplKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgbW92ZURvd24oMTApO1xuICAgIGRvYy50ZXh0KGtleS50aXRsZSwgdGV4dExlZnQsIHkpO1xuICAgIG1vdmVEb3duKDE1KTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZGFya2dyYXkpO1xuICAgIGRvYy50ZXh0KGtleS5kZXNjLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMzApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkgLSAyKTtcbiAgICBkb2MudGV4dCgnRGF0YTonLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMTUpO1xuICAgIGNvbnN0IGlubmVyV2lkdGggPSA3MiAqIDguNSAtIHRleHRMZWZ0IC0gMzA7XG4gICAgZG9jLnNldEZvbnQoJ2NvdXJpZXInKS5zZXRGb250U2l6ZSg5KS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGNvbnN0IGxpbmVzID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShrZXkuZGF0YSwgaW5uZXJXaWR0aCk7XG4gICAgZG9jLnRleHQobGluZXMsIHRleHRMZWZ0LCB5KTtcblxuICAgIC8vIEFkZCBrZXkgSUQgKGRlcml2YXRpb24gc3RyaW5nKSBpZiBpdCBleGlzdHNcbiAgICBpZiAoa2V5LmtleUlEKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gJ0tleSBJZDogJyArIGtleS5rZXlJRDtcbiAgICAgIC8vIEdyYXkgYmFyXG4gICAgICBtb3ZlRG93big0NSk7XG4gICAgICBkb2Muc2V0RmlsbENvbG9yKDI0NywgMjQ5LCAyNDkpOyAvLyBHcmF5IGJhY2tncm91bmRcbiAgICAgIGRvYy5zZXREcmF3Q29sb3IoMCwgMCwgMCk7IC8vIEJvcmRlclxuICAgICAgZG9jLnJlY3QodGV4dExlZnQsIHksIHdpZHRoLCAxNSwgJ0ZEJyk7XG5cbiAgICAgIGRvYy50ZXh0KHRleHQsIHRleHRMZWZ0ICsgNSwgeSArIDEwKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJyk7XG4gICAgLy8gTW92ZSBkb3duIHRoZSBzaXplIG9mIHRoZSBRUiBjb2RlIG1pbnVzIGFjY3VtdWxhdGVkIGhlaWdodCBvbiB0aGUgcmlnaHQgc2lkZSwgcGx1cyBidWZmZXJcbiAgICBtb3ZlRG93bihxclNpemUgLSAoeSAtIHRvcFkpICsgMTUpO1xuICB9KTtcblxuICAvLyBBZGQgYSBuZXcgcGFnZSAoUSArIEEgcGFnZSlcbiAgZG9jLmFkZFBhZ2UoKTtcblxuICAvLyAybmQgcGFnZSB0aXRsZVxuICB5ID0gMDtcbiAgbW92ZURvd24oNTUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KCdCaXRHbyBLZXlDYXJkIEZBUScsIGxlZnQoMCksIHkpO1xuXG4gIGNvbnN0IHF1ZXN0aW9ucyA9IGdlbmVyYXRlUXVlc3Rpb25zKGNvaW5OYW1lKTtcblxuICAvLyBEcmF3IHRoZSBRICsgQSBkYXRhIG9uIHRoZSBzZWNvbmQgcGFnZVxuICBtb3ZlRG93bigzMCk7XG4gIHF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChxKSB7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGRvYy50ZXh0KHEucSwgbGVmdCgwKSwgeSk7XG4gICAgbW92ZURvd24oMjApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5kYXJrZ3JheSk7XG4gICAgcS5hLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGRvYy50ZXh0KGxpbmUsIGxlZnQoMCksIHkpO1xuICAgICAgbW92ZURvd24oZm9udC5ib2R5ICsgMyk7XG4gICAgfSk7XG4gICAgbW92ZURvd24oMjIpO1xuICB9KTtcblxuICByZXR1cm4gZG9jO1xufVxuIl19
296
+ /**
297
+ * Draw a keycard into a new pdf document object.
298
+ *
299
+ * `encryptionVersion` applies to the backup key. Box D uses its fixed version.
300
+ * @param options
301
+ */
302
+ async function drawKeycard(options) {
303
+ const { encrypt, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, userKeychain, bitgoKeychain, backupKeychain, coinShortName, jsPDF, QRCode, activationCode, walletLabel, coinName, encryptionVersion, } = options;
304
+ // Get the data for the first page (qr codes)
305
+ const keyData = await getKeyData({
306
+ encrypt,
307
+ coinShortName,
308
+ passphrase,
309
+ passcodeEncryptionCode,
310
+ walletKeyID,
311
+ backupKeyID,
312
+ userKeychain,
313
+ bitgoKeychain,
314
+ backupKeychain,
315
+ encryptionVersion,
316
+ });
317
+ return renderKeycardPdf({ jsPDF, QRCode, activationCode, walletLabel, coinName }, keyData);
318
+ }
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUEwWEgsa0NBa0NDO0FBMVpEO0dBQ0c7QUFDSCxtQ0FBcUM7QUFFckMsbUNBQStGO0FBRS9GOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUN6QyxPQUFPO1FBQ0w7WUFDRSxDQUFDLEVBQUUsc0JBQXNCO1lBQ3pCLENBQUMsRUFBRTtnQkFDRCwrRUFBK0UsSUFBSSxHQUFHO2dCQUN0RiwyREFBMkQsR0FBRyxnQ0FBZ0M7Z0JBQzlGLHVGQUF1RjthQUN4RjtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsMkJBQTJCO1lBQzlCLENBQUMsRUFBRTtnQkFDRCwrRkFBK0Y7Z0JBQy9GLG1HQUFtRztnQkFDbkcsZ0RBQWdEO2dCQUNoRCxFQUFFO2dCQUNGLDZGQUE2RjtnQkFDN0YsK0ZBQStGO2dCQUMvRixzREFBc0Q7YUFDdkQ7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLGdDQUFnQztZQUNuQyxDQUFDLEVBQUU7Z0JBQ0QsZ0VBQWdFLElBQUksMkJBQTJCO2dCQUMvRiwrRkFBK0Y7Z0JBQy9GLHVDQUF1QztnQkFDdkMsMENBQTBDO2FBQzNDO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSxrQ0FBa0M7WUFDckMsQ0FBQyxFQUFFO2dCQUNELGtHQUFrRztnQkFDbEcsdUZBQXVGO2dCQUN2RixzRkFBc0Y7Z0JBQ3RGLDZGQUE2RjtnQkFDN0YsK0NBQStDO2FBQ2hEO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSw4Q0FBOEM7WUFDakQsQ0FBQyxFQUFFO2dCQUNELHdGQUF3RjtnQkFDeEYsNkZBQTZGO2FBQzlGO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSw0REFBNEQ7WUFDL0QsQ0FBQyxFQUFFO2dCQUNELG9GQUFv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QUN0QixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7UUFDWixhQUFhO1FBQ2IsY0FBYztRQUNkLGlCQUFpQjtLQUNsQixDQUFDLENBQUM7SUFFSCxPQUFPLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBoaWRkZW5cbiAqL1xuXG4vKipcbiAqL1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgS2V5Y2hhaW4gfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBFbmNyeXB0Rm5Bc3luYywgRW5jcnlwdGlvblZlcnNpb24sIEhJR0hfRU5UUk9QWV9FTkNSWVBUSU9OX1ZFUlNJT04gfSBmcm9tICcuLi8uLi9hcGknO1xuXG4vKipcbiAqIFJldHVybiB0aGUgbGlzdCBvZiBxdWVzdGlvbnMgdGhhdCB3aWxsIGFwcGVhciBvbiB0aGUgc2Vjb25kIHBhZ2Ugb2YgdGhlIGtleWNhcmRcbiAqIEBwYXJhbSBjb2luIG5hbWUgb2YgdGhlIGNvaW5cbiAqL1xuY29uc3QgZ2VuZXJhdGVRdWVzdGlvbnMgPSAoY29pbjogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcTogJ1doYXQgaXMgdGhlIEtleUNhcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgYFRoZSBLZXlDYXJkIGNvbnRhaW5zIGltcG9ydGFudCBpbmZvcm1hdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0byByZWNvdmVyIHRoZSAke2NvaW59IGAsXG4gICAgICAgICdmcm9tIHlvdXIgd2FsbGV0IGluIHNldmVyYWwgc2l0dWF0aW9ucy4gRWFjaCBCaXRHbyB3YWxsZXQnICsgJyBoYXMgaXRzIG93biwgdW5pcXVlIEtleUNhcmQuICcsXG4gICAgICAgICdJZiB5b3UgaGF2ZSBjcmVhdGVkIG11bHRpcGxlIHdhbGxldHMsIHlvdSBzaG91bGQgcmV0YWluIHRoZSBLZXlDYXJkIGZvciBlYWNoIG9mIHRoZW0uJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnV2hhdCBzaG91bGQgSSBkbyB3aXRoIGl0PycsXG4gICAgICBhOiBbXG4gICAgICAgICdZb3Ugc2hvdWxkIHByaW50IHRoZSBLZXlDYXJkIGFuZC9vciBzYXZlIHRoZSBQREYgdG8gYW4gb2ZmbGluZSBzdG9yYWdlIGRldmljZS4gVGhlIHByaW50LW91dCAnLFxuICAgICAgICBcIm9yIFVTQiBzdGljayBzaG91bGQgYmUga2VwdCBpbiBhIHNhZmUgcGxhY2UsIHN1Y2ggYXMgYSBiYW5rIHZhdWx0IG9yIGhvbWUgc2FmZS4gSXQncyBhIGdvb2QgaWRlYSBcIixcbiAgICAgICAgJ3RvIGtlZXAgYSBzZWNvbmQgY29weSBpbiBhIGRpZmZlcmVudCBsb2NhdGlvbi4nLFxuICAgICAgICAnJyxcbiAgICAgICAgXCJJbXBvcnRhbnQ6IElmIHlvdSBoYXZlbid0IHByb3ZpZGVkIGFuIGV4dGVybmFsIGJhY2t1cCBrZXksIHRoZW4gdGhlIG9yaWdpbmFsIFBERiBzaG91bGQgYmUgXCIsXG4gICAgICAgICdkZWxldGVkIGZyb20gYW55IG1hY2hpbmUgd2hlcmUgdGhlIHdhbGxldCB3aWxsIGJlIHJlZ3VsYXJseSBhY2Nlc3NlZCB0byBwcmV2ZW50IG1hbHdhcmUgZnJvbSAnLFxuICAgICAgICAnY2FwdHVyaW5nIGJvdGggdGhlIEtleUNhcmQgYW5kIHlvdXIgd2FsbGV0IHBhc3Njb2RlLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgc2hvdWxkIEkgZG8gaWYgSSBsb3NlIGl0PycsXG4gICAgICBhOiBbXG4gICAgICAgIGBJZiB5b3UgaGF2ZSBsb3N0IG9yIGRhbWFnZWQgYWxsIGNvcGllcyBvZiB5b3VyIEtleUNhcmQsIHlvdXIgJHtjb2lufSBpcyBzdGlsbCBzYWZlLCBidXQgdGhpcyBgLFxuICAgICAgICAnd2FsbGV0IHNob3VsZCBiZSBjb25zaWRlcmVkIGF0IHJpc2sgZm9yIGxvc3MuIEFzIHNvb24gYXMgaXMgY29udmVuaWVudCwgeW91IHNob3VsZCB1c2UgQml0R28gJyxcbiAgICAgICAgJ3RvIGVtcHR5IHRoZSB3YWxsZXQgaW50byBhIG5ldyB3YWxsZXQnLFxuICAgICAgICAnLCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgaWYgc29tZW9uZSBzZWVzIG15IEtleUNhcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgXCJEb24ndCBwYW5pYyEgQWxsIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgS2V5Q2FyZCBpcyBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLCBvciB3aXRoIGFcIixcbiAgICAgICAgJ2tleSB3aGljaCBvbmx5IEJpdEdvIGhhcy4gQnV0LCBpbiBnZW5lcmFsLCB5b3Ugc2hvdWxkIG1ha2UgYmVzdCBlZmZvcnRzIHRvIGtlZXAgeW91ciAnLFxuICAgICAgICAnS2V5Q2FyZCBwcml2YXRlLiBJZiB5b3VyIEtleUNhcmQgZG9lcyBnZXQgZXhwb3NlZCBvciBjb3BpZWQgaW4gYSB3YXkgdGhhdCBtYWtlcyB5b3UgJyxcbiAgICAgICAgJ3VuY29tZm9ydGFibGUsIHRoZSBiZXN0IGNvdXJzZSBvZiBhY3Rpb24gaXMgdG8gZW1wdHkgdGhlIGNvcnJlc3BvbmRpbmcgd2FsbGV0IGludG8gYW5vdGhlciAnLFxuICAgICAgICAnd2FsbGV0IGFuZCBkaXNjb250aW51ZSB1c2Ugb2YgdGhlIG9sZCB3YWxsZXQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnV2hhdCBpZiBJIGZvcmdldCBvciBsb3NlIG15IHdhbGxldCBwYXNzd29yZD8nLFxuICAgICAgYTogW1xuICAgICAgICAnQml0R28gY2FuIHVzZSB0aGUgaW5mb3JtYXRpb24gaW4gUVIgQ29kZSBEIHRvIGhlbHAgeW91IHJlY292ZXIgYWNjZXNzIHRvIHlvdXIgd2FsbGV0LiAnLFxuICAgICAgICAnV2l0aG91dCB0aGUgS2V5Q2FyZCwgQml0R28gaXMgbm90IGFibGUgdG8gcmVjb3ZlciBmdW5kcyBmcm9tIGEgd2FsbGV0IHdpdGggYSBsb3N0IHBhc3N3b3JkLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgaWYgQml0R28gYmVjb21lcyBpbmFjY2Vzc2libGUgZm9yIGFuIGV4dGVuZGVkIHBlcmlvZD8nLFxuICAgICAgYTogW1xuICAgICAgICAnWW91ciBLZXlDYXJkIGFuZCB3YWxsZXQgcGFzc2NvZGUgY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBCaXRHb+KAmXMgcHVibGlzaGVkIG9wZW4gJyxcbiAgICAgICAgYHNvdXJjZSB0b29scyBhdCBodHRwczovL2dpdGh1Yi5jb20vYml0Z28gdG8gcmVjb3ZlciB5b3VyICR7Y29pbn0uIE5vdGU6IFlvdSBzaG91bGQgbmV2ZXIgZW50ZXIgYCxcbiAgICAgICAgJ2luZm9ybWF0aW9uIGZyb20geW91ciBLZXlDYXJkIGludG8gdG9vbHMgb3RoZXIgdGhhbiB0aGUgdG9vbHMgQml0R28gaGFzIHB1Ymxpc2hlZCwgb3IgeW91ciAnLFxuICAgICAgICAnZnVuZHMgbWF5IGJlIGF0IHJpc2sgZm9yIHRoZWZ0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1Nob3VsZCBJIHdyaXRlIG15IHdhbGxldCBwYXNzd29yZCBvbiBteSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgICdObyEgQml0R2/igJlzIG11bHRpLXNpZ25hdHVyZSBhcHByb2FjaCB0byBzZWN1cml0eSBkZXBlbmRzIG9uIHRoZXJlIG5vdCBiZWluZyBhIHNpbmdsZSBwb2ludCAnLFxuICAgICAgICAnb2YgYXR0YWNrLiBCdXQgaWYgeW91ciB3YWxsZXQgcGFzc3dvcmQgaXMgb24geW91ciBLZXlDYXJkLCB0aGVuIGFueW9uZSB3aG8gZ2FpbnMgYWNjZXNzIHRvICcsXG4gICAgICAgIGB5b3VyIEtleUNhcmQgd2lsbCBiZSBhYmxlIHRvIHN0ZWFsIHlvdXIgJHtjb2lufS4gV2UgcmVjb21tZW5kIGtlZXBpbmcgeW91ciB3YWxsZXQgcGFzc3dvcmQgYCxcbiAgICAgICAgJ3NhZmUgaW4gYSBzZWN1cmUgcGFzc3dvcmQgbWFuYWdlciBzdWNoIGFzIExhc3RQYXNzLCAxUGFzc3dvcmQgb3IgS2VlUGFzcy4nLFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xufTtcblxuaW50ZXJmYWNlIEdldEtleURhdGFPcHRpb25zIHtcbiAgZW5jcnlwdDogRW5jcnlwdEZuQXN5bmM7XG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbiAgcGFzc3BocmFzZT86IHN0cmluZztcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgd2FsbGV0S2V5SUQ/OiBzdHJpbmc7XG4gIGJhY2t1cEtleUlEPzogc3RyaW5nO1xuICBlbmNyeXB0aW9uVmVyc2lvbj86IEVuY3J5cHRpb25WZXJzaW9uO1xufVxuXG5pbnRlcmZhY2UgQnVpbGRLZXljYXJkUXJEYXRhT3B0aW9ucyB7XG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbiAgd2FsbGV0S2V5SUQ/OiBzdHJpbmc7XG4gIGJhY2t1cEtleUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEJ1aWxkIFFSIGNvZGUgcGF5bG9hZCBmb3IgZWFjaCBrZXljYXJkIGJveC4gRG9lcyBub3QgcGVyZm9ybSBlbmNyeXB0aW9uLlxuICovXG5mdW5jdGlvbiBidWlsZEtleWNhcmRRckRhdGEob3B0aW9uczogQnVpbGRLZXljYXJkUXJEYXRhT3B0aW9ucywgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGFueSB7XG4gIGNvbnN0IHsgdXNlcktleWNoYWluLCBiaXRnb0tleWNoYWluLCBiYWNrdXBLZXljaGFpbiwgY29pblNob3J0TmFtZSwgd2FsbGV0S2V5SUQsIGJhY2t1cEtleUlEIH0gPSBvcHRpb25zO1xuXG4gIC8vIFBERiBRUiBDb2RlIGRhdGFcbiAgY29uc3QgcXJEYXRhOiBhbnkgPSB7XG4gICAgdXNlcjoge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gICAgYmFja3VwOiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9LFxuICAgIGJpdGdvOiB7XG4gICAgICB0aXRsZTogJ0M6IEJpdEdvIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB0aGUgcHVibGljIHBhcnQgb2YgdGhlIGtleSBoZWxkIGJ5IEJpdEdvLicsXG4gICAgICBkYXRhOiBiaXRnb0tleWNoYWluLnB1YixcbiAgICB9LFxuICAgIHBhc3Njb2RlOiB7XG4gICAgICB0aXRsZTogJ0Q6IEVuY3J5cHRlZCBXYWxsZXQgUGFzc3dvcmQnLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgdGhlIHdhbGxldCBwYXNzd29yZCwgZW5jcnlwdGVkIGNsaWVudC1zaWRlICcgKyAnd2l0aCBhIGtleSBoZWxkIGJ5XFxyXFxuQml0R28uJyxcbiAgICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICAgIH0sXG4gIH07XG5cbiAgaWYgKHdhbGxldEtleUlEKSB7XG4gICAgcXJEYXRhLnVzZXIua2V5SUQgPSB3YWxsZXRLZXlJRDtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlJRCkge1xuICAgIHFyRGF0YS5iYWNrdXAua2V5SUQgPSBiYWNrdXBLZXlJRDtcbiAgfVxuXG4gIGlmIChpc1VuZGVmaW5lZCh1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIGtleSAtIHRoaXMgaXMgYSBjb2xkIHdhbGxldFxuICAgIHFyRGF0YS51c2VyLnRpdGxlID0gJ0E6IFByb3ZpZGVkIFVzZXIgS2V5JztcbiAgICBxckRhdGEudXNlci5kZXNjID0gJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nO1xuICAgIHFyRGF0YS51c2VyLmRhdGEgPSB1c2VyS2V5Y2hhaW4ucHViO1xuXG4gICAgLy8gVGhlIHVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIHB1YmxpYyBrZXksIHdlIGNhbiByZW1vdmUgYm94IERcbiAgICBkZWxldGUgcXJEYXRhLnBhc3Njb2RlO1xuICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKSkge1xuICAgIGRlbGV0ZSBxckRhdGEucGFzc2NvZGU7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKGJhY2t1cEtleWNoYWluLnByb3ZpZGVyKSkge1xuICAgIGNvbnN0IGJhY2t1cEtleVByb3ZpZGVyTmFtZSA9IGJhY2t1cEtleWNoYWluLnByb3ZpZGVyO1xuICAgIC8vIEJhY2t1cCBrZXkgaGVsZCB3aXRoIEtSU1xuICAgIHFyRGF0YS5iYWNrdXAgPSB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgYFRoaXMgaXMgdGhlIHB1YmxpYyBrZXkgaGVsZCBhdCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgYCwgYW4gJHtjb2luU2hvcnROYW1lfSByZWNvdmVyeSBzZXJ2aWNlLiBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgJyB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgc3VwcGxpZWQgdGhlIHhwdWJcbiAgICBxckRhdGEuYmFja3VwID0ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSBwdWJsaWMgcG9ydGlvbiBvZiB5b3VyIGJhY2t1cCBrZXksIHdoaWNoIHlvdSBwcm92aWRlZC4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG4vKipcbiAqIENvbGxlY3QgYWxsIGRhdGEgd2hpY2ggd2lsbCBnbyBvbnRvIHRoZSBrZXljYXJkLlxuICogU2VxdWVudGlhbCBlbmNyeXB0OiBiYWNrdXAga2V5IGZpcnN0LCB0aGVuIHBhc3Njb2RlLlxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0S2V5RGF0YShvcHRpb25zOiBHZXRLZXlEYXRhT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gIGNvbnN0IHsgZW5jcnlwdCwgYmFja3VwS2V5Y2hhaW4sIHBhc3NwaHJhc2UsIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIGVuY3J5cHRpb25WZXJzaW9uLCAuLi5xck9wdGlvbnMgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGJhY2t1cEtleWNoYWluLnBydiAmJiBwYXNzcGhyYXNlKSB7XG4gICAgYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2ID0gYXdhaXQgZW5jcnlwdCh7XG4gICAgICBpbnB1dDogYmFja3VwS2V5Y2hhaW4ucHJ2LFxuICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIGxldCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAocGFzc3BocmFzZSAmJiBwYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgLy8gQm94IEQgdXNlcyBpdHMgZml4ZWQgdmVyc2lvbjsgdGhlIGJhY2t1cCBrZXkgZm9sbG93cyBlbmNyeXB0aW9uVmVyc2lvbi5cbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGF3YWl0IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiBISUdIX0VOVFJPUFlfRU5DUllQVElPTl9WRVJTSU9OLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkS2V5Y2FyZFFyRGF0YSh7IC4uLnFyT3B0aW9ucywgYmFja3VwS2V5Y2hhaW4gfSwgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUpO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRMYXlvdXRPcHRpb25zIHtcbiAganNQREY6IGFueTtcbiAgUVJDb2RlOiBhbnk7XG4gIGFjdGl2YXRpb25Db2RlOiBzdHJpbmc7XG4gIHdhbGxldExhYmVsOiBzdHJpbmc7XG4gIGNvaW5OYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJhd0tleWNhcmRPcHRpb25zIGV4dGVuZHMgR2V0S2V5RGF0YU9wdGlvbnMsIERyYXdLZXljYXJkTGF5b3V0T3B0aW9ucyB7XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbn1cblxuLyoqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgRHJhd0tleWNhcmRPcHRpb25zfS4gYGRyYXdLZXljYXJkYCBpcyBub3cgYXN5bmMgYnkgZGVmYXVsdC4gKi9cbmV4cG9ydCB0eXBlIERyYXdLZXljYXJkQXN5bmNPcHRpb25zID0gRHJhd0tleWNhcmRPcHRpb25zO1xuXG4vKipcbiAqIFJlbmRlciBrZXljYXJkIFBERiBwYWdlcyBmcm9tIHByZS1idWlsdCBRUiBkYXRhLlxuICovXG5mdW5jdGlvbiByZW5kZXJLZXljYXJkUGRmKG9wdGlvbnM6IERyYXdLZXljYXJkTGF5b3V0T3B0aW9ucywga2V5RGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgeyBqc1BERiwgUVJDb2RlLCBhY3RpdmF0aW9uQ29kZSwgd2FsbGV0TGFiZWwsIGNvaW5OYW1lIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IG1hcmdpbiA9IDMwO1xuXG4gIGNvbnN0IGZvbnQgPSB7XG4gICAgaGVhZGVyOiAyNCxcbiAgICBzdWJoZWFkZXI6IDE1LFxuICAgIGJvZHk6IDEyLFxuICB9O1xuXG4gIGNvbnN0IGNvbG9yID0ge1xuICAgIGJsYWNrOiAnIzAwMDAwMCcsXG4gICAgZGFya2dyYXk6ICcjNGM0YzRjJyxcbiAgICBncmF5OiAnIzliOWI5YicsXG4gICAgcmVkOiAnI2UyMWUxZScsXG4gIH07XG5cbiAgLy8gZG9jdW1lbnQgZGV0YWlsc1xuICBjb25zdCB3aWR0aCA9IDguNSAqIDcyO1xuICBsZXQgeSA9IDA7XG5cbiAgLy8gSGVscGVycyBmb3IgZGF0YSBmb3JtYXR0aW5nIC8gcG9zaXRpb25pbmcgb24gdGhlIHBhcGVyXG4gIGNvbnN0IGxlZnQgPSAoeCkgPT4gbWFyZ2luICsgeDtcbiAgY29uc3QgbW92ZURvd24gPSAoeURlbHRhKSA9PiB7XG4gICAgeSArPSB5RGVsdGE7XG4gIH07XG5cbiAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdwb3J0cmFpdCcsICdwdCcsICdsZXR0ZXInKTtcbiAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScpO1xuXG4gIC8vIFBERiBIZWFkZXIgQXJlYSAtIGluY2x1ZGVzIHRoZSBsb2dvIGFuZCBjb21wYW55IG5hbWVcbiAgLy8gVGhpcyBpcyBkYXRhIGZvciB0aGUgQml0R28gbG9nbyBpbiB0aGUgdG9wIGxlZnQgb2YgdGhlIFBERlxuICBtb3ZlRG93bigzMCk7XG5cbiAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGFkZCBhbiBpbWFnZSwgc2luY2UgdGhhdCBwYXRoIGlzIGRlcGVuZGVudCBvbiBCaXRHbyBmcm9udGVuZFxuICAvLyBkb2MuYWRkSW1hZ2UoY29pblV0aWxpdHkuZ2V0U2VsZWN0ZWRDb2luT2JqKCkua2V5Q2FyZEltYWdlLCBsZWZ0KDApLCB5ICsgMTApO1xuXG4gIC8vIEFjdGl2YXRpb24gQ29kZVxuICBtb3ZlRG93big4KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dCgnQWN0aXZhdGlvbiBDb2RlJywgbGVmdCg0NjApLCB5KTtcblxuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIG1vdmVEb3duKDI1KTtcbiAgZG9jLnRleHQoJ1lvdXIgQml0R28gS2V5Q2FyZCcsIGxlZnQoMTUwKSwgeSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dChhY3RpdmF0aW9uQ29kZS50b1N0cmluZygpLCBsZWZ0KDQ2MCksIHkpO1xuXG4gIC8vIFN1YmhlYWRlclxuICAvLyB0aXRsZXNcbiAgbW92ZURvd24obWFyZ2luKTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dChcbiAgICBgQ3JlYXRlZCBvbiAke25ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCl9IGJ5ICR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSBmb3Igd2FsbGV0IG5hbWVkICR7d2FsbGV0TGFiZWx9YCxcbiAgICBsZWZ0KDApLFxuICAgIHlcbiAgKTtcbiAgLy8gY29weVxuICBtb3ZlRG93bigyNSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgZG9jLnRleHQod2FsbGV0TGFiZWwsIGxlZnQoMCksIHkpO1xuICAvLyBSZWQgQmFyXG4gIG1vdmVEb3duKDIwKTtcbiAgZG9jLnNldEZpbGxDb2xvcigyNTUsIDIzMCwgMjMwKTtcbiAgZG9jLnJlY3QobGVmdCgwKSwgeSwgd2lkdGggLSAyICogbWFyZ2luLCAzMiwgJ0YnKTtcblxuICAvLyB3YXJuaW5nIG1lc3NhZ2VcbiAgbW92ZURvd24oMjApO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IucmVkKTtcbiAgZG9jLnRleHQoJ1ByaW50IHRoaXMgZG9jdW1lbnQsIG9yIGtlZXAgaXQgc2VjdXJlbHkgb2ZmbGluZS4gU2VlIHNlY29uZCBwYWdlIGZvciBGQVEuJywgbGVmdCg3NSksIHkpO1xuXG4gIG1vdmVEb3duKDM1KTtcbiAgY29uc3QgcXJTaXplID0gMTMwO1xuXG4gIC8vIERyYXcgZWFjaCBCb3ggd2l0aCBRUiBjb2RlIGFuZCBkZXNjcmlwdGlvblxuICBPYmplY3Qua2V5cyhrZXlEYXRhKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlUeXBlKSB7XG4gICAgY29uc3Qga2V5ID0ga2V5RGF0YVtrZXlUeXBlXTtcbiAgICBjb25zdCB0b3BZID0geTtcblxuICAgIC8vIERvbid0IGluZGVudCBpZiB3ZSdyZSBub3QgcHJvZHVjaW5nIFFSIGNvZGVzXG4gICAgY29uc3QgdGV4dExlZnQgPSAhIVFSQ29kZSA/IGxlZnQocXJTaXplICsgMTUpIDogbGVmdCgxNSk7XG5cbiAgICAvLyBEcmF3IGEgUVIgY29kZSBpZiBsaWJyYXJ5IGlzIGF2YWlsYWJsZVxuICAgIGlmIChRUkNvZGUpIHtcbiAgICAgIGNvbnN0IGRhdGFVUkwgPSBuZXcgUVJDb2RlKHsgdmFsdWU6IGtleS5kYXRhLCBzaXplOiBxclNpemUgfSkudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG4gICAgICBkb2MuYWRkSW1hZ2UoZGF0YVVSTCwgbGVmdCgwKSwgeSwgcXJTaXplLCBxclNpemUpO1xuICAgIH1cblxuICAgIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICBtb3ZlRG93bigxMCk7XG4gICAgZG9jLnRleHQoa2V5LnRpdGxlLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMTUpO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5kYXJrZ3JheSk7XG4gICAgZG9jLnRleHQoa2V5LmRlc2MsIHRleHRMZWZ0LCB5KTtcbiAgICBtb3ZlRG93bigzMCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSAtIDIpO1xuICAgIGRvYy50ZXh0KCdEYXRhOicsIHRleHRMZWZ0LCB5KTtcbiAgICBtb3ZlRG93bigxNSk7XG4gICAgY29uc3QgaW5uZXJXaWR0aCA9IDcyICogOC41IC0gdGV4dExlZnQgLSAzMDtcbiAgICBkb2Muc2V0Rm9udCgnY291cmllcicpLnNldEZvbnRTaXplKDkpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgY29uc3QgbGluZXMgPSBkb2Muc3BsaXRUZXh0VG9TaXplKGtleS5kYXRhLCBpbm5lcldpZHRoKTtcbiAgICBkb2MudGV4dChsaW5lcywgdGV4dExlZnQsIHkpO1xuXG4gICAgLy8gQWRkIGtleSBJRCAoZGVyaXZhdGlvbiBzdHJpbmcpIGlmIGl0IGV4aXN0c1xuICAgIGlmIChrZXkua2V5SUQpIHtcbiAgICAgIGNvbnN0IHRleHQgPSAnS2V5IElkOiAnICsga2V5LmtleUlEO1xuICAgICAgLy8gR3JheSBiYXJcbiAgICAgIG1vdmVEb3duKDQ1KTtcbiAgICAgIGRvYy5zZXRGaWxsQ29sb3IoMjQ3LCAyNDksIDI0OSk7IC8vIEdyYXkgYmFja2dyb3VuZFxuICAgICAgZG9jLnNldERyYXdDb2xvcigwLCAwLCAwKTsgLy8gQm9yZGVyXG4gICAgICBkb2MucmVjdCh0ZXh0TGVmdCwgeSwgd2lkdGgsIDE1LCAnRkQnKTtcblxuICAgICAgZG9jLnRleHQodGV4dCwgdGV4dExlZnQgKyA1LCB5ICsgMTApO1xuICAgIH1cblxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnKTtcbiAgICAvLyBNb3ZlIGRvd24gdGhlIHNpemUgb2YgdGhlIFFSIGNvZGUgbWludXMgYWNjdW11bGF0ZWQgaGVpZ2h0IG9uIHRoZSByaWdodCBzaWRlLCBwbHVzIGJ1ZmZlclxuICAgIG1vdmVEb3duKHFyU2l6ZSAtICh5IC0gdG9wWSkgKyAxNSk7XG4gIH0pO1xuXG4gIC8vIEFkZCBhIG5ldyBwYWdlIChRICsgQSBwYWdlKVxuICBkb2MuYWRkUGFnZSgpO1xuXG4gIC8vIDJuZCBwYWdlIHRpdGxlXG4gIHkgPSAwO1xuICBtb3ZlRG93big1NSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgZG9jLnRleHQoJ0JpdEdvIEtleUNhcmQgRkFRJywgbGVmdCgwKSwgeSk7XG5cbiAgY29uc3QgcXVlc3Rpb25zID0gZ2VuZXJhdGVRdWVzdGlvbnMoY29pbk5hbWUpO1xuXG4gIC8vIERyYXcgdGhlIFEgKyBBIGRhdGEgb24gdGhlIHNlY29uZCBwYWdlXG4gIG1vdmVEb3duKDMwKTtcbiAgcXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24gKHEpIHtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgZG9jLnRleHQocS5xLCBsZWZ0KDApLCB5KTtcbiAgICBtb3ZlRG93bigyMCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmRhcmtncmF5KTtcbiAgICBxLmEuZm9yRWFjaChmdW5jdGlvbiAobGluZSkge1xuICAgICAgZG9jLnRleHQobGluZSwgbGVmdCgwKSwgeSk7XG4gICAgICBtb3ZlRG93bihmb250LmJvZHkgKyAzKTtcbiAgICB9KTtcbiAgICBtb3ZlRG93bigyMik7XG4gIH0pO1xuXG4gIHJldHVybiBkb2M7XG59XG5cbi8qKlxuICogRHJhdyBhIGtleWNhcmQgaW50byBhIG5ldyBwZGYgZG9jdW1lbnQgb2JqZWN0LlxuICpcbiAqIGBlbmNyeXB0aW9uVmVyc2lvbmAgYXBwbGllcyB0byB0aGUgYmFja3VwIGtleS4gQm94IEQgdXNlcyBpdHMgZml4ZWQgdmVyc2lvbi5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkcmF3S2V5Y2FyZChvcHRpb25zOiBEcmF3S2V5Y2FyZE9wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICBjb25zdCB7XG4gICAgZW5jcnlwdCxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBqc1BERixcbiAgICBRUkNvZGUsXG4gICAgYWN0aXZhdGlvbkNvZGUsXG4gICAgd2FsbGV0TGFiZWwsXG4gICAgY29pbk5hbWUsXG4gICAgZW5jcnlwdGlvblZlcnNpb24sXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpcnN0IHBhZ2UgKHFyIGNvZGVzKVxuICBjb25zdCBrZXlEYXRhID0gYXdhaXQgZ2V0S2V5RGF0YSh7XG4gICAgZW5jcnlwdCxcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgfSk7XG5cbiAgcmV0dXJuIHJlbmRlcktleWNhcmRQZGYoeyBqc1BERiwgUVJDb2RlLCBhY3RpdmF0aW9uQ29kZSwgd2FsbGV0TGFiZWwsIGNvaW5OYW1lIH0sIGtleURhdGEpO1xufVxuIl19
@@ -0,0 +1,14 @@
1
+ import { BitGoBase } from '../bitgoBase';
2
+ import { OptionalKeychainEncryptedKey } from './iKeychains';
3
+ /**
4
+ * Decrypts the private key of a keychain (supports v1 and v2 envelopes).
5
+ * This method will try the password against the traditional encryptedPrv,
6
+ * and any webauthn device encryptedPrvs.
7
+ * Auto-detects v1 (SJCL) and v2 (Argon2id) envelopes.
8
+ *
9
+ * @param bitgo
10
+ * @param keychain
11
+ * @param password
12
+ */
13
+ export declare function decryptKeychainPrivateKey(bitgo: BitGoBase, keychain: OptionalKeychainEncryptedKey, password: string): Promise<string | undefined>;
14
+ //# 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;AAc5D;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,4BAA4B,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS7B"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decryptKeychainPrivateKey = decryptKeychainPrivateKey;
4
+ const utils_1 = require("../utils");
5
+ async function maybeDecrypt(bitgo, input, password) {
6
+ try {
7
+ return await bitgo.decrypt({
8
+ input,
9
+ password,
10
+ });
11
+ }
12
+ catch (_e) {
13
+ return undefined;
14
+ }
15
+ }
16
+ /**
17
+ * Decrypts the private key of a keychain (supports v1 and v2 envelopes).
18
+ * This method will try the password against the traditional encryptedPrv,
19
+ * and any webauthn device encryptedPrvs.
20
+ * Auto-detects v1 (SJCL) and v2 (Argon2id) envelopes.
21
+ *
22
+ * @param bitgo
23
+ * @param keychain
24
+ * @param password
25
+ */
26
+ async function decryptKeychainPrivateKey(bitgo, keychain, password) {
27
+ const prvs = [keychain.encryptedPrv, ...(keychain.webauthnDevices ?? []).map((d) => d.encryptedPrv)].filter(utils_1.notEmpty);
28
+ for (const prv of prvs) {
29
+ const decrypted = await maybeDecrypt(bitgo, prv, password);
30
+ if (decrypted) {
31
+ return decrypted;
32
+ }
33
+ }
34
+ return undefined;
35
+ }
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdEtleWNoYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2tleWNoYWluL2RlY3J5cHRLZXljaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXlCQSw4REFhQztBQXBDRCxvQ0FBb0M7QUFFcEMsS0FBSyxVQUFVLFlBQVksQ0FBQyxLQUFnQixFQUFFLEtBQWEsRUFBRSxRQUFnQjtJQUMzRSxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN6QixLQUFLO1lBQ0wsUUFBUTtTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ1osT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSSxLQUFLLFVBQVUseUJBQXlCLENBQzdDLEtBQWdCLEVBQ2hCLFFBQXNDLEVBQ3RDLFFBQWdCO0lBRWhCLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBUSxDQUFDLENBQUM7SUFDdEgsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgT3B0aW9uYWxLZXljaGFpbkVuY3J5cHRlZEtleSB9IGZyb20gJy4vaUtleWNoYWlucyc7XG5pbXBvcnQgeyBub3RFbXB0eSB9IGZyb20gJy4uL3V0aWxzJztcblxuYXN5bmMgZnVuY3Rpb24gbWF5YmVEZWNyeXB0KGJpdGdvOiBCaXRHb0Jhc2UsIGlucHV0OiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBiaXRnby5kZWNyeXB0KHtcbiAgICAgIGlucHV0LFxuICAgICAgcGFzc3dvcmQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIERlY3J5cHRzIHRoZSBwcml2YXRlIGtleSBvZiBhIGtleWNoYWluIChzdXBwb3J0cyB2MSBhbmQgdjIgZW52ZWxvcGVzKS5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRoZSBwYXNzd29yZCBhZ2FpbnN0IHRoZSB0cmFkaXRpb25hbCBlbmNyeXB0ZWRQcnYsXG4gKiBhbmQgYW55IHdlYmF1dGhuIGRldmljZSBlbmNyeXB0ZWRQcnZzLlxuICogQXV0by1kZXRlY3RzIHYxIChTSkNMKSBhbmQgdjIgKEFyZ29uMmlkKSBlbnZlbG9wZXMuXG4gKlxuICogQHBhcmFtIGJpdGdvXG4gKiBAcGFyYW0ga2V5Y2hhaW5cbiAqIEBwYXJhbSBwYXNzd29yZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAga2V5Y2hhaW46IE9wdGlvbmFsS2V5Y2hhaW5FbmNyeXB0ZWRLZXksXG4gIHBhc3N3b3JkOiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHBydnMgPSBba2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LCAuLi4oa2V5Y2hhaW4ud2ViYXV0aG5EZXZpY2VzID8/IFtdKS5tYXAoKGQpID0+IGQuZW5jcnlwdGVkUHJ2KV0uZmlsdGVyKG5vdEVtcHR5KTtcbiAgZm9yIChjb25zdCBwcnYgb2YgcHJ2cykge1xuICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IG1heWJlRGVjcnlwdChiaXRnbywgcHJ2LCBwYXNzd29yZCk7XG4gICAgaWYgKGRlY3J5cHRlZCkge1xuICAgICAgcmV0dXJuIGRlY3J5cHRlZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -1,31 +1,70 @@
1
- /// <reference types="node" />
2
- import { IRequestTracer } from '../../api';
3
- import { KeyPair, KeychainsTriplet } from '../baseCoin';
4
- import { BackupProvider, IWallet } from '../wallet';
1
+ import type { KeyBulkUpdateResponse } from '@bitgo/public-types';
2
+ import { EncryptionVersion, IEncryptionSession, IRequestTracer } from '../../api';
3
+ import { KeychainsTriplet, KeyPair } from '../baseCoin';
4
+ import { BitgoPubKeyType } from '../utils/tss/baseTypes';
5
+ import { IWallet } from '../wallet';
5
6
  import { BitGoKeyFromOvcShares, OvcToBitGoJSON } from './ovcJsonCodec';
6
- export declare type KeyType = 'tss' | 'independent' | 'blsdkg';
7
- export declare type SourceType = 'bitgo' | 'backup' | 'user' | 'cold';
7
+ export type KeyType = 'tss' | 'independent' | 'blsdkg';
8
+ export interface WebauthnInfo {
9
+ prfSalt: string;
10
+ otpDeviceId: string;
11
+ encryptedPrv: string;
12
+ /** Required by POST /key to validate the PRF salt; not needed on the PUT /key/:id update path. */
13
+ enterpriseId?: string;
14
+ }
15
+ import type { WebauthnKeyEncryptionInfo } from '../wallet/iWallets';
16
+ export type { WebauthnKeyEncryptionInfo };
17
+ export type SourceType = 'bitgo' | 'backup' | 'user' | 'cold';
18
+ export type WebauthnFmt = 'none' | 'packed' | 'fido-u2f';
19
+ export interface WebauthnAuthenticatorInfo {
20
+ credID: string;
21
+ fmt: WebauthnFmt;
22
+ publicKey: string;
23
+ }
24
+ export interface KeychainWebauthnDevice {
25
+ otpDeviceId: string;
26
+ authenticatorInfo: WebauthnAuthenticatorInfo;
27
+ prfSalt: string;
28
+ encryptedPrv: string;
29
+ }
8
30
  export interface Keychain {
9
31
  id: string;
10
32
  pub?: string;
11
33
  prv?: string;
12
34
  provider?: string;
13
35
  encryptedPrv?: string;
36
+ reducedEncryptedPrv?: string;
14
37
  derivationPath?: string;
15
38
  derivedFromParentWithSeed?: string;
39
+ /** BIP44 path from the safe parent: `m/44'/<coinType>'/<slot>'/<account>'` (user / MPC children) or its soft twin `m/44/<coinType>/<slot>/<account>` (multisig co-signers). @experimental */
40
+ derivedFromParentWithPath?: string;
41
+ /** Safe root key id this child key was derived from (WCN-1172). */
42
+ parent?: string;
16
43
  commonPub?: string;
17
44
  commonKeychain?: string;
18
45
  keyShares?: ApiKeyShare[];
19
46
  walletHSMGPGPublicKeySigs?: string;
47
+ hsmType?: BitgoPubKeyType;
20
48
  type: KeyType;
21
49
  source?: SourceType;
50
+ coinSpecific?: {
51
+ [coinName: string]: unknown;
52
+ };
53
+ webauthnDevices?: KeychainWebauthnDevice[];
54
+ ethAddress?: string;
22
55
  }
56
+ export type OptionalKeychainEncryptedKey = Pick<Keychain, 'encryptedPrv' | 'webauthnDevices'>;
57
+ export type KeychainWithEncryptedPrv = Omit<Keychain, 'encryptedPrv'> & {
58
+ encryptedPrv: string;
59
+ };
23
60
  export interface ChangedKeychains {
24
61
  [pubkey: string]: string;
25
62
  }
26
63
  export interface ListKeychainsResult {
27
64
  keys: Keychain[];
28
65
  nextBatchPrevId?: string;
66
+ /** Total of the listed keychains — the count of the list's own query (WCN-2084 total-count support). */
67
+ totalCount?: number;
29
68
  }
30
69
  export interface GetKeychainOptions {
31
70
  id: string;
@@ -36,16 +75,91 @@ export interface GetKeychainOptions {
36
75
  export interface ListKeychainOptions {
37
76
  limit?: number;
38
77
  prevId?: string;
78
+ /**
79
+ * When present, the listing is scoped to the keys of the safe with this public id instead of
80
+ * the caller's coin-wide key set. Requires safe admin; the response still carries only the
81
+ * caller's own `users[]` envelopes. The result set is coin-independent (the same safe yields
82
+ * the same keys for any coin's keychains()), so any coin may be used for the walk.
83
+ */
84
+ safeId?: string;
85
+ }
86
+ export type KeychainPasswordUpdateStatus = 'updated' | 'skipped';
87
+ export interface KeychainPasswordUpdateProgress {
88
+ status: KeychainPasswordUpdateStatus;
89
+ currentKeychainId?: string;
90
+ /**
91
+ * Truthful total of the listed keychains (`totalCount` from the backend, WCN-2084).
92
+ * Every listed record reports an outcome (updated | skipped), so `completed` reaches
93
+ * this total exactly on any account composition.
94
+ */
95
+ total?: number;
39
96
  }
97
+ export type KeychainPasswordUpdateProgressCallback = (progress: KeychainPasswordUpdateProgress) => void;
40
98
  export interface UpdatePasswordOptions {
41
99
  oldPassword: string;
42
100
  newPassword: string;
101
+ /**
102
+ * Envelope version to emit for the re-encrypted keychains. Defaults to preserving each
103
+ * keychain's existing envelope version (no forced migration). Pass `2` to opt in to the
104
+ * Argon2id upgrade for v1 (SJCL) keychains once the caller is ready (e.g. after the
105
+ * Sept 15 breaking-change window closes).
106
+ */
107
+ encryptionVersion?: EncryptionVersion;
108
+ /** Reuse one password-derived session across all matching keychains. */
109
+ encryptionSession?: IEncryptionSession;
110
+ /**
111
+ * Rotate the passphrase of the safe with this public id instead of the caller's
112
+ * coin-wide key set. This flips the method's contract — the two modes are NOT interchangeable:
113
+ *
114
+ * - WITHOUT `safeId` (legacy): walks all of the caller's coin-scoped keychains, silently
115
+ * skips keychains that fail to decrypt, returns a `changedKeys` map, and persists NOTHING —
116
+ * persistence is the caller's job.
117
+ * - WITH `safeId` (safe mode): walks only the safe's keychains (requires safe admin),
118
+ * decrypts every envelope up-front and fails FAST with `IncorrectPasswordError` on the
119
+ * first undecryptable one (zero writes), re-encrypts with a single shared encryption
120
+ * session, and persists everything ATOMICALLY server-side via the batch endpoint
121
+ * (`PUT /api/v2/key/bulk`, per-key compare-and-swap against the old envelope). Resolves
122
+ * with the batch response, not a `changedKeys` map. Note that in this mode the envelopes
123
+ * are emitted at the shared session's version (`encryptionVersion`, default v2), not
124
+ * per-keychain source versions.
125
+ */
126
+ safeId?: string;
127
+ /**
128
+ * Optional observer invoked once per listed keychain record (`updated` or `skipped`) during password
129
+ * rotation. Legacy mode (no `safeId`) only: safe mode persists through the bulk key endpoint and never
130
+ * invokes it.
131
+ */
132
+ progressCallback?: KeychainPasswordUpdateProgressCallback;
43
133
  }
44
134
  export interface UpdateSingleKeychainPasswordOptions {
45
135
  keychain?: Keychain;
46
136
  oldPassword?: string;
47
137
  newPassword?: string;
138
+ /**
139
+ * Envelope version to emit. Defaults to preserving the source envelope's version.
140
+ * Pass `2` to opt in to the Argon2id upgrade.
141
+ */
142
+ encryptionVersion?: EncryptionVersion;
143
+ /** Reuse one password-derived session for this keychain's new envelope. */
144
+ encryptionSession?: IEncryptionSession;
48
145
  }
146
+ /**
147
+ * Parameters for the rotateKeychain method for ofc multi-user-key
148
+ * @property {string} id - the public id of the keychain
149
+ * @property {string} password - the user password use to encrypt/decrypt the private key
150
+ * @property {IRequestTracer} reqId - optional reqId
151
+ */
152
+ export type RotateKeychainOptions = {
153
+ id: string;
154
+ password: string;
155
+ reqId?: IRequestTracer;
156
+ encryptionVersion?: EncryptionVersion;
157
+ } | {
158
+ id: string;
159
+ pub: string;
160
+ encryptedPrv: string;
161
+ reqId?: IRequestTracer;
162
+ };
49
163
  export interface AddKeychainOptions {
50
164
  pub?: string;
51
165
  commonPub?: string;
@@ -56,7 +170,11 @@ export interface AddKeychainOptions {
56
170
  source?: string;
57
171
  originalPasscodeEncryptionCode?: string;
58
172
  enterprise?: string;
59
- derivedFromParentWithSeed?: any;
173
+ derivedFromParentWithSeed?: string;
174
+ /** BIP44 path from the safe parent: `m/44'/<coinType>'/<slot>'/<account>'` (user / MPC children) or its soft twin `m/44/<coinType>/<slot>/<account>` (multisig co-signers). @experimental */
175
+ derivedFromParentWithPath?: string;
176
+ /** Safe user-root key id this child was derived from. @experimental */
177
+ parent?: string;
60
178
  disableKRSEmail?: boolean;
61
179
  provider?: string;
62
180
  reqId?: IRequestTracer;
@@ -66,6 +184,20 @@ export interface AddKeychainOptions {
66
184
  backupGPGPublicKey?: string;
67
185
  algoUsed?: string;
68
186
  isDistributedCustody?: boolean;
187
+ isMPCv2?: boolean;
188
+ coinSpecific?: {
189
+ [coinName: string]: unknown;
190
+ };
191
+ /** WebAuthn devices that have an additional encrypted copy of the private key, keyed by PRF-derived passphrases.
192
+ * @deprecated Use {@link webauthnInfo} instead — the backend reads `webauthnInfo` (single object), not `webauthnDevices`. */
193
+ webauthnDevices?: WebauthnInfo[];
194
+ /** Single webauthn device to atomically attach during key creation.
195
+ * Sent as `webauthnInfo` in the POST /key body so the backend can link
196
+ * the passkey to the keychain in the same request. */
197
+ webauthnInfo?: WebauthnInfo;
198
+ /** Public id of the safe this key is a root of (Wallet Safes v1). When set, the backend tags
199
+ * the key with the safe and stamps its curve server-side. @experimental */
200
+ safeId?: string;
69
201
  }
70
202
  export interface ApiKeyShare {
71
203
  from: 'user' | 'backup' | 'bitgo';
@@ -89,6 +221,10 @@ export interface CreateBackupOptions {
89
221
  commonKeychain?: string;
90
222
  prv?: string;
91
223
  encryptedPrv?: string;
224
+ passphrase?: string;
225
+ encryptionVersion?: EncryptionVersion;
226
+ /** Public id of the safe this backup key is a root of (Wallet Safes v1). @experimental */
227
+ safeId?: string;
92
228
  }
93
229
  export interface CreateBitGoOptions {
94
230
  source?: 'bitgo';
@@ -96,13 +232,37 @@ export interface CreateBitGoOptions {
96
232
  reqId?: IRequestTracer;
97
233
  keyType?: KeyType;
98
234
  isDistributedCustody?: boolean;
235
+ /** Public id of the safe this BitGo key is a root of (Wallet Safes v1). @experimental */
236
+ safeId?: string;
99
237
  }
238
+ export type DecryptedRetrofitPayload = {
239
+ decryptedUserKey: string;
240
+ decryptedBackupKey: string;
241
+ walletId: string;
242
+ };
100
243
  export interface CreateMpcOptions {
101
- multisigType: 'onchain' | 'tss' | 'blsdkg';
244
+ multisigType: 'onchain' | 'tss';
102
245
  passphrase?: string;
103
246
  originalPasscodeEncryptionCode?: string;
104
247
  enterprise?: string;
105
- backupProvider?: BackupProvider;
248
+ retrofit?: DecryptedRetrofitPayload;
249
+ webauthnInfo?: WebauthnKeyEncryptionInfo;
250
+ encryptionVersion?: EncryptionVersion;
251
+ /** Public id of the safe these MPC root keys belong to (Wallet Safes v1). Threaded through the
252
+ * ceremony so the resulting user/backup/bitgo keys land tagged. @experimental */
253
+ safeId?: string;
254
+ }
255
+ export interface RecreateMpcOptions extends Omit<CreateMpcOptions, 'retrofit' | 'multisigType'> {
256
+ coin: string;
257
+ walletId: string;
258
+ passphrase: string;
259
+ otp: string;
260
+ enterprise: string;
261
+ encryptedMaterial: {
262
+ encryptedUserKey: string;
263
+ encryptedBackupKey: string;
264
+ encryptedWalletPassphrase: string;
265
+ };
106
266
  }
107
267
  export interface GetKeysForSigningOptions {
108
268
  reqId?: IRequestTracer;
@@ -128,16 +288,25 @@ export declare enum KeyIndices {
128
288
  export interface IKeychains {
129
289
  get(params: GetKeychainOptions): Promise<Keychain>;
130
290
  list(params?: ListKeychainOptions): Promise<ListKeychainsResult>;
291
+ updatePassword(params: UpdatePasswordOptions & {
292
+ safeId: string;
293
+ }): Promise<KeyBulkUpdateResponse>;
131
294
  updatePassword(params: UpdatePasswordOptions): Promise<ChangedKeychains>;
132
- updateSingleKeychainPassword(params?: UpdateSingleKeychainPasswordOptions): Keychain;
295
+ updateSingleKeychainPassword(params?: UpdateSingleKeychainPasswordOptions): Promise<Keychain>;
296
+ getEncryptionVersion(ciphertext: string): EncryptionVersion;
297
+ reencryptAsV2(encryptedPrv: string, passphrase: string): Promise<string>;
133
298
  create(params?: {
134
299
  seed?: Buffer;
300
+ isRootKey?: boolean;
135
301
  }): KeyPair;
136
302
  add(params?: AddKeychainOptions): Promise<Keychain>;
137
303
  createBitGo(params?: CreateBitGoOptions): Promise<Keychain>;
138
304
  createBackup(params?: CreateBackupOptions): Promise<Keychain>;
139
305
  getKeysForSigning(params?: GetKeysForSigningOptions): Promise<Keychain[]>;
140
306
  createMpc(params: CreateMpcOptions): Promise<KeychainsTriplet>;
141
- createTssBitGoKeyFromOvcShares(ovcOutput: OvcToBitGoJSON): Promise<BitGoKeyFromOvcShares>;
307
+ recreateMpc(params: RecreateMpcOptions): Promise<KeychainsTriplet>;
308
+ createTssBitGoKeyFromOvcShares(ovcOutput: OvcToBitGoJSON, enterprise?: string): Promise<BitGoKeyFromOvcShares>;
309
+ createUserKeychain(userPassword: string, encryptionVersion?: EncryptionVersion, session?: IEncryptionSession): Promise<Keychain>;
310
+ rotateKeychain(params: RotateKeychainOptions): Promise<Keychain>;
142
311
  }
143
312
  //# sourceMappingURL=iKeychains.d.ts.map