@bitgo-beta/utxo-core 1.0.1-alpha.2 → 1.0.1-alpha.200

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/dist/cjs/src/Output.d.ts +43 -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 +2 -0
  23. package/dist/cjs/src/bip65/index.d.ts.map +1 -0
  24. package/dist/{src/testutil → cjs/src/bip65}/index.js +2 -4
  25. package/dist/cjs/src/bip65/locktime.d.ts +8 -0
  26. package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
  27. package/dist/cjs/src/bip65/locktime.js +37 -0
  28. package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
  29. package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
  30. package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
  31. package/dist/cjs/src/descriptor/Output.d.ts +23 -0
  32. package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
  33. package/dist/cjs/src/descriptor/Output.js +41 -0
  34. package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +3 -1
  35. package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
  36. package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
  37. package/dist/{src → cjs/src}/descriptor/address.d.ts +2 -2
  38. package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
  39. package/dist/{src → cjs/src}/descriptor/address.js +2 -2
  40. package/dist/cjs/src/descriptor/derive.d.ts +13 -0
  41. package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
  42. package/dist/cjs/src/descriptor/derive.js +45 -0
  43. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts +16 -0
  44. package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  45. package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
  46. package/dist/cjs/src/descriptor/index.d.ts +11 -0
  47. package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
  48. package/dist/cjs/src/descriptor/index.js +27 -0
  49. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  50. package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  51. package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
  52. package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
  53. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  54. package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
  55. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts +23 -0
  56. package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
  57. package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
  58. package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +7 -3
  59. package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  60. package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
  61. package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +1 -0
  62. package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
  63. package/dist/{src → cjs/src}/descriptor/psbt/index.js +2 -1
  64. package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +2 -2
  65. package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
  66. package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
  67. package/dist/cjs/src/descriptor/psbt/sign.d.ts +26 -0
  68. package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
  69. package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
  70. package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
  71. package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
  72. package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
  73. package/dist/cjs/src/dustThreshold.d.ts +4 -0
  74. package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
  75. package/dist/cjs/src/dustThreshold.js +134 -0
  76. package/dist/cjs/src/index.d.ts +10 -0
  77. package/dist/cjs/src/index.d.ts.map +1 -0
  78. package/dist/{src → cjs/src}/index.js +12 -2
  79. package/dist/cjs/src/paygo/attestation.d.ts +11 -0
  80. package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
  81. package/dist/cjs/src/paygo/attestation.js +58 -0
  82. package/dist/cjs/src/paygo/index.d.ts +3 -0
  83. package/dist/cjs/src/paygo/index.d.ts.map +1 -0
  84. package/dist/cjs/src/paygo/index.js +19 -0
  85. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts +16 -0
  86. package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  87. package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
  88. package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
  89. package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
  90. package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
  91. package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
  92. package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
  93. package/dist/cjs/src/paygo/psbt/index.js +18 -0
  94. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
  95. package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  96. package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
  97. package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +5 -2
  98. package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
  99. package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
  100. package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
  101. package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
  102. package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +6 -4
  103. package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
  104. package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
  105. package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
  106. package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
  107. package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
  108. package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
  109. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  110. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  111. package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  112. package/dist/cjs/src/testutil/index.d.ts +6 -0
  113. package/dist/cjs/src/testutil/index.d.ts.map +1 -0
  114. package/dist/cjs/src/testutil/index.js +22 -0
  115. package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
  116. package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
  117. package/dist/cjs/src/testutil/key.utils.js +60 -0
  118. package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
  119. package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
  120. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
  121. package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  122. package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
  123. package/dist/cjs/src/xOnlyPubkey.d.ts +2 -0
  124. package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
  125. package/dist/cjs/src/xOnlyPubkey.js +18 -0
  126. package/dist/cjs/test/Output.d.ts +2 -0
  127. package/dist/cjs/test/Output.d.ts.map +1 -0
  128. package/dist/cjs/test/Output.js +70 -0
  129. package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
  130. package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
  131. package/dist/cjs/test/bip322/bip322.utils.js +16 -0
  132. package/dist/cjs/test/bip322/toSign.d.ts +2 -0
  133. package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
  134. package/dist/cjs/test/bip322/toSign.js +133 -0
  135. package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
  136. package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
  137. package/dist/cjs/test/bip322/toSpend.js +70 -0
  138. package/dist/cjs/test/bip322/utils.d.ts +2 -0
  139. package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
  140. package/dist/cjs/test/bip322/utils.js +79 -0
  141. package/dist/cjs/test/bip322/verify.d.ts +2 -0
  142. package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
  143. package/dist/cjs/test/bip322/verify.js +293 -0
  144. package/dist/cjs/test/bip32utils.d.ts +2 -0
  145. package/dist/cjs/test/bip32utils.d.ts.map +1 -0
  146. package/dist/cjs/test/bip32utils.js +62 -0
  147. package/dist/cjs/test/bip65/locktime.d.ts +2 -0
  148. package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
  149. package/dist/cjs/test/bip65/locktime.js +22 -0
  150. package/dist/cjs/test/descriptor/Output.d.ts +2 -0
  151. package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
  152. package/dist/cjs/test/descriptor/Output.js +44 -0
  153. package/dist/cjs/test/descriptor/derive.d.ts +2 -0
  154. package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
  155. package/dist/cjs/test/descriptor/derive.js +27 -0
  156. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
  157. package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  158. package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
  159. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
  160. package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  161. package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
  162. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
  163. package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  164. package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
  165. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  166. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  167. package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
  168. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
  169. package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  170. package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
  171. package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
  172. package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
  173. package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
  174. package/dist/cjs/test/dustThreshold.d.ts +2 -0
  175. package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
  176. package/dist/cjs/test/dustThreshold.js +110 -0
  177. package/dist/cjs/test/paygo/attestation.d.ts +2 -0
  178. package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
  179. package/dist/cjs/test/paygo/attestation.js +23 -0
  180. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
  181. package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
  182. package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
  183. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
  184. package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  185. package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
  186. package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
  187. package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
  188. package/dist/cjs/test/xOnlyPubkey.js +18 -0
  189. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  190. package/dist/esm/Output.d.ts +43 -0
  191. package/dist/esm/Output.d.ts.map +1 -0
  192. package/dist/esm/Output.js +53 -0
  193. package/dist/esm/bip322/index.d.ts +5 -0
  194. package/dist/esm/bip322/index.d.ts.map +1 -0
  195. package/dist/esm/bip322/index.js +5 -0
  196. package/dist/esm/bip322/toSign.d.ts +25 -0
  197. package/dist/esm/bip322/toSign.d.ts.map +1 -0
  198. package/dist/esm/bip322/toSign.js +119 -0
  199. package/dist/esm/bip322/toSpend.d.ts +22 -0
  200. package/dist/esm/bip322/toSpend.d.ts.map +1 -0
  201. package/dist/esm/bip322/toSpend.js +66 -0
  202. package/dist/esm/bip322/utils.d.ts +18 -0
  203. package/dist/esm/bip322/utils.d.ts.map +1 -0
  204. package/dist/esm/bip322/utils.js +77 -0
  205. package/dist/esm/bip322/verify.d.ts +12 -0
  206. package/dist/esm/bip322/verify.d.ts.map +1 -0
  207. package/dist/esm/bip322/verify.js +74 -0
  208. package/dist/esm/bip32utils.d.ts +12 -0
  209. package/dist/esm/bip32utils.d.ts.map +1 -0
  210. package/dist/esm/bip32utils.js +12 -0
  211. package/dist/esm/bip65/index.d.ts +2 -0
  212. package/dist/esm/bip65/index.d.ts.map +1 -0
  213. package/dist/esm/bip65/index.js +2 -0
  214. package/dist/esm/bip65/locktime.d.ts +8 -0
  215. package/dist/esm/bip65/locktime.d.ts.map +1 -0
  216. package/dist/esm/bip65/locktime.js +34 -0
  217. package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
  218. package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
  219. package/dist/esm/descriptor/DescriptorMap.js +6 -0
  220. package/dist/esm/descriptor/Output.d.ts +23 -0
  221. package/dist/esm/descriptor/Output.d.ts.map +1 -0
  222. package/dist/esm/descriptor/Output.js +32 -0
  223. package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
  224. package/dist/esm/descriptor/VirtualSize.d.ts.map +1 -0
  225. package/dist/esm/descriptor/VirtualSize.js +94 -0
  226. package/dist/esm/descriptor/address.d.ts +5 -0
  227. package/dist/esm/descriptor/address.d.ts.map +1 -0
  228. package/dist/esm/descriptor/address.js +11 -0
  229. package/dist/esm/descriptor/derive.d.ts +13 -0
  230. package/dist/esm/descriptor/derive.d.ts.map +1 -0
  231. package/dist/esm/descriptor/derive.js +38 -0
  232. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
  233. package/dist/esm/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  234. package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
  235. package/dist/esm/descriptor/index.d.ts +11 -0
  236. package/dist/esm/descriptor/index.d.ts.map +1 -0
  237. package/dist/esm/descriptor/index.js +11 -0
  238. package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
  239. package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  240. package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
  241. package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  242. package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
  243. package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
  244. package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
  245. package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
  246. package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
  247. package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
  248. package/dist/esm/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  249. package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
  250. package/dist/esm/descriptor/psbt/index.d.ts +7 -0
  251. package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +1 -1
  252. package/dist/esm/descriptor/psbt/index.js +7 -0
  253. package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
  254. package/dist/esm/descriptor/psbt/parse.d.ts.map +1 -0
  255. package/dist/esm/descriptor/psbt/parse.js +51 -0
  256. package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
  257. package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
  258. package/dist/esm/descriptor/psbt/sign.js +34 -0
  259. package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
  260. package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
  261. package/dist/esm/descriptor/psbt/wrap.js +38 -0
  262. package/dist/esm/dustThreshold.d.ts +4 -0
  263. package/dist/esm/dustThreshold.d.ts.map +1 -0
  264. package/dist/esm/dustThreshold.js +97 -0
  265. package/dist/esm/index.d.ts +10 -0
  266. package/dist/esm/index.d.ts.map +1 -0
  267. package/dist/esm/index.js +10 -0
  268. package/dist/esm/paygo/attestation.d.ts +11 -0
  269. package/dist/esm/paygo/attestation.d.ts.map +1 -0
  270. package/dist/esm/paygo/attestation.js +18 -0
  271. package/dist/esm/paygo/index.d.ts +3 -0
  272. package/dist/esm/paygo/index.d.ts.map +1 -0
  273. package/dist/esm/paygo/index.js +3 -0
  274. package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
  275. package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
  276. package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
  277. package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
  278. package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
  279. package/dist/esm/paygo/psbt/Errors.js +35 -0
  280. package/dist/esm/paygo/psbt/index.d.ts +2 -0
  281. package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
  282. package/dist/esm/paygo/psbt/index.js +2 -0
  283. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
  284. package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  285. package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
  286. package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
  287. package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
  288. package/dist/esm/testutil/descriptor/descriptors.js +150 -0
  289. package/dist/esm/testutil/descriptor/index.d.ts +4 -0
  290. package/dist/esm/testutil/descriptor/index.js +4 -0
  291. package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
  292. package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
  293. package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
  294. package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
  295. package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  296. package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
  297. package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
  298. package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
  299. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  300. package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  301. package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
  302. package/dist/esm/testutil/index.d.ts +6 -0
  303. package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
  304. package/dist/esm/testutil/index.js +6 -0
  305. package/dist/esm/testutil/key.utils.d.ts +16 -0
  306. package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
  307. package/dist/esm/testutil/key.utils.js +22 -0
  308. package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
  309. package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
  310. package/dist/esm/testutil/toPlainObject.utils.js +85 -0
  311. package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
  312. package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
  313. package/dist/esm/testutil/trimMessagePrefix.js +24 -0
  314. package/dist/esm/xOnlyPubkey.d.ts +2 -0
  315. package/dist/esm/xOnlyPubkey.d.ts.map +1 -0
  316. package/dist/esm/xOnlyPubkey.js +15 -0
  317. package/package.json +51 -22
  318. package/dist/src/descriptor/DescriptorMap.js +0 -12
  319. package/dist/src/descriptor/Output.d.ts +0 -24
  320. package/dist/src/descriptor/Output.d.ts.map +0 -1
  321. package/dist/src/descriptor/Output.js +0 -22
  322. package/dist/src/descriptor/VirtualSize.d.ts.map +0 -1
  323. package/dist/src/descriptor/VirtualSize.js +0 -87
  324. package/dist/src/descriptor/address.d.ts.map +0 -1
  325. package/dist/src/descriptor/index.d.ts +0 -9
  326. package/dist/src/descriptor/index.d.ts.map +0 -1
  327. package/dist/src/descriptor/index.js +0 -49
  328. package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
  329. package/dist/src/descriptor/psbt/createPsbt.d.ts +0 -15
  330. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
  331. package/dist/src/descriptor/psbt/createPsbt.js +0 -82
  332. package/dist/src/descriptor/psbt/findDescriptors.d.ts.map +0 -1
  333. package/dist/src/descriptor/psbt/findDescriptors.js +0 -85
  334. package/dist/src/descriptor/psbt/parse.d.ts.map +0 -1
  335. package/dist/src/descriptor/psbt/parse.js +0 -87
  336. package/dist/src/descriptor/psbt/wrap.js +0 -76
  337. package/dist/src/index.d.ts +0 -3
  338. package/dist/src/index.d.ts.map +0 -1
  339. package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
  340. package/dist/src/testutil/descriptor/descriptors.js +0 -105
  341. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
  342. package/dist/src/testutil/descriptor/mock.utils.js +0 -87
  343. package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
  344. package/dist/src/testutil/index.d.ts +0 -4
  345. package/dist/src/testutil/key.utils.js +0 -59
  346. package/dist/src/testutil/toPlainObject.utils.js +0 -75
  347. /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
  349. /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
  350. /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
  351. /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
  352. /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
@@ -0,0 +1,23 @@
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
+ const assert_1 = __importDefault(require("assert"));
7
+ const attestation_1 = require("../../src/paygo/attestation");
8
+ const testutil_1 = require("../../src/testutil");
9
+ const payGoAddressProof_1 = require("./psbt/payGoAddressProof");
10
+ describe('createPayGoAttestationBuffer', () => {
11
+ it('should create a PayGo Attestation proof matching with original proof', () => {
12
+ const payGoAttestationProof = (0, attestation_1.createPayGoAttestationBuffer)(payGoAddressProof_1.addressToVerify, payGoAddressProof_1.addressProofEntropy, payGoAddressProof_1.network);
13
+ assert_1.default.strictEqual(payGoAttestationProof.toString(), payGoAddressProof_1.addressProofMsgBuffer.toString());
14
+ (0, assert_1.default)(Buffer.compare(payGoAttestationProof, payGoAddressProof_1.addressProofMsgBuffer) === 0);
15
+ });
16
+ it('should create a PayGo Attestation proof that does not match with different uuid', () => {
17
+ const addressProofBufferDiffUuid = (0, testutil_1.generatePayGoAttestationProof)('00000000-0000-0000-0000-000000000001', Buffer.from(payGoAddressProof_1.addressToVerify));
18
+ const payGoAttestationProof = (0, attestation_1.createPayGoAttestationBuffer)(payGoAddressProof_1.addressToVerify, payGoAddressProof_1.addressProofEntropy, payGoAddressProof_1.network);
19
+ assert_1.default.notStrictEqual(payGoAttestationProof.toString(), addressProofBufferDiffUuid.toString());
20
+ (0, assert_1.default)(Buffer.compare(payGoAttestationProof, addressProofBufferDiffUuid) !== 0);
21
+ });
22
+ });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3BheWdvL2F0dGVzdGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLDZEQUEyRTtBQUMzRSxpREFBbUU7QUFFbkUsZ0VBQWdIO0FBRWhILFFBQVEsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7SUFDNUMsRUFBRSxDQUFDLHNFQUFzRSxFQUFFLEdBQUcsRUFBRTtRQUM5RSxNQUFNLHFCQUFxQixHQUFHLElBQUEsMENBQTRCLEVBQUMsbUNBQWUsRUFBRSx1Q0FBbUIsRUFBRSwyQkFBTyxDQUFDLENBQUM7UUFDMUcsZ0JBQU0sQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEVBQUUseUNBQXFCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSx5Q0FBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGlGQUFpRixFQUFFLEdBQUcsRUFBRTtRQUN6RixNQUFNLDBCQUEwQixHQUFHLElBQUEsd0NBQTZCLEVBQzlELHNDQUFzQyxFQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFlLENBQUMsQ0FDN0IsQ0FBQztRQUNGLE1BQU0scUJBQXFCLEdBQUcsSUFBQSwwQ0FBNEIsRUFBQyxtQ0FBZSxFQUFFLHVDQUFtQixFQUFFLDJCQUFPLENBQUMsQ0FBQztRQUMxRyxnQkFBTSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9GLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgY3JlYXRlUGF5R29BdHRlc3RhdGlvbkJ1ZmZlciB9IGZyb20gJy4uLy4uL3NyYy9wYXlnby9hdHRlc3RhdGlvbic7XG5pbXBvcnQgeyBnZW5lcmF0ZVBheUdvQXR0ZXN0YXRpb25Qcm9vZiB9IGZyb20gJy4uLy4uL3NyYy90ZXN0dXRpbCc7XG5cbmltcG9ydCB7IGFkZHJlc3NQcm9vZkVudHJvcHksIGFkZHJlc3NQcm9vZk1zZ0J1ZmZlciwgYWRkcmVzc1RvVmVyaWZ5LCBuZXR3b3JrIH0gZnJvbSAnLi9wc2J0L3BheUdvQWRkcmVzc1Byb29mJztcblxuZGVzY3JpYmUoJ2NyZWF0ZVBheUdvQXR0ZXN0YXRpb25CdWZmZXInLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgUGF5R28gQXR0ZXN0YXRpb24gcHJvb2YgbWF0Y2hpbmcgd2l0aCBvcmlnaW5hbCBwcm9vZicsICgpID0+IHtcbiAgICBjb25zdCBwYXlHb0F0dGVzdGF0aW9uUHJvb2YgPSBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyKGFkZHJlc3NUb1ZlcmlmeSwgYWRkcmVzc1Byb29mRW50cm9weSwgbmV0d29yayk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHBheUdvQXR0ZXN0YXRpb25Qcm9vZi50b1N0cmluZygpLCBhZGRyZXNzUHJvb2ZNc2dCdWZmZXIudG9TdHJpbmcoKSk7XG4gICAgYXNzZXJ0KEJ1ZmZlci5jb21wYXJlKHBheUdvQXR0ZXN0YXRpb25Qcm9vZiwgYWRkcmVzc1Byb29mTXNnQnVmZmVyKSA9PT0gMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgUGF5R28gQXR0ZXN0YXRpb24gcHJvb2YgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGRpZmZlcmVudCB1dWlkJywgKCkgPT4ge1xuICAgIGNvbnN0IGFkZHJlc3NQcm9vZkJ1ZmZlckRpZmZVdWlkID0gZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YoXG4gICAgICAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAxJyxcbiAgICAgIEJ1ZmZlci5mcm9tKGFkZHJlc3NUb1ZlcmlmeSlcbiAgICApO1xuICAgIGNvbnN0IHBheUdvQXR0ZXN0YXRpb25Qcm9vZiA9IGNyZWF0ZVBheUdvQXR0ZXN0YXRpb25CdWZmZXIoYWRkcmVzc1RvVmVyaWZ5LCBhZGRyZXNzUHJvb2ZFbnRyb3B5LCBuZXR3b3JrKTtcbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwocGF5R29BdHRlc3RhdGlvblByb29mLnRvU3RyaW5nKCksIGFkZHJlc3NQcm9vZkJ1ZmZlckRpZmZVdWlkLnRvU3RyaW5nKCkpO1xuICAgIGFzc2VydChCdWZmZXIuY29tcGFyZShwYXlHb0F0dGVzdGF0aW9uUHJvb2YsIGFkZHJlc3NQcm9vZkJ1ZmZlckRpZmZVdWlkKSAhPT0gMCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parsePayGoAttestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsePayGoAttestation.d.ts","sourceRoot":"","sources":["../../../../test/paygo/parsePayGoAttestation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
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
+ const assert = __importStar(require("assert"));
37
+ const paygo_1 = require("../../src/paygo");
38
+ const testutil_1 = require("../../src/testutil");
39
+ const attestation_1 = require("../../src/paygo/attestation");
40
+ const addressFromPubKeyBase58 = 'bitgoAddressToExtract';
41
+ const bufferAddressPubKeyB58 = Buffer.from(addressFromPubKeyBase58);
42
+ describe('parsePayGoAttestationProof with prefix', () => {
43
+ it('should extractAddressBufferFromPayGoAttestationProof properly', function () {
44
+ const paygoAttestationProof = (0, testutil_1.generatePayGoAttestationProof)(attestation_1.NIL_UUID, bufferAddressPubKeyB58);
45
+ const { entropy, address, uuid } = (0, paygo_1.parsePayGoAttestation)(paygoAttestationProof);
46
+ assert.ok(address.equals(bufferAddressPubKeyB58));
47
+ assert.deepStrictEqual(uuid.toString(), attestation_1.NIL_UUID);
48
+ assert.deepStrictEqual(entropy.length, 64);
49
+ });
50
+ it('should extract the paygo address paygo attestation proof given a non nilUUID', function () {
51
+ const paygoAttestationProof = (0, testutil_1.generatePayGoAttestationProof)('12345678-1234-4567-6890-231928472123', bufferAddressPubKeyB58);
52
+ const { entropy, address, uuid } = (0, paygo_1.parsePayGoAttestation)(paygoAttestationProof);
53
+ assert.ok(address.equals(bufferAddressPubKeyB58));
54
+ assert.deepStrictEqual(uuid.toString('utf-8'), '12345678-1234-4567-6890-231928472123');
55
+ assert.deepStrictEqual(entropy.length, 64);
56
+ });
57
+ it('should not extract the correct address given a uuid of wrong format', function () {
58
+ const paygoAttestationProof = (0, testutil_1.generatePayGoAttestationProof)('000000000000000-000000-0000000-000000-0000000000000000', bufferAddressPubKeyB58);
59
+ const { address } = (0, paygo_1.parsePayGoAttestation)(paygoAttestationProof);
60
+ assert.ok(!address.equals(bufferAddressPubKeyB58));
61
+ });
62
+ it('should throw an error if the paygo attestation proof is too short', function () {
63
+ assert.throws(() => (0, paygo_1.parsePayGoAttestation)(Buffer.from('shortproof-shrug', 'utf-8')), 'PayGo attestation proof is too short to contain a valid address.');
64
+ });
65
+ });
66
+ describe('parsePayGoAttestation without prefix', function () {
67
+ it('should extract the parts of the proof without the prefix automatically', function () {
68
+ const payGoAttestationProof = (0, testutil_1.generatePayGoAttestationProof)(attestation_1.NIL_UUID, bufferAddressPubKeyB58, false);
69
+ const { entropy, address, uuid } = (0, paygo_1.parsePayGoAttestation)(payGoAttestationProof);
70
+ assert.ok(address.equals(bufferAddressPubKeyB58));
71
+ assert.deepStrictEqual(uuid.toString(), attestation_1.NIL_UUID);
72
+ assert.deepStrictEqual(entropy.length, 64);
73
+ });
74
+ });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VQYXlHb0F0dGVzdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC9wYXlnby9wYXJzZVBheUdvQXR0ZXN0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFFakMsMkNBQXdEO0FBQ3hELGlEQUFtRTtBQUNuRSw2REFBdUQ7QUFFdkQsTUFBTSx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztBQUN4RCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUVwRSxRQUFRLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELEVBQUUsQ0FBQywrREFBK0QsRUFBRTtRQUNsRSxNQUFNLHFCQUFxQixHQUFHLElBQUEsd0NBQTZCLEVBQUMsc0JBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsNkJBQXFCLEVBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLHNCQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEVBQThFLEVBQUU7UUFDakYsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLHdDQUE2QixFQUN6RCxzQ0FBc0MsRUFDdEMsc0JBQXNCLENBQ3ZCLENBQUM7UUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFBLDZCQUFxQixFQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEYsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztRQUN2RixNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMscUVBQXFFLEVBQUU7UUFDeEUsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLHdDQUE2QixFQUN6RCx3REFBd0QsRUFDeEQsc0JBQXNCLENBQ3ZCLENBQUM7UUFDRixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBQSw2QkFBcUIsRUFBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxtRUFBbUUsRUFBRTtRQUN0RSxNQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUFDLElBQUEsNkJBQXFCLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUNyRSxrRUFBa0UsQ0FDbkUsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsc0NBQXNDLEVBQUU7SUFDL0MsRUFBRSxDQUFDLHdFQUF3RSxFQUFFO1FBQzNFLE1BQU0scUJBQXFCLEdBQUcsSUFBQSx3Q0FBNkIsRUFBQyxzQkFBUSxFQUFFLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JHLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsNkJBQXFCLEVBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLHNCQUFRLENBQUMsQ0FBQztRQUNsRCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBwYXJzZVBheUdvQXR0ZXN0YXRpb24gfSBmcm9tICcuLi8uLi9zcmMvcGF5Z28nO1xuaW1wb3J0IHsgZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YgfSBmcm9tICcuLi8uLi9zcmMvdGVzdHV0aWwnO1xuaW1wb3J0IHsgTklMX1VVSUQgfSBmcm9tICcuLi8uLi9zcmMvcGF5Z28vYXR0ZXN0YXRpb24nO1xuXG5jb25zdCBhZGRyZXNzRnJvbVB1YktleUJhc2U1OCA9ICdiaXRnb0FkZHJlc3NUb0V4dHJhY3QnO1xuY29uc3QgYnVmZmVyQWRkcmVzc1B1YktleUI1OCA9IEJ1ZmZlci5mcm9tKGFkZHJlc3NGcm9tUHViS2V5QmFzZTU4KTtcblxuZGVzY3JpYmUoJ3BhcnNlUGF5R29BdHRlc3RhdGlvblByb29mIHdpdGggcHJlZml4JywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGV4dHJhY3RBZGRyZXNzQnVmZmVyRnJvbVBheUdvQXR0ZXN0YXRpb25Qcm9vZiBwcm9wZXJseScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwYXlnb0F0dGVzdGF0aW9uUHJvb2YgPSBnZW5lcmF0ZVBheUdvQXR0ZXN0YXRpb25Qcm9vZihOSUxfVVVJRCwgYnVmZmVyQWRkcmVzc1B1YktleUI1OCk7XG4gICAgY29uc3QgeyBlbnRyb3B5LCBhZGRyZXNzLCB1dWlkIH0gPSBwYXJzZVBheUdvQXR0ZXN0YXRpb24ocGF5Z29BdHRlc3RhdGlvblByb29mKTtcbiAgICBhc3NlcnQub2soYWRkcmVzcy5lcXVhbHMoYnVmZmVyQWRkcmVzc1B1YktleUI1OCkpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodXVpZC50b1N0cmluZygpLCBOSUxfVVVJRCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChlbnRyb3B5Lmxlbmd0aCwgNjQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4dHJhY3QgdGhlIHBheWdvIGFkZHJlc3MgcGF5Z28gYXR0ZXN0YXRpb24gcHJvb2YgZ2l2ZW4gYSBub24gbmlsVVVJRCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwYXlnb0F0dGVzdGF0aW9uUHJvb2YgPSBnZW5lcmF0ZVBheUdvQXR0ZXN0YXRpb25Qcm9vZihcbiAgICAgICcxMjM0NTY3OC0xMjM0LTQ1NjctNjg5MC0yMzE5Mjg0NzIxMjMnLFxuICAgICAgYnVmZmVyQWRkcmVzc1B1YktleUI1OFxuICAgICk7XG4gICAgY29uc3QgeyBlbnRyb3B5LCBhZGRyZXNzLCB1dWlkIH0gPSBwYXJzZVBheUdvQXR0ZXN0YXRpb24ocGF5Z29BdHRlc3RhdGlvblByb29mKTtcbiAgICBhc3NlcnQub2soYWRkcmVzcy5lcXVhbHMoYnVmZmVyQWRkcmVzc1B1YktleUI1OCkpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodXVpZC50b1N0cmluZygndXRmLTgnKSwgJzEyMzQ1Njc4LTEyMzQtNDU2Ny02ODkwLTIzMTkyODQ3MjEyMycpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoZW50cm9weS5sZW5ndGgsIDY0KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZXh0cmFjdCB0aGUgY29ycmVjdCBhZGRyZXNzIGdpdmVuIGEgdXVpZCBvZiB3cm9uZyBmb3JtYXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF5Z29BdHRlc3RhdGlvblByb29mID0gZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YoXG4gICAgICAnMDAwMDAwMDAwMDAwMDAwLTAwMDAwMC0wMDAwMDAwLTAwMDAwMC0wMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgIGJ1ZmZlckFkZHJlc3NQdWJLZXlCNThcbiAgICApO1xuICAgIGNvbnN0IHsgYWRkcmVzcyB9ID0gcGFyc2VQYXlHb0F0dGVzdGF0aW9uKHBheWdvQXR0ZXN0YXRpb25Qcm9vZik7XG4gICAgYXNzZXJ0Lm9rKCFhZGRyZXNzLmVxdWFscyhidWZmZXJBZGRyZXNzUHViS2V5QjU4KSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHBheWdvIGF0dGVzdGF0aW9uIHByb29mIGlzIHRvbyBzaG9ydCcsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgKCkgPT4gcGFyc2VQYXlHb0F0dGVzdGF0aW9uKEJ1ZmZlci5mcm9tKCdzaG9ydHByb29mLXNocnVnJywgJ3V0Zi04JykpLFxuICAgICAgJ1BheUdvIGF0dGVzdGF0aW9uIHByb29mIGlzIHRvbyBzaG9ydCB0byBjb250YWluIGEgdmFsaWQgYWRkcmVzcy4nXG4gICAgKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3BhcnNlUGF5R29BdHRlc3RhdGlvbiB3aXRob3V0IHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBleHRyYWN0IHRoZSBwYXJ0cyBvZiB0aGUgcHJvb2Ygd2l0aG91dCB0aGUgcHJlZml4IGF1dG9tYXRpY2FsbHknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF5R29BdHRlc3RhdGlvblByb29mID0gZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YoTklMX1VVSUQsIGJ1ZmZlckFkZHJlc3NQdWJLZXlCNTgsIGZhbHNlKTtcbiAgICBjb25zdCB7IGVudHJvcHksIGFkZHJlc3MsIHV1aWQgfSA9IHBhcnNlUGF5R29BdHRlc3RhdGlvbihwYXlHb0F0dGVzdGF0aW9uUHJvb2YpO1xuICAgIGFzc2VydC5vayhhZGRyZXNzLmVxdWFscyhidWZmZXJBZGRyZXNzUHViS2V5QjU4KSk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh1dWlkLnRvU3RyaW5nKCksIE5JTF9VVUlEKTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGVudHJvcHkubGVuZ3RoLCA2NCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare const network: utxolib.Network;
3
+ export declare const attestationPubKey: Buffer<ArrayBufferLike>;
4
+ export declare const attestationPrvKey: Buffer<ArrayBufferLike>;
5
+ export declare const addressToVerify: string;
6
+ export declare const addressProofEntropy: Buffer<ArrayBuffer>;
7
+ export declare const addressProofMsgBuffer: Buffer<ArrayBuffer>;
8
+ export declare const sig: Buffer<ArrayBufferLike>;
9
+ //# sourceMappingURL=payGoAddressProof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payGoAddressProof.d.ts","sourceRoot":"","sources":["../../../../../test/paygo/psbt/payGoAddressProof.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAehD,eAAO,MAAM,OAAO,iBAA2B,CAAC;AAgBhD,eAAO,MAAM,iBAAiB,yBAA2B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,yBAA6B,CAAC;AAG5D,eAAO,MAAM,eAAe,QAI3B,CAAC;AAGF,eAAO,MAAM,mBAAmB,qBAAyB,CAAC;AAK1D,eAAO,MAAM,qBAAqB,qBAAkE,CAAC;AAGrG,eAAO,MAAM,GAAG,yBAAkE,CAAC"}
@@ -0,0 +1,163 @@
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
+ exports.sig = exports.addressProofMsgBuffer = exports.addressProofEntropy = exports.addressToVerify = exports.attestationPrvKey = exports.attestationPubKey = exports.network = void 0;
40
+ const assert_1 = __importDefault(require("assert"));
41
+ const crypto_1 = __importDefault(require("crypto"));
42
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
43
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
44
+ const proprietaryKeyVal_1 = require("bip174/src/lib/proprietaryKeyVal");
45
+ const utils_1 = require("bip174/src/lib/utils");
46
+ const payGoAddressProof_1 = require("../../../src/paygo/psbt/payGoAddressProof");
47
+ const bip32utils_1 = require("../../../src/bip32utils");
48
+ const attestation_1 = require("../../../src/paygo/attestation");
49
+ // To construct our PSBTs
50
+ exports.network = utxolib.networks.bitcoin;
51
+ const keys = [1, 2, 3].map((v) => secp256k1_1.bip32.fromSeed(Buffer.alloc(16, `test/2/${v}`), exports.network));
52
+ const rootWalletKeys = new utxolib.bitgo.RootWalletKeys([keys[0], keys[1], keys[2]]);
53
+ // PSBT INPUTS AND OUTPUTS
54
+ const psbtInputs = utxolib.testutil.inputScriptTypes.map((scriptType) => ({
55
+ scriptType,
56
+ value: BigInt(1000),
57
+ }));
58
+ const psbtOutputs = utxolib.testutil.outputScriptTypes.map((scriptType) => ({
59
+ scriptType,
60
+ value: BigInt(900),
61
+ }));
62
+ // wallet pub and priv key for tbtc
63
+ const dummyPub1 = rootWalletKeys.deriveForChainAndIndex(50, 200);
64
+ exports.attestationPubKey = dummyPub1.user.publicKey;
65
+ exports.attestationPrvKey = dummyPub1.user.privateKey;
66
+ // our xpub converted to base58 address
67
+ exports.addressToVerify = utxolib.address.toBase58Check(utxolib.crypto.hash160(Buffer.from(dummyPub1.backup.publicKey)), utxolib.networks.bitcoin.pubKeyHash, utxolib.networks.bitcoin);
68
+ // Fixed entropy for deterministic test fixtures (64 bytes of 0x00)
69
+ exports.addressProofEntropy = Buffer.alloc(64, 0x00);
70
+ // Create the message buffer manually with our fixed entropy
71
+ const addressBuffer = Buffer.from(exports.addressToVerify);
72
+ const uuidBuffer = Buffer.from(attestation_1.NIL_UUID);
73
+ exports.addressProofMsgBuffer = Buffer.concat([exports.addressProofEntropy, addressBuffer, uuidBuffer]);
74
+ // signature with the given msg addressProofMsgBuffer
75
+ exports.sig = (0, bip32utils_1.signMessage)(exports.addressProofMsgBuffer, exports.attestationPrvKey, exports.network);
76
+ function getTestPsbt() {
77
+ return utxolib.testutil.constructPsbt(psbtInputs, psbtOutputs, exports.network, rootWalletKeys, 'unsigned');
78
+ }
79
+ describe('test fixtures', () => {
80
+ it('should have expected test fixture values', () => {
81
+ // Address fixture - derived from backup key
82
+ assert_1.default.strictEqual(exports.addressToVerify, '1CdWUVacSQQJ617HfuNWByGiisEGXGNx2c');
83
+ // Entropy fixture - fixed 64 bytes of zeros for deterministic testing
84
+ assert_1.default.strictEqual(exports.addressProofEntropy.toString('hex'), '0000000000000000000000000000000000000000000000000000000000000000' +
85
+ '0000000000000000000000000000000000000000000000000000000000000000');
86
+ assert_1.default.strictEqual(exports.addressProofEntropy.length, 64);
87
+ // Signature fixture - Bitcoin message signature (65 bytes with recovery ID)
88
+ assert_1.default.strictEqual(exports.sig.toString('hex'), '1fd62abac20bb963f5150aa4b3f4753c5f2f53ced5183ab7761d0c95c2820f6b' +
89
+ 'b722b6d0d9adbab782d2d0d66402794b6bd6449dc26f634035ee388a2b5e7b53f6');
90
+ assert_1.default.strictEqual(exports.sig.length, 65);
91
+ // Public key fixture - compressed secp256k1 public key (33 bytes)
92
+ assert_1.default.strictEqual(exports.attestationPubKey.toString('hex'), '02456f4f788b6af55eb9c54d88692cadef4babdbc34cde75218cc1d6b6de3dea2d');
93
+ assert_1.default.strictEqual(exports.attestationPubKey.length, 33);
94
+ // Message buffer structure: [ENTROPY][ADDRESS][UUID]
95
+ // Total length: 64 (entropy) + 34 (address) + 36 (UUID) = 134
96
+ assert_1.default.strictEqual(exports.addressProofMsgBuffer.length, 134);
97
+ // Verify message components
98
+ const entropy = exports.addressProofMsgBuffer.subarray(0, 64);
99
+ const address = exports.addressProofMsgBuffer.subarray(64, 98);
100
+ const uuid = exports.addressProofMsgBuffer.subarray(98, 134);
101
+ assert_1.default.strictEqual(entropy.toString('hex'), exports.addressProofEntropy.toString('hex'));
102
+ assert_1.default.strictEqual(address.toString(), exports.addressToVerify);
103
+ assert_1.default.strictEqual(uuid.toString(), attestation_1.NIL_UUID);
104
+ });
105
+ });
106
+ describe('addPaygoAddressProof and verifyPaygoAddressProof', () => {
107
+ function getPayGoProprietaryKey(proprietaryKeyVals) {
108
+ return proprietaryKeyVals
109
+ .map(({ key, value }) => {
110
+ return { key: (0, proprietaryKeyVal_1.decodeProprietaryKey)(key), value };
111
+ })
112
+ .filter((keyValue) => {
113
+ return (keyValue.key.identifier === utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER &&
114
+ keyValue.key.subtype === utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF);
115
+ });
116
+ }
117
+ it('should add and verify a valid paygo address proof on the PSBT', () => {
118
+ const psbt = getTestPsbt();
119
+ psbt.addOutput({ script: utxolib.address.toOutputScript(exports.addressToVerify, exports.network), value: BigInt(10000) });
120
+ const outputIndex = psbt.data.outputs.length - 1;
121
+ (0, payGoAddressProof_1.addPayGoAddressProof)(psbt, outputIndex, exports.sig, exports.addressProofEntropy);
122
+ (0, payGoAddressProof_1.verifyPayGoAddressProof)(psbt, outputIndex, exports.attestationPubKey);
123
+ });
124
+ it('should throw an error if there are multiple PayGo proprietary keys in the PSBT', () => {
125
+ const outputIndex = 0;
126
+ const psbt = getTestPsbt();
127
+ (0, payGoAddressProof_1.addPayGoAddressProof)(psbt, outputIndex, exports.sig, exports.addressProofEntropy);
128
+ (0, payGoAddressProof_1.addPayGoAddressProof)(psbt, outputIndex, Buffer.from('signature2'), crypto_1.default.randomBytes(64));
129
+ const output = (0, utils_1.checkForOutput)(psbt.data.outputs, outputIndex);
130
+ const proofInPsbt = getPayGoProprietaryKey(output.unknownKeyVals);
131
+ (0, assert_1.default)(proofInPsbt.length !== 0);
132
+ (0, assert_1.default)(proofInPsbt.length > 1);
133
+ assert_1.default.throws(() => (0, payGoAddressProof_1.verifyPayGoAddressProof)(psbt, outputIndex, exports.attestationPubKey), (e) => e.message === 'There are multiple paygo address proofs encoded in the PSBT. Something went wrong.');
134
+ });
135
+ });
136
+ describe('verifyPaygoAddressProof', () => {
137
+ it('should throw an error if there is no PayGo address in PSBT', () => {
138
+ const psbt = getTestPsbt();
139
+ assert_1.default.throws(() => (0, payGoAddressProof_1.verifyPayGoAddressProof)(psbt, 0, exports.attestationPubKey), (e) => e.message === 'There is no paygo address proof encoded in the PSBT at output 0.');
140
+ });
141
+ });
142
+ describe('getPaygoAddressProofIndex', () => {
143
+ it('should get PayGo address proof index from PSBT if there is one', () => {
144
+ const psbt = getTestPsbt();
145
+ const outputIndex = 0;
146
+ (0, payGoAddressProof_1.addPayGoAddressProof)(psbt, outputIndex, exports.sig, Buffer.from(exports.attestationPubKey));
147
+ (0, assert_1.default)((0, payGoAddressProof_1.psbtOutputIncludesPaygoAddressProof)(psbt));
148
+ (0, assert_1.default)((0, payGoAddressProof_1.getPayGoAddressProofOutputIndex)(psbt) === 0);
149
+ });
150
+ it('should return undefined if there is no PayGo address proof in PSBT', () => {
151
+ const psbt = getTestPsbt();
152
+ (0, assert_1.default)((0, payGoAddressProof_1.getPayGoAddressProofOutputIndex)(psbt) === undefined);
153
+ (0, assert_1.default)(!(0, payGoAddressProof_1.psbtOutputIncludesPaygoAddressProof)(psbt));
154
+ });
155
+ it('should return an error and fail if we have multiple PayGo address in the PSBT in the same output index', () => {
156
+ const psbt = getTestPsbt();
157
+ const outputIndex = 0;
158
+ (0, payGoAddressProof_1.addPayGoAddressProof)(psbt, outputIndex, exports.sig, exports.addressProofEntropy);
159
+ (0, payGoAddressProof_1.addPayGoAddressProof)(psbt, outputIndex, exports.sig, crypto_1.default.randomBytes(64));
160
+ assert_1.default.throws(() => (0, payGoAddressProof_1.getPayGoAddressProofOutputIndex)(psbt), (e) => e.message === 'There are multiple PayGo addresses in the PSBT output 0.');
161
+ });
162
+ });
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5R29BZGRyZXNzUHJvb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3BheWdvL3BzYnQvcGF5R29BZGRyZXNzUHJvb2YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG9EQUE0QjtBQUU1QixxREFBOEM7QUFDOUMsOERBQWdEO0FBQ2hELHdFQUF3RTtBQUV4RSxnREFBc0Q7QUFFdEQsaUZBS21EO0FBQ25ELHdEQUFzRDtBQUN0RCxnRUFBMEQ7QUFFMUQseUJBQXlCO0FBQ1osUUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDaEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLGVBQU8sQ0FBQyxDQUFDLENBQUM7QUFDNUYsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVyRiwwQkFBMEI7QUFDMUIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEUsVUFBVTtJQUNWLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0NBQ3BCLENBQUMsQ0FBQyxDQUFDO0FBQ0osTUFBTSxXQUFXLEdBQUcsT0FB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QUFDLElBQUEsdURBQW1DLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFBLGdCQUFNLEVBQUMsSUFBQSxtREFBK0IsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxvRUFBb0UsRUFBRSxHQUFHLEVBQUU7UUFDNUUsTUFBTSxJQUFJLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDM0IsSUFBQSxnQkFBTSxFQUFDLElBQUEsbURBQStCLEVBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDNUQsSUFBQSxnQkFBTSxFQUFDLENBQUMsSUFBQSx1REFBbUMsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdHQUF3RyxFQUFFLEdBQUcsRUFBRTtRQUNoSCxNQUFNLElBQUksR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUMzQixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFdBQUcsRUFBRSwyQkFBbUIsQ0FBQyxDQUFDO1FBQ2xFLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFHLEVBQUUsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FBQyxJQUFBLG1EQUErQixFQUFDLElBQUksQ0FBQyxFQUMzQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSywwREFBMEQsQ0FDckYsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgZGVjb2RlUHJvcHJpZXRhcnlLZXkgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi9wcm9wcmlldGFyeUtleVZhbCc7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY2hlY2tGb3JPdXRwdXQgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi91dGlscyc7XG5cbmltcG9ydCB7XG4gIGFkZFBheUdvQWRkcmVzc1Byb29mLFxuICBnZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4LFxuICBwc2J0T3V0cHV0SW5jbHVkZXNQYXlnb0FkZHJlc3NQcm9vZixcbiAgdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YsXG59IGZyb20gJy4uLy4uLy4uL3NyYy9wYXlnby9wc2J0L3BheUdvQWRkcmVzc1Byb29mJztcbmltcG9ydCB7IHNpZ25NZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2JpcDMydXRpbHMnO1xuaW1wb3J0IHsgTklMX1VVSUQgfSBmcm9tICcuLi8uLi8uLi9zcmMvcGF5Z28vYXR0ZXN0YXRpb24nO1xuXG4vLyBUbyBjb25zdHJ1Y3Qgb3VyIFBTQlRzXG5leHBvcnQgY29uc3QgbmV0d29yayA9IHV0eG9saWIubmV0d29ya3MuYml0Y29pbjtcbmNvbnN0IGtleXMgPSBbMSwgMiwgM10ubWFwKCh2KSA9PiBiaXAzMi5mcm9tU2VlZChCdWZmZXIuYWxsb2MoMTYsIGB0ZXN0LzIvJHt2fWApLCBuZXR3b3JrKSk7XG5jb25zdCByb290V2FsbGV0S2V5cyA9IG5ldyB1dHhvbGliLmJpdGdvLlJvb3RXYWxsZXRLZXlzKFtrZXlzWzBdLCBrZXlzWzFdLCBrZXlzWzJdXSk7XG5cbi8vIFBTQlQgSU5QVVRTIEFORCBPVVRQVVRTXG5jb25zdCBwc2J0SW5wdXRzID0gdXR4b2xpYi50ZXN0dXRpbC5pbnB1dFNjcmlwdFR5cGVzLm1hcCgoc2NyaXB0VHlwZSkgPT4gKHtcbiAgc2NyaXB0VHlwZSxcbiAgdmFsdWU6IEJpZ0ludCgxMDAwKSxcbn0pKTtcbmNvbnN0IHBzYnRPdXRwdXRzID0gdXR4b2xpYi50ZXN0dXRpbC5vdXRwdXRTY3JpcHRUeXBlcy5tYXAoKHNjcmlwdFR5cGUpID0+ICh7XG4gIHNjcmlwdFR5cGUsXG4gIHZhbHVlOiBCaWdJbnQoOTAwKSxcbn0pKTtcblxuLy8gd2FsbGV0IHB1YiBhbmQgcHJpdiBrZXkgZm9yIHRidGNcbmNvbnN0IGR1bW15UHViMSA9IHJvb3RXYWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoNTAsIDIwMCk7XG5leHBvcnQgY29uc3QgYXR0ZXN0YXRpb25QdWJLZXkgPSBkdW1teVB1YjEudXNlci5wdWJsaWNLZXk7XG5leHBvcnQgY29uc3QgYXR0ZXN0YXRpb25QcnZLZXkgPSBkdW1teVB1YjEudXNlci5wcml2YXRlS2V5ITtcblxuLy8gb3VyIHhwdWIgY29udmVydGVkIHRvIGJhc2U1OCBhZGRyZXNzXG5leHBvcnQgY29uc3QgYWRkcmVzc1RvVmVyaWZ5ID0gdXR4b2xpYi5hZGRyZXNzLnRvQmFzZTU4Q2hlY2soXG4gIHV0eG9saWIuY3J5cHRvLmhhc2gxNjAoQnVmZmVyLmZyb20oZHVtbXlQdWIxLmJhY2t1cC5wdWJsaWNLZXkpKSxcbiAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luLnB1YktleUhhc2gsXG4gIHV0eG9saWIubmV0d29ya3MuYml0Y29pblxuKTtcblxuLy8gRml4ZWQgZW50cm9weSBmb3IgZGV0ZXJtaW5pc3RpYyB0ZXN0IGZpeHR1cmVzICg2NCBieXRlcyBvZiAweDAwKVxuZXhwb3J0IGNvbnN0IGFkZHJlc3NQcm9vZkVudHJvcHkgPSBCdWZmZXIuYWxsb2MoNjQsIDB4MDApO1xuXG4vLyBDcmVhdGUgdGhlIG1lc3NhZ2UgYnVmZmVyIG1hbnVhbGx5IHdpdGggb3VyIGZpeGVkIGVudHJvcHlcbmNvbnN0IGFkZHJlc3NCdWZmZXIgPSBCdWZmZXIuZnJvbShhZGRyZXNzVG9WZXJpZnkpO1xuY29uc3QgdXVpZEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKE5JTF9VVUlEKTtcbmV4cG9ydCBjb25zdCBhZGRyZXNzUHJvb2ZNc2dCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFthZGRyZXNzUHJvb2ZFbnRyb3B5LCBhZGRyZXNzQnVmZmVyLCB1dWlkQnVmZmVyXSk7XG5cbi8vIHNpZ25hdHVyZSB3aXRoIHRoZSBnaXZlbiBtc2cgYWRkcmVzc1Byb29mTXNnQnVmZmVyXG5leHBvcnQgY29uc3Qgc2lnID0gc2lnbk1lc3NhZ2UoYWRkcmVzc1Byb29mTXNnQnVmZmVyLCBhdHRlc3RhdGlvblBydktleSEsIG5ldHdvcmspO1xuXG5mdW5jdGlvbiBnZXRUZXN0UHNidCgpIHtcbiAgcmV0dXJuIHV0eG9saWIudGVzdHV0aWwuY29uc3RydWN0UHNidChwc2J0SW5wdXRzLCBwc2J0T3V0cHV0cywgbmV0d29yaywgcm9vdFdhbGxldEtleXMsICd1bnNpZ25lZCcpO1xufVxuXG5kZXNjcmliZSgndGVzdCBmaXh0dXJlcycsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBoYXZlIGV4cGVjdGVkIHRlc3QgZml4dHVyZSB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgLy8gQWRkcmVzcyBmaXh0dXJlIC0gZGVyaXZlZCBmcm9tIGJhY2t1cCBrZXlcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWRkcmVzc1RvVmVyaWZ5LCAnMUNkV1VWYWNTUVFKNjE3SGZ1TldCeUdpaXNFR1hHTngyYycpO1xuXG4gICAgLy8gRW50cm9weSBmaXh0dXJlIC0gZml4ZWQgNjQgYnl0ZXMgb2YgemVyb3MgZm9yIGRldGVybWluaXN0aWMgdGVzdGluZ1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIGFkZHJlc3NQcm9vZkVudHJvcHkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICtcbiAgICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gICAgKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWRkcmVzc1Byb29mRW50cm9weS5sZW5ndGgsIDY0KTtcblxuICAgIC8vIFNpZ25hdHVyZSBmaXh0dXJlIC0gQml0Y29pbiBtZXNzYWdlIHNpZ25hdHVyZSAoNjUgYnl0ZXMgd2l0aCByZWNvdmVyeSBJRClcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICBzaWcudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgJzFmZDYyYWJhYzIwYmI5NjNmNTE1MGFhNGIzZjQ3NTNjNWYyZjUzY2VkNTE4M2FiNzc2MWQwYzk1YzI4MjBmNmInICtcbiAgICAgICAgJ2I3MjJiNmQwZDlhZGJhYjc4MmQyZDBkNjY0MDI3OTRiNmJkNjQ0OWRjMjZmNjM0MDM1ZWUzODhhMmI1ZTdiNTNmNidcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChzaWcubGVuZ3RoLCA2NSk7XG5cbiAgICAvLyBQdWJsaWMga2V5IGZpeHR1cmUgLSBjb21wcmVzc2VkIHNlY3AyNTZrMSBwdWJsaWMga2V5ICgzMyBieXRlcylcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICBhdHRlc3RhdGlvblB1YktleS50b1N0cmluZygnaGV4JyksXG4gICAgICAnMDI0NTZmNGY3ODhiNmFmNTVlYjljNTRkODg2OTJjYWRlZjRiYWJkYmMzNGNkZTc1MjE4Y2MxZDZiNmRlM2RlYTJkJ1xuICAgICk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGF0dGVzdGF0aW9uUHViS2V5Lmxlbmd0aCwgMzMpO1xuXG4gICAgLy8gTWVzc2FnZSBidWZmZXIgc3RydWN0dXJlOiBbRU5UUk9QWV1bQUREUkVTU11bVVVJRF1cbiAgICAvLyBUb3RhbCBsZW5ndGg6IDY0IChlbnRyb3B5KSArIDM0IChhZGRyZXNzKSArIDM2IChVVUlEKSA9IDEzNFxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChhZGRyZXNzUHJvb2ZNc2dCdWZmZXIubGVuZ3RoLCAxMzQpO1xuXG4gICAgLy8gVmVyaWZ5IG1lc3NhZ2UgY29tcG9uZW50c1xuICAgIGNvbnN0IGVudHJvcHkgPSBhZGRyZXNzUHJvb2ZNc2dCdWZmZXIuc3ViYXJyYXkoMCwgNjQpO1xuICAgIGNvbnN0IGFkZHJlc3MgPSBhZGRyZXNzUHJvb2ZNc2dCdWZmZXIuc3ViYXJyYXkoNjQsIDk4KTtcbiAgICBjb25zdCB1dWlkID0gYWRkcmVzc1Byb29mTXNnQnVmZmVyLnN1YmFycmF5KDk4LCAxMzQpO1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVudHJvcHkudG9TdHJpbmcoJ2hleCcpLCBhZGRyZXNzUHJvb2ZFbnRyb3B5LnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFkZHJlc3MudG9TdHJpbmcoKSwgYWRkcmVzc1RvVmVyaWZ5KTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodXVpZC50b1N0cmluZygpLCBOSUxfVVVJRCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdhZGRQYXlnb0FkZHJlc3NQcm9vZiBhbmQgdmVyaWZ5UGF5Z29BZGRyZXNzUHJvb2YnLCAoKSA9PiB7XG4gIGZ1bmN0aW9uIGdldFBheUdvUHJvcHJpZXRhcnlLZXkocHJvcHJpZXRhcnlLZXlWYWxzOiBLZXlWYWx1ZVtdKSB7XG4gICAgcmV0dXJuIHByb3ByaWV0YXJ5S2V5VmFsc1xuICAgICAgLm1hcCgoeyBrZXksIHZhbHVlIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBkZWNvZGVQcm9wcmlldGFyeUtleShrZXkpLCB2YWx1ZSB9O1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKGtleVZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAga2V5VmFsdWUua2V5LmlkZW50aWZpZXIgPT09IHV0eG9saWIuYml0Z28uUFNCVF9QUk9QUklFVEFSWV9JREVOVElGSUVSICYmXG4gICAgICAgICAga2V5VmFsdWUua2V5LnN1YnR5cGUgPT09IHV0eG9saWIuYml0Z28uUHJvcHJpZXRhcnlLZXlTdWJ0eXBlLlBBWUdPX0FERFJFU1NfQVRURVNUQVRJT05fUFJPT0ZcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgaXQoJ3Nob3VsZCBhZGQgYW5kIHZlcmlmeSBhIHZhbGlkIHBheWdvIGFkZHJlc3MgcHJvb2Ygb24gdGhlIFBTQlQnLCAoKSA9PiB7XG4gICAgY29uc3QgcHNidCA9IGdldFRlc3RQc2J0KCk7XG4gICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChhZGRyZXNzVG9WZXJpZnksIG5ldHdvcmspLCB2YWx1ZTogQmlnSW50KDEwMDAwKSB9KTtcbiAgICBjb25zdCBvdXRwdXRJbmRleCA9IHBzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aCAtIDE7XG4gICAgYWRkUGF5R29BZGRyZXNzUHJvb2YocHNidCwgb3V0cHV0SW5kZXgsIHNpZywgYWRkcmVzc1Byb29mRW50cm9weSk7XG4gICAgdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YocHNidCwgb3V0cHV0SW5kZXgsIGF0dGVzdGF0aW9uUHViS2V5KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgUGF5R28gcHJvcHJpZXRhcnkga2V5cyBpbiB0aGUgUFNCVCcsICgpID0+IHtcbiAgICBjb25zdCBvdXRwdXRJbmRleCA9IDA7XG4gICAgY29uc3QgcHNidCA9IGdldFRlc3RQc2J0KCk7XG4gICAgYWRkUGF5R29BZGRyZXNzUHJvb2YocHNidCwgb3V0cHV0SW5kZXgsIHNpZywgYWRkcmVzc1Byb29mRW50cm9weSk7XG4gICAgYWRkUGF5R29BZGRyZXNzUHJvb2YocHNidCwgb3V0cHV0SW5kZXgsIEJ1ZmZlci5mcm9tKCdzaWduYXR1cmUyJyksIGNyeXB0by5yYW5kb21CeXRlcyg2NCkpO1xuICAgIGNvbnN0IG91dHB1dCA9IGNoZWNrRm9yT3V0cHV0KHBzYnQuZGF0YS5vdXRwdXRzLCBvdXRwdXRJbmRleCk7XG4gICAgY29uc3QgcHJvb2ZJblBzYnQgPSBnZXRQYXlHb1Byb3ByaWV0YXJ5S2V5KG91dHB1dC51bmtub3duS2V5VmFscyEpO1xuICAgIGFzc2VydChwcm9vZkluUHNidC5sZW5ndGggIT09IDApO1xuICAgIGFzc2VydChwcm9vZkluUHNidC5sZW5ndGggPiAxKTtcbiAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgKCkgPT4gdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YocHNidCwgb3V0cHV0SW5kZXgsIGF0dGVzdGF0aW9uUHViS2V5KSxcbiAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1RoZXJlIGFyZSBtdWx0aXBsZSBwYXlnbyBhZGRyZXNzIHByb29mcyBlbmNvZGVkIGluIHRoZSBQU0JULiBTb21ldGhpbmcgd2VudCB3cm9uZy4nXG4gICAgKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3ZlcmlmeVBheWdvQWRkcmVzc1Byb29mJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIFBheUdvIGFkZHJlc3MgaW4gUFNCVCcsICgpID0+IHtcbiAgICBjb25zdCBwc2J0ID0gZ2V0VGVzdFBzYnQoKTtcbiAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgKCkgPT4gdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YocHNidCwgMCwgYXR0ZXN0YXRpb25QdWJLZXkpLFxuICAgICAgKGU6IGFueSkgPT4gZS5tZXNzYWdlID09PSAnVGhlcmUgaXMgbm8gcGF5Z28gYWRkcmVzcyBwcm9vZiBlbmNvZGVkIGluIHRoZSBQU0JUIGF0IG91dHB1dCAwLidcbiAgICApO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZ2V0UGF5Z29BZGRyZXNzUHJvb2ZJbmRleCcsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBnZXQgUGF5R28gYWRkcmVzcyBwcm9vZiBpbmRleCBmcm9tIFBTQlQgaWYgdGhlcmUgaXMgb25lJywgKCkgPT4ge1xuICAgIGNvbnN0IHBzYnQgPSBnZXRUZXN0UHNidCgpO1xuICAgIGNvbnN0IG91dHB1dEluZGV4ID0gMDtcbiAgICBhZGRQYXlHb0FkZHJlc3NQcm9vZihwc2J0LCBvdXRwdXRJbmRleCwgc2lnLCBCdWZmZXIuZnJvbShhdHRlc3RhdGlvblB1YktleSkpO1xuICAgIGFzc2VydChwc2J0T3V0cHV0SW5jbHVkZXNQYXlnb0FkZHJlc3NQcm9vZihwc2J0KSk7XG4gICAgYXNzZXJ0KGdldFBheUdvQWRkcmVzc1Byb29mT3V0cHV0SW5kZXgocHNidCkgPT09IDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm8gUGF5R28gYWRkcmVzcyBwcm9vZiBpbiBQU0JUJywgKCkgPT4ge1xuICAgIGNvbnN0IHBzYnQgPSBnZXRUZXN0UHNidCgpO1xuICAgIGFzc2VydChnZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4KHBzYnQpID09PSB1bmRlZmluZWQpO1xuICAgIGFzc2VydCghcHNidE91dHB1dEluY2x1ZGVzUGF5Z29BZGRyZXNzUHJvb2YocHNidCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBhbiBlcnJvciBhbmQgZmFpbCBpZiB3ZSBoYXZlIG11bHRpcGxlIFBheUdvIGFkZHJlc3MgaW4gdGhlIFBTQlQgaW4gdGhlIHNhbWUgb3V0cHV0IGluZGV4JywgKCkgPT4ge1xuICAgIGNvbnN0IHBzYnQgPSBnZXRUZXN0UHNidCgpO1xuICAgIGNvbnN0IG91dHB1dEluZGV4ID0gMDtcbiAgICBhZGRQYXlHb0FkZHJlc3NQcm9vZihwc2J0LCBvdXRwdXRJbmRleCwgc2lnLCBhZGRyZXNzUHJvb2ZFbnRyb3B5KTtcbiAgICBhZGRQYXlHb0FkZHJlc3NQcm9vZihwc2J0LCBvdXRwdXRJbmRleCwgc2lnLCBjcnlwdG8ucmFuZG9tQnl0ZXMoNjQpKTtcbiAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgKCkgPT4gZ2V0UGF5R29BZGRyZXNzUHJvb2ZPdXRwdXRJbmRleChwc2J0KSxcbiAgICAgIChlOiBhbnkpID0+IGUubWVzc2FnZSA9PT0gJ1RoZXJlIGFyZSBtdWx0aXBsZSBQYXlHbyBhZGRyZXNzZXMgaW4gdGhlIFBTQlQgb3V0cHV0IDAuJ1xuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=xOnlyPubkey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xOnlyPubkey.d.ts","sourceRoot":"","sources":["../../../test/xOnlyPubkey.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
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
+ const assert_1 = __importDefault(require("assert"));
7
+ const src_1 = require("../src");
8
+ describe('xOnlyPubkey', function () {
9
+ it('converts to X-Only pubkey', function () {
10
+ const buf32 = Buffer.alloc(32, 0);
11
+ assert_1.default.deepStrictEqual((0, src_1.toXOnlyPublicKey)(Buffer.concat([Buffer.from([0x02]), buf32])), buf32);
12
+ assert_1.default.deepStrictEqual((0, src_1.toXOnlyPublicKey)(Buffer.concat([Buffer.from([0x03]), buf32])), buf32);
13
+ assert_1.default.deepStrictEqual((0, src_1.toXOnlyPublicKey)(buf32), buf32);
14
+ assert_1.default.throws(() => (0, src_1.toXOnlyPublicKey)(Buffer.concat([Buffer.from([0x04]), buf32])));
15
+ assert_1.default.throws(() => (0, src_1.toXOnlyPublicKey)(Buffer.alloc(31)));
16
+ });
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieE9ubHlQdWJrZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3hPbmx5UHVia2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLGdDQUEwQztBQUUxQyxRQUFRLENBQUMsYUFBYSxFQUFFO0lBQ3RCLEVBQUUsQ0FBQywyQkFBMkIsRUFBRTtRQUM5QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFBLHNCQUFnQixFQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0YsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBZ0IsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdGLGdCQUFNLENBQUMsZUFBZSxDQUFDLElBQUEsc0JBQWdCLEVBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxzQkFBZ0IsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkYsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxzQkFBZ0IsRUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyB0b1hPbmx5UHVibGljS2V5IH0gZnJvbSAnLi4vc3JjJztcblxuZGVzY3JpYmUoJ3hPbmx5UHVia2V5JywgZnVuY3Rpb24gKCkge1xuICBpdCgnY29udmVydHMgdG8gWC1Pbmx5IHB1YmtleScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBidWYzMiA9IEJ1ZmZlci5hbGxvYygzMiwgMCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0b1hPbmx5UHVibGljS2V5KEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKFsweDAyXSksIGJ1ZjMyXSkpLCBidWYzMik7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0b1hPbmx5UHVibGljS2V5KEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKFsweDAzXSksIGJ1ZjMyXSkpLCBidWYzMik7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh0b1hPbmx5UHVibGljS2V5KGJ1ZjMyKSwgYnVmMzIpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdG9YT25seVB1YmxpY0tleShCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShbMHgwNF0pLCBidWYzMl0pKSk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0b1hPbmx5UHVibGljS2V5KEJ1ZmZlci5hbGxvYygzMSkpKTtcbiAgfSk7XG59KTtcbiJdfQ==