@bitgo-beta/utxo-core 1.8.1-beta.122 → 1.8.1-beta.1221

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 (352) hide show
  1. package/README.md +9 -0
  2. package/dist/cjs/src/Output.d.ts.map +1 -0
  3. package/dist/cjs/src/Output.js +60 -0
  4. package/dist/cjs/src/bip322/index.d.ts +5 -0
  5. package/dist/cjs/src/bip322/index.d.ts.map +1 -0
  6. package/dist/cjs/src/bip322/index.js +21 -0
  7. package/dist/cjs/src/bip322/toSign.d.ts +25 -0
  8. package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
  9. package/dist/cjs/src/bip322/toSign.js +125 -0
  10. package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
  11. package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
  12. package/dist/cjs/src/bip322/toSpend.js +72 -0
  13. package/dist/cjs/src/bip322/utils.d.ts +18 -0
  14. package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
  15. package/dist/cjs/src/bip322/utils.js +115 -0
  16. package/dist/cjs/src/bip322/verify.d.ts +12 -0
  17. package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
  18. package/dist/cjs/src/bip322/verify.js +113 -0
  19. package/dist/cjs/src/bip32utils.d.ts +12 -0
  20. package/dist/cjs/src/bip32utils.d.ts.map +1 -0
  21. package/dist/cjs/src/bip32utils.js +15 -0
  22. package/dist/cjs/src/bip65/index.d.ts.map +1 -0
  23. package/dist/{src → cjs/src}/bip65/index.js +1 -1
  24. package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
  25. package/dist/cjs/src/bip65/locktime.js +37 -0
  26. package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
  27. package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
  28. package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
  29. package/dist/{src → cjs/src}/descriptor/Output.d.ts +1 -1
  30. package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
  31. package/dist/cjs/src/descriptor/Output.js +41 -0
  32. package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +1 -1
  33. package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
  34. package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
  35. package/dist/{src → cjs/src}/descriptor/address.d.ts +1 -1
  36. package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
  37. package/dist/{src → cjs/src}/descriptor/address.js +1 -1
  38. package/dist/{src → cjs/src}/descriptor/derive.d.ts +1 -1
  39. package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
  40. package/dist/cjs/src/descriptor/derive.js +45 -0
  41. package/dist/{src → cjs/src}/descriptor/fromFixedScriptWallet.d.ts +1 -1
  42. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  43. package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
  44. package/dist/{src → cjs/src}/descriptor/index.d.ts +1 -0
  45. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  46. package/dist/{src → cjs/src}/descriptor/index.js +2 -1
  47. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  48. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  49. package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
  50. package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
  51. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  52. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
  53. package/dist/{src → cjs/src}/descriptor/psbt/createPsbt.d.ts +1 -1
  54. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
  55. package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
  56. package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +1 -1
  57. package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  58. package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
  59. package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
  60. package/dist/{src → cjs/src}/descriptor/psbt/index.js +1 -1
  61. package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +1 -1
  62. package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
  63. package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
  64. package/dist/{src → cjs/src}/descriptor/psbt/sign.d.ts +4 -4
  65. package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
  66. package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
  67. package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
  68. package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
  69. package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
  70. package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
  71. package/dist/cjs/src/dustThreshold.js +134 -0
  72. package/dist/{src → cjs/src}/index.d.ts +1 -0
  73. package/dist/cjs/src/index.d.ts.map +1 -0
  74. package/dist/{src → cjs/src}/index.js +3 -2
  75. package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
  76. package/dist/{src → cjs/src}/paygo/attestation.js +1 -1
  77. package/dist/cjs/src/paygo/index.d.ts.map +1 -0
  78. package/dist/{src → cjs/src}/paygo/index.js +1 -1
  79. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  80. package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
  81. package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
  82. package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
  83. package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
  84. package/dist/{src → cjs/src}/paygo/psbt/index.js +1 -1
  85. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  86. package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
  87. package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +2 -2
  88. package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
  89. package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
  90. package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
  91. package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
  92. package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +1 -1
  93. package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
  94. package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
  95. package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
  96. package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
  97. package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
  98. package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
  99. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  100. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  101. package/dist/cjs/src/testutil/index.d.ts.map +1 -0
  102. package/dist/{src → cjs/src}/testutil/index.js +1 -1
  103. package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
  104. package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
  105. package/dist/cjs/src/testutil/key.utils.js +60 -0
  106. package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
  107. package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
  108. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  109. package/dist/{src → cjs/src}/testutil/trimMessagePrefix.js +1 -1
  110. package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
  111. package/dist/cjs/src/xOnlyPubkey.js +18 -0
  112. package/dist/cjs/test/Output.d.ts +2 -0
  113. package/dist/cjs/test/Output.d.ts.map +1 -0
  114. package/dist/cjs/test/Output.js +70 -0
  115. package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
  116. package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
  117. package/dist/cjs/test/bip322/bip322.utils.js +16 -0
  118. package/dist/cjs/test/bip322/toSign.d.ts +2 -0
  119. package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
  120. package/dist/cjs/test/bip322/toSign.js +133 -0
  121. package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
  122. package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
  123. package/dist/cjs/test/bip322/toSpend.js +70 -0
  124. package/dist/cjs/test/bip322/utils.d.ts +2 -0
  125. package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
  126. package/dist/cjs/test/bip322/utils.js +79 -0
  127. package/dist/cjs/test/bip322/verify.d.ts +2 -0
  128. package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
  129. package/dist/cjs/test/bip322/verify.js +293 -0
  130. package/dist/cjs/test/bip32utils.d.ts +2 -0
  131. package/dist/cjs/test/bip32utils.d.ts.map +1 -0
  132. package/dist/cjs/test/bip32utils.js +62 -0
  133. package/dist/cjs/test/bip65/locktime.d.ts +2 -0
  134. package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
  135. package/dist/cjs/test/bip65/locktime.js +22 -0
  136. package/dist/cjs/test/descriptor/Output.d.ts +2 -0
  137. package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
  138. package/dist/cjs/test/descriptor/Output.js +44 -0
  139. package/dist/cjs/test/descriptor/derive.d.ts +2 -0
  140. package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
  141. package/dist/cjs/test/descriptor/derive.js +27 -0
  142. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
  143. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  144. package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
  145. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
  146. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  147. package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
  148. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
  149. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  150. package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
  151. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  152. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  153. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
  154. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
  155. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  156. package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
  157. package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
  158. package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
  159. package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
  160. package/dist/cjs/test/dustThreshold.d.ts +2 -0
  161. package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
  162. package/dist/cjs/test/dustThreshold.js +110 -0
  163. package/dist/cjs/test/paygo/attestation.d.ts +2 -0
  164. package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
  165. package/dist/cjs/test/paygo/attestation.js +23 -0
  166. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
  167. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
  168. package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
  169. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
  170. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  171. package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
  172. package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
  173. package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
  174. package/dist/cjs/test/xOnlyPubkey.js +18 -0
  175. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  176. package/dist/esm/Output.d.ts +43 -0
  177. package/dist/esm/Output.js +53 -0
  178. package/dist/esm/bip322/index.d.ts +5 -0
  179. package/dist/esm/bip322/index.d.ts.map +1 -0
  180. package/dist/esm/bip322/index.js +5 -0
  181. package/dist/esm/bip322/toSign.d.ts +25 -0
  182. package/dist/esm/bip322/toSign.d.ts.map +1 -0
  183. package/dist/esm/bip322/toSign.js +119 -0
  184. package/dist/esm/bip322/toSpend.d.ts +22 -0
  185. package/dist/esm/bip322/toSpend.d.ts.map +1 -0
  186. package/dist/esm/bip322/toSpend.js +66 -0
  187. package/dist/esm/bip322/utils.d.ts +18 -0
  188. package/dist/esm/bip322/utils.d.ts.map +1 -0
  189. package/dist/esm/bip322/utils.js +77 -0
  190. package/dist/esm/bip322/verify.d.ts +12 -0
  191. package/dist/esm/bip322/verify.d.ts.map +1 -0
  192. package/dist/esm/bip322/verify.js +74 -0
  193. package/dist/esm/bip32utils.d.ts +12 -0
  194. package/dist/esm/bip32utils.d.ts.map +1 -0
  195. package/dist/esm/bip32utils.js +12 -0
  196. package/dist/esm/bip65/index.d.ts +2 -0
  197. package/dist/esm/bip65/index.js +2 -0
  198. package/dist/esm/bip65/locktime.d.ts +8 -0
  199. package/dist/esm/bip65/locktime.js +34 -0
  200. package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
  201. package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
  202. package/dist/esm/descriptor/DescriptorMap.js +6 -0
  203. package/dist/esm/descriptor/Output.d.ts +23 -0
  204. package/dist/{src → esm}/descriptor/Output.d.ts.map +1 -1
  205. package/dist/esm/descriptor/Output.js +32 -0
  206. package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
  207. package/dist/{src → esm}/descriptor/VirtualSize.d.ts.map +1 -1
  208. package/dist/esm/descriptor/VirtualSize.js +94 -0
  209. package/dist/esm/descriptor/address.d.ts +5 -0
  210. package/dist/{src → esm}/descriptor/address.d.ts.map +1 -1
  211. package/dist/esm/descriptor/address.js +11 -0
  212. package/dist/esm/descriptor/derive.d.ts +13 -0
  213. package/dist/{src → esm}/descriptor/derive.d.ts.map +1 -1
  214. package/dist/esm/descriptor/derive.js +38 -0
  215. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
  216. package/dist/{src → esm}/descriptor/fromFixedScriptWallet.d.ts.map +1 -1
  217. package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
  218. package/dist/esm/descriptor/index.d.ts +11 -0
  219. package/dist/{src → esm}/descriptor/index.d.ts.map +1 -1
  220. package/dist/esm/descriptor/index.js +11 -0
  221. package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
  222. package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  223. package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
  224. package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  225. package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
  226. package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
  227. package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
  228. package/dist/{src → esm}/descriptor/psbt/createPsbt.d.ts.map +1 -1
  229. package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
  230. package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
  231. package/dist/{src → esm}/descriptor/psbt/findDescriptors.d.ts.map +1 -1
  232. package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
  233. package/dist/esm/descriptor/psbt/index.d.ts +7 -0
  234. package/dist/esm/descriptor/psbt/index.js +7 -0
  235. package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
  236. package/dist/{src → esm}/descriptor/psbt/parse.d.ts.map +1 -1
  237. package/dist/esm/descriptor/psbt/parse.js +51 -0
  238. package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
  239. package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
  240. package/dist/esm/descriptor/psbt/sign.js +34 -0
  241. package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
  242. package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
  243. package/dist/esm/descriptor/psbt/wrap.js +38 -0
  244. package/dist/esm/dustThreshold.d.ts +4 -0
  245. package/dist/esm/dustThreshold.js +97 -0
  246. package/dist/esm/index.d.ts +10 -0
  247. package/dist/{src → esm}/index.d.ts.map +1 -1
  248. package/dist/esm/index.js +10 -0
  249. package/dist/esm/paygo/attestation.d.ts +11 -0
  250. package/dist/esm/paygo/attestation.js +18 -0
  251. package/dist/esm/paygo/index.d.ts +3 -0
  252. package/dist/esm/paygo/index.js +3 -0
  253. package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
  254. package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
  255. package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
  256. package/dist/esm/paygo/psbt/Errors.js +35 -0
  257. package/dist/esm/paygo/psbt/index.d.ts +2 -0
  258. package/dist/esm/paygo/psbt/index.js +2 -0
  259. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
  260. package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
  261. package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
  262. package/dist/{src → esm}/testutil/descriptor/descriptors.d.ts.map +1 -1
  263. package/dist/esm/testutil/descriptor/descriptors.js +150 -0
  264. package/dist/esm/testutil/descriptor/index.d.ts +4 -0
  265. package/dist/esm/testutil/descriptor/index.js +4 -0
  266. package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
  267. package/dist/{src → esm}/testutil/descriptor/mock.utils.d.ts.map +1 -1
  268. package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
  269. package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
  270. package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  271. package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
  272. package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
  273. package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
  274. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  275. package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
  276. package/dist/esm/testutil/index.d.ts +6 -0
  277. package/dist/esm/testutil/index.js +6 -0
  278. package/dist/esm/testutil/key.utils.d.ts +16 -0
  279. package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
  280. package/dist/esm/testutil/key.utils.js +22 -0
  281. package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
  282. package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
  283. package/dist/esm/testutil/toPlainObject.utils.js +85 -0
  284. package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
  285. package/dist/esm/testutil/trimMessagePrefix.js +24 -0
  286. package/dist/esm/xOnlyPubkey.d.ts +2 -0
  287. package/dist/esm/xOnlyPubkey.js +15 -0
  288. package/package.json +50 -22
  289. package/dist/src/Output.js +0 -60
  290. package/dist/src/bip32utils.d.ts +0 -16
  291. package/dist/src/bip32utils.d.ts.map +0 -1
  292. package/dist/src/bip32utils.js +0 -71
  293. package/dist/src/bip65/locktime.js +0 -37
  294. package/dist/src/descriptor/DescriptorMap.js +0 -9
  295. package/dist/src/descriptor/Output.js +0 -41
  296. package/dist/src/descriptor/VirtualSize.js +0 -100
  297. package/dist/src/descriptor/derive.js +0 -45
  298. package/dist/src/descriptor/fromFixedScriptWallet.js +0 -88
  299. package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
  300. package/dist/src/descriptor/psbt/createPsbt.js +0 -107
  301. package/dist/src/descriptor/psbt/findDescriptors.js +0 -98
  302. package/dist/src/descriptor/psbt/parse.js +0 -87
  303. package/dist/src/descriptor/psbt/sign.d.ts.map +0 -1
  304. package/dist/src/descriptor/psbt/sign.js +0 -42
  305. package/dist/src/descriptor/psbt/wrap.js +0 -76
  306. package/dist/src/dustThreshold.js +0 -134
  307. package/dist/src/paygo/parsePayGoAttestation.js +0 -50
  308. package/dist/src/paygo/psbt/Errors.js +0 -44
  309. package/dist/src/paygo/psbt/payGoAddressProof.js +0 -124
  310. package/dist/src/testutil/descriptor/descriptors.js +0 -162
  311. package/dist/src/testutil/descriptor/mock.utils.js +0 -92
  312. package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
  313. package/dist/src/testutil/generatePayGoAttestationProof.utils.js +0 -38
  314. package/dist/src/testutil/key.utils.js +0 -59
  315. package/dist/src/testutil/toPlainObject.utils.js +0 -75
  316. package/dist/src/xOnlyPubkey.js +0 -18
  317. /package/dist/{src → cjs/src}/Output.d.ts +0 -0
  318. /package/dist/{src → cjs/src}/bip65/index.d.ts +0 -0
  319. /package/dist/{src → cjs/src}/bip65/locktime.d.ts +0 -0
  320. /package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +0 -0
  321. /package/dist/{src → cjs/src}/dustThreshold.d.ts +0 -0
  322. /package/dist/{src → cjs/src}/paygo/attestation.d.ts +0 -0
  323. /package/dist/{src → cjs/src}/paygo/index.d.ts +0 -0
  324. /package/dist/{src → cjs/src}/paygo/parsePayGoAttestation.d.ts +0 -0
  325. /package/dist/{src → cjs/src}/paygo/psbt/Errors.d.ts +0 -0
  326. /package/dist/{src → cjs/src}/paygo/psbt/index.d.ts +0 -0
  327. /package/dist/{src → cjs/src}/paygo/psbt/payGoAddressProof.d.ts +0 -0
  328. /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
  329. /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
  330. /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
  331. /package/dist/{src → cjs/src}/testutil/generatePayGoAttestationProof.utils.d.ts +0 -0
  332. /package/dist/{src → cjs/src}/testutil/index.d.ts +0 -0
  333. /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
  334. /package/dist/{src → cjs/src}/testutil/trimMessagePrefix.d.ts +0 -0
  335. /package/dist/{src → cjs/src}/xOnlyPubkey.d.ts +0 -0
  336. /package/dist/{src → esm}/Output.d.ts.map +0 -0
  337. /package/dist/{src → esm}/bip65/index.d.ts.map +0 -0
  338. /package/dist/{src → esm}/bip65/locktime.d.ts.map +0 -0
  339. /package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +0 -0
  340. /package/dist/{src → esm}/dustThreshold.d.ts.map +0 -0
  341. /package/dist/{src → esm}/paygo/attestation.d.ts.map +0 -0
  342. /package/dist/{src → esm}/paygo/index.d.ts.map +0 -0
  343. /package/dist/{src → esm}/paygo/parsePayGoAttestation.d.ts.map +0 -0
  344. /package/dist/{src → esm}/paygo/psbt/Errors.d.ts.map +0 -0
  345. /package/dist/{src → esm}/paygo/psbt/index.d.ts.map +0 -0
  346. /package/dist/{src → esm}/paygo/psbt/payGoAddressProof.d.ts.map +0 -0
  347. /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
  348. /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
  349. /package/dist/{src → esm}/testutil/generatePayGoAttestationProof.utils.d.ts.map +0 -0
  350. /package/dist/{src → esm}/testutil/index.d.ts.map +0 -0
  351. /package/dist/{src → esm}/testutil/trimMessagePrefix.d.ts.map +0 -0
  352. /package/dist/{src → esm}/xOnlyPubkey.d.ts.map +0 -0
@@ -1,124 +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
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.addPayGoAddressProof = addPayGoAddressProof;
37
- exports.verifyPayGoAddressProof = verifyPayGoAddressProof;
38
- exports.getPayGoAddressProofOutputIndex = getPayGoAddressProofOutputIndex;
39
- exports.psbtOutputIncludesPaygoAddressProof = psbtOutputIncludesPaygoAddressProof;
40
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
- const utils_1 = require("bip174/src/lib/utils");
42
- const bip32utils_1 = require("../../bip32utils");
43
- const attestation_1 = require("../attestation");
44
- const Errors_1 = require("./Errors");
45
- /** This function adds the entropy and signature into the PSBT output unknown key vals.
46
- * We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
47
- * to later verify.
48
- *
49
- * @param psbt - PSBT that we need to encode our paygo address into
50
- * @param outputIndex - the index of the address in our output
51
- * @param sig - the signature that we want to encode
52
- * @param entropy - the arbitrary entropy bytes from our vasp proof
53
- */
54
- function addPayGoAddressProof(psbt, outputIndex, sig, entropy) {
55
- utxolib.bitgo.addProprietaryKeyValuesFromUnknownKeyValues(psbt, 'output', outputIndex, {
56
- key: {
57
- identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
58
- subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
59
- keydata: entropy,
60
- },
61
- value: sig,
62
- });
63
- }
64
- /** Verify the paygo address signature is valid using verification pub key.
65
- *
66
- * @param psbt - PSBT we want to verify that the paygo address is in
67
- * @param outputIndex - we have the output index that address is in
68
- * @param verificationPubkey - the pubkey signed by the HSM to verify our message
69
- * @returns
70
- */
71
- function verifyPayGoAddressProof(psbt, outputIndex, verificationPubkey) {
72
- const psbtOutputs = (0, utils_1.checkForOutput)(psbt.data.outputs, outputIndex);
73
- const stored = utxolib.bitgo.getProprietaryKeyValuesFromUnknownKeyValues(psbtOutputs, {
74
- identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
75
- subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
76
- });
77
- // assert stored length is 0 or 1
78
- if (stored.length === 0) {
79
- throw new Errors_1.ErrorNoPayGoProof(outputIndex);
80
- }
81
- else if (stored.length > 1) {
82
- throw new Errors_1.ErrorMultiplePayGoProof();
83
- }
84
- // We get the signature and entropy from our PSBT unknown key vals
85
- const signature = stored[0].value;
86
- const entropy = stored[0].key.keydata;
87
- // Get the the PayGo address from the txOutputs
88
- const txOutputs = psbt.txOutputs;
89
- if (outputIndex >= txOutputs.length) {
90
- throw new Errors_1.ErrorOutputIndexOutOfBounds(outputIndex);
91
- }
92
- const output = txOutputs[outputIndex];
93
- const addressFromOutput = utxolib.address.fromOutputScript(output.script, psbt.network);
94
- // We construct our message <ENTROPY><ADDRESS><UUID>
95
- const message = (0, attestation_1.createPayGoAttestationBuffer)(addressFromOutput, entropy, psbt.network);
96
- // bip32utils.verifyMessage now takes in message as a Buffer
97
- if (!(0, bip32utils_1.verifyMessage)(message, verificationPubkey, signature, utxolib.networks.bitcoin)) {
98
- throw new Errors_1.ErrorPayGoAddressProofFailedVerification();
99
- }
100
- }
101
- /** Get the output index of the paygo output if there is one. It does this by
102
- * checking if the metadata is on one of the outputs of the PSBT. If there is
103
- * no paygo output, return undefined
104
- *
105
- * @param psbt
106
- * @returns number - the index of the output address
107
- */
108
- function getPayGoAddressProofOutputIndex(psbt) {
109
- const res = psbt.data.outputs.flatMap((output, outputIndex) => {
110
- const proprietaryKeyVals = utxolib.bitgo.getPsbtOutputProprietaryKeyVals(output, {
111
- identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
112
- subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
113
- });
114
- if (proprietaryKeyVals.length > 1) {
115
- throw new Errors_1.ErrorMultiplePayGoProofAtPsbtIndex(outputIndex);
116
- }
117
- return proprietaryKeyVals.length === 0 ? [] : [outputIndex];
118
- });
119
- return res.length === 0 ? undefined : res[0];
120
- }
121
- function psbtOutputIncludesPaygoAddressProof(psbt) {
122
- return getPayGoAddressProofOutputIndex(psbt) !== undefined;
123
- }
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5R29BZGRyZXNzUHJvb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9wYXlHb0FkZHJlc3NQcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQSxvREFjQztBQVNELDBEQXFDQztBQVNELDBFQWVDO0FBRUQsa0ZBRUM7QUEvR0QsOERBQWdEO0FBQ2hELGdEQUFzRDtBQUV0RCxpREFBaUQ7QUFDakQsZ0RBQThEO0FBRTlELHFDQU1rQjtBQUVsQjs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxJQUE0QixFQUM1QixXQUFtQixFQUNuQixHQUFXLEVBQ1gsT0FBZTtJQUVmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7UUFDckYsR0FBRyxFQUFFO1lBQ0gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCO1lBQ3JELE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLCtCQUErQjtZQUM1RSxPQUFPLEVBQUUsT0FBTztTQUNqQjtRQUNELEtBQUssRUFBRSxHQUFHO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHVCQUF1QixDQUNyQyxJQUE0QixFQUM1QixXQUFtQixFQUNuQixrQkFBMEI7SUFFMUIsTUFBTSxXQUFXLEdBQUcsSUFBQSxzQkFBYyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsV0FBVyxFQUFFO1FBQ3BGLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQjtRQUNyRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQywrQkFBK0I7S0FDN0UsQ0FBQyxDQUFDO0lBRUgsaUNBQWlDO0lBQ2pDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksMEJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztTQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksZ0NBQXVCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFFdEMsK0NBQStDO0lBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDakMsSUFBSSxXQUFXLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxvQ0FBMkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV4RixvREFBb0Q7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBQSwwQ0FBNEIsRUFBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZGLDREQUE0RDtJQUM1RCxJQUFJLENBQUMsSUFBQSwwQkFBYSxFQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3JGLE1BQU0sSUFBSSxpREFBd0MsRUFBRSxDQUFDO0lBQ3ZELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsK0JBQStCLENBQUMsSUFBNEI7SUFDMUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQzVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLEVBQUU7WUFDL0UsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCO1lBQ3JELE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLCtCQUErQjtTQUM3RSxDQUFDLENBQUM7UUFFSCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksMkNBQWtDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELE9BQU8sa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQWdCLG1DQUFtQyxDQUFDLElBQTRCO0lBQzlFLE9BQU8sK0JBQStCLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGNoZWNrRm9yT3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyB2ZXJpZnlNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYmlwMzJ1dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyIH0gZnJvbSAnLi4vYXR0ZXN0YXRpb24nO1xuXG5pbXBvcnQge1xuICBFcnJvck11bHRpcGxlUGF5R29Qcm9vZixcbiAgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2ZBdFBzYnRJbmRleCxcbiAgRXJyb3JOb1BheUdvUHJvb2YsXG4gIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyxcbiAgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbixcbn0gZnJvbSAnLi9FcnJvcnMnO1xuXG4vKiogVGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBlbnRyb3B5IGFuZCBzaWduYXR1cmUgaW50byB0aGUgUFNCVCBvdXRwdXQgdW5rbm93biBrZXkgdmFscy5cbiAqIFdlIHN0b3JlIHRoZSBlbnRyb3B5IHNvIHRoYXQgd2UgcmVjb25zdHJ1Y3QgdGhlIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gKiB0byBsYXRlciB2ZXJpZnkuXG4gKlxuICogQHBhcmFtIHBzYnQgLSBQU0JUIHRoYXQgd2UgbmVlZCB0byBlbmNvZGUgb3VyIHBheWdvIGFkZHJlc3MgaW50b1xuICogQHBhcmFtIG91dHB1dEluZGV4IC0gdGhlIGluZGV4IG9mIHRoZSBhZGRyZXNzIGluIG91ciBvdXRwdXRcbiAqIEBwYXJhbSBzaWcgLSB0aGUgc2lnbmF0dXJlIHRoYXQgd2Ugd2FudCB0byBlbmNvZGVcbiAqIEBwYXJhbSBlbnRyb3B5IC0gdGhlIGFyYml0cmFyeSBlbnRyb3B5IGJ5dGVzIGZyb20gb3VyIHZhc3AgcHJvb2ZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFBheUdvQWRkcmVzc1Byb29mKFxuICBwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBzaWc6IEJ1ZmZlcixcbiAgZW50cm9weTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgdXR4b2xpYi5iaXRnby5hZGRQcm9wcmlldGFyeUtleVZhbHVlc0Zyb21Vbmtub3duS2V5VmFsdWVzKHBzYnQsICdvdXRwdXQnLCBvdXRwdXRJbmRleCwge1xuICAgIGtleToge1xuICAgICAgaWRlbnRpZmllcjogdXR4b2xpYi5iaXRnby5QU0JUX1BST1BSSUVUQVJZX0lERU5USUZJRVIsXG4gICAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICAgICAga2V5ZGF0YTogZW50cm9weSxcbiAgICB9LFxuICAgIHZhbHVlOiBzaWcsXG4gIH0pO1xufVxuXG4vKiogVmVyaWZ5IHRoZSBwYXlnbyBhZGRyZXNzIHNpZ25hdHVyZSBpcyB2YWxpZCB1c2luZyB2ZXJpZmljYXRpb24gcHViIGtleS5cbiAqXG4gKiBAcGFyYW0gcHNidCAtIFBTQlQgd2Ugd2FudCB0byB2ZXJpZnkgdGhhdCB0aGUgcGF5Z28gYWRkcmVzcyBpcyBpblxuICogQHBhcmFtIG91dHB1dEluZGV4IC0gd2UgaGF2ZSB0aGUgb3V0cHV0IGluZGV4IHRoYXQgYWRkcmVzcyBpcyBpblxuICogQHBhcmFtIHZlcmlmaWNhdGlvblB1YmtleSAtIHRoZSBwdWJrZXkgc2lnbmVkIGJ5IHRoZSBIU00gdG8gdmVyaWZ5IG91ciBtZXNzYWdlXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIG91dHB1dEluZGV4OiBudW1iZXIsXG4gIHZlcmlmaWNhdGlvblB1YmtleTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgY29uc3QgcHNidE91dHB1dHMgPSBjaGVja0Zvck91dHB1dChwc2J0LmRhdGEub3V0cHV0cywgb3V0cHV0SW5kZXgpO1xuICBjb25zdCBzdG9yZWQgPSB1dHhvbGliLmJpdGdvLmdldFByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMocHNidE91dHB1dHMsIHtcbiAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICB9KTtcblxuICAvLyBhc3NlcnQgc3RvcmVkIGxlbmd0aCBpcyAwIG9yIDFcbiAgaWYgKHN0b3JlZC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JOb1BheUdvUHJvb2Yob3V0cHV0SW5kZXgpO1xuICB9IGVsc2UgaWYgKHN0b3JlZC5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yTXVsdGlwbGVQYXlHb1Byb29mKCk7XG4gIH1cblxuICAvLyBXZSBnZXQgdGhlIHNpZ25hdHVyZSBhbmQgZW50cm9weSBmcm9tIG91ciBQU0JUIHVua25vd24ga2V5IHZhbHNcbiAgY29uc3Qgc2lnbmF0dXJlID0gc3RvcmVkWzBdLnZhbHVlO1xuICBjb25zdCBlbnRyb3B5ID0gc3RvcmVkWzBdLmtleS5rZXlkYXRhO1xuXG4gIC8vIEdldCB0aGUgdGhlIFBheUdvIGFkZHJlc3MgZnJvbSB0aGUgdHhPdXRwdXRzXG4gIGNvbnN0IHR4T3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzO1xuICBpZiAob3V0cHV0SW5kZXggPj0gdHhPdXRwdXRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvck91dHB1dEluZGV4T3V0T2ZCb3VuZHMob3V0cHV0SW5kZXgpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IHR4T3V0cHV0c1tvdXRwdXRJbmRleF07XG4gIGNvbnN0IGFkZHJlc3NGcm9tT3V0cHV0ID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0cHV0LnNjcmlwdCwgcHNidC5uZXR3b3JrKTtcblxuICAvLyBXZSBjb25zdHJ1Y3Qgb3VyIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyKGFkZHJlc3NGcm9tT3V0cHV0LCBlbnRyb3B5LCBwc2J0Lm5ldHdvcmspO1xuXG4gIC8vIGJpcDMydXRpbHMudmVyaWZ5TWVzc2FnZSBub3cgdGFrZXMgaW4gbWVzc2FnZSBhcyBhIEJ1ZmZlclxuICBpZiAoIXZlcmlmeU1lc3NhZ2UobWVzc2FnZSwgdmVyaWZpY2F0aW9uUHVia2V5LCBzaWduYXR1cmUsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbigpO1xuICB9XG59XG5cbi8qKiBHZXQgdGhlIG91dHB1dCBpbmRleCBvZiB0aGUgcGF5Z28gb3V0cHV0IGlmIHRoZXJlIGlzIG9uZS4gSXQgZG9lcyB0aGlzIGJ5XG4gKiBjaGVja2luZyBpZiB0aGUgbWV0YWRhdGEgaXMgb24gb25lIG9mIHRoZSBvdXRwdXRzIG9mIHRoZSBQU0JULiBJZiB0aGVyZSBpc1xuICogbm8gcGF5Z28gb3V0cHV0LCByZXR1cm4gdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHBzYnRcbiAqIEByZXR1cm5zIG51bWJlciAtIHRoZSBpbmRleCBvZiB0aGUgb3V0cHV0IGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBheUdvQWRkcmVzc1Byb29mT3V0cHV0SW5kZXgocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlcyA9IHBzYnQuZGF0YS5vdXRwdXRzLmZsYXRNYXAoKG91dHB1dCwgb3V0cHV0SW5kZXgpID0+IHtcbiAgICBjb25zdCBwcm9wcmlldGFyeUtleVZhbHMgPSB1dHhvbGliLmJpdGdvLmdldFBzYnRPdXRwdXRQcm9wcmlldGFyeUtleVZhbHMob3V0cHV0LCB7XG4gICAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICAgIHN1YnR5cGU6IHV0eG9saWIuYml0Z28uUHJvcHJpZXRhcnlLZXlTdWJ0eXBlLlBBWUdPX0FERFJFU1NfQVRURVNUQVRJT05fUFJPT0YsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHJpZXRhcnlLZXlWYWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZkF0UHNidEluZGV4KG91dHB1dEluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHJpZXRhcnlLZXlWYWxzLmxlbmd0aCA9PT0gMCA/IFtdIDogW291dHB1dEluZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiByZXNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwc2J0T3V0cHV0SW5jbHVkZXNQYXlnb0FkZHJlc3NQcm9vZihwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4KHBzYnQpICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -1,162 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getDefaultXPubs = getDefaultXPubs;
7
- exports.getUnspendableKey = getUnspendableKey;
8
- exports.getPsbtParams = getPsbtParams;
9
- exports.containsKey = containsKey;
10
- exports.getTapLeafScripts = getTapLeafScripts;
11
- exports.getDescriptor = getDescriptor;
12
- exports.getDescriptorMap = getDescriptorMap;
13
- const assert_1 = __importDefault(require("assert"));
14
- const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
15
- const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
16
- const key_utils_1 = require("../key.utils");
17
- function getDefaultXPubs(seed) {
18
- return (0, key_utils_1.getKeyTriple)(seed).map((k) => k.neutered().toBase58());
19
- }
20
- function getUnspendableKey() {
21
- /*
22
- https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#constructing-and-spending-taproot-outputs
23
-
24
- ```
25
- If one or more of the spending conditions consist of just a single key (after aggregation), the most likely one should
26
- be made the internal key. If no such condition exists, it may be worthwhile adding one that consists of an aggregation
27
- of all keys participating in all scripts combined; effectively adding an "everyone agrees" branch. If that is
28
- inacceptable, pick as internal key a "Nothing Up My Sleeve" (NUMS) point, i.e., a point with unknown discrete
29
- logarithm.
30
-
31
- One example of such a point is H = lift_x(0x50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0) which is
32
- constructed by taking the hash of the standard uncompressed encoding of the secp256k1 base point G as X coordinate.
33
- In order to avoid leaking the information that key path spending is not possible it is recommended to pick a fresh
34
- integer r in the range 0...n-1 uniformly at random and use H + rG as internal key. It is possible to prove that this
35
- internal key does not have a known discrete logarithm with respect to G by revealing r to a verifier who can then
36
- reconstruct how the internal key was created.
37
- ```
38
-
39
- We could do the random integer trick here, but for internal testing it is sufficient to use the fixed point.
40
- */
41
- return '50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0';
42
- }
43
- function toDescriptorMap(v) {
44
- return new Map(Object.entries(v).map(([k, v]) => [k, wasm_miniscript_1.Descriptor.fromString(v, 'derivable')]));
45
- }
46
- function toXPub(k, path) {
47
- if (typeof k === 'string') {
48
- return k + '/' + path;
49
- }
50
- return k.neutered().toBase58() + '/' + path;
51
- }
52
- function toPlain(k, { xonly = false } = {}) {
53
- if (typeof k === 'string') {
54
- if (k.startsWith('xpub') || k.startsWith('xprv')) {
55
- return toPlain(utxo_lib_1.bip32.fromBase58(k), { xonly });
56
- }
57
- return k;
58
- }
59
- return k.publicKey.subarray(xonly ? 1 : 0).toString('hex');
60
- }
61
- function toXOnly(k) {
62
- return toPlain(k, { xonly: true });
63
- }
64
- function multiArgs(m, n, keys, path) {
65
- if (n < m) {
66
- throw new Error(`Cannot create ${m} of ${n} multisig`);
67
- }
68
- if (keys.length < n) {
69
- throw new Error(`Not enough keys for ${m} of ${n} multisig: keys.length=${keys.length}`);
70
- }
71
- keys = keys.slice(0, n);
72
- return [m, ...keys.map((k) => toXPub(k, path))];
73
- }
74
- function getPsbtParams(t) {
75
- switch (t) {
76
- case 'Wsh2Of3CltvDrop':
77
- return { locktime: 1 };
78
- default:
79
- return {};
80
- }
81
- }
82
- function getDescriptorNode(template, keys = getDefaultXPubs(), path = '0/*') {
83
- switch (template) {
84
- case 'Wsh2Of3':
85
- return {
86
- wsh: { multi: multiArgs(2, 3, keys, path) },
87
- };
88
- case 'Wsh2Of3CltvDrop':
89
- const { locktime } = getPsbtParams(template);
90
- (0, assert_1.default)(locktime);
91
- return {
92
- wsh: {
93
- and_v: [{ 'r:after': locktime }, { multi: multiArgs(2, 3, keys, path) }],
94
- },
95
- };
96
- case 'Wsh2Of2':
97
- return {
98
- wsh: { multi: multiArgs(2, 2, keys, path) },
99
- };
100
- case 'Tr2Of3-NoKeyPath':
101
- return {
102
- tr: [getUnspendableKey(), { multi_a: multiArgs(2, 3, keys, path) }],
103
- };
104
- case 'Tr1Of3-NoKeyPath-Tree':
105
- return {
106
- tr: [
107
- getUnspendableKey(),
108
- [{ pk: toXPub(keys[0], path) }, [{ pk: toXPub(keys[1], path) }, { pk: toXPub(keys[2], path) }]],
109
- ],
110
- };
111
- case 'Tr1Of3-NoKeyPath-Tree-Plain':
112
- return {
113
- tr: [getUnspendableKey(), [{ pk: toXOnly(keys[0]) }, [{ pk: toXOnly(keys[1]) }, { pk: toXOnly(keys[2]) }]]],
114
- };
115
- }
116
- throw new Error(`Unknown descriptor template: ${template}`);
117
- }
118
- function getTapLeafScriptNodes(t) {
119
- if (Array.isArray(t)) {
120
- if (t.length !== 2) {
121
- throw new Error(`expected tuple, got: ${JSON.stringify(t)}`);
122
- }
123
- return t.map((v) => (Array.isArray(v) ? getTapLeafScriptNodes(v) : v)).flat();
124
- }
125
- if (typeof t === 'object') {
126
- const node = t;
127
- if (!('tr' in node)) {
128
- throw new Error(`TapLeafScripts are only supported for Taproot descriptors, got: ${t}`);
129
- }
130
- if (!Array.isArray(node.tr) || node.tr.length !== 2) {
131
- throw new Error(`expected tuple, got: ${JSON.stringify(node.tr)}`);
132
- }
133
- const tapscript = node.tr[1];
134
- if (!Array.isArray(tapscript)) {
135
- throw new Error(`expected tapscript to be an array, got: ${JSON.stringify(tapscript)}`);
136
- }
137
- return getTapLeafScriptNodes(tapscript);
138
- }
139
- throw new Error(`Invalid input: ${JSON.stringify(t)}`);
140
- }
141
- function containsKey(script, key) {
142
- if (script instanceof wasm_miniscript_1.Miniscript) {
143
- script = wasm_miniscript_1.ast.fromMiniscript(script);
144
- }
145
- if ('pk' in script) {
146
- return script.pk === toXOnly(key);
147
- }
148
- throw new Error(`Unsupported script type: ${JSON.stringify(script)}`);
149
- }
150
- function getTapLeafScripts(d) {
151
- return getTapLeafScriptNodes(wasm_miniscript_1.ast.fromDescriptor(d)).map((n) => wasm_miniscript_1.Miniscript.fromString(wasm_miniscript_1.ast.formatNode(n), 'tap').toString());
152
- }
153
- function getDescriptor(template, keys = getDefaultXPubs(), path = '0/*') {
154
- return wasm_miniscript_1.Descriptor.fromStringDetectType(wasm_miniscript_1.ast.formatNode(getDescriptorNode(template, keys, path)));
155
- }
156
- function getDescriptorMap(template, keys = getDefaultXPubs()) {
157
- return toDescriptorMap({
158
- external: getDescriptor(template, keys, '0/*').toString(),
159
- internal: getDescriptor(template, keys, '1/*').toString(),
160
- });
161
- }
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVzdHV0aWwvZGVzY3JpcHRvci9kZXNjcmlwdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVFBLDBDQUVDO0FBRUQsOENBc0JDO0FBb0RELHNDQU9DO0FBdUVELGtDQVFDO0FBRUQsOENBSUM7QUFFRCxzQ0FNQztBQUVELDRDQVFDO0FBcE1ELG9EQUE0QjtBQUU1Qiw0REFBcUU7QUFDckUsbURBQTZEO0FBRzdELDRDQUErRDtBQUUvRCxTQUFnQixlQUFlLENBQUMsSUFBYTtJQUMzQyxPQUFPLElBQUEsd0JBQVksRUFBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBbUIsQ0FBQztBQUNsRixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCO0lBQy9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUJFO0lBQ0YsT0FBTyxrRUFBa0UsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsQ0FBeUI7SUFDaEQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSw0QkFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEcsQ0FBQztBQWdCRCxTQUFTLE1BQU0sQ0FBQyxDQUEwQixFQUFFLElBQVk7SUFDdEQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQyxR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LFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLFFBQTRCLEVBQzVCLE9BQTZCLGVBQWUsRUFBRTtJQUU5QyxPQUFPLGVBQWUsQ0FBQztRQUNyQixRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQ3pELFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUU7S0FDMUQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgTWluaXNjcmlwdCwgRGVzY3JpcHRvciwgYXN0IH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgeyBiaXAzMiwgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JNYXAsIFBzYnRQYXJhbXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9yJztcbmltcG9ydCB7IGdldEtleVRyaXBsZSwgVHJpcGxlLCBLZXlUcmlwbGUgfSBmcm9tICcuLi9rZXkudXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFhQdWJzKHNlZWQ/OiBzdHJpbmcpOiBUcmlwbGU8c3RyaW5nPiB7XG4gIHJldHVybiBnZXRLZXlUcmlwbGUoc2VlZCkubWFwKChrKSA9PiBrLm5ldXRlcmVkKCkudG9CYXNlNTgoKSkgYXMgVHJpcGxlPHN0cmluZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbnNwZW5kYWJsZUtleSgpOiBzdHJpbmcge1xuICAvKlxuICBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVyL2JpcC0wMzQxLm1lZGlhd2lraSNjb25zdHJ1Y3RpbmctYW5kLXNwZW5kaW5nLXRhcHJvb3Qtb3V0cHV0c1xuXG4gIGBgYFxuICBJZiBvbmUgb3IgbW9yZSBvZiB0aGUgc3BlbmRpbmcgY29uZGl0aW9ucyBjb25zaXN0IG9mIGp1c3QgYSBzaW5nbGUga2V5IChhZnRlciBhZ2dyZWdhdGlvbiksIHRoZSBtb3N0IGxpa2VseSBvbmUgc2hvdWxkXG4gIGJlIG1hZGUgdGhlIGludGVybmFsIGtleS4gSWYgbm8gc3VjaCBjb25kaXRpb24gZXhpc3RzLCBpdCBtYXkgYmUgd29ydGh3aGlsZSBhZGRpbmcgb25lIHRoYXQgY29uc2lzdHMgb2YgYW4gYWdncmVnYXRpb25cbiAgb2YgYWxsIGtleXMgcGFydGljaXBhdGluZyBpbiBhbGwgc2NyaXB0cyBjb21iaW5lZDsgZWZmZWN0aXZlbHkgYWRkaW5nIGFuIFwiZXZlcnlvbmUgYWdyZWVzXCIgYnJhbmNoLiBJZiB0aGF0IGlzXG4gIGluYWNjZXB0YWJsZSwgcGljayBhcyBpbnRlcm5hbCBrZXkgYSBcIk5vdGhpbmcgVXAgTXkgU2xlZXZlXCIgKE5VTVMpIHBvaW50LCBpLmUuLCBhIHBvaW50IHdpdGggdW5rbm93biBkaXNjcmV0ZVxuICBsb2dhcml0aG0uXG5cbiAgT25lIGV4YW1wbGUgb2Ygc3VjaCBhIHBvaW50IGlzIEggPSBsaWZ0X3goMHg1MDkyOWI3NGMxYTA0OTU0Yjc4YjRiNjAzNWU5N2E1ZTA3OGE1YTBmMjhlYzk2ZDU0N2JmZWU5YWNlODAzYWMwKSB3aGljaCBpc1xuICBjb25zdHJ1Y3RlZCBieSB0YWtpbmcgdGhlIGhhc2ggb2YgdGhlIHN0YW5kYXJkIHVuY29tcHJlc3NlZCBlbmNvZGluZyBvZiB0aGUgc2VjcDI1NmsxIGJhc2UgcG9pbnQgRyBhcyBYIGNvb3JkaW5hdGUuXG4gIEluIG9yZGVyIHRvIGF2b2lkIGxlYWtpbmcgdGhlIGluZm9ybWF0aW9uIHRoYXQga2V5IHBhdGggc3BlbmRpbmcgaXMgbm90IHBvc3NpYmxlIGl0IGlzIHJlY29tbWVuZGVkIHRvIHBpY2sgYSBmcmVzaFxuICBpbnRlZ2VyIHIgaW4gdGhlIHJhbmdlIDAuLi5uLTEgdW5pZm9ybWx5IGF0IHJhbmRvbSBhbmQgdXNlIEggKyByRyBhcyBpbnRlcm5hbCBrZXkuIEl0IGlzIHBvc3NpYmxlIHRvIHByb3ZlIHRoYXQgdGhpc1xuICBpbnRlcm5hbCBrZXkgZG9lcyBub3QgaGF2ZSBhIGtub3duIGRpc2NyZXRlIGxvZ2FyaXRobSB3aXRoIHJlc3BlY3QgdG8gRyBieSByZXZlYWxpbmcgciB0byBhIHZlcmlmaWVyIHdobyBjYW4gdGhlblxuICByZWNvbnN0cnVjdCBob3cgdGhlIGludGVybmFsIGtleSB3YXMgY3JlYXRlZC5cbiAgYGBgXG5cbiAgV2UgY291bGQgZG8gdGhlIHJhbmRvbSBpbnRlZ2VyIHRyaWNrIGhlcmUsIGJ1dCBmb3IgaW50ZXJuYWwgdGVzdGluZyBpdCBpcyBzdWZmaWNpZW50IHRvIHVzZSB0aGUgZml4ZWQgcG9pbnQuXG4gICovXG4gIHJldHVybiAnNTA5MjliNzRjMWEwNDk1NGI3OGI0YjYwMzVlOTdhNWUwNzhhNWEwZjI4ZWM5NmQ1NDdiZmVlOWFjZTgwM2FjMCc7XG59XG5cbmZ1bmN0aW9uIHRvRGVzY3JpcHRvck1hcCh2OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogRGVzY3JpcHRvck1hcCB7XG4gIHJldHVybiBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHYpLm1hcCgoW2ssIHZdKSA9PiBbaywgRGVzY3JpcHRvci5mcm9tU3RyaW5nKHYsICdkZXJpdmFibGUnKV0pKTtcbn1cblxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvclRlbXBsYXRlID1cbiAgfCAnV3NoMk9mMydcbiAgfCAnVHIxT2YzLU5vS2V5UGF0aC1UcmVlJ1xuICAvLyBubyB4cHVicywganVzdCBwbGFpbiBrZXlzXG4gIHwgJ1RyMU9mMy1Ob0tleVBhdGgtVHJlZS1QbGFpbidcbiAgfCAnVHIyT2YzLU5vS2V5UGF0aCdcbiAgfCAnV3NoMk9mMidcbiAgLypcbiAgICogVGhpcyBpcyBhIHdyYXBwZWQgc2Vnd2l0IDJvZjMgbXVsdGlzaWcgdGhhdCBhbHNvIHVzZXMgYSByZWxhdGl2ZSBsb2NrdGltZSB3aXRoXG4gICAqIGFuIE9QX0RST1AgKHJlcXVpcmluZyBhIG1pbmlzY3JpcHQgZXh0ZW5zaW9uKS5cbiAgICogSXQgaXMgYmFzaWNhbGx5IHdoYXQgaXMgdXNlZCBpbiBDb3JlRGFvIHN0YWtpbmcgdHJhbnNhY3Rpb25zLlxuICAgKi9cbiAgfCAnV3NoMk9mM0NsdHZEcm9wJztcblxuZnVuY3Rpb24gdG9YUHViKGs6IEJJUDMySW50ZXJmYWNlIHwgc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGsgKyAnLycgKyBwYXRoO1xuICB9XG4gIHJldHVybiBrLm5ldXRlcmVkKCkudG9CYXNlNTgoKSArICcvJyArIHBhdGg7XG59XG5cbmZ1bmN0aW9uIHRvUGxhaW4oazogQklQMzJJbnRlcmZhY2UgfCBzdHJpbmcsIHsgeG9ubHkgPSBmYWxzZSB9ID0ge30pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKGsuc3RhcnRzV2l0aCgneHB1YicpIHx8IGsuc3RhcnRzV2l0aCgneHBydicpKSB7XG4gICAgICByZXR1cm4gdG9QbGFpbihiaXAzMi5mcm9tQmFzZTU4KGspLCB7IHhvbmx5IH0pO1xuICAgIH1cbiAgICByZXR1cm4gaztcbiAgfVxuICByZXR1cm4gay5wdWJsaWNLZXkuc3ViYXJyYXkoeG9ubHkgPyAxIDogMCkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG5mdW5jdGlvbiB0b1hPbmx5KGs6IEJJUDMySW50ZXJmYWNlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRvUGxhaW4oaywgeyB4b25seTogdHJ1ZSB9KTtcbn1cblxuZnVuY3Rpb24gbXVsdGlBcmdzKG06IG51bWJlciwgbjogbnVtYmVyLCBrZXlzOiBCSVAzMkludGVyZmFjZVtdIHwgc3RyaW5nW10sIHBhdGg6IHN0cmluZyk6IFtudW1iZXIsIC4uLnN0cmluZ1tdXSB7XG4gIGlmIChuIDwgbSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSAke219IG9mICR7bn0gbXVsdGlzaWdgKTtcbiAgfVxuICBpZiAoa2V5cy5sZW5ndGggPCBuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgZW5vdWdoIGtleXMgZm9yICR7bX0gb2YgJHtufSBtdWx0aXNpZzoga2V5cy5sZW5ndGg9JHtrZXlzLmxlbmd0aH1gKTtcbiAgfVxuICBrZXlzID0ga2V5cy5zbGljZSgwLCBuKTtcbiAgcmV0dXJuIFttLCAuLi5rZXlzLm1hcCgoaykgPT4gdG9YUHViKGssIHBhdGgpKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQc2J0UGFyYW1zKHQ6IERlc2NyaXB0b3JUZW1wbGF0ZSk6IFBhcnRpYWw8UHNidFBhcmFtcz4ge1xuICBzd2l0Y2ggKHQpIHtcbiAgICBjYXNlICdXc2gyT2YzQ2x0dkRyb3AnOlxuICAgICAgcmV0dXJuIHsgbG9ja3RpbWU6IDEgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlc2NyaXB0b3JOb2RlKFxuICB0ZW1wbGF0ZTogRGVzY3JpcHRvclRlbXBsYXRlLFxuICBrZXlzOiBLZXlUcmlwbGUgfCBzdHJpbmdbXSA9IGdldERlZmF1bHRYUHVicygpLFxuICBwYXRoID0gJzAvKidcbik6IGFzdC5EZXNjcmlwdG9yTm9kZSB7XG4gIHN3aXRjaCAodGVtcGxhdGUpIHtcbiAgICBjYXNlICdXc2gyT2YzJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdzaDogeyBtdWx0aTogbXVsdGlBcmdzKDIsIDMsIGtleXMsIHBhdGgpIH0sXG4gICAgICB9O1xuICAgIGNhc2UgJ1dzaDJPZjNDbHR2RHJvcCc6XG4gICAgICBjb25zdCB7IGxvY2t0aW1lIH0gPSBnZXRQc2J0UGFyYW1zKHRlbXBsYXRlKTtcbiAgICAgIGFzc2VydChsb2NrdGltZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3c2g6IHtcbiAgICAgICAgICBhbmRfdjogW3sgJ3I6YWZ0ZXInOiBsb2NrdGltZSB9LCB7IG11bHRpOiBtdWx0aUFyZ3MoMiwgMywga2V5cywgcGF0aCkgfV0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIGNhc2UgJ1dzaDJPZjInOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3NoOiB7IG11bHRpOiBtdWx0aUFyZ3MoMiwgMiwga2V5cywgcGF0aCkgfSxcbiAgICAgIH07XG4gICAgY2FzZSAnVHIyT2YzLU5vS2V5UGF0aCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cjogW2dldFVuc3BlbmRhYmxlS2V5KCksIHsgbXVsdGlfYTogbXVsdGlBcmdzKDIsIDMsIGtleXMsIHBhdGgpIH1dLFxuICAgICAgfTtcbiAgICBjYXNlICdUcjFPZjMtTm9LZXlQYXRoLVRyZWUnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHI6IFtcbiAgICAgICAgICBnZXRVbnNwZW5kYWJsZUtleSgpLFxuICAgICAgICAgIFt7IHBrOiB0b1hQdWIoa2V5c1swXSwgcGF0aCkgfSwgW3sgcGs6IHRvWFB1YihrZXlzWzFdLCBwYXRoKSB9LCB7IHBrOiB0b1hQdWIoa2V5c1syXSwgcGF0aCkgfV1dLFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICBjYXNlICdUcjFPZjMtTm9LZXlQYXRoLVRyZWUtUGxhaW4nOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHI6IFtnZXRVbnNwZW5kYWJsZUtleSgpLCBbeyBwazogdG9YT25seShrZXlzWzBdKSB9LCBbeyBwazogdG9YT25seShrZXlzWzFdKSB9LCB7IHBrOiB0b1hPbmx5KGtleXNbMl0pIH1dXV0sXG4gICAgICB9O1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBkZXNjcmlwdG9yIHRlbXBsYXRlOiAke3RlbXBsYXRlfWApO1xufVxuXG50eXBlIFRhcFRyZWUgPSBbVGFwVHJlZSwgVGFwVHJlZV0gfCBhc3QuTWluaXNjcmlwdE5vZGU7XG5cbmZ1bmN0aW9uIGdldFRhcExlYWZTY3JpcHROb2Rlcyh0OiBhc3QuRGVzY3JpcHRvck5vZGUgfCBUYXBUcmVlKTogYXN0Lk1pbmlzY3JpcHROb2RlW10ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0KSkge1xuICAgIGlmICh0Lmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCB0dXBsZSwgZ290OiAke0pTT04uc3RyaW5naWZ5KHQpfWApO1xuICAgIH1cbiAgICByZXR1cm4gdC5tYXAoKHYpID0+IChBcnJheS5pc0FycmF5KHYpID8gZ2V0VGFwTGVhZlNjcmlwdE5vZGVzKHYpIDogdikpLmZsYXQoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdCA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBub2RlID0gdDtcbiAgICBpZiAoISgndHInIGluIG5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRhcExlYWZTY3JpcHRzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgVGFwcm9vdCBkZXNjcmlwdG9ycywgZ290OiAke3R9YCk7XG4gICAgfVxuICAgIGlmICghQXJyYXkuaXNBcnJheShub2RlLnRyKSB8fCBub2RlLnRyLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCB0dXBsZSwgZ290OiAke0pTT04uc3RyaW5naWZ5KG5vZGUudHIpfWApO1xuICAgIH1cbiAgICBjb25zdCB0YXBzY3JpcHQgPSBub2RlLnRyWzFdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0YXBzY3JpcHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIHRhcHNjcmlwdCB0byBiZSBhbiBhcnJheSwgZ290OiAke0pTT04uc3RyaW5naWZ5KHRhcHNjcmlwdCl9YCk7XG4gICAgfVxuICAgIHJldHVybiBnZXRUYXBMZWFmU2NyaXB0Tm9kZXModGFwc2NyaXB0KTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnB1dDogJHtKU09OLnN0cmluZ2lmeSh0KX1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zS2V5KHNjcmlwdDogTWluaXNjcmlwdCB8IGFzdC5NaW5pc2NyaXB0Tm9kZSwga2V5OiBCSVAzMkludGVyZmFjZSB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoc2NyaXB0IGluc3RhbmNlb2YgTWluaXNjcmlwdCkge1xuICAgIHNjcmlwdCA9IGFzdC5mcm9tTWluaXNjcmlwdChzY3JpcHQpO1xuICB9XG4gIGlmICgncGsnIGluIHNjcmlwdCkge1xuICAgIHJldHVybiBzY3JpcHQucGsgPT09IHRvWE9ubHkoa2V5KTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHNjcmlwdCB0eXBlOiAke0pTT04uc3RyaW5naWZ5KHNjcmlwdCl9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXBMZWFmU2NyaXB0cyhkOiBEZXNjcmlwdG9yKTogc3RyaW5nW10ge1xuICByZXR1cm4gZ2V0VGFwTGVhZlNjcmlwdE5vZGVzKGFzdC5mcm9tRGVzY3JpcHRvcihkKSkubWFwKChuKSA9PlxuICAgIE1pbmlzY3JpcHQuZnJvbVN0cmluZyhhc3QuZm9ybWF0Tm9kZShuKSwgJ3RhcCcpLnRvU3RyaW5nKClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3IoXG4gIHRlbXBsYXRlOiBEZXNjcmlwdG9yVGVtcGxhdGUsXG4gIGtleXM6IEtleVRyaXBsZSB8IHN0cmluZ1tdID0gZ2V0RGVmYXVsdFhQdWJzKCksXG4gIHBhdGggPSAnMC8qJ1xuKTogRGVzY3JpcHRvciB7XG4gIHJldHVybiBEZXNjcmlwdG9yLmZyb21TdHJpbmdEZXRlY3RUeXBlKGFzdC5mb3JtYXROb2RlKGdldERlc2NyaXB0b3JOb2RlKHRlbXBsYXRlLCBrZXlzLCBwYXRoKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRvck1hcChcbiAgdGVtcGxhdGU6IERlc2NyaXB0b3JUZW1wbGF0ZSxcbiAga2V5czogS2V5VHJpcGxlIHwgc3RyaW5nW10gPSBnZXREZWZhdWx0WFB1YnMoKVxuKTogRGVzY3JpcHRvck1hcCB7XG4gIHJldHVybiB0b0Rlc2NyaXB0b3JNYXAoe1xuICAgIGV4dGVybmFsOiBnZXREZXNjcmlwdG9yKHRlbXBsYXRlLCBrZXlzLCAnMC8qJykudG9TdHJpbmcoKSxcbiAgICBpbnRlcm5hbDogZ2V0RGVzY3JpcHRvcih0ZW1wbGF0ZSwga2V5cywgJzEvKicpLnRvU3RyaW5nKCksXG4gIH0pO1xufVxuIl19
@@ -1,92 +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
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.mockDerivedDescriptorWalletOutput = mockDerivedDescriptorWalletOutput;
37
- exports.mockPsbt = mockPsbt;
38
- exports.mockPsbtDefault = mockPsbtDefault;
39
- exports.mockPsbtDefaultWithDescriptorTemplate = mockPsbtDefaultWithDescriptorTemplate;
40
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
- const descriptor_1 = require("../../descriptor");
42
- const descriptors_1 = require("./descriptors");
43
- function mockOutputId(id) {
44
- const hash = id?.hash ?? Buffer.alloc(32, 1).toString('hex');
45
- const vout = id?.vout ?? 0;
46
- return { hash, vout };
47
- }
48
- function mockDerivedDescriptorWalletOutput(descriptor, outputParams = {}) {
49
- const { value = BigInt(1e6) } = outputParams;
50
- const { hash, vout } = mockOutputId(outputParams.id);
51
- return {
52
- hash,
53
- index: vout,
54
- witnessUtxo: {
55
- script: (0, descriptor_1.createScriptPubKeyFromDescriptor)(descriptor, undefined),
56
- value,
57
- },
58
- descriptor,
59
- selectTapLeafScript: outputParams.selectTapLeafScript,
60
- sequence: outputParams.sequence,
61
- };
62
- }
63
- function tryDeriveAtIndex(descriptor, index) {
64
- return descriptor.hasWildcard() ? descriptor.atDerivationIndex(index) : descriptor;
65
- }
66
- function mockPsbt(inputs, outputs, params = {}) {
67
- return (0, descriptor_1.createPsbt)({ ...params, network: params.network ?? utxolib.networks.bitcoin }, inputs.map((i) => mockDerivedDescriptorWalletOutput(tryDeriveAtIndex(i.descriptor, i.index), i)), outputs.map((o) => {
68
- const derivedDescriptor = tryDeriveAtIndex(o.descriptor, o.index);
69
- return {
70
- script: (0, descriptor_1.createScriptPubKeyFromDescriptor)(derivedDescriptor, undefined),
71
- value: o.value,
72
- descriptor: o.external ? undefined : derivedDescriptor,
73
- };
74
- }));
75
- }
76
- function mockPsbtDefault({ descriptorSelf = (0, descriptors_1.getDescriptor)('Wsh2Of3', (0, descriptors_1.getDefaultXPubs)('a')), descriptorOther = (0, descriptors_1.getDescriptor)('Wsh2Of3', (0, descriptors_1.getDefaultXPubs)('b')), params = {}, } = {}) {
77
- return mockPsbt([
78
- { descriptor: descriptorSelf, index: 0 },
79
- { descriptor: descriptorSelf, index: 1, id: { vout: 1 } },
80
- ], [
81
- { descriptor: descriptorOther, index: 0, value: BigInt(4e5), external: true },
82
- { descriptor: descriptorSelf, index: 0, value: BigInt(4e5) },
83
- ], params);
84
- }
85
- function mockPsbtDefaultWithDescriptorTemplate(t, params = {}) {
86
- return mockPsbtDefault({
87
- descriptorSelf: (0, descriptors_1.getDescriptor)(t, (0, descriptors_1.getDefaultXPubs)('a')),
88
- descriptorOther: (0, descriptors_1.getDescriptor)(t, (0, descriptors_1.getDefaultXPubs)('b')),
89
- params,
90
- });
91
- }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0dXRpbC9kZXNjcmlwdG9yL21vY2sudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQkEsOEVBaUJDO0FBbUJELDRCQWlCQztBQUVELDBDQW9CQztBQUVELHNGQVNDO0FBcEhELDhEQUFnRDtBQUVoRCxpREFLMEI7QUFFMUIsK0NBQW1GO0FBWW5GLFNBQVMsWUFBWSxDQUFDLEVBQXVCO0lBSTNDLE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzNCLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQUVELFNBQWdCLGlDQUFpQyxDQUMvQyxVQUFzQixFQUN0QixlQUErQyxFQUFFO0lBRWpELE1BQU0sRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDO0lBQzdDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxPQUFPO1FBQ0wsSUFBSTtRQUNKLEtBQUssRUFBRSxJQUFJO1FBQ1gsV0FBVyxFQUFFO1lBQ1gsTUFBTSxFQUFFLElBQUEsNkNBQWdDLEVBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQztZQUMvRCxLQUFLO1NBQ047UUFDRCxVQUFVO1FBQ1YsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLG1CQUFtQjtRQUNyRCxRQUFRLEVBQUUsWUFBWSxDQUFDLFFBQVE7S0FDaEMsQ0FBQztBQUNKLENBQUM7QUFlRCxTQUFTLGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsS0FBYTtJQUM3RCxPQUFPLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDckYsQ0FBQztBQUVELFNBQWdCLFFBQVEsQ0FDdEIsTUFBbUIsRUFDbkIsT0FBcUIsRUFDckIsU0FBOEIsRUFBRTtJQUVoQyxPQUFPLElBQUEsdUJBQVUsRUFDZixFQUFFLEdBQUcsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQ2xFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGlDQUFpQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ2hHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNoQixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBQSw2Q0FBZ0MsRUFBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUM7WUFDdEUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1lBQ2QsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO1NBQ3ZELENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxFQUM5QixjQUFjLEdBQUcsSUFBQSwyQkFBYSxFQUFDLFNBQVMsRUFBRSxJQUFBLDZCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFDL0QsZUFBZSxHQUFHLElBQUEsMkJBQWEsRUFBQyxTQUFTLEVBQUUsSUFBQSw2QkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2hFLE1BQU0sR0FBRyxFQUFFLE1BS1QsRUFBRTtJQUNKLE9BQU8sUUFBUSxDQUNiO1FBQ0UsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDeEMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO0tBQzFELEVBQ0Q7UUFDRSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7UUFDN0UsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtLQUM3RCxFQUNELE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLHFDQUFxQyxDQUNuRCxDQUFxQixFQUNyQixTQUE4QixFQUFFO0lBRWhDLE9BQU8sZUFBZSxDQUFDO1FBQ3JCLGNBQWMsRUFBRSxJQUFBLDJCQUFhLEVBQUMsQ0FBQyxFQUFFLElBQUEsNkJBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxlQUFlLEVBQUUsSUFBQSwyQkFBYSxFQUFDLENBQUMsRUFBRSxJQUFBLDZCQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkQsTUFBTTtLQUNQLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXNjcmlwdG9yLCBNaW5pc2NyaXB0IH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHtcbiAgUHNidFBhcmFtcyxcbiAgY3JlYXRlUHNidCxcbiAgY3JlYXRlU2NyaXB0UHViS2V5RnJvbURlc2NyaXB0b3IsXG4gIERlcml2ZWREZXNjcmlwdG9yVHJhbnNhY3Rpb25JbnB1dCxcbn0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcic7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JUZW1wbGF0ZSwgZ2V0RGVmYXVsdFhQdWJzLCBnZXREZXNjcmlwdG9yIH0gZnJvbSAnLi9kZXNjcmlwdG9ycyc7XG5cbnR5cGUgTW9ja091dHB1dElkUGFyYW1zID0geyBoYXNoPzogc3RyaW5nOyB2b3V0PzogbnVtYmVyIH07XG5cbnR5cGUgQmFzZU1vY2tEZXNjcmlwdG9yT3V0cHV0UGFyYW1zID0ge1xuICBpZD86IE1vY2tPdXRwdXRJZFBhcmFtcztcbiAgaW5kZXg/OiBudW1iZXI7XG4gIHZhbHVlPzogYmlnaW50O1xuICBzZXF1ZW5jZT86IG51bWJlcjtcbiAgc2VsZWN0VGFwTGVhZlNjcmlwdD86IE1pbmlzY3JpcHQ7XG59O1xuXG5mdW5jdGlvbiBtb2NrT3V0cHV0SWQoaWQ/OiBNb2NrT3V0cHV0SWRQYXJhbXMpOiB7XG4gIGhhc2g6IHN0cmluZztcbiAgdm91dDogbnVtYmVyO1xufSB7XG4gIGNvbnN0IGhhc2ggPSBpZD8uaGFzaCA/PyBCdWZmZXIuYWxsb2MoMzIsIDEpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3Qgdm91dCA9IGlkPy52b3V0ID8/IDA7XG4gIHJldHVybiB7IGhhc2gsIHZvdXQgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tEZXJpdmVkRGVzY3JpcHRvcldhbGxldE91dHB1dChcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgb3V0cHV0UGFyYW1zOiBCYXNlTW9ja0Rlc2NyaXB0b3JPdXRwdXRQYXJhbXMgPSB7fVxuKTogRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0IHtcbiAgY29uc3QgeyB2YWx1ZSA9IEJpZ0ludCgxZTYpIH0gPSBvdXRwdXRQYXJhbXM7XG4gIGNvbnN0IHsgaGFzaCwgdm91dCB9ID0gbW9ja091dHB1dElkKG91dHB1dFBhcmFtcy5pZCk7XG4gIHJldHVybiB7XG4gICAgaGFzaCxcbiAgICBpbmRleDogdm91dCxcbiAgICB3aXRuZXNzVXR4bzoge1xuICAgICAgc2NyaXB0OiBjcmVhdGVTY3JpcHRQdWJLZXlGcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yLCB1bmRlZmluZWQpLFxuICAgICAgdmFsdWUsXG4gICAgfSxcbiAgICBkZXNjcmlwdG9yLFxuICAgIHNlbGVjdFRhcExlYWZTY3JpcHQ6IG91dHB1dFBhcmFtcy5zZWxlY3RUYXBMZWFmU2NyaXB0LFxuICAgIHNlcXVlbmNlOiBvdXRwdXRQYXJhbXMuc2VxdWVuY2UsXG4gIH07XG59XG5cbnR5cGUgTW9ja0lucHV0ID0gQmFzZU1vY2tEZXNjcmlwdG9yT3V0cHV0UGFyYW1zICYge1xuICBpbmRleDogbnVtYmVyO1xuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yO1xuICBzZWxlY3RUYXBMZWFmU2NyaXB0PzogTWluaXNjcmlwdDtcbn07XG5cbnR5cGUgTW9ja091dHB1dCA9IHtcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcjtcbiAgaW5kZXg6IG51bWJlcjtcbiAgdmFsdWU6IGJpZ2ludDtcbiAgZXh0ZXJuYWw/OiBib29sZWFuO1xufTtcblxuZnVuY3Rpb24gdHJ5RGVyaXZlQXRJbmRleChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLCBpbmRleDogbnVtYmVyKTogRGVzY3JpcHRvciB7XG4gIHJldHVybiBkZXNjcmlwdG9yLmhhc1dpbGRjYXJkKCkgPyBkZXNjcmlwdG9yLmF0RGVyaXZhdGlvbkluZGV4KGluZGV4KSA6IGRlc2NyaXB0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrUHNidChcbiAgaW5wdXRzOiBNb2NrSW5wdXRbXSxcbiAgb3V0cHV0czogTW9ja091dHB1dFtdLFxuICBwYXJhbXM6IFBhcnRpYWw8UHNidFBhcmFtcz4gPSB7fVxuKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIHJldHVybiBjcmVhdGVQc2J0KFxuICAgIHsgLi4ucGFyYW1zLCBuZXR3b3JrOiBwYXJhbXMubmV0d29yayA/PyB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4gfSxcbiAgICBpbnB1dHMubWFwKChpKSA9PiBtb2NrRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQodHJ5RGVyaXZlQXRJbmRleChpLmRlc2NyaXB0b3IsIGkuaW5kZXgpLCBpKSksXG4gICAgb3V0cHV0cy5tYXAoKG8pID0+IHtcbiAgICAgIGNvbnN0IGRlcml2ZWREZXNjcmlwdG9yID0gdHJ5RGVyaXZlQXRJbmRleChvLmRlc2NyaXB0b3IsIG8uaW5kZXgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NyaXB0OiBjcmVhdGVTY3JpcHRQdWJLZXlGcm9tRGVzY3JpcHRvcihkZXJpdmVkRGVzY3JpcHRvciwgdW5kZWZpbmVkKSxcbiAgICAgICAgdmFsdWU6IG8udmFsdWUsXG4gICAgICAgIGRlc2NyaXB0b3I6IG8uZXh0ZXJuYWwgPyB1bmRlZmluZWQgOiBkZXJpdmVkRGVzY3JpcHRvcixcbiAgICAgIH07XG4gICAgfSlcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tQc2J0RGVmYXVsdCh7XG4gIGRlc2NyaXB0b3JTZWxmID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIGdldERlZmF1bHRYUHVicygnYScpKSxcbiAgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIGdldERlZmF1bHRYUHVicygnYicpKSxcbiAgcGFyYW1zID0ge30sXG59OiB7XG4gIGRlc2NyaXB0b3JTZWxmPzogRGVzY3JpcHRvcjtcbiAgZGVzY3JpcHRvck90aGVyPzogRGVzY3JpcHRvcjtcbiAgcGFyYW1zPzogUGFydGlhbDxQc2J0UGFyYW1zPjtcbn0gPSB7fSk6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQge1xuICByZXR1cm4gbW9ja1BzYnQoXG4gICAgW1xuICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDAgfSxcbiAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvclNlbGYsIGluZGV4OiAxLCBpZDogeyB2b3V0OiAxIH0gfSxcbiAgICBdLFxuICAgIFtcbiAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvck90aGVyLCBpbmRleDogMCwgdmFsdWU6IEJpZ0ludCg0ZTUpLCBleHRlcm5hbDogdHJ1ZSB9LFxuICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDAsIHZhbHVlOiBCaWdJbnQoNGU1KSB9LFxuICAgIF0sXG4gICAgcGFyYW1zXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrUHNidERlZmF1bHRXaXRoRGVzY3JpcHRvclRlbXBsYXRlKFxuICB0OiBEZXNjcmlwdG9yVGVtcGxhdGUsXG4gIHBhcmFtczogUGFydGlhbDxQc2J0UGFyYW1zPiA9IHt9XG4pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgcmV0dXJuIG1vY2tQc2J0RGVmYXVsdCh7XG4gICAgZGVzY3JpcHRvclNlbGY6IGdldERlc2NyaXB0b3IodCwgZ2V0RGVmYXVsdFhQdWJzKCdhJykpLFxuICAgIGRlc2NyaXB0b3JPdGhlcjogZ2V0RGVzY3JpcHRvcih0LCBnZXREZWZhdWx0WFB1YnMoJ2InKSksXG4gICAgcGFyYW1zLFxuICB9KTtcbn1cbiJdfQ==
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toPlainObjectFromPsbt = toPlainObjectFromPsbt;
4
- exports.toPlainObjectFromTx = toPlainObjectFromTx;
5
- const testutil_1 = require("../../../src/testutil");
6
- function toPlainObjectFromPsbt(v) {
7
- return (0, testutil_1.toPlainObject)(v, {
8
- propertyDescriptors: true,
9
- ignorePaths(path) {
10
- return ((0, testutil_1.matchPath)(path, ['__CACHE']) ||
11
- (0, testutil_1.matchPath)(path, ['opts', 'network']) ||
12
- (0, testutil_1.matchPath)(path, ['data', 'globalMap', 'unsignedTx', 'tx', 'network']) ||
13
- (0, testutil_1.matchPath)(path, ['network']));
14
- },
15
- }, []);
16
- }
17
- function toPlainObjectFromTx(v) {
18
- return (0, testutil_1.toPlainObject)(v, {}, []);
19
- }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNidC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0dXRpbC9kZXNjcmlwdG9yL3BzYnQudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxzREFnQkM7QUFFRCxrREFFQztBQXRCRCxvREFBOEU7QUFFOUUsU0FBZ0IscUJBQXFCLENBQUMsQ0FBZTtJQUNuRCxPQUFPLElBQUEsd0JBQWEsRUFDbEIsQ0FBQyxFQUNEO1FBQ0UsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixXQUFXLENBQUMsSUFBbUI7WUFDN0IsT0FBTyxDQUNMLElBQUEsb0JBQVMsRUFBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUIsSUFBQSxvQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEMsSUFBQSxvQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDckUsSUFBQSxvQkFBUyxFQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQzdCLENBQUM7UUFDSixDQUFDO0tBQ0YsRUFDRCxFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxDQUFzQjtJQUN4RCxPQUFPLElBQUEsd0JBQWEsRUFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuaW1wb3J0IHsgbWF0Y2hQYXRoLCBQYXRoRWxlbWVudCwgdG9QbGFpbk9iamVjdCB9IGZyb20gJy4uLy4uLy4uL3NyYy90ZXN0dXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1BsYWluT2JqZWN0RnJvbVBzYnQodjogdXR4b2xpYi5Qc2J0KTogdW5rbm93biB7XG4gIHJldHVybiB0b1BsYWluT2JqZWN0KFxuICAgIHYsXG4gICAge1xuICAgICAgcHJvcGVydHlEZXNjcmlwdG9yczogdHJ1ZSxcbiAgICAgIGlnbm9yZVBhdGhzKHBhdGg6IFBhdGhFbGVtZW50W10pIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaFBhdGgocGF0aCwgWydfX0NBQ0hFJ10pIHx8XG4gICAgICAgICAgbWF0Y2hQYXRoKHBhdGgsIFsnb3B0cycsICduZXR3b3JrJ10pIHx8XG4gICAgICAgICAgbWF0Y2hQYXRoKHBhdGgsIFsnZGF0YScsICdnbG9iYWxNYXAnLCAndW5zaWduZWRUeCcsICd0eCcsICduZXR3b3JrJ10pIHx8XG4gICAgICAgICAgbWF0Y2hQYXRoKHBhdGgsIFsnbmV0d29yayddKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9LFxuICAgIFtdXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1BsYWluT2JqZWN0RnJvbVR4KHY6IHV0eG9saWIuVHJhbnNhY3Rpb24pOiB1bmtub3duIHtcbiAgcmV0dXJuIHRvUGxhaW5PYmplY3Qodiwge30sIFtdKTtcbn1cbiJdfQ==
@@ -1,38 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generatePayGoAttestationProof = generatePayGoAttestationProof;
7
- const crypto_1 = __importDefault(require("crypto"));
8
- const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
9
- const paygo_1 = require("../paygo");
10
- /** We have a mirrored function similar to our hsm that generates our Bitcoin signed
11
- * message so that we can use for testing. This creates a random entropy as well using
12
- * the nilUUID structure to construct our uuid buffer and given our address we can
13
- * directly encode it into our message.
14
- *
15
- * @param attestationPrvKey
16
- * @param uuid
17
- * @param address
18
- * @returns
19
- */
20
- function generatePayGoAttestationProof(uuid, address, hasPrefix = true) {
21
- // <ENTROPY>
22
- const entropyLength = 64;
23
- const entropy = crypto_1.default.randomBytes(entropyLength);
24
- // <UUID>
25
- const uuidBuffer = Buffer.from(uuid);
26
- const uuidBufferLength = uuidBuffer.length;
27
- // <ADDRESS>
28
- const addressBufferLength = address.length;
29
- // <VARINT_LENGTH>
30
- const msgLength = entropyLength + addressBufferLength + uuidBufferLength;
31
- const msgLengthBuffer = utxo_lib_1.bufferutils.varuint.encode(msgLength);
32
- // <LENGTH><ENTROPY><ADDRESS><UUID>
33
- const proofMessage = Buffer.concat([msgLengthBuffer, entropy, address, uuidBuffer]);
34
- // If hasPrefix, we return 0x18Bitcoin Signed Message:\n<proof> otherwise its just <proof>
35
- // where <proof> = <VARINT_LEN><ENTROPY><ADDRESS><UUID>
36
- return hasPrefix ? Buffer.concat([paygo_1.Prefix, proofMessage]) : proofMessage;
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFnQkEsc0VBc0JDO0FBdENELG9EQUE0QjtBQUU1QixtREFBbUQ7QUFFbkQsb0NBQWtDO0FBRWxDOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLDZCQUE2QixDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsU0FBUyxHQUFHLElBQUk7SUFDM0YsWUFBWTtJQUNaLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUN6QixNQUFNLE9BQU8sR0FBRyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsRCxTQUFTO0lBQ1QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFFM0MsWUFBWTtJQUNaLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUUzQyxrQkFBa0I7SUFDbEIsTUFBTSxTQUFTLEdBQUcsYUFBYSxHQUFHLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDO0lBQ3pFLE1BQU0sZUFBZSxHQUFHLHNCQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU5RCxtQ0FBbUM7SUFDbkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFcEYsMEZBQTBGO0lBQzFGLHVEQUF1RDtJQUN2RCxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgYnVmZmVydXRpbHMgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IFByZWZpeCB9IGZyb20gJy4uL3BheWdvJztcblxuLyoqIFdlIGhhdmUgYSBtaXJyb3JlZCBmdW5jdGlvbiBzaW1pbGFyIHRvIG91ciBoc20gdGhhdCBnZW5lcmF0ZXMgb3VyIEJpdGNvaW4gc2lnbmVkXG4gKiBtZXNzYWdlIHNvIHRoYXQgd2UgY2FuIHVzZSBmb3IgdGVzdGluZy4gVGhpcyBjcmVhdGVzIGEgcmFuZG9tIGVudHJvcHkgYXMgd2VsbCB1c2luZ1xuICogdGhlIG5pbFVVSUQgc3RydWN0dXJlIHRvIGNvbnN0cnVjdCBvdXIgdXVpZCBidWZmZXIgYW5kIGdpdmVuIG91ciBhZGRyZXNzIHdlIGNhblxuICogZGlyZWN0bHkgZW5jb2RlIGl0IGludG8gb3VyIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIGF0dGVzdGF0aW9uUHJ2S2V5XG4gKiBAcGFyYW0gdXVpZFxuICogQHBhcmFtIGFkZHJlc3NcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBheUdvQXR0ZXN0YXRpb25Qcm9vZih1dWlkOiBzdHJpbmcsIGFkZHJlc3M6IEJ1ZmZlciwgaGFzUHJlZml4ID0gdHJ1ZSk6IEJ1ZmZlciB7XG4gIC8vIDxFTlRST1BZPlxuICBjb25zdCBlbnRyb3B5TGVuZ3RoID0gNjQ7XG4gIGNvbnN0IGVudHJvcHkgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoZW50cm9weUxlbmd0aCk7XG5cbiAgLy8gPFVVSUQ+XG4gIGNvbnN0IHV1aWRCdWZmZXIgPSBCdWZmZXIuZnJvbSh1dWlkKTtcbiAgY29uc3QgdXVpZEJ1ZmZlckxlbmd0aCA9IHV1aWRCdWZmZXIubGVuZ3RoO1xuXG4gIC8vIDxBRERSRVNTPlxuICBjb25zdCBhZGRyZXNzQnVmZmVyTGVuZ3RoID0gYWRkcmVzcy5sZW5ndGg7XG5cbiAgLy8gPFZBUklOVF9MRU5HVEg+XG4gIGNvbnN0IG1zZ0xlbmd0aCA9IGVudHJvcHlMZW5ndGggKyBhZGRyZXNzQnVmZmVyTGVuZ3RoICsgdXVpZEJ1ZmZlckxlbmd0aDtcbiAgY29uc3QgbXNnTGVuZ3RoQnVmZmVyID0gYnVmZmVydXRpbHMudmFydWludC5lbmNvZGUobXNnTGVuZ3RoKTtcblxuICAvLyA8TEVOR1RIPjxFTlRST1BZPjxBRERSRVNTPjxVVUlEPlxuICBjb25zdCBwcm9vZk1lc3NhZ2UgPSBCdWZmZXIuY29uY2F0KFttc2dMZW5ndGhCdWZmZXIsIGVudHJvcHksIGFkZHJlc3MsIHV1aWRCdWZmZXJdKTtcblxuICAvLyBJZiBoYXNQcmVmaXgsIHdlIHJldHVybiAweDE4Qml0Y29pbiBTaWduZWQgTWVzc2FnZTpcXG48cHJvb2Y+IG90aGVyd2lzZSBpdHMganVzdCA8cHJvb2Y+XG4gIC8vIHdoZXJlIDxwcm9vZj4gPSA8VkFSSU5UX0xFTj48RU5UUk9QWT48QUREUkVTUz48VVVJRD5cbiAgcmV0dXJuIGhhc1ByZWZpeCA/IEJ1ZmZlci5jb25jYXQoW1ByZWZpeCwgcHJvb2ZNZXNzYWdlXSkgOiBwcm9vZk1lc3NhZ2U7XG59XG4iXX0=
@@ -1,59 +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
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getKey = getKey;
37
- exports.getKeyTriple = getKeyTriple;
38
- exports.getRootWalletKeys = getRootWalletKeys;
39
- const crypto = __importStar(require("crypto"));
40
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
- /**
42
- * Create new bip32 key. Uses random seed if none is passed.
43
- * @param seed
44
- */
45
- function getKey(seed) {
46
- const finalSeed = seed === undefined ? crypto.randomBytes(32) : crypto.createHash('sha256').update(seed).digest();
47
- return utxolib.bip32.fromSeed(finalSeed);
48
- }
49
- /**
50
- * Return deterministic key triple of bip32 keys
51
- * @param prefix
52
- */
53
- function getKeyTriple(prefix = '') {
54
- return Array.from({ length: 3 }).map((_, i) => getKey(`${prefix}${i}`));
55
- }
56
- function getRootWalletKeys(prefix = '', derivationPrefixes) {
57
- return new utxolib.bitgo.RootWalletKeys(getKeyTriple(prefix), derivationPrefixes);
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rlc3R1dGlsL2tleS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFBLHdCQUdDO0FBTUQsb0NBRUM7QUFFRCw4Q0FFQztBQTVCRCwrQ0FBaUM7QUFFakMsOERBQWdEO0FBT2hEOzs7R0FHRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxJQUFhO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xILE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxNQUFNLEdBQUcsRUFBRTtJQUN0QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBYyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLGtCQUFtQztJQUNoRixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUM7QUFDcEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuXG5leHBvcnQgdHlwZSBUcmlwbGU8VD4gPSBbVCwgVCwgVF07XG5cbmV4cG9ydCB0eXBlIEtleVRyaXBsZSA9IFRyaXBsZTxCSVAzMkludGVyZmFjZT47XG5cbi8qKlxuICogQ3JlYXRlIG5ldyBiaXAzMiBrZXkuIFVzZXMgcmFuZG9tIHNlZWQgaWYgbm9uZSBpcyBwYXNzZWQuXG4gKiBAcGFyYW0gc2VlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5KHNlZWQ/OiBzdHJpbmcpOiBCSVAzMkludGVyZmFjZSB7XG4gIGNvbnN0IGZpbmFsU2VlZCA9IHNlZWQgPT09IHVuZGVmaW5lZCA/IGNyeXB0by5yYW5kb21CeXRlcygzMikgOiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHNlZWQpLmRpZ2VzdCgpO1xuICByZXR1cm4gdXR4b2xpYi5iaXAzMi5mcm9tU2VlZChmaW5hbFNlZWQpO1xufVxuXG4vKipcbiAqIFJldHVybiBkZXRlcm1pbmlzdGljIGtleSB0cmlwbGUgb2YgYmlwMzIga2V5c1xuICogQHBhcmFtIHByZWZpeFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5VHJpcGxlKHByZWZpeCA9ICcnKTogS2V5VHJpcGxlIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDMgfSkubWFwKChfLCBpKSA9PiBnZXRLZXkoYCR7cHJlZml4fSR7aX1gKSkgYXMgS2V5VHJpcGxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFdhbGxldEtleXMocHJlZml4ID0gJycsIGRlcml2YXRpb25QcmVmaXhlcz86IFRyaXBsZTxzdHJpbmc+KTogdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyB7XG4gIHJldHVybiBuZXcgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyhnZXRLZXlUcmlwbGUocHJlZml4KSwgZGVyaXZhdGlvblByZWZpeGVzKTtcbn1cbiJdfQ==