@bitgo/abstract-utxo 10.17.0 → 10.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts +5 -6
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/cjs/src/abstractUtxoCoin.js +24 -5
  4. package/dist/cjs/src/address/fixedScript.d.ts +1 -5
  5. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -1
  6. package/dist/cjs/src/address/fixedScript.js +3 -5
  7. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts +4 -5
  8. package/dist/cjs/src/descriptor/NamedDescriptor.d.ts.map +1 -1
  9. package/dist/cjs/src/descriptor/NamedDescriptor.js +4 -6
  10. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +2 -2
  11. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
  12. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +3 -38
  13. package/dist/cjs/src/descriptor/builder/builder.d.ts +2 -3
  14. package/dist/cjs/src/descriptor/builder/builder.d.ts.map +1 -1
  15. package/dist/cjs/src/descriptor/builder/builder.js +1 -1
  16. package/dist/cjs/src/descriptor/builder/parse.d.ts.map +1 -1
  17. package/dist/cjs/src/descriptor/builder/parse.js +3 -3
  18. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts +2 -2
  19. package/dist/cjs/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -1
  20. package/dist/cjs/src/descriptor/createWallet/createDescriptors.js +1 -1
  21. package/dist/cjs/src/descriptor/descriptorWallet.d.ts +1 -1
  22. package/dist/cjs/src/descriptor/descriptorWallet.d.ts.map +1 -1
  23. package/dist/cjs/src/descriptor/descriptorWallet.js +1 -1
  24. package/dist/cjs/src/descriptor/index.d.ts +1 -1
  25. package/dist/cjs/src/descriptor/index.d.ts.map +1 -1
  26. package/dist/cjs/src/descriptor/index.js +1 -1
  27. package/dist/cjs/src/descriptor/validatePolicy.d.ts +3 -3
  28. package/dist/cjs/src/descriptor/validatePolicy.d.ts.map +1 -1
  29. package/dist/cjs/src/descriptor/validatePolicy.js +3 -3
  30. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -1
  31. package/dist/cjs/src/impl/bch/bch.js +6 -38
  32. package/dist/cjs/src/impl/doge/doge.d.ts +2 -1
  33. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -1
  34. package/dist/cjs/src/impl/doge/doge.js +1 -1
  35. package/dist/cjs/src/impl/ltc/ltc.d.ts +0 -1
  36. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -1
  37. package/dist/cjs/src/impl/ltc/ltc.js +3 -41
  38. package/dist/cjs/src/impl/ltc/tltc.d.ts +0 -1
  39. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -1
  40. package/dist/cjs/src/impl/ltc/tltc.js +3 -40
  41. package/dist/cjs/src/index.d.ts +2 -0
  42. package/dist/cjs/src/index.d.ts.map +1 -1
  43. package/dist/cjs/src/index.js +3 -1
  44. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +2 -2
  45. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +3 -2
  46. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -1
  47. package/dist/cjs/src/offlineVault/descriptor/transaction.js +5 -8
  48. package/dist/cjs/src/recovery/RecoveryProvider.d.ts +1 -3
  49. package/dist/cjs/src/recovery/RecoveryProvider.d.ts.map +1 -1
  50. package/dist/cjs/src/recovery/RecoveryProvider.js +1 -1
  51. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +73 -4
  52. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
  53. package/dist/cjs/src/recovery/backupKeyRecovery.js +163 -129
  54. package/dist/cjs/src/recovery/crossChainRecovery.d.ts +5 -5
  55. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -1
  56. package/dist/cjs/src/recovery/crossChainRecovery.js +22 -121
  57. package/dist/cjs/src/recovery/psbt.d.ts +8 -31
  58. package/dist/cjs/src/recovery/psbt.d.ts.map +1 -1
  59. package/dist/cjs/src/recovery/psbt.js +14 -126
  60. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +3 -3
  61. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -1
  62. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +17 -54
  63. package/dist/cjs/src/transaction/descriptor/index.d.ts +1 -1
  64. package/dist/cjs/src/transaction/descriptor/index.d.ts.map +1 -1
  65. package/dist/cjs/src/transaction/descriptor/index.js +1 -1
  66. package/dist/cjs/src/transaction/descriptor/parse.d.ts +6 -4
  67. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -1
  68. package/dist/cjs/src/transaction/descriptor/parse.js +24 -50
  69. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts +6 -7
  70. package/dist/cjs/src/transaction/descriptor/signPsbt.d.ts.map +1 -1
  71. package/dist/cjs/src/transaction/descriptor/signPsbt.js +19 -18
  72. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +4 -4
  73. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  74. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +10 -38
  75. package/dist/cjs/src/transaction/explainTransaction.d.ts +2 -1
  76. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -1
  77. package/dist/cjs/src/transaction/explainTransaction.js +3 -2
  78. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +1 -3
  79. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -1
  80. package/dist/cjs/src/transaction/fixedScript/SigningError.js +1 -1
  81. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +2 -1
  82. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  83. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +1 -8
  84. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -1
  85. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +6 -11
  86. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +2 -2
  87. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
  88. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +4 -2
  89. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts +1 -1
  90. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -1
  91. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.js +1 -1
  92. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +2 -2
  93. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
  94. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +4 -8
  95. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +6 -5
  96. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  97. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +42 -7
  98. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -1
  99. package/dist/cjs/src/transaction/signTransaction.js +10 -10
  100. package/dist/cjs/src/unspent.d.ts +55 -0
  101. package/dist/cjs/src/unspent.d.ts.map +1 -0
  102. package/dist/cjs/src/unspent.js +12 -0
  103. package/dist/cjs/src/wasmUtil.d.ts +29 -0
  104. package/dist/cjs/src/wasmUtil.d.ts.map +1 -0
  105. package/dist/cjs/src/wasmUtil.js +87 -0
  106. package/dist/cjs/test/unit/address.d.ts +1 -1
  107. package/dist/cjs/test/unit/address.d.ts.map +1 -1
  108. package/dist/cjs/test/unit/address.js +107 -137
  109. package/dist/cjs/test/unit/bip322.js +50 -1
  110. package/dist/cjs/test/unit/customSigner.js +5 -4
  111. package/dist/cjs/test/unit/descriptor/NamedDescriptor.js +37 -4
  112. package/dist/cjs/test/unit/descriptor/builder.js +10 -4
  113. package/dist/cjs/test/unit/descriptor/createWallet/createDescriptors.js +37 -4
  114. package/dist/cjs/test/unit/descriptor/descriptorWallet.js +40 -6
  115. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -1
  116. package/dist/cjs/test/unit/descriptorAddress.js +3 -3
  117. package/dist/cjs/test/unit/explainTransaction.js +26 -3
  118. package/dist/cjs/test/unit/keychains.js +40 -1
  119. package/dist/cjs/test/unit/postProcessPrebuild.d.ts +2 -0
  120. package/dist/cjs/test/unit/postProcessPrebuild.d.ts.map +1 -0
  121. package/dist/cjs/test/unit/postProcessPrebuild.js +62 -0
  122. package/dist/cjs/test/unit/prebuildAndSign.d.ts +0 -4
  123. package/dist/cjs/test/unit/prebuildAndSign.d.ts.map +1 -1
  124. package/dist/cjs/test/unit/prebuildAndSign.js +12 -32
  125. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +82 -259
  126. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts +2 -0
  127. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.d.ts.map +1 -0
  128. package/dist/cjs/test/unit/recovery/backupKeyRecoveryUnspentGathering.js +144 -0
  129. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +38 -35
  130. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts +2 -0
  131. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts.map +1 -0
  132. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.js +186 -0
  133. package/dist/cjs/test/unit/recovery/mock.d.ts +15 -8
  134. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -1
  135. package/dist/cjs/test/unit/recovery/mock.js +49 -77
  136. package/dist/cjs/test/unit/signTransaction.d.ts +2 -0
  137. package/dist/cjs/test/unit/signTransaction.d.ts.map +1 -0
  138. package/dist/cjs/test/unit/signTransaction.js +244 -0
  139. package/dist/cjs/test/unit/testSpoofTransaction.d.ts +2 -0
  140. package/dist/cjs/test/unit/testSpoofTransaction.d.ts.map +1 -0
  141. package/dist/cjs/test/unit/testSpoofTransaction.js +114 -0
  142. package/dist/cjs/test/unit/transaction/descriptor/explainPsbt.js +46 -12
  143. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.d.ts.map +1 -1
  144. package/dist/cjs/test/unit/transaction/descriptor/fixtures.utils.js +38 -4
  145. package/dist/cjs/test/unit/transaction/descriptor/parse.js +22 -19
  146. package/dist/cjs/test/unit/transaction/descriptor/sign.js +60 -16
  147. package/dist/cjs/test/unit/transaction/descriptor/validatePolicy.js +43 -10
  148. package/dist/cjs/test/unit/transaction.js +6 -225
  149. package/dist/cjs/test/unit/util/address.d.ts +13 -0
  150. package/dist/cjs/test/unit/util/address.d.ts.map +1 -0
  151. package/dist/cjs/test/unit/util/address.js +15 -0
  152. package/dist/cjs/test/unit/util/index.d.ts +3 -0
  153. package/dist/cjs/test/unit/util/index.d.ts.map +1 -1
  154. package/dist/cjs/test/unit/util/index.js +4 -1
  155. package/dist/cjs/test/unit/util/keychains.d.ts +29 -0
  156. package/dist/cjs/test/unit/util/keychains.d.ts.map +1 -1
  157. package/dist/cjs/test/unit/util/keychains.js +51 -1
  158. package/dist/cjs/test/unit/util/nockBitGo.d.ts +8 -1
  159. package/dist/cjs/test/unit/util/nockBitGo.d.ts.map +1 -1
  160. package/dist/cjs/test/unit/util/nockBitGo.js +17 -1
  161. package/dist/cjs/test/unit/util/psbt.d.ts +19 -0
  162. package/dist/cjs/test/unit/util/psbt.d.ts.map +1 -0
  163. package/dist/cjs/test/unit/util/psbt.js +21 -0
  164. package/dist/cjs/test/unit/util/transaction.d.ts +8 -4
  165. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -1
  166. package/dist/cjs/test/unit/util/transaction.js +19 -1
  167. package/dist/cjs/test/unit/util/unspents.d.ts +66 -8
  168. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -1
  169. package/dist/cjs/test/unit/util/unspents.js +130 -15
  170. package/dist/cjs/test/unit/util/utxoCoins.d.ts +13 -0
  171. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -1
  172. package/dist/cjs/test/unit/util/utxoCoins.js +33 -2
  173. package/dist/cjs/test/unit/wallet.js +4 -4
  174. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  175. package/dist/esm/abstractUtxoCoin.d.ts +5 -6
  176. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  177. package/dist/esm/abstractUtxoCoin.js +26 -7
  178. package/dist/esm/address/fixedScript.d.ts +1 -5
  179. package/dist/esm/address/fixedScript.d.ts.map +1 -1
  180. package/dist/esm/address/fixedScript.js +3 -5
  181. package/dist/esm/descriptor/NamedDescriptor.d.ts +4 -5
  182. package/dist/esm/descriptor/NamedDescriptor.d.ts.map +1 -1
  183. package/dist/esm/descriptor/NamedDescriptor.js +5 -7
  184. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +2 -2
  185. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
  186. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +3 -5
  187. package/dist/esm/descriptor/builder/builder.d.ts +2 -3
  188. package/dist/esm/descriptor/builder/builder.d.ts.map +1 -1
  189. package/dist/esm/descriptor/builder/builder.js +1 -1
  190. package/dist/esm/descriptor/builder/parse.d.ts.map +1 -1
  191. package/dist/esm/descriptor/builder/parse.js +3 -3
  192. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts +2 -2
  193. package/dist/esm/descriptor/createWallet/createDescriptors.d.ts.map +1 -1
  194. package/dist/esm/descriptor/createWallet/createDescriptors.js +1 -1
  195. package/dist/esm/descriptor/descriptorWallet.d.ts +1 -1
  196. package/dist/esm/descriptor/descriptorWallet.d.ts.map +1 -1
  197. package/dist/esm/descriptor/descriptorWallet.js +1 -1
  198. package/dist/esm/descriptor/index.d.ts +1 -1
  199. package/dist/esm/descriptor/index.d.ts.map +1 -1
  200. package/dist/esm/descriptor/index.js +1 -1
  201. package/dist/esm/descriptor/validatePolicy.d.ts +3 -3
  202. package/dist/esm/descriptor/validatePolicy.d.ts.map +1 -1
  203. package/dist/esm/descriptor/validatePolicy.js +3 -3
  204. package/dist/esm/impl/bch/bch.d.ts.map +1 -1
  205. package/dist/esm/impl/bch/bch.js +6 -5
  206. package/dist/esm/impl/doge/doge.d.ts +2 -1
  207. package/dist/esm/impl/doge/doge.d.ts.map +1 -1
  208. package/dist/esm/impl/doge/doge.js +1 -1
  209. package/dist/esm/impl/ltc/ltc.d.ts +0 -1
  210. package/dist/esm/impl/ltc/ltc.d.ts.map +1 -1
  211. package/dist/esm/impl/ltc/ltc.js +3 -8
  212. package/dist/esm/impl/ltc/tltc.d.ts +0 -1
  213. package/dist/esm/impl/ltc/tltc.d.ts.map +1 -1
  214. package/dist/esm/impl/ltc/tltc.js +3 -7
  215. package/dist/esm/index.d.ts +2 -0
  216. package/dist/esm/index.d.ts.map +1 -1
  217. package/dist/esm/index.js +3 -1
  218. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +2 -2
  219. package/dist/esm/offlineVault/descriptor/transaction.d.ts +3 -2
  220. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -1
  221. package/dist/esm/offlineVault/descriptor/transaction.js +5 -8
  222. package/dist/esm/recovery/RecoveryProvider.d.ts +1 -3
  223. package/dist/esm/recovery/RecoveryProvider.d.ts.map +1 -1
  224. package/dist/esm/recovery/RecoveryProvider.js +1 -1
  225. package/dist/esm/recovery/backupKeyRecovery.d.ts +73 -4
  226. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
  227. package/dist/esm/recovery/backupKeyRecovery.js +165 -100
  228. package/dist/esm/recovery/crossChainRecovery.d.ts +5 -5
  229. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -1
  230. package/dist/esm/recovery/crossChainRecovery.js +24 -90
  231. package/dist/esm/recovery/psbt.d.ts +8 -31
  232. package/dist/esm/recovery/psbt.d.ts.map +1 -1
  233. package/dist/esm/recovery/psbt.js +14 -91
  234. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +3 -3
  235. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -1
  236. package/dist/esm/transaction/descriptor/explainPsbt.js +14 -18
  237. package/dist/esm/transaction/descriptor/index.d.ts +1 -1
  238. package/dist/esm/transaction/descriptor/index.d.ts.map +1 -1
  239. package/dist/esm/transaction/descriptor/index.js +1 -1
  240. package/dist/esm/transaction/descriptor/parse.d.ts +6 -4
  241. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -1
  242. package/dist/esm/transaction/descriptor/parse.js +22 -15
  243. package/dist/esm/transaction/descriptor/signPsbt.d.ts +6 -7
  244. package/dist/esm/transaction/descriptor/signPsbt.d.ts.map +1 -1
  245. package/dist/esm/transaction/descriptor/signPsbt.js +19 -18
  246. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +4 -4
  247. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  248. package/dist/esm/transaction/descriptor/verifyTransaction.js +10 -5
  249. package/dist/esm/transaction/explainTransaction.d.ts +2 -1
  250. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -1
  251. package/dist/esm/transaction/explainTransaction.js +3 -2
  252. package/dist/esm/transaction/fixedScript/SigningError.d.ts +1 -3
  253. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -1
  254. package/dist/esm/transaction/fixedScript/SigningError.js +1 -1
  255. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +2 -1
  256. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  257. package/dist/esm/transaction/fixedScript/explainTransaction.js +1 -8
  258. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -1
  259. package/dist/esm/transaction/fixedScript/parseOutput.js +6 -11
  260. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +2 -2
  261. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
  262. package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +4 -2
  263. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts +1 -1
  264. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -1
  265. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.js +1 -1
  266. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +2 -2
  267. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
  268. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +2 -6
  269. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +6 -5
  270. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  271. package/dist/esm/transaction/fixedScript/signTransaction.js +10 -8
  272. package/dist/esm/transaction/signTransaction.d.ts.map +1 -1
  273. package/dist/esm/transaction/signTransaction.js +10 -10
  274. package/dist/esm/unspent.d.ts +55 -0
  275. package/dist/esm/unspent.d.ts.map +1 -0
  276. package/dist/esm/unspent.js +8 -0
  277. package/dist/esm/wasmUtil.d.ts +29 -0
  278. package/dist/esm/wasmUtil.d.ts.map +1 -0
  279. package/dist/esm/wasmUtil.js +47 -0
  280. package/package.json +11 -12
  281. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts +0 -2
  282. package/dist/cjs/test/unit/impl/btc/unit/btc.d.ts.map +0 -1
  283. package/dist/cjs/test/unit/impl/btc/unit/btc.js +0 -220
  284. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts +0 -4
  285. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.d.ts.map +0 -1
  286. package/dist/cjs/test/unit/impl/btc/unit/fixtures/btcBackupKey.js +0 -10
  287. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts +0 -2
  288. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.d.ts.map +0 -1
  289. package/dist/cjs/test/unit/impl/btc/unit/fixtures/index.js +0 -18
  290. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts +0 -2
  291. package/dist/cjs/test/unit/impl/ltc/unit/index.d.ts.map +0 -1
  292. package/dist/cjs/test/unit/impl/ltc/unit/index.js +0 -39
@@ -1,220 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- require("should");
40
- const assert_1 = __importDefault(require("assert"));
41
- const sdk_test_1 = require("@bitgo/sdk-test");
42
- const sdk_api_1 = require("@bitgo/sdk-api");
43
- const utxolib = __importStar(require("@bitgo/utxo-lib"));
44
- const sdk_core_1 = require("@bitgo/sdk-core");
45
- const btc_1 = require("../../../../../src/impl/btc");
46
- const fixtures_1 = require("./fixtures");
47
- describe('BTC:', () => {
48
- let bitgo;
49
- before(() => {
50
- bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
51
- bitgo.safeRegister('tbtc', btc_1.Tbtc.createInstance);
52
- bitgo.initializeTestVars();
53
- });
54
- describe('Address validation:', () => {
55
- let coin;
56
- before(() => {
57
- coin = bitgo.coin('tbtc');
58
- });
59
- it('should validate a base58 address', () => {
60
- const validBase58Address = '2Mv1fGp8gHSqsiXYG7WqcYmHZdurDGVtUbn';
61
- coin.isValidAddress(validBase58Address).should.be.true();
62
- const invalidBase58Address = '2MV1FGP8GHSQSSXYG7WQCYMHZDURDGVTUBN';
63
- coin.isValidAddress(invalidBase58Address).should.be.false();
64
- });
65
- it('should validate a bech32 address', () => {
66
- const validBech32Address = 'tb1qtxxqmkkdx4n4lcp0nt2cct89uh3h3dlcu940kw9fcqyyq36peh0st94hfp';
67
- coin.isValidAddress(validBech32Address).should.be.true();
68
- coin.isValidAddress(validBech32Address.toUpperCase()).should.be.false();
69
- });
70
- it('should validate a bech32m address', () => {
71
- // https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki#Test_vectors_for_Bech32m
72
- const validBech32mAddress = 'tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7';
73
- coin.isValidAddress(validBech32mAddress).should.be.true();
74
- coin.isValidAddress(validBech32mAddress.toUpperCase()).should.be.false();
75
- });
76
- });
77
- describe('Post Build Validation', () => {
78
- let coin;
79
- before(() => {
80
- coin = bitgo.coin('tbtc');
81
- });
82
- it('should not modify locktime on postProcessPrebuild', async () => {
83
- const txHex = '0100000001a8ec78f09f7acb0d344622ed3082c1a98e51ba1b1ab65406044f6e0a801609020100000000ffffffff02a0860100000000001976a9149f9a7abd600c0caa03983a77c8c3df8e062cb2fa88acfbf2150000000000220020b922cc1e737e679d24ff2d2b18cfa9fff4e35a733b4fba94282eaa1b7cfe56d200000000';
84
- const blockHeight = 100;
85
- const preBuild = { txHex, blockHeight };
86
- const postProcessBuilt = await coin.postProcessPrebuild(preBuild);
87
- const transaction = utxolib.bitgo.createTransactionFromHex(postProcessBuilt.txHex, utxolib.networks.bitcoin);
88
- transaction.locktime.should.equal(0);
89
- const inputs = transaction.ins;
90
- for (const input of inputs) {
91
- input.sequence.should.equal(0xffffffff);
92
- }
93
- });
94
- });
95
- describe('Audit Key', () => {
96
- const { key } = fixtures_1.btcBackupKey;
97
- let coin;
98
- before(() => {
99
- coin = bitgo.coin('tbtc');
100
- });
101
- it('should return for valid inputs', () => {
102
- coin.assertIsValidKey({
103
- encryptedPrv: key,
104
- walletPassphrase: 'kAm[EFQ6o=SxlcLFDw%,',
105
- });
106
- });
107
- it('should throw error if the walletPassphrase is incorrect', () => {
108
- assert_1.default.throws(() => coin.assertIsValidKey({
109
- encryptedPrv: key,
110
- walletPassphrase: 'foo',
111
- }), { message: "failed to decrypt prv: ccm: tag doesn't match" });
112
- });
113
- it('should return throw if the key is altered', () => {
114
- const alteredKey = key.replace(/[0-9]/g, '0');
115
- assert_1.default.throws(() => coin.assertIsValidKey({
116
- encryptedPrv: alteredKey,
117
- walletPassphrase: 'kAm[EFQ6o=SxlcLFDw%,',
118
- }), { message: 'failed to decrypt prv: json decrypt: invalid parameters' });
119
- });
120
- });
121
- describe('Unspent management spoofability - Consolidation (BUILD_SIGN_SEND)', () => {
122
- let coin;
123
- let bitgoTest;
124
- before(() => {
125
- bitgoTest = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
126
- bitgoTest.safeRegister('tbtc', btc_1.Tbtc.createInstance);
127
- bitgoTest.initializeTestVars();
128
- coin = bitgoTest.coin('tbtc');
129
- });
130
- it('should detect hex spoofing in BUILD_SIGN_SEND', async () => {
131
- const keyTriple = utxolib.testutil.getKeyTriple('default');
132
- const rootWalletKey = new utxolib.bitgo.RootWalletKeys(keyTriple);
133
- const [user] = keyTriple;
134
- const wallet = new sdk_core_1.Wallet(bitgoTest, coin, {
135
- id: '5b34252f1bf349930e34020a',
136
- coin: 'tbtc',
137
- keys: ['user', 'backup', 'bitgo'],
138
- });
139
- const originalPsbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(10000) }], [{ address: 'tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7', value: BigInt(9000) }], coin.network, rootWalletKey, 'unsigned');
140
- utxolib.bitgo.addXpubsToPsbt(originalPsbt, rootWalletKey);
141
- const spoofedPsbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(10000) }], [{ address: 'tb1pjgg9ty3s2ztp60v6lhgrw76f7hxydzuk9t9mjsndh3p2gf2ah7gs4850kn', value: BigInt(9000) }], coin.network, rootWalletKey, 'unsigned');
142
- utxolib.bitgo.addXpubsToPsbt(spoofedPsbt, rootWalletKey);
143
- const spoofedHex = spoofedPsbt.toHex();
144
- const bgUrl = bitgoTest._baseUrl;
145
- const nock = require('nock');
146
- nock(bgUrl)
147
- .post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/consolidateUnspents`)
148
- .reply(200, { txHex: spoofedHex, consolidateId: 'test' });
149
- nock(bgUrl)
150
- .post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/tx/send`)
151
- .reply((requestBody) => {
152
- if (requestBody?.txHex === spoofedHex) {
153
- throw new Error('Spoofed transaction was sent: spoofing protection failed');
154
- }
155
- return [200, { txid: 'test-txid-123', status: 'signed' }];
156
- });
157
- const pubs = keyTriple.map((k) => k.neutered().toBase58());
158
- const responses = [
159
- { pub: pubs[0], encryptedPrv: (0, sdk_api_1.encrypt)('pass', user.toBase58()) },
160
- { pub: pubs[1] },
161
- { pub: pubs[2] },
162
- ];
163
- wallet
164
- .keyIds()
165
- .forEach((id, i) => nock(bgUrl).get(`/api/v2/${wallet.coin()}/key/${id}`).reply(200, responses[i]));
166
- await assert_1.default.rejects(wallet.consolidateUnspents({ walletPassphrase: 'pass' }), (e) => typeof e?.message === 'string' &&
167
- e.message.includes('prebuild attempts to spend to unintended external recipients'));
168
- });
169
- });
170
- describe('Unspent management spoofability - Fanout (BUILD_SIGN_SEND)', () => {
171
- let coin;
172
- let bitgoTest;
173
- before(() => {
174
- bitgoTest = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
175
- bitgoTest.safeRegister('tbtc', btc_1.Tbtc.createInstance);
176
- bitgoTest.initializeTestVars();
177
- coin = bitgoTest.coin('tbtc');
178
- });
179
- it('should detect hex spoofing in fanout BUILD_SIGN_SEND', async () => {
180
- const keyTriple = utxolib.testutil.getKeyTriple('default');
181
- const rootWalletKey = new utxolib.bitgo.RootWalletKeys(keyTriple);
182
- const [user] = keyTriple;
183
- const wallet = new sdk_core_1.Wallet(bitgoTest, coin, {
184
- id: '5b34252f1bf349930e34020a',
185
- coin: 'tbtc',
186
- keys: ['user', 'backup', 'bitgo'],
187
- });
188
- const originalPsbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(10000) }], [{ address: 'tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7', value: BigInt(9000) }], coin.network, rootWalletKey, 'unsigned');
189
- utxolib.bitgo.addXpubsToPsbt(originalPsbt, rootWalletKey);
190
- const spoofedPsbt = utxolib.testutil.constructPsbt([{ scriptType: 'p2wsh', value: BigInt(10000) }], [{ address: 'tb1pjgg9ty3s2ztp60v6lhgrw76f7hxydzuk9t9mjsndh3p2gf2ah7gs4850kn', value: BigInt(9000) }], coin.network, rootWalletKey, 'unsigned');
191
- utxolib.bitgo.addXpubsToPsbt(spoofedPsbt, rootWalletKey);
192
- const spoofedHex = spoofedPsbt.toHex();
193
- const bgUrl = bitgoTest._baseUrl;
194
- const nock = require('nock');
195
- nock(bgUrl)
196
- .post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/fanoutUnspents`)
197
- .reply(200, { txHex: spoofedHex, fanoutId: 'test' });
198
- nock(bgUrl)
199
- .post(`/api/v2/${wallet.coin()}/wallet/${wallet.id()}/tx/send`)
200
- .reply((requestBody) => {
201
- if (requestBody?.txHex === spoofedHex) {
202
- throw new Error('Spoofed transaction was sent: spoofing protection failed');
203
- }
204
- return [200, { txid: 'test-txid-123', status: 'signed' }];
205
- });
206
- const pubs = keyTriple.map((k) => k.neutered().toBase58());
207
- const responses = [
208
- { pub: pubs[0], encryptedPrv: (0, sdk_api_1.encrypt)('pass', user.toBase58()) },
209
- { pub: pubs[1] },
210
- { pub: pubs[2] },
211
- ];
212
- wallet
213
- .keyIds()
214
- .forEach((id, i) => nock(bgUrl).get(`/api/v2/${wallet.coin()}/key/${id}`).reply(200, responses[i]));
215
- await assert_1.default.rejects(wallet.fanoutUnspents({ walletPassphrase: 'pass' }), (e) => typeof e?.message === 'string' &&
216
- e.message.includes('prebuild attempts to spend to unintended external recipients'));
217
- });
218
- });
219
- });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2ltcGwvYnRjL3VuaXQvYnRjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0JBQWdCO0FBQ2hCLG9EQUE0QjtBQUU1Qiw4Q0FBK0Q7QUFDL0QsNENBQW1EO0FBQ25ELHlEQUEyQztBQUMzQyw4Q0FBeUM7QUFFekMscURBQW1EO0FBRW5ELHlDQUEwQztBQUUxQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUNwQixJQUFJLEtBQW1CLENBQUM7SUFFeEIsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNWLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsVUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzdCLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxJQUFJLElBQVUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQVMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7WUFDMUMsTUFBTSxrQkFBa0IsR0FBRyxxQ0FBcUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RCxNQUFNLG9CQUFvQixHQUFHLHFDQUFxQyxDQUFDO1lBQ25F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QUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMzRCxNQUFNLFNBQVMsR0FBRztnQkFDaEIsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFBLGlCQUFPLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO2dCQUNoRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hCLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTthQUNqQixDQUFDO1lBQ0YsTUFBTTtpQkFDSCxNQUFNLEVBQUU7aUJBQ1IsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0RyxNQUFNLGdCQUFNLENBQUMsT0FBTyxDQUNsQixNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDbkQsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUNULE9BQU8sQ0FBQyxFQUFFLE9BQU8sS0FBSyxRQUFRO2dCQUM5QixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyw4REFBOEQsQ0FBQyxDQUNyRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyB0eXBlIFRlc3RCaXRHb0FQSSwgVGVzdEJpdEdvIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJLCBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgV2FsbGV0IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuaW1wb3J0IHsgVGJ0YyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsL2J0Yyc7XG5cbmltcG9ydCB7IGJ0Y0JhY2t1cEtleSB9IGZyb20gJy4vZml4dHVyZXMnO1xuXG5kZXNjcmliZSgnQlRDOicsICgpID0+IHtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG5cbiAgYmVmb3JlKCgpID0+IHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RidGMnLCBUYnRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FkZHJlc3MgdmFsaWRhdGlvbjonLCAoKSA9PiB7XG4gICAgbGV0IGNvaW46IFRidGM7XG4gICAgYmVmb3JlKCgpID0+IHtcbiAgICAgIGNvaW4gPSBiaXRnby5jb2luKCd0YnRjJykgYXMgVGJ0YztcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSBiYXNlNTggYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkQmFzZTU4QWRkcmVzcyA9ICcyTXYxZkdwOGdIU3FzaVhZRzdXcWNZbUhaZHVyREdWdFVibic7XG4gICAgICBjb2luLmlzVmFsaWRBZGRyZXNzKHZhbGlkQmFzZTU4QWRkcmVzcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGNvbnN0IGludmFsaWRCYXNlNThBZGRyZXNzID0gJzJNVjFGR1A4R0hTUVNTWFlHN1dRQ1lNSFpEVVJER1ZUVUJOJztcbiAgICAgIGNvaW4uaXNWYWxpZEFkZHJlc3MoaW52YWxpZEJhc2U1OEFkZHJlc3MpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhIGJlY2gzMiBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRCZWNoMzJBZGRyZXNzID0gJ3RiMXF0eHhxbWtrZHg0bjRsY3AwbnQyY2N0ODl1aDNoM2RsY3U5NDBrdzlmY3F5eXEzNnBlaDBzdDk0aGZwJztcbiAgICAgIGNvaW4uaXNWYWxpZEFkZHJlc3ModmFsaWRCZWNoMzJBZGRyZXNzKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgY29pbi5pc1ZhbGlkQWRkcmVzcyh2YWxpZEJlY2gzMkFkZHJlc3MudG9VcHBlckNhc2UoKSkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgYmVjaDMybSBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9ibG9iL21hc3Rlci9iaXAtMDM1MC5tZWRpYXdpa2kjVGVzdF92ZWN0b3JzX2Zvcl9CZWNoMzJtXG4gICAgICBjb25zdCB2YWxpZEJlY2gzMm1BZGRyZXNzID0gJ3RiMXFycDMzZzBxNWM1dHhzcDlhcnlzcng0azZ6ZGtmczRuY2U0eGowZ2RjY2NlZnZweXN4ZjNxMHNsNWs3JztcbiAgICAgIGNvaW4uaXNWYWxpZEFkZHJlc3ModmFsaWRCZWNoMzJtQWRkcmVzcykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGNvaW4uaXNWYWxpZEFkZHJlc3ModmFsaWRCZWNoMzJtQWRkcmVzcy50b1VwcGVyQ2FzZSgpKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Bvc3QgQnVpbGQgVmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBsZXQgY29pbjogVGJ0YztcbiAgICBiZWZvcmUoKCkgPT4ge1xuICAgICAgY29pbiA9IGJpdGdvLmNvaW4oJ3RidGMnKSBhcyBUYnRjO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgbW9kaWZ5IGxvY2t0aW1lIG9uIHBvc3RQcm9jZXNzUHJlYnVpbGQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEhleCA9XG4gICAgICAgICcwMTAwMDAwMDAxYThlYzc4ZjA5ZjdhY2IwZDM0NDYyMmVkMzA4MmMxYTk4ZTUxYmExYjFhYjY1NDA2MDQ0ZjZlMGE4MDE2MDkwMjAxMDAwMDAwMDBmZmZmZmZmZjAyYTA4NjAxMDAwMDAwMDAwMDE5NzZhOTE0OWY5YTdhYmQ2MDBjMGNhYTAzOTgzYTc3YzhjM2RmOGUwNjJjYjJmYTg4YWNmYmYyMTUwMDAwMDAwMDAwMjIwMDIwYjkyMmNjMWU3MzdlNjc5ZDI0ZmYyZDJiMThjZmE5ZmZmNGUzNWE3MzNiNGZiYTk0MjgyZWFhMWI3Y2ZlNTZkMjAwMDAwMDAwJztcbiAgICAgIGNvbnN0IGJsb2NrSGVpZ2h0ID0gMTAwO1xuICAgICAgY29uc3QgcHJlQnVpbGQgPSB7IHR4SGV4LCBibG9ja0hlaWdodCB9O1xuICAgICAgY29uc3QgcG9zdFByb2Nlc3NCdWlsdCA9IGF3YWl0IGNvaW4ucG9zdFByb2Nlc3NQcmVidWlsZChwcmVCdWlsZCk7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHV0eG9saWIuYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tSGV4KFxuICAgICAgICBwb3N0UHJvY2Vzc0J1aWx0LnR4SGV4IGFzIHN0cmluZyxcbiAgICAgICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luXG4gICAgICApO1xuXG4gICAgICB0cmFuc2FjdGlvbi5sb2NrdGltZS5zaG91bGQuZXF1YWwoMCk7XG4gICAgICBjb25zdCBpbnB1dHMgPSB0cmFuc2FjdGlvbi5pbnM7XG4gICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGlucHV0cykge1xuICAgICAgICBpbnB1dC5zZXF1ZW5jZS5zaG91bGQuZXF1YWwoMHhmZmZmZmZmZik7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBdWRpdCBLZXknLCAoKSA9PiB7XG4gICAgY29uc3QgeyBrZXkgfSA9IGJ0Y0JhY2t1cEtleTtcbiAgICBsZXQgY29pbjogVGJ0YztcbiAgICBiZWZvcmUoKCkgPT4ge1xuICAgICAgY29pbiA9IGJpdGdvLmNvaW4oJ3RidGMnKSBhcyBUYnRjO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZm9yIHZhbGlkIGlucHV0cycsICgpID0+IHtcbiAgICAgIGNvaW4uYXNzZXJ0SXNWYWxpZEtleSh7XG4gICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAna0FtW0VGUTZvPVN4bGNMRkR3JSwnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIHRoZSB3YWxsZXRQYXNzcGhyYXNlIGlzIGluY29ycmVjdCcsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgY29pbi5hc3NlcnRJc1ZhbGlkS2V5KHtcbiAgICAgICAgICAgIGVuY3J5cHRlZFBydjoga2V5LFxuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2ZvbycsXG4gICAgICAgICAgfSksXG4gICAgICAgIHsgbWVzc2FnZTogXCJmYWlsZWQgdG8gZGVjcnlwdCBwcnY6IGNjbTogdGFnIGRvZXNuJ3QgbWF0Y2hcIiB9XG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhyb3cgaWYgdGhlIGtleSBpcyBhbHRlcmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgYWx0ZXJlZEtleSA9IGtleS5yZXBsYWNlKC9bMC05XS9nLCAnMCcpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBjb2luLmFzc2VydElzVmFsaWRLZXkoe1xuICAgICAgICAgICAgZW5jcnlwdGVkUHJ2OiBhbHRlcmVkS2V5LFxuICAgICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogJ2tBbVtFRlE2bz1TeGxjTEZEdyUsJyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgeyBtZXNzYWdlOiAnZmFpbGVkIHRvIGRlY3J5cHQgcHJ2OiBqc29uIGRlY3J5cHQ6IGludmFsaWQgcGFyYW1ldGVycycgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Vuc3BlbnQgbWFuYWdlbWVudCBzcG9vZmFiaWxpdHkgLSBDb25zb2xpZGF0aW9uIChCVUlMRF9TSUdOX1NFTkQpJywgKCkgPT4ge1xuICAgIGxldCBjb2luOiBUYnRjO1xuICAgIGxldCBiaXRnb1Rlc3Q6IFRlc3RCaXRHb0FQSTtcbiAgICBiZWZvcmUoKCkgPT4ge1xuICAgICAgYml0Z29UZXN0ID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICAgICAgYml0Z29UZXN0LnNhZmVSZWdpc3RlcigndGJ0YycsIFRidGMuY3JlYXRlSW5zdGFuY2UpO1xuICAgICAgYml0Z29UZXN0LmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgICAgY29pbiA9IGJpdGdvVGVzdC5jb2luKCd0YnRjJykgYXMgVGJ0YztcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGV0ZWN0IGhleCBzcG9vZmluZyBpbiBCVUlMRF9TSUdOX1NFTkQnLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBrZXlUcmlwbGUgPSB1dHhvbGliLnRlc3R1dGlsLmdldEtleVRyaXBsZSgnZGVmYXVsdCcpO1xuICAgICAgY29uc3Qgcm9vdFdhbGxldEtleSA9IG5ldyB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzKGtleVRyaXBsZSk7XG4gICAgICBjb25zdCBbdXNlcl0gPSBrZXlUcmlwbGU7XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z29UZXN0LCBjb2luLCB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhJyxcbiAgICAgICAgY29pbjogJ3RidGMnLFxuICAgICAgICBrZXlzOiBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ10sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgb3JpZ2luYWxQc2J0ID0gdXR4b2xpYi50ZXN0dXRpbC5jb25zdHJ1Y3RQc2J0KFxuICAgICAgICBbeyBzY3JpcHRUeXBlOiAncDJ3c2gnIGFzIGNvbnN0LCB2YWx1ZTogQmlnSW50KDEwMDAwKSB9XSxcbiAgICAgICAgW3sgYWRkcmVzczogJ3RiMXFycDMzZzBxNWM1dHhzcDlhcnlzcng0azZ6ZGtmczRuY2U0eGowZ2RjY2NlZnZweXN4ZjNxMHNsNWs3JywgdmFsdWU6IEJpZ0ludCg5MDAwKSB9XSxcbiAgICAgICAgY29pbi5uZXR3b3JrLFxuICAgICAgICByb290V2FsbGV0S2V5LFxuICAgICAgICAndW5zaWduZWQnIGFzIGNvbnN0XG4gICAgICApO1xuICAgICAgdXR4b2xpYi5iaXRnby5hZGRYcHVic1RvUHNidChvcmlnaW5hbFBzYnQsIHJvb3RXYWxsZXRLZXkpO1xuICAgICAgY29uc3Qgc3Bvb2ZlZFBzYnQgPSB1dHhvbGliLnRlc3R1dGlsLmNvbnN0cnVjdFBzYnQoXG4gICAgICAgIFt7IHNjcmlwdFR5cGU6ICdwMndzaCcgYXMgY29uc3QsIHZhbHVlOiBCaWdJbnQoMTAwMDApIH1dLFxuICAgICAgICBbeyBhZGRyZXNzOiAndGIxcGpnZzl0eTNzMnp0cDYwdjZsaGdydzc2ZjdoeHlkenVrOXQ5bWpzbmRoM3AyZ2YyYWg3Z3M0ODUwa24nLCB2YWx1ZTogQmlnSW50KDkwMDApIH1dLFxuICAgICAgICBjb2luLm5ldHdvcmssXG4gICAgICAgIHJvb3RXYWxsZXRLZXksXG4gICAgICAgICd1bnNpZ25lZCcgYXMgY29uc3RcbiAgICAgICk7XG4gICAgICB1dHhvbGliLmJpdGdvLmFkZFhwdWJzVG9Qc2J0KHNwb29mZWRQc2J0LCByb290V2FsbGV0S2V5KTtcbiAgICAgIGNvbnN0IHNwb29mZWRIZXg6IHN0cmluZyA9IHNwb29mZWRQc2J0LnRvSGV4KCk7XG5cbiAgICAgIGNvbnN0IGJnVXJsOiBzdHJpbmcgPSAoYml0Z29UZXN0IGFzIGFueSkuX2Jhc2VVcmw7XG4gICAgICBjb25zdCBub2NrID0gcmVxdWlyZSgnbm9jaycpO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS9jb25zb2xpZGF0ZVVuc3BlbnRzYClcbiAgICAgICAgLnJlcGx5KDIwMCwgeyB0eEhleDogc3Bvb2ZlZEhleCwgY29uc29saWRhdGVJZDogJ3Rlc3QnIH0pO1xuXG4gICAgICBub2NrKGJnVXJsKVxuICAgICAgICAucG9zdChgL2FwaS92Mi8ke3dhbGxldC5jb2luKCl9L3dhbGxldC8ke3dhbGxldC5pZCgpfS90eC9zZW5kYClcbiAgICAgICAgLnJlcGx5KChyZXF1ZXN0Qm9keTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcXVlc3RCb2R5Py50eEhleCA9PT0gc3Bvb2ZlZEhleCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTcG9vZmVkIHRyYW5zYWN0aW9uIHdhcyBzZW50OiBzcG9vZmluZyBwcm90ZWN0aW9uIGZhaWxlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gWzIwMCwgeyB0eGlkOiAndGVzdC10eGlkLTEyMycsIHN0YXR1czogJ3NpZ25lZCcgfV07XG4gICAgICAgIH0pO1xuXG4gICAgICBjb25zdCBwdWJzID0ga2V5VHJpcGxlLm1hcCgoaykgPT4gay5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpO1xuICAgICAgY29uc3QgcmVzcG9uc2VzID0gW1xuICAgICAgICB7IHB1YjogcHVic1swXSwgZW5jcnlwdGVkUHJ2OiBlbmNyeXB0KCdwYXNzJywgdXNlci50b0Jhc2U1OCgpKSB9LFxuICAgICAgICB7IHB1YjogcHVic1sxXSB9LFxuICAgICAgICB7IHB1YjogcHVic1syXSB9LFxuICAgICAgXTtcbiAgICAgIHdhbGxldFxuICAgICAgICAua2V5SWRzKClcbiAgICAgICAgLmZvckVhY2goKGlkLCBpKSA9PiBub2NrKGJnVXJsKS5nZXQoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS9rZXkvJHtpZH1gKS5yZXBseSgyMDAsIHJlc3BvbnNlc1tpXSkpO1xuXG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgd2FsbGV0LmNvbnNvbGlkYXRlVW5zcGVudHMoeyB3YWxsZXRQYXNzcGhyYXNlOiAncGFzcycgfSksXG4gICAgICAgIChlOiBhbnkpID0+XG4gICAgICAgICAgdHlwZW9mIGU/Lm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgZS5tZXNzYWdlLmluY2x1ZGVzKCdwcmVidWlsZCBhdHRlbXB0cyB0byBzcGVuZCB0byB1bmludGVuZGVkIGV4dGVybmFsIHJlY2lwaWVudHMnKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Vuc3BlbnQgbWFuYWdlbWVudCBzcG9vZmFiaWxpdHkgLSBGYW5vdXQgKEJVSUxEX1NJR05fU0VORCknLCAoKSA9PiB7XG4gICAgbGV0IGNvaW46IFRidGM7XG4gICAgbGV0IGJpdGdvVGVzdDogVGVzdEJpdEdvQVBJO1xuICAgIGJlZm9yZSgoKSA9PiB7XG4gICAgICBiaXRnb1Rlc3QgPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgICBiaXRnb1Rlc3Quc2FmZVJlZ2lzdGVyKCd0YnRjJywgVGJ0Yy5jcmVhdGVJbnN0YW5jZSk7XG4gICAgICBiaXRnb1Rlc3QuaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgICBjb2luID0gYml0Z29UZXN0LmNvaW4oJ3RidGMnKSBhcyBUYnRjO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkZXRlY3QgaGV4IHNwb29maW5nIGluIGZhbm91dCBCVUlMRF9TSUdOX1NFTkQnLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBrZXlUcmlwbGUgPSB1dHhvbGliLnRlc3R1dGlsLmdldEtleVRyaXBsZSgnZGVmYXVsdCcpO1xuICAgICAgY29uc3Qgcm9vdFdhbGxldEtleSA9IG5ldyB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzKGtleVRyaXBsZSk7XG4gICAgICBjb25zdCBbdXNlcl0gPSBrZXlUcmlwbGU7XG5cbiAgICAgIGNvbnN0IHdhbGxldCA9IG5ldyBXYWxsZXQoYml0Z29UZXN0LCBjb2luLCB7XG4gICAgICAgIGlkOiAnNWIzNDI1MmYxYmYzNDk5MzBlMzQwMjBhJyxcbiAgICAgICAgY29pbjogJ3RidGMnLFxuICAgICAgICBrZXlzOiBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ10sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgb3JpZ2luYWxQc2J0ID0gdXR4b2xpYi50ZXN0dXRpbC5jb25zdHJ1Y3RQc2J0KFxuICAgICAgICBbeyBzY3JpcHRUeXBlOiAncDJ3c2gnIGFzIGNvbnN0LCB2YWx1ZTogQmlnSW50KDEwMDAwKSB9XSxcbiAgICAgICAgW3sgYWRkcmVzczogJ3RiMXFycDMzZzBxNWM1dHhzcDlhcnlzcng0azZ6ZGtmczRuY2U0eGowZ2RjY2NlZnZweXN4ZjNxMHNsNWs3JywgdmFsdWU6IEJpZ0ludCg5MDAwKSB9XSxcbiAgICAgICAgY29pbi5uZXR3b3JrLFxuICAgICAgICByb290V2FsbGV0S2V5LFxuICAgICAgICAndW5zaWduZWQnIGFzIGNvbnN0XG4gICAgICApO1xuICAgICAgdXR4b2xpYi5iaXRnby5hZGRYcHVic1RvUHNidChvcmlnaW5hbFBzYnQsIHJvb3RXYWxsZXRLZXkpO1xuXG4gICAgICBjb25zdCBzcG9vZmVkUHNidCA9IHV0eG9saWIudGVzdHV0aWwuY29uc3RydWN0UHNidChcbiAgICAgICAgW3sgc2NyaXB0VHlwZTogJ3Ayd3NoJyBhcyBjb25zdCwgdmFsdWU6IEJpZ0ludCgxMDAwMCkgfV0sXG4gICAgICAgIFt7IGFkZHJlc3M6ICd0YjFwamdnOXR5M3MyenRwNjB2NmxoZ3J3NzZmN2h4eWR6dWs5dDltanNuZGgzcDJnZjJhaDdnczQ4NTBrbicsIHZhbHVlOiBCaWdJbnQoOTAwMCkgfV0sXG4gICAgICAgIGNvaW4ubmV0d29yayxcbiAgICAgICAgcm9vdFdhbGxldEtleSxcbiAgICAgICAgJ3Vuc2lnbmVkJyBhcyBjb25zdFxuICAgICAgKTtcbiAgICAgIHV0eG9saWIuYml0Z28uYWRkWHB1YnNUb1BzYnQoc3Bvb2ZlZFBzYnQsIHJvb3RXYWxsZXRLZXkpO1xuICAgICAgY29uc3Qgc3Bvb2ZlZEhleDogc3RyaW5nID0gc3Bvb2ZlZFBzYnQudG9IZXgoKTtcblxuICAgICAgY29uc3QgYmdVcmw6IHN0cmluZyA9IChiaXRnb1Rlc3QgYXMgYW55KS5fYmFzZVVybDtcbiAgICAgIGNvbnN0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5cbiAgICAgIG5vY2soYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0vd2FsbGV0LyR7d2FsbGV0LmlkKCl9L2Zhbm91dFVuc3BlbnRzYClcbiAgICAgICAgLnJlcGx5KDIwMCwgeyB0eEhleDogc3Bvb2ZlZEhleCwgZmFub3V0SWQ6ICd0ZXN0JyB9KTtcblxuICAgICAgbm9jayhiZ1VybClcbiAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHt3YWxsZXQuY29pbigpfS93YWxsZXQvJHt3YWxsZXQuaWQoKX0vdHgvc2VuZGApXG4gICAgICAgIC5yZXBseSgocmVxdWVzdEJvZHk6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXF1ZXN0Qm9keT8udHhIZXggPT09IHNwb29mZWRIZXgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU3Bvb2ZlZCB0cmFuc2FjdGlvbiB3YXMgc2VudDogc3Bvb2ZpbmcgcHJvdGVjdGlvbiBmYWlsZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFsyMDAsIHsgdHhpZDogJ3Rlc3QtdHhpZC0xMjMnLCBzdGF0dXM6ICdzaWduZWQnIH1dO1xuICAgICAgICB9KTtcblxuICAgICAgY29uc3QgcHVicyA9IGtleVRyaXBsZS5tYXAoKGspID0+IGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlcyA9IFtcbiAgICAgICAgeyBwdWI6IHB1YnNbMF0sIGVuY3J5cHRlZFBydjogZW5jcnlwdCgncGFzcycsIHVzZXIudG9CYXNlNTgoKSkgfSxcbiAgICAgICAgeyBwdWI6IHB1YnNbMV0gfSxcbiAgICAgICAgeyBwdWI6IHB1YnNbMl0gfSxcbiAgICAgIF07XG4gICAgICB3YWxsZXRcbiAgICAgICAgLmtleUlkcygpXG4gICAgICAgIC5mb3JFYWNoKChpZCwgaSkgPT4gbm9jayhiZ1VybCkuZ2V0KGAvYXBpL3YyLyR7d2FsbGV0LmNvaW4oKX0va2V5LyR7aWR9YCkucmVwbHkoMjAwLCByZXNwb25zZXNbaV0pKTtcblxuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgIHdhbGxldC5mYW5vdXRVbnNwZW50cyh7IHdhbGxldFBhc3NwaHJhc2U6ICdwYXNzJyB9KSxcbiAgICAgICAgKGU6IGFueSkgPT5cbiAgICAgICAgICB0eXBlb2YgZT8ubWVzc2FnZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICBlLm1lc3NhZ2UuaW5jbHVkZXMoJ3ByZWJ1aWxkIGF0dGVtcHRzIHRvIHNwZW5kIHRvIHVuaW50ZW5kZWQgZXh0ZXJuYWwgcmVjaXBpZW50cycpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -1,4 +0,0 @@
1
- export declare const btcBackupKey: {
2
- key: string;
3
- };
4
- //# sourceMappingURL=btcBackupKey.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"btcBackupKey.d.ts","sourceRoot":"","sources":["../../../../../../../../test/unit/impl/btc/unit/fixtures/btcBackupKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;CAMxB,CAAC"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.btcBackupKey = void 0;
4
- exports.btcBackupKey = {
5
- key: '{"iv":"JgqqE4W45/tKBSMSYqD+qg==","v":1,"iter":10000,"ks":256,"ts":64,"mode"' +
6
- ':"ccm","adata":"","cipher":"aes","salt":"kiLPf8VSdI0=","ct":"zUh4Oko/06g02E' +
7
- 'wnqOfzJbTwtE2p3b19jDk8Tum07Jv3N/RP7Bo0w/ObLBO1uIJFossO3nJ1JS+7t/vPQhdCtN8oD' +
8
- '6YrZnEZYrRwN6JQkL1uYPnZ1PoWbYI9navK5CLU1KQwDTO9YEN46++OrzFH+CjpQVLblaw="}',
9
- };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjQmFja3VwS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2ltcGwvYnRjL3VuaXQvZml4dHVyZXMvYnRjQmFja3VwS2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsWUFBWSxHQUFHO0lBQzFCLEdBQUcsRUFDRCw2RUFBNkU7UUFDN0UsNkVBQTZFO1FBQzdFLDZFQUE2RTtRQUM3RSwyRUFBMkU7Q0FDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBidGNCYWNrdXBLZXkgPSB7XG4gIGtleTpcbiAgICAne1wiaXZcIjpcIkpncXFFNFc0NS90S0JTTVNZcUQrcWc9PVwiLFwidlwiOjEsXCJpdGVyXCI6MTAwMDAsXCJrc1wiOjI1NixcInRzXCI6NjQsXCJtb2RlXCInICtcbiAgICAnOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwia2lMUGY4VlNkSTA9XCIsXCJjdFwiOlwielVoNE9rby8wNmcwMkUnICtcbiAgICAnd25xT2Z6SmJUd3RFMnAzYjE5akRrOFR1bTA3SnYzTi9SUDdCbzB3L09iTEJPMXVJSkZvc3NPM25KMUpTKzd0L3ZQUWhkQ3ROOG9EJyArXG4gICAgJzZZclpuRVpZclJ3TjZKUWtMMXVZUG5aMVBvV2JZSTluYXZLNUNMVTFLUXdEVE85WUVONDYrK09yekZIK0NqcFFWTGJsYXc9XCJ9Jyxcbn07XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from './btcBackupKey';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../test/unit/impl/btc/unit/fixtures/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./btcBackupKey"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvaW1wbC9idGMvdW5pdC9maXh0dXJlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idGNCYWNrdXBLZXknO1xuIl19
@@ -1,2 +0,0 @@
1
- import 'should';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../test/unit/impl/ltc/unit/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("should");
4
- const sdk_test_1 = require("@bitgo/sdk-test");
5
- const sdk_api_1 = require("@bitgo/sdk-api");
6
- const ltc_1 = require("../../../../../src/impl/ltc");
7
- describe('Litecoin:', function () {
8
- const bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'test' });
9
- bitgo.initializeTestVars();
10
- bitgo.safeRegister('ltc', ltc_1.Ltc.createInstance);
11
- bitgo.safeRegister('tltc', ltc_1.Tltc.createInstance);
12
- const ltc = bitgo.coin('ltc');
13
- const tltc = bitgo.coin('tltc');
14
- describe('should validate addresses', () => {
15
- it('should validate base58 addresses', () => {
16
- // known valid main and testnet base58 address are valid
17
- ltc.isValidAddress('MH6J1PzpsAfapZek7QGHv2mheUxnP8Kdek').should.be.true();
18
- tltc.isValidAddress('QWC1miKKHFikbwg2iyt8KZBGsTSEBKr21i').should.be.true();
19
- // malformed base58 addresses are invalid
20
- ltc.isValidAddress('MH6J1PzpsAfapZek7QGHv2mheUxnP8Kder').should.be.false();
21
- tltc.isValidAddress('QWC1miKKHFikbwg2iyt8KZBGsTSEBKr21l').should.be.false();
22
- });
23
- it('should validate bech32 addresses', () => {
24
- // all lower case is valid
25
- ltc.isValidAddress('ltc1qq7fzt3ek5ege3v92wh0q6wzcjr39pqswlpe36mu28f6yufark3wspfryg7').should.be.true();
26
- tltc.isValidAddress('tltc1qq7fzt3ek5ege3v92wh0q6wzcjr39pqswlpe36mu28f6yufark3ws2x86ht').should.be.true();
27
- // all upper case is valid
28
- ltc.isValidAddress('LTC1QQ7FZT3EK5EGE3V92WH0Q6WZCJR39PQSWLPE36MU28F6YUFARK3WSPFRYG7').should.be.false();
29
- tltc.isValidAddress('TLTC1QQ7FZT3EK5EGE3V92WH0Q6WZCJR39PQSWLPE36MU28F6YUFARK3WS2X86HT').should.be.false();
30
- // mixed case is invalid
31
- ltc.isValidAddress('LTC1QQ7FZT3EK5EGE3V92WH0Q6WZCJR39PQSWLPE36MU28F6YUFARK3WSPFRYg7').should.be.false();
32
- tltc.isValidAddress('TLTC1QQ7FZT3EK5EGE3V92WH0Q6WZCJR39PQSWLPE36MU28F6YUFARK3WS2X86Ht').should.be.false();
33
- // malformed addresses are invalid
34
- ltc.isValidAddress('ltc1qq7fzt3ek5ege3v92wh0q6wzcjr39pqswlpe36mu28f6yufark3wspfryg9').should.be.false();
35
- tltc.isValidAddress('tltc1qq7fzt3ek5ege3v92wh0q6wzcjr39pqswlpe36mu28f6yufark3ws2x86hl').should.be.false();
36
- });
37
- });
38
- });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvaW1wbC9sdGMvdW5pdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUVoQiw4Q0FBMEQ7QUFDMUQsNENBQTBDO0FBRTFDLHFEQUF3RDtBQUV4RCxRQUFRLENBQUMsV0FBVyxFQUFFO0lBQ3BCLE1BQU0sS0FBSyxHQUFpQixvQkFBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDMUUsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDM0IsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVoRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBUSxDQUFDO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFTLENBQUM7SUFFeEMsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLHdEQUF3RDtZQUN4RCxHQUFHLENBQUMsY0FBYyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsY0FBYyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzRSx5Q0FBeUM7WUFDekMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLDBCQUEwQjtZQUMxQixHQUFHLENBQUMsY0FBYyxDQUFDLGlFQUFpRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2RyxJQUFJLENBQUMsY0FBYyxDQUFDLGtFQUFrRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RywwQkFBMEI7WUFDMUIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUcsd0JBQXdCO1lBQ3hCLEdBQUcsQ0FBQyxjQUFjLENBQUMsaUVBQWlFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hHLElBQUksQ0FBQyxjQUFjLENBQUMsa0VBQWtFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFHLGtDQUFrQztZQUNsQyxHQUFHLENBQUMsY0FBYyxDQUFDLGlFQUFpRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4RyxJQUFJLENBQUMsY0FBYyxDQUFDLGtFQUFrRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5cbmltcG9ydCB7IFRlc3RCaXRHb0FQSSwgVGVzdEJpdEdvIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuXG5pbXBvcnQgeyBMdGMsIFRsdGMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMvaW1wbC9sdGMnO1xuXG5kZXNjcmliZSgnTGl0ZWNvaW46JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBiaXRnbzogVGVzdEJpdEdvQVBJID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ3Rlc3QnIH0pO1xuICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgYml0Z28uc2FmZVJlZ2lzdGVyKCdsdGMnLCBMdGMuY3JlYXRlSW5zdGFuY2UpO1xuICBiaXRnby5zYWZlUmVnaXN0ZXIoJ3RsdGMnLCBUbHRjLmNyZWF0ZUluc3RhbmNlKTtcblxuICBjb25zdCBsdGMgPSBiaXRnby5jb2luKCdsdGMnKSBhcyBMdGM7XG4gIGNvbnN0IHRsdGMgPSBiaXRnby5jb2luKCd0bHRjJykgYXMgVGx0YztcblxuICBkZXNjcmliZSgnc2hvdWxkIHZhbGlkYXRlIGFkZHJlc3NlcycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGJhc2U1OCBhZGRyZXNzZXMnLCAoKSA9PiB7XG4gICAgICAvLyBrbm93biB2YWxpZCBtYWluIGFuZCB0ZXN0bmV0IGJhc2U1OCBhZGRyZXNzIGFyZSB2YWxpZFxuICAgICAgbHRjLmlzVmFsaWRBZGRyZXNzKCdNSDZKMVB6cHNBZmFwWmVrN1FHSHYybWhlVXhuUDhLZGVrJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHRsdGMuaXNWYWxpZEFkZHJlc3MoJ1FXQzFtaUtLSEZpa2J3ZzJpeXQ4S1pCR3NUU0VCS3IyMWknKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgLy8gbWFsZm9ybWVkIGJhc2U1OCBhZGRyZXNzZXMgYXJlIGludmFsaWRcbiAgICAgIGx0Yy5pc1ZhbGlkQWRkcmVzcygnTUg2SjFQenBzQWZhcFplazdRR0h2Mm1oZVV4blA4S2RlcicpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgdGx0Yy5pc1ZhbGlkQWRkcmVzcygnUVdDMW1pS0tIRmlrYndnMml5dDhLWkJHc1RTRUJLcjIxbCcpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYmVjaDMyIGFkZHJlc3NlcycsICgpID0+IHtcbiAgICAgIC8vIGFsbCBsb3dlciBjYXNlIGlzIHZhbGlkXG4gICAgICBsdGMuaXNWYWxpZEFkZHJlc3MoJ2x0YzFxcTdmenQzZWs1ZWdlM3Y5MndoMHE2d3pjanIzOXBxc3dscGUzNm11MjhmNnl1ZmFyazN3c3BmcnlnNycpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICB0bHRjLmlzVmFsaWRBZGRyZXNzKCd0bHRjMXFxN2Z6dDNlazVlZ2Uzdjkyd2gwcTZ3emNqcjM5cHFzd2xwZTM2bXUyOGY2eXVmYXJrM3dzMng4Nmh0Jykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIC8vIGFsbCB1cHBlciBjYXNlIGlzIHZhbGlkXG4gICAgICBsdGMuaXNWYWxpZEFkZHJlc3MoJ0xUQzFRUTdGWlQzRUs1RUdFM1Y5MldIMFE2V1pDSlIzOVBRU1dMUEUzNk1VMjhGNllVRkFSSzNXU1BGUllHNycpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgdGx0Yy5pc1ZhbGlkQWRkcmVzcygnVExUQzFRUTdGWlQzRUs1RUdFM1Y5MldIMFE2V1pDSlIzOVBRU1dMUEUzNk1VMjhGNllVRkFSSzNXUzJYODZIVCcpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgLy8gbWl4ZWQgY2FzZSBpcyBpbnZhbGlkXG4gICAgICBsdGMuaXNWYWxpZEFkZHJlc3MoJ0xUQzFRUTdGWlQzRUs1RUdFM1Y5MldIMFE2V1pDSlIzOVBRU1dMUEUzNk1VMjhGNllVRkFSSzNXU1BGUllnNycpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgdGx0Yy5pc1ZhbGlkQWRkcmVzcygnVExUQzFRUTdGWlQzRUs1RUdFM1Y5MldIMFE2V1pDSlIzOVBRU1dMUEUzNk1VMjhGNllVRkFSSzNXUzJYODZIdCcpLnNob3VsZC5iZS5mYWxzZSgpO1xuICAgICAgLy8gbWFsZm9ybWVkIGFkZHJlc3NlcyBhcmUgaW52YWxpZFxuICAgICAgbHRjLmlzVmFsaWRBZGRyZXNzKCdsdGMxcXE3Znp0M2VrNWVnZTN2OTJ3aDBxNnd6Y2pyMzlwcXN3bHBlMzZtdTI4ZjZ5dWZhcmszd3NwZnJ5ZzknKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgIHRsdGMuaXNWYWxpZEFkZHJlc3MoJ3RsdGMxcXE3Znp0M2VrNWVnZTN2OTJ3aDBxNnd6Y2pyMzlwcXN3bHBlMzZtdTI4ZjZ5dWZhcmszd3MyeDg2aGwnKS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==