@reclaimprotocol/attestor-core 4.0.3 → 5.0.1-beta.10

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 (474) hide show
  1. package/LICENSE +660 -660
  2. package/README.md +1 -2
  3. package/lib/avs/abis/avsDirectoryABI.js +341 -342
  4. package/lib/avs/abis/delegationABI.js +4 -5
  5. package/lib/avs/abis/registryABI.js +722 -723
  6. package/lib/avs/client/create-claim-on-avs.d.ts +5 -5
  7. package/lib/avs/client/create-claim-on-avs.js +160 -139
  8. package/lib/avs/config.d.ts +1 -1
  9. package/lib/avs/config.js +25 -23
  10. package/lib/avs/contracts/ReclaimServiceManager.d.ts +436 -532
  11. package/lib/avs/contracts/ReclaimServiceManager.js +0 -3
  12. package/lib/avs/contracts/common.d.ts +40 -11
  13. package/lib/avs/contracts/common.js +0 -3
  14. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +13 -11
  15. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1157 -1148
  16. package/lib/avs/contracts/factories/index.d.ts +1 -1
  17. package/lib/avs/contracts/factories/index.js +4 -9
  18. package/lib/avs/contracts/index.d.ts +3 -3
  19. package/lib/avs/contracts/index.js +6 -40
  20. package/lib/avs/types/index.d.ts +6 -6
  21. package/lib/avs/types/index.js +0 -3
  22. package/lib/avs/utils/contracts.d.ts +14 -14
  23. package/lib/avs/utils/contracts.js +50 -35
  24. package/lib/avs/utils/register.d.ts +3 -3
  25. package/lib/avs/utils/register.js +71 -79
  26. package/lib/avs/utils/tasks.d.ts +4 -4
  27. package/lib/avs/utils/tasks.js +44 -41
  28. package/lib/browser/avs/abis/avsDirectoryABI.d.ts +60 -0
  29. package/lib/browser/avs/abis/avsDirectoryABI.js +343 -0
  30. package/lib/browser/avs/abis/delegationABI.d.ts +126 -0
  31. package/lib/browser/avs/abis/delegationABI.js +4 -0
  32. package/lib/browser/avs/abis/registryABI.d.ts +136 -0
  33. package/lib/browser/avs/abis/registryABI.js +728 -0
  34. package/lib/browser/avs/client/create-claim-on-avs.d.ts +12 -0
  35. package/lib/browser/avs/client/create-claim-on-avs.js +168 -0
  36. package/lib/browser/avs/config.d.ts +7 -0
  37. package/lib/browser/avs/config.js +26 -0
  38. package/lib/browser/avs/contracts/ReclaimServiceManager.d.ts +601 -0
  39. package/lib/browser/avs/contracts/ReclaimServiceManager.js +0 -0
  40. package/lib/browser/avs/contracts/common.d.ts +50 -0
  41. package/lib/browser/avs/contracts/common.js +0 -0
  42. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +890 -0
  43. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.js +1183 -0
  44. package/lib/browser/avs/contracts/factories/index.d.ts +1 -0
  45. package/lib/browser/avs/contracts/factories/index.js +4 -0
  46. package/lib/browser/avs/contracts/index.d.ts +3 -0
  47. package/lib/browser/avs/contracts/index.js +6 -0
  48. package/lib/browser/avs/types/index.d.ts +55 -0
  49. package/lib/browser/avs/types/index.js +0 -0
  50. package/lib/browser/avs/utils/contracts.d.ts +21 -0
  51. package/lib/browser/avs/utils/contracts.js +53 -0
  52. package/lib/browser/avs/utils/register.d.ts +27 -0
  53. package/lib/browser/avs/utils/register.js +74 -0
  54. package/lib/browser/avs/utils/tasks.d.ts +22 -0
  55. package/lib/browser/avs/utils/tasks.js +48 -0
  56. package/lib/browser/client/create-claim.d.ts +5 -0
  57. package/lib/browser/client/create-claim.js +461 -0
  58. package/lib/browser/client/index.d.ts +3 -0
  59. package/lib/browser/client/index.js +3 -0
  60. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  61. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.js +53 -0
  62. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.d.ts +26 -0
  63. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.js +127 -0
  64. package/lib/browser/client/utils/attestor-pool.d.ts +8 -0
  65. package/lib/browser/client/utils/attestor-pool.js +24 -0
  66. package/lib/browser/client/utils/client-socket.d.ts +11 -0
  67. package/lib/browser/client/utils/client-socket.js +120 -0
  68. package/lib/browser/client/utils/message-handler.d.ts +4 -0
  69. package/lib/browser/client/utils/message-handler.js +97 -0
  70. package/lib/browser/config/index.d.ts +31 -0
  71. package/lib/browser/config/index.js +62 -0
  72. package/lib/browser/external-rpc/benchmark.d.ts +1 -0
  73. package/lib/browser/external-rpc/benchmark.js +82 -0
  74. package/lib/browser/external-rpc/event-bus.d.ts +7 -0
  75. package/lib/browser/external-rpc/event-bus.js +17 -0
  76. package/lib/browser/external-rpc/global.d.js +0 -0
  77. package/lib/browser/external-rpc/handle-incoming-msg.d.ts +2 -0
  78. package/lib/browser/external-rpc/handle-incoming-msg.js +241 -0
  79. package/lib/browser/external-rpc/index.d.ts +3 -0
  80. package/lib/browser/external-rpc/index.js +3 -0
  81. package/lib/browser/external-rpc/jsc-polyfills/1.d.ts +14 -0
  82. package/lib/browser/external-rpc/jsc-polyfills/1.js +80 -0
  83. package/lib/browser/external-rpc/jsc-polyfills/2.js +15 -0
  84. package/lib/browser/external-rpc/jsc-polyfills/event.d.ts +10 -0
  85. package/lib/browser/external-rpc/jsc-polyfills/event.js +19 -0
  86. package/lib/browser/external-rpc/jsc-polyfills/index.d.ts +2 -0
  87. package/lib/browser/external-rpc/jsc-polyfills/index.js +2 -0
  88. package/lib/browser/external-rpc/jsc-polyfills/ws.d.ts +21 -0
  89. package/lib/browser/external-rpc/jsc-polyfills/ws.js +83 -0
  90. package/lib/browser/external-rpc/setup-browser.d.ts +6 -0
  91. package/lib/browser/external-rpc/setup-browser.js +33 -0
  92. package/lib/browser/external-rpc/setup-jsc.d.ts +24 -0
  93. package/lib/browser/external-rpc/setup-jsc.js +22 -0
  94. package/lib/{window-rpc → browser/external-rpc}/types.d.ts +56 -35
  95. package/lib/browser/external-rpc/types.js +0 -0
  96. package/lib/browser/external-rpc/utils.d.ts +20 -0
  97. package/lib/browser/external-rpc/utils.js +100 -0
  98. package/lib/browser/external-rpc/zk.d.ts +14 -0
  99. package/lib/browser/external-rpc/zk.js +58 -0
  100. package/lib/browser/index.browser.js +13 -0
  101. package/lib/browser/index.d.ts +9 -0
  102. package/lib/browser/index.js +13 -0
  103. package/lib/browser/mechain/abis/governanceABI.d.ts +50 -0
  104. package/lib/browser/mechain/abis/governanceABI.js +461 -0
  105. package/lib/browser/mechain/abis/taskABI.d.ts +157 -0
  106. package/lib/browser/mechain/abis/taskABI.js +512 -0
  107. package/lib/browser/mechain/client/create-claim-on-mechain.d.ts +10 -0
  108. package/lib/browser/mechain/client/create-claim-on-mechain.js +33 -0
  109. package/lib/browser/mechain/client/index.d.ts +1 -0
  110. package/lib/browser/mechain/client/index.js +1 -0
  111. package/lib/browser/mechain/constants/index.d.ts +3 -0
  112. package/lib/browser/mechain/constants/index.js +8 -0
  113. package/lib/browser/mechain/index.d.ts +2 -0
  114. package/lib/browser/mechain/index.js +2 -0
  115. package/lib/browser/mechain/types/index.d.ts +23 -0
  116. package/lib/browser/mechain/types/index.js +0 -0
  117. package/lib/browser/proto/api.d.ts +651 -0
  118. package/lib/browser/proto/api.js +4250 -0
  119. package/lib/browser/proto/tee-bundle.d.ts +156 -0
  120. package/lib/browser/proto/tee-bundle.js +1296 -0
  121. package/lib/browser/providers/http/index.d.ts +18 -0
  122. package/lib/browser/providers/http/index.js +640 -0
  123. package/lib/browser/providers/http/patch-parse5-tree.d.ts +6 -0
  124. package/lib/browser/providers/http/patch-parse5-tree.js +34 -0
  125. package/lib/browser/providers/http/utils.d.ts +77 -0
  126. package/lib/browser/providers/http/utils.js +283 -0
  127. package/lib/browser/providers/index.d.ts +4 -0
  128. package/lib/browser/providers/index.js +7 -0
  129. package/lib/browser/scripts/fallbacks/crypto.js +4 -0
  130. package/lib/browser/scripts/fallbacks/empty.js +4 -0
  131. package/lib/browser/scripts/fallbacks/gnark.js +15 -0
  132. package/lib/browser/scripts/fallbacks/re2.js +7 -0
  133. package/lib/browser/scripts/fallbacks/snarkjs.js +10 -0
  134. package/lib/browser/scripts/fallbacks/stwo.js +159 -0
  135. package/lib/browser/types/bgp.d.ts +11 -0
  136. package/lib/browser/types/bgp.js +0 -0
  137. package/lib/browser/types/claims.d.ts +70 -0
  138. package/lib/browser/types/claims.js +0 -0
  139. package/lib/browser/types/client.d.ts +163 -0
  140. package/lib/browser/types/client.js +0 -0
  141. package/lib/browser/types/general.d.ts +77 -0
  142. package/lib/browser/types/general.js +0 -0
  143. package/lib/browser/types/handlers.d.ts +10 -0
  144. package/lib/browser/types/handlers.js +0 -0
  145. package/lib/browser/types/index.d.ts +10 -0
  146. package/lib/browser/types/index.js +10 -0
  147. package/lib/browser/types/providers.d.ts +161 -0
  148. package/lib/browser/types/providers.gen.d.ts +443 -0
  149. package/lib/browser/types/providers.gen.js +16 -0
  150. package/lib/browser/types/providers.js +0 -0
  151. package/lib/browser/types/rpc.d.ts +35 -0
  152. package/lib/browser/types/rpc.js +0 -0
  153. package/lib/browser/types/signatures.d.ts +28 -0
  154. package/lib/browser/types/signatures.js +0 -0
  155. package/lib/browser/types/tunnel.d.ts +18 -0
  156. package/lib/browser/types/tunnel.js +0 -0
  157. package/lib/browser/types/zk.d.ts +38 -0
  158. package/lib/browser/types/zk.js +0 -0
  159. package/lib/browser/utils/auth.d.ts +8 -0
  160. package/lib/browser/utils/auth.js +71 -0
  161. package/lib/browser/utils/b64-json.d.ts +2 -0
  162. package/lib/browser/utils/b64-json.js +17 -0
  163. package/lib/browser/utils/claims.d.ts +33 -0
  164. package/lib/browser/utils/claims.js +89 -0
  165. package/lib/browser/utils/env.d.ts +3 -0
  166. package/lib/browser/utils/env.js +19 -0
  167. package/lib/browser/utils/error.d.ts +26 -0
  168. package/lib/browser/utils/error.js +54 -0
  169. package/lib/browser/utils/generics.d.ts +119 -0
  170. package/lib/browser/utils/generics.js +272 -0
  171. package/lib/browser/utils/http-parser.d.ts +59 -0
  172. package/lib/browser/utils/http-parser.js +201 -0
  173. package/lib/browser/utils/index.browser.js +13 -0
  174. package/lib/browser/utils/index.d.ts +13 -0
  175. package/lib/browser/utils/index.js +13 -0
  176. package/lib/browser/utils/logger.browser.js +88 -0
  177. package/lib/browser/utils/logger.d.ts +14 -0
  178. package/lib/browser/utils/logger.js +88 -0
  179. package/lib/browser/utils/prepare-packets.d.ts +16 -0
  180. package/lib/browser/utils/prepare-packets.js +69 -0
  181. package/lib/browser/utils/redactions.d.ts +73 -0
  182. package/lib/browser/utils/redactions.js +135 -0
  183. package/lib/browser/utils/retries.d.ts +12 -0
  184. package/lib/browser/utils/retries.js +26 -0
  185. package/lib/browser/utils/signatures/eth.d.ts +2 -0
  186. package/lib/browser/utils/signatures/eth.js +31 -0
  187. package/lib/browser/utils/signatures/index.d.ts +5 -0
  188. package/lib/browser/utils/signatures/index.js +12 -0
  189. package/lib/browser/utils/socket-base.d.ts +23 -0
  190. package/lib/browser/utils/socket-base.js +96 -0
  191. package/lib/browser/utils/tls-imports.d.ts +21 -0
  192. package/lib/browser/utils/tls-imports.js +71 -0
  193. package/lib/browser/utils/tls.d.ts +2 -0
  194. package/lib/browser/utils/tls.js +58 -0
  195. package/lib/browser/utils/ws.d.ts +7 -0
  196. package/lib/browser/utils/ws.js +22 -0
  197. package/lib/browser/utils/zk.d.ts +71 -0
  198. package/lib/browser/utils/zk.js +625 -0
  199. package/lib/client/create-claim.d.ts +2 -2
  200. package/lib/client/create-claim.js +437 -400
  201. package/lib/client/index.d.ts +3 -3
  202. package/lib/client/index.js +3 -20
  203. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +2 -2
  204. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +49 -56
  205. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +4 -3
  206. package/lib/client/tunnels/make-rpc-tls-tunnel.js +123 -131
  207. package/lib/client/utils/attestor-pool.d.ts +3 -1
  208. package/lib/client/utils/attestor-pool.js +21 -25
  209. package/lib/client/utils/client-socket.d.ts +4 -4
  210. package/lib/client/utils/client-socket.js +114 -94
  211. package/lib/client/utils/message-handler.d.ts +2 -2
  212. package/lib/client/utils/message-handler.js +89 -86
  213. package/lib/config/index.d.ts +6 -3
  214. package/lib/config/index.js +60 -37
  215. package/lib/external-rpc/benchmark.d.ts +1 -0
  216. package/lib/external-rpc/benchmark.js +82 -0
  217. package/lib/external-rpc/event-bus.d.ts +7 -0
  218. package/lib/external-rpc/event-bus.js +17 -0
  219. package/lib/external-rpc/global.d.js +0 -0
  220. package/lib/external-rpc/handle-incoming-msg.d.ts +2 -0
  221. package/lib/external-rpc/handle-incoming-msg.js +241 -0
  222. package/lib/external-rpc/index.d.ts +3 -0
  223. package/lib/external-rpc/index.js +3 -0
  224. package/lib/external-rpc/jsc-polyfills/1.d.ts +14 -0
  225. package/lib/external-rpc/jsc-polyfills/1.js +80 -0
  226. package/lib/external-rpc/jsc-polyfills/2.js +15 -0
  227. package/lib/external-rpc/jsc-polyfills/event.d.ts +10 -0
  228. package/lib/external-rpc/jsc-polyfills/event.js +19 -0
  229. package/lib/external-rpc/jsc-polyfills/index.d.ts +2 -0
  230. package/lib/external-rpc/jsc-polyfills/index.js +2 -0
  231. package/lib/external-rpc/jsc-polyfills/ws.d.ts +21 -0
  232. package/lib/external-rpc/jsc-polyfills/ws.js +83 -0
  233. package/lib/external-rpc/setup-browser.d.ts +6 -0
  234. package/lib/external-rpc/setup-browser.js +33 -0
  235. package/lib/external-rpc/setup-jsc.d.ts +24 -0
  236. package/lib/external-rpc/setup-jsc.js +22 -0
  237. package/lib/external-rpc/types.d.ts +213 -0
  238. package/lib/external-rpc/types.js +0 -0
  239. package/lib/external-rpc/utils.d.ts +20 -0
  240. package/lib/external-rpc/utils.js +100 -0
  241. package/lib/external-rpc/zk.d.ts +14 -0
  242. package/lib/external-rpc/zk.js +58 -0
  243. package/lib/index.browser.d.ts +9 -0
  244. package/lib/index.d.ts +8 -9
  245. package/lib/index.js +12 -49
  246. package/lib/mechain/abis/governanceABI.js +460 -461
  247. package/lib/mechain/abis/taskABI.js +505 -506
  248. package/lib/mechain/client/create-claim-on-mechain.d.ts +3 -3
  249. package/lib/mechain/client/create-claim-on-mechain.js +31 -30
  250. package/lib/mechain/client/index.d.ts +1 -1
  251. package/lib/mechain/client/index.js +1 -18
  252. package/lib/mechain/constants/index.js +8 -7
  253. package/lib/mechain/index.d.ts +2 -2
  254. package/lib/mechain/index.js +2 -19
  255. package/lib/mechain/types/index.d.ts +2 -2
  256. package/lib/mechain/types/index.js +0 -3
  257. package/lib/proto/api.d.ts +182 -39
  258. package/lib/proto/api.js +4105 -3555
  259. package/lib/proto/tee-bundle.d.ts +156 -0
  260. package/lib/proto/tee-bundle.js +1296 -0
  261. package/lib/providers/http/index.d.ts +16 -1
  262. package/lib/providers/http/index.js +603 -576
  263. package/lib/providers/http/patch-parse5-tree.d.ts +6 -0
  264. package/lib/providers/http/patch-parse5-tree.js +34 -0
  265. package/lib/providers/http/utils.d.ts +7 -4
  266. package/lib/providers/http/utils.js +240 -317
  267. package/lib/providers/index.d.ts +1 -1
  268. package/lib/providers/index.js +5 -9
  269. package/lib/scripts/check-avs-registration.d.ts +1 -1
  270. package/lib/scripts/check-avs-registration.js +24 -25
  271. package/lib/scripts/fallbacks/crypto.d.ts +1 -0
  272. package/lib/scripts/fallbacks/crypto.js +4 -0
  273. package/lib/scripts/fallbacks/empty.d.ts +3 -0
  274. package/lib/scripts/fallbacks/empty.js +4 -0
  275. package/lib/scripts/fallbacks/gnark.d.ts +7 -0
  276. package/lib/scripts/fallbacks/gnark.js +15 -0
  277. package/lib/scripts/fallbacks/re2.d.ts +1 -0
  278. package/lib/scripts/fallbacks/re2.js +7 -0
  279. package/lib/scripts/fallbacks/snarkjs.d.ts +1 -0
  280. package/lib/scripts/fallbacks/snarkjs.js +10 -0
  281. package/lib/scripts/fallbacks/stwo.d.ts +6 -0
  282. package/lib/scripts/generate-provider-types.js +92 -73
  283. package/lib/scripts/generate-receipt.d.ts +2 -2
  284. package/lib/scripts/generate-receipt.js +94 -83
  285. package/lib/scripts/generate-toprf-keys.js +17 -16
  286. package/lib/scripts/jsc-cli-rpc.d.ts +1 -0
  287. package/lib/scripts/jsc-cli-rpc.js +35 -0
  288. package/lib/scripts/register-avs-operator.d.ts +1 -1
  289. package/lib/scripts/register-avs-operator.js +3 -7
  290. package/lib/scripts/start-server.d.ts +1 -1
  291. package/lib/scripts/start-server.js +9 -11
  292. package/lib/scripts/update-avs-metadata.d.ts +1 -1
  293. package/lib/scripts/update-avs-metadata.js +17 -19
  294. package/lib/scripts/utils.js +8 -9
  295. package/lib/scripts/whitelist-operator.d.ts +1 -1
  296. package/lib/scripts/whitelist-operator.js +13 -15
  297. package/lib/server/create-server.d.ts +3 -2
  298. package/lib/server/create-server.js +98 -85
  299. package/lib/server/handlers/claimTeeBundle.d.ts +6 -0
  300. package/lib/server/handlers/claimTeeBundle.js +232 -0
  301. package/lib/server/handlers/claimTunnel.d.ts +1 -1
  302. package/lib/server/handlers/claimTunnel.js +75 -73
  303. package/lib/server/handlers/completeClaimOnChain.d.ts +1 -1
  304. package/lib/server/handlers/completeClaimOnChain.js +27 -26
  305. package/lib/server/handlers/createClaimOnChain.d.ts +1 -1
  306. package/lib/server/handlers/createClaimOnChain.js +30 -29
  307. package/lib/server/handlers/createTaskOnMechain.d.ts +1 -1
  308. package/lib/server/handlers/createTaskOnMechain.js +54 -49
  309. package/lib/server/handlers/createTunnel.d.ts +1 -1
  310. package/lib/server/handlers/createTunnel.js +91 -94
  311. package/lib/server/handlers/disconnectTunnel.d.ts +1 -1
  312. package/lib/server/handlers/disconnectTunnel.js +6 -8
  313. package/lib/server/handlers/fetchCertificateBytes.d.ts +2 -0
  314. package/lib/server/handlers/fetchCertificateBytes.js +57 -0
  315. package/lib/server/handlers/index.d.ts +1 -1
  316. package/lib/server/handlers/index.js +24 -21
  317. package/lib/server/handlers/init.d.ts +1 -1
  318. package/lib/server/handlers/init.js +31 -34
  319. package/lib/server/handlers/toprf.d.ts +1 -1
  320. package/lib/server/handlers/toprf.js +17 -19
  321. package/lib/server/index.d.ts +4 -4
  322. package/lib/server/index.js +4 -21
  323. package/lib/server/socket.d.ts +7 -7
  324. package/lib/server/socket.js +104 -106
  325. package/lib/server/tunnels/make-tcp-tunnel.d.ts +5 -3
  326. package/lib/server/tunnels/make-tcp-tunnel.js +189 -162
  327. package/lib/server/utils/apm.d.ts +1 -1
  328. package/lib/server/utils/apm.js +26 -40
  329. package/lib/server/utils/assert-valid-claim-request.d.ts +6 -5
  330. package/lib/server/utils/assert-valid-claim-request.js +339 -185
  331. package/lib/server/utils/config-env.js +4 -7
  332. package/lib/server/utils/dns.js +18 -16
  333. package/lib/server/utils/gcp-attestation.d.ts +17 -0
  334. package/lib/server/utils/gcp-attestation.js +237 -0
  335. package/lib/server/utils/generics.d.ts +3 -3
  336. package/lib/server/utils/generics.js +37 -51
  337. package/lib/server/utils/iso.js +255 -256
  338. package/lib/server/utils/keep-alive.d.ts +2 -2
  339. package/lib/server/utils/keep-alive.js +36 -40
  340. package/lib/server/utils/nitro-attestation.d.ts +33 -0
  341. package/lib/server/utils/nitro-attestation.js +249 -0
  342. package/lib/server/utils/oprf-raw.d.ts +21 -0
  343. package/lib/server/utils/oprf-raw.js +61 -0
  344. package/lib/server/utils/process-handshake.d.ts +3 -3
  345. package/lib/server/utils/process-handshake.js +217 -175
  346. package/lib/server/utils/proxy-session.d.ts +1 -0
  347. package/lib/server/utils/proxy-session.js +4 -0
  348. package/lib/server/utils/tee-oprf-mpc-verification.d.ts +16 -0
  349. package/lib/server/utils/tee-oprf-mpc-verification.js +86 -0
  350. package/lib/server/utils/tee-oprf-verification.d.ts +24 -0
  351. package/lib/server/utils/tee-oprf-verification.js +151 -0
  352. package/lib/server/utils/tee-transcript-reconstruction.d.ts +24 -0
  353. package/lib/server/utils/tee-transcript-reconstruction.js +140 -0
  354. package/lib/server/utils/tee-verification.d.ts +28 -0
  355. package/lib/server/utils/tee-verification.js +358 -0
  356. package/lib/{utils → server/utils}/validation.d.ts +1 -1
  357. package/lib/server/utils/validation.js +45 -0
  358. package/lib/types/bgp.js +0 -3
  359. package/lib/types/claims.d.ts +7 -10
  360. package/lib/types/claims.js +0 -3
  361. package/lib/types/client.d.ts +5 -5
  362. package/lib/types/client.js +0 -3
  363. package/lib/types/general.d.ts +30 -4
  364. package/lib/types/general.js +0 -3
  365. package/lib/types/handlers.d.ts +3 -3
  366. package/lib/types/handlers.js +0 -3
  367. package/lib/types/index.d.ts +10 -10
  368. package/lib/types/index.js +10 -27
  369. package/lib/types/providers.d.ts +15 -4
  370. package/lib/types/providers.gen.d.ts +15 -1
  371. package/lib/types/providers.gen.js +15 -13
  372. package/lib/types/providers.js +0 -3
  373. package/lib/types/rpc.d.ts +2 -2
  374. package/lib/types/rpc.js +0 -3
  375. package/lib/types/signatures.js +0 -3
  376. package/lib/types/tunnel.d.ts +2 -2
  377. package/lib/types/tunnel.js +0 -3
  378. package/lib/types/zk.d.ts +17 -2
  379. package/lib/types/zk.js +0 -3
  380. package/lib/utils/auth.d.ts +2 -1
  381. package/lib/utils/auth.js +66 -59
  382. package/lib/utils/b64-json.js +13 -19
  383. package/lib/utils/bgp-listener.d.ts +1 -1
  384. package/lib/utils/bgp-listener.js +111 -114
  385. package/lib/utils/claims.d.ts +3 -3
  386. package/lib/utils/claims.js +78 -101
  387. package/lib/utils/env.js +15 -16
  388. package/lib/utils/error.d.ts +6 -7
  389. package/lib/utils/error.js +50 -39
  390. package/lib/utils/generics.d.ts +20 -13
  391. package/lib/utils/generics.js +221 -297
  392. package/lib/utils/http-parser.d.ts +1 -1
  393. package/lib/utils/http-parser.js +186 -237
  394. package/lib/utils/index.browser.d.ts +13 -0
  395. package/lib/utils/index.d.ts +14 -12
  396. package/lib/utils/index.js +14 -29
  397. package/lib/utils/logger.browser.d.ts +14 -0
  398. package/lib/utils/logger.d.ts +1 -1
  399. package/lib/utils/logger.js +69 -87
  400. package/lib/utils/prepare-packets.d.ts +3 -3
  401. package/lib/utils/prepare-packets.js +66 -58
  402. package/lib/utils/redactions.d.ts +20 -1
  403. package/lib/utils/redactions.js +116 -129
  404. package/lib/utils/retries.d.ts +1 -1
  405. package/lib/utils/retries.js +24 -26
  406. package/lib/utils/signatures/eth.d.ts +1 -1
  407. package/lib/utils/signatures/eth.js +28 -30
  408. package/lib/utils/signatures/index.d.ts +3 -3
  409. package/lib/utils/signatures/index.js +11 -10
  410. package/lib/utils/socket-base.d.ts +6 -5
  411. package/lib/utils/socket-base.js +89 -88
  412. package/lib/utils/tls-imports.d.ts +21 -0
  413. package/lib/utils/tls-imports.js +71 -0
  414. package/lib/utils/tls.d.ts +1 -1
  415. package/lib/utils/tls.js +54 -28
  416. package/lib/utils/ws.d.ts +1 -6
  417. package/lib/utils/ws.js +17 -33
  418. package/lib/utils/zk.d.ts +28 -12
  419. package/lib/utils/zk.js +587 -406
  420. package/package.json +79 -60
  421. package/lib/avs/tests/test.operator.d.ts +0 -11
  422. package/lib/avs/tests/test.operator.js +0 -313
  423. package/lib/avs/tests/utils.d.ts +0 -2
  424. package/lib/avs/tests/utils.js +0 -50
  425. package/lib/scripts/verify-root-ca.d.ts +0 -1
  426. package/lib/scripts/verify-root-ca.js +0 -51
  427. package/lib/tests/describe-with-server.d.ts +0 -20
  428. package/lib/tests/describe-with-server.js +0 -64
  429. package/lib/tests/mock-provider-server.d.ts +0 -13
  430. package/lib/tests/mock-provider-server.js +0 -65
  431. package/lib/tests/mocks.d.ts +0 -4
  432. package/lib/tests/mocks.js +0 -23
  433. package/lib/tests/test.auth.js +0 -75
  434. package/lib/tests/test.bgp-listener.js +0 -169
  435. package/lib/tests/test.claim-creation.js +0 -280
  436. package/lib/tests/test.http-parser.d.ts +0 -1
  437. package/lib/tests/test.http-parser.js +0 -120
  438. package/lib/tests/test.http-provider-utils.js +0 -2416
  439. package/lib/tests/test.http-provider.js +0 -114
  440. package/lib/tests/test.rpc-communication.d.ts +0 -1
  441. package/lib/tests/test.rpc-communication.js +0 -64
  442. package/lib/tests/test.rpc-tunnel.d.ts +0 -1
  443. package/lib/tests/test.rpc-tunnel.js +0 -172
  444. package/lib/tests/test.signatures.d.ts +0 -1
  445. package/lib/tests/test.signatures.js +0 -24
  446. package/lib/tests/test.tcp-tunnel.d.ts +0 -1
  447. package/lib/tests/test.tcp-tunnel.js +0 -64
  448. package/lib/tests/test.zk.d.ts +0 -1
  449. package/lib/tests/test.zk.js +0 -337
  450. package/lib/tests/utils.d.ts +0 -18
  451. package/lib/tests/utils.js +0 -64
  452. package/lib/utils/atomic-operations.d.ts +0 -24
  453. package/lib/utils/atomic-operations.js +0 -65
  454. package/lib/utils/benchmark.d.ts +0 -1
  455. package/lib/utils/benchmark.js +0 -70
  456. package/lib/utils/connection-state-machine.d.ts +0 -43
  457. package/lib/utils/connection-state-machine.js +0 -129
  458. package/lib/utils/resource-monitor.d.ts +0 -61
  459. package/lib/utils/resource-monitor.js +0 -107
  460. package/lib/utils/validation.js +0 -46
  461. package/lib/window-rpc/index.d.ts +0 -3
  462. package/lib/window-rpc/index.js +0 -20
  463. package/lib/window-rpc/setup-window-rpc.d.ts +0 -5
  464. package/lib/window-rpc/setup-window-rpc.js +0 -291
  465. package/lib/window-rpc/types.js +0 -3
  466. package/lib/window-rpc/utils.d.ts +0 -14
  467. package/lib/window-rpc/utils.js +0 -102
  468. package/lib/window-rpc/window-rpc-zk.d.ts +0 -15
  469. package/lib/window-rpc/window-rpc-zk.js +0 -85
  470. /package/lib/{tests/test.auth.d.ts → browser/external-rpc/jsc-polyfills/2.d.ts} +0 -0
  471. /package/lib/{tests/test.bgp-listener.d.ts → external-rpc/jsc-polyfills/2.d.ts} +0 -0
  472. /package/lib/{tests/test.claim-creation.d.ts → scripts/build-browser.d.ts} +0 -0
  473. /package/lib/{tests/test.http-provider-utils.d.ts → scripts/build-jsc.d.ts} +0 -0
  474. /package/lib/{tests/test.http-provider.d.ts → scripts/build-lib.d.ts} +0 -0
@@ -1,13 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const apm_1 = require("../server/utils/apm");
4
- require("../server/utils/config-env");
5
- (0, apm_1.getApm)();
6
- function main() {
7
- // importing dynamically to allow APM to inject
8
- // into modules before they are used
9
- const { createServer } = require('../server/create-server');
10
- return createServer();
1
+ import "../server/utils/config-env.js";
2
+ import { setCryptoImplementation } from "@reclaimprotocol/tls";
3
+ import { webcryptoCrypto } from "@reclaimprotocol/tls/webcrypto";
4
+ import { getApm } from "../server/utils/apm.js";
5
+ getApm();
6
+ setCryptoImplementation(webcryptoCrypto);
7
+ async function main() {
8
+ const { createServer } = await import("../server/index.js");
9
+ return createServer();
11
10
  }
12
11
  main();
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvc3RhcnQtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsOENBQTZDO0FBQzdDLHVDQUFvQztBQUNwQyxJQUFBLFlBQU0sR0FBRSxDQUFBO0FBRVIsU0FBUyxJQUFJO0lBQ1osK0NBQStDO0lBQy9DLG9DQUFvQztJQUNwQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUE7SUFDM0QsT0FBTyxZQUFZLEVBQUUsQ0FBQTtBQUN0QixDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUEifQ==
@@ -1 +1 @@
1
- import '../server/utils/config-env';
1
+ import 'src/server/utils/config-env';
@@ -1,22 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // eslint-disable-next-line simple-import-sort/imports
4
- require("../server/utils/config-env");
5
- const contracts_1 = require("../avs/utils/contracts");
6
- const utils_1 = require("../scripts/utils");
1
+ import "src/server/utils/config-env";
2
+ import { getContracts } from "../avs/utils/contracts.js";
3
+ import { getCliArgument } from "../scripts/utils.js";
7
4
  async function main() {
8
- const { contract } = (0, contracts_1.getContracts)();
9
- const minSignaturesPerTask = (0, utils_1.getCliArgument)('minSignaturesPerTask');
10
- if (!minSignaturesPerTask) {
11
- throw new Error('Provide operator address via --minSignaturesPerTask <num>');
12
- }
13
- const tx = await contract.updateTaskCreationMetadata({
14
- minSignaturesPerTask: +(minSignaturesPerTask || 0),
15
- maxTaskCreationDelayS: 0,
16
- maxTaskLifetimeS: 0,
17
- });
18
- await tx.wait();
19
- console.log('Updated task creation metadata');
5
+ const { contract } = getContracts();
6
+ const minSignaturesPerTask = getCliArgument("minSignaturesPerTask");
7
+ if (!minSignaturesPerTask) {
8
+ throw new Error(
9
+ "Provide operator address via --minSignaturesPerTask <num>"
10
+ );
11
+ }
12
+ const tx = await contract.updateTaskCreationMetadata({
13
+ minSignaturesPerTask: +(minSignaturesPerTask || 0),
14
+ maxTaskCreationDelayS: 0,
15
+ maxTaskLifetimeS: 0
16
+ });
17
+ await tx.wait();
18
+ console.log("Updated task creation metadata");
20
19
  }
21
20
  void main();
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWF2cy1tZXRhZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3VwZGF0ZS1hdnMtbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzREFBc0Q7QUFDdEQsdUNBQW9DO0FBQ3BDLHVEQUFzRDtBQUN0RCw2Q0FBa0Q7QUFFbEQsS0FBSyxVQUFVLElBQUk7SUFDbEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUEsd0JBQVksR0FBRSxDQUFBO0lBRW5DLE1BQU0sb0JBQW9CLEdBQUcsSUFBQSxzQkFBYyxFQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDbkUsSUFBRyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FDZCwyREFBMkQsQ0FDM0QsQ0FBQTtJQUNGLENBQUM7SUFFRCxNQUFNLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQztRQUNwRCxvQkFBb0IsRUFBRSxDQUFDLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDO1FBQ2xELHFCQUFxQixFQUFFLENBQUM7UUFDeEIsZ0JBQWdCLEVBQUUsQ0FBQztLQUNuQixDQUFDLENBQUE7SUFDRixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUVmLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtBQUM5QyxDQUFDO0FBRUQsS0FBSyxJQUFJLEVBQUUsQ0FBQSJ9
@@ -1,11 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCliArgument = getCliArgument;
4
1
  function getCliArgument(arg) {
5
- const index = process.argv.indexOf(`--${arg}`);
6
- if (index === -1) {
7
- return undefined;
8
- }
9
- return process.argv[index + 1];
2
+ const index = process.argv.indexOf(`--${arg}`);
3
+ if (index === -1) {
4
+ return void 0;
5
+ }
6
+ return process.argv[index + 1];
10
7
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQU9DO0FBUEQsU0FBZ0IsY0FBYyxDQUFDLEdBQVc7SUFDekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQzlDLElBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxTQUFTLENBQUE7SUFDakIsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDL0IsQ0FBQyJ9
8
+ export {
9
+ getCliArgument
10
+ };
@@ -1 +1 @@
1
- import '../server/utils/config-env';
1
+ import 'src/server/utils/config-env';
@@ -1,18 +1,16 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // eslint-disable-next-line simple-import-sort/imports
4
- require("../server/utils/config-env");
5
- const contracts_1 = require("../avs/utils/contracts");
6
- const utils_1 = require("../scripts/utils");
1
+ import "src/server/utils/config-env";
2
+ import { getContracts } from "../avs/utils/contracts.js";
3
+ import { getCliArgument } from "../scripts/utils.js";
7
4
  async function main() {
8
- const { contract } = (0, contracts_1.getContracts)();
9
- const address = (0, utils_1.getCliArgument)('address');
10
- if (!address) {
11
- throw new Error('Provide operator address via --address <addr>');
12
- }
13
- const tx = await contract.whitelistAddressAsOperator(address, true);
14
- await tx.wait();
15
- console.log('Whitelisted address:', address);
5
+ const { contract } = getContracts();
6
+ const address = getCliArgument("address");
7
+ if (!address) {
8
+ throw new Error(
9
+ "Provide operator address via --address <addr>"
10
+ );
11
+ }
12
+ const tx = await contract.whitelistAddressAsOperator(address, true);
13
+ await tx.wait();
14
+ console.log("Whitelisted address:", address);
16
15
  }
17
16
  void main();
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpdGVsaXN0LW9wZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvd2hpdGVsaXN0LW9wZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsc0RBQXNEO0FBQ3RELHVDQUFvQztBQUNwQyx1REFBc0Q7QUFDdEQsNkNBQWtEO0FBRWxELEtBQUssVUFBVSxJQUFJO0lBQ2xCLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFBLHdCQUFZLEdBQUUsQ0FBQTtJQUVuQyxNQUFNLE9BQU8sR0FBRyxJQUFBLHNCQUFjLEVBQUMsU0FBUyxDQUFDLENBQUE7SUFDekMsSUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FDZCwrQ0FBK0MsQ0FDL0MsQ0FBQTtJQUNGLENBQUM7SUFFRCxNQUFNLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDbkUsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7SUFFZixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQzdDLENBQUM7QUFFRCxLQUFLLElBQUksRUFBRSxDQUFBIn0=
@@ -1,7 +1,8 @@
1
- import { IncomingMessage } from 'http';
1
+ import type { IncomingMessage } from 'http';
2
+ import type { WebSocket } from 'ws';
2
3
  /**
3
4
  * Creates the WebSocket API server,
4
5
  * creates a fileserver to serve the browser RPC client,
5
6
  * and listens on the given port.
6
7
  */
7
- export declare function createServer(port?: number): Promise<import("ws").Server<typeof import("ws"), typeof IncomingMessage>>;
8
+ export declare function createServer(port?: number): Promise<import("ws").Server<typeof WebSocket, typeof IncomingMessage>>;
@@ -1,92 +1,105 @@
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.createServer = createServer;
7
- const http_1 = require("http");
8
- const serve_static_1 = __importDefault(require("serve-static"));
9
- const config_1 = require("../config");
10
- const socket_1 = require("../server/socket");
11
- const generics_1 = require("../server/utils/generics");
12
- const keep_alive_1 = require("../server/utils/keep-alive");
13
- const utils_1 = require("../utils");
14
- const bgp_listener_1 = require("../utils/bgp-listener");
15
- const env_1 = require("../utils/env");
16
- const signatures_1 = require("../utils/signatures");
17
- const ws_1 = require("../utils/ws");
18
- const ws_2 = require("ws");
19
- const PORT = +((0, env_1.getEnvVariable)('PORT') || config_1.API_SERVER_PORT);
20
- const DISABLE_BGP_CHECKS = (0, env_1.getEnvVariable)('DISABLE_BGP_CHECKS') === '1';
21
- /**
22
- * Creates the WebSocket API server,
23
- * creates a fileserver to serve the browser RPC client,
24
- * and listens on the given port.
25
- */
1
+ import { createServer as createHttpServer } from "http";
2
+ import serveStatic from "serve-static";
3
+ import { WebSocketServer } from "ws";
4
+ import { API_SERVER_PORT, ATTESTOR_ADDRESS_PATHNAME, BROWSER_RPC_PATHNAME, WS_PATHNAME } from "../config/index.js";
5
+ import { AttestorServerSocket } from "../server/socket.js";
6
+ import { getAttestorAddress } from "../server/utils/generics.js";
7
+ import { addKeepAlive } from "../server/utils/keep-alive.js";
8
+ import { createBgpListener } from "../utils/bgp-listener.js";
9
+ import { getEnvVariable } from "../utils/env.js";
10
+ import { logger as LOGGER } from "../utils/index.js";
11
+ import { SelectedServiceSignatureType } from "../utils/signatures/index.js";
12
+ import { promisifySend } from "../utils/ws.js";
13
+ const PORT = +(getEnvVariable("PORT") || API_SERVER_PORT);
14
+ const DISABLE_BGP_CHECKS = getEnvVariable("DISABLE_BGP_CHECKS") === "1";
15
+ const ATTESTOR_ADDRESS_JSON_RES = JSON.stringify({
16
+ address: getAttestorAddress(SelectedServiceSignatureType),
17
+ signatureType: SelectedServiceSignatureType
18
+ });
26
19
  async function createServer(port = PORT) {
27
- const http = (0, http_1.createServer)();
28
- const serveBrowserRpc = (0, serve_static_1.default)('browser', { index: ['index.html'] });
29
- const bgpListener = !DISABLE_BGP_CHECKS
30
- ? (0, bgp_listener_1.createBgpListener)(utils_1.logger.child({ service: 'bgp-listener' }))
31
- : undefined;
32
- const wss = new ws_2.WebSocketServer({ noServer: true });
33
- http.on('upgrade', handleUpgrade.bind(wss));
34
- http.on('request', (req, res) => {
35
- var _a;
36
- // simple way to serve files at the browser RPC path
37
- if (!((_a = req.url) === null || _a === void 0 ? void 0 : _a.startsWith(config_1.BROWSER_RPC_PATHNAME))) {
38
- res.statusCode = 404;
39
- res.end('Not found');
40
- return;
41
- }
42
- req.url = req.url.slice(config_1.BROWSER_RPC_PATHNAME.length) || '/';
43
- serveBrowserRpc(req, res, (err) => {
44
- var _a, _b;
45
- if (err) {
46
- utils_1.logger.error({ err, url: req.url }, 'Failed to serve file');
47
- }
48
- res.statusCode = (_a = err === null || err === void 0 ? void 0 : err.statusCode) !== null && _a !== void 0 ? _a : 404;
49
- res.end((_b = err === null || err === void 0 ? void 0 : err.message) !== null && _b !== void 0 ? _b : 'Not found');
50
- });
51
- });
52
- // wait for us to start listening
53
- http.listen(port);
54
- await new Promise((resolve, reject) => {
55
- http.once('listening', () => resolve());
56
- http.once('error', reject);
20
+ const http = createHttpServer();
21
+ const serveBrowserRpc = serveStatic(
22
+ "browser",
23
+ {
24
+ index: ["index.html"],
25
+ setHeaders(res) {
26
+ res.setHeader("Access-Control-Allow-Origin", "*");
27
+ }
28
+ }
29
+ );
30
+ const bgpListener = !DISABLE_BGP_CHECKS ? createBgpListener(LOGGER.child({ service: "bgp-listener" })) : void 0;
31
+ const wss = new WebSocketServer({ noServer: true });
32
+ http.on("upgrade", handleUpgrade.bind(wss));
33
+ http.on("request", (req, res) => {
34
+ const url = URL.parse(req.url || "", "http://localhost");
35
+ if (!url) {
36
+ res.statusCode = 422;
37
+ res.end("Invalid URL");
38
+ return;
39
+ }
40
+ if (url.pathname === ATTESTOR_ADDRESS_PATHNAME) {
41
+ res.writeHead(200, { "Content-Type": "application/json" });
42
+ res.end(ATTESTOR_ADDRESS_JSON_RES);
43
+ return;
44
+ }
45
+ if (!url.pathname?.startsWith(BROWSER_RPC_PATHNAME)) {
46
+ res.statusCode = 404;
47
+ res.end("Not found");
48
+ return;
49
+ }
50
+ req.url = req.url.slice(BROWSER_RPC_PATHNAME.length) || "/";
51
+ serveBrowserRpc(req, res, (err) => {
52
+ if (err) {
53
+ LOGGER.error({ err, url: req.url }, "Failed to serve file");
54
+ }
55
+ res.statusCode = err?.statusCode ?? 404;
56
+ res.end(err?.message ?? "Not found");
57
57
  });
58
- wss.on('connection', (ws, req) => handleNewClient(ws, req, bgpListener));
59
- utils_1.logger.info({
60
- port,
61
- apiPath: config_1.WS_PATHNAME,
62
- browserRpcPath: config_1.BROWSER_RPC_PATHNAME,
63
- signerAddress: (0, generics_1.getAttestorAddress)(signatures_1.SelectedServiceSignatureType)
64
- }, 'WS server listening');
65
- const wssClose = wss.close.bind(wss);
66
- wss.close = (cb) => {
67
- wssClose(() => http.close(cb));
68
- bgpListener === null || bgpListener === void 0 ? void 0 : bgpListener.close();
69
- };
70
- return wss;
58
+ });
59
+ http.listen(port);
60
+ await new Promise((resolve, reject) => {
61
+ http.once("listening", () => resolve());
62
+ http.once("error", reject);
63
+ });
64
+ wss.on("connection", (ws, req) => handleNewClient(ws, req, bgpListener));
65
+ LOGGER.info(
66
+ {
67
+ port,
68
+ apiPath: WS_PATHNAME,
69
+ browserRpcPath: BROWSER_RPC_PATHNAME,
70
+ signerAddress: getAttestorAddress(SelectedServiceSignatureType)
71
+ },
72
+ "WS server listening"
73
+ );
74
+ const wssClose = wss.close.bind(wss);
75
+ wss.close = (cb) => {
76
+ wssClose(() => http.close(cb));
77
+ bgpListener?.close();
78
+ };
79
+ return wss;
71
80
  }
72
81
  async function handleNewClient(ws, req, bgpListener) {
73
- (0, ws_1.promisifySend)(ws);
74
- const client = await socket_1.AttestorServerSocket.acceptConnection(ws, { req, bgpListener, logger: utils_1.logger });
75
- // if initialisation fails, don't store the client
76
- if (!client) {
77
- return;
78
- }
79
- ws.serverSocket = client;
80
- (0, keep_alive_1.addKeepAlive)(ws, utils_1.logger.child({ sessionId: client.sessionId }));
82
+ promisifySend(ws);
83
+ const client = await AttestorServerSocket.acceptConnection(
84
+ ws,
85
+ { req, bgpListener, logger: LOGGER }
86
+ );
87
+ if (!client) {
88
+ return;
89
+ }
90
+ ws.serverSocket = client;
91
+ addKeepAlive(ws, LOGGER.child({ sessionId: client.sessionId }));
81
92
  }
82
93
  function handleUpgrade(request, socket, head) {
83
- const { pathname } = new URL(request.url, 'wss://base.url');
84
- if (pathname === config_1.WS_PATHNAME) {
85
- this.handleUpgrade(request, socket, head, (ws) => {
86
- this.emit('connection', ws, request);
87
- });
88
- return;
89
- }
90
- socket.destroy();
94
+ const { pathname } = new URL(request.url, "wss://base.url");
95
+ if (pathname === WS_PATHNAME) {
96
+ this.handleUpgrade(request, socket, head, (ws) => {
97
+ this.emit("connection", ws, request);
98
+ });
99
+ return;
100
+ }
101
+ socket.destroy();
91
102
  }
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2ZXIvY3JlYXRlLXNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXVCQSxvQ0ErREM7QUF0RkQsK0JBQXdFO0FBQ3hFLGdFQUFzQztBQUN0Qyx1Q0FBK0U7QUFDL0UsOENBQXdEO0FBQ3hELHdEQUE4RDtBQUM5RCw0REFBMEQ7QUFFMUQscUNBQTRDO0FBQzVDLHlEQUEwRDtBQUMxRCx1Q0FBOEM7QUFDOUMscURBQW1FO0FBQ25FLHFDQUE0QztBQUU1QywyQkFBK0M7QUFFL0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUEsb0JBQWMsRUFBQyxNQUFNLENBQUMsSUFBSSx3QkFBZSxDQUFDLENBQUE7QUFDekQsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLG9CQUFjLEVBQUMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLENBQUE7QUFFdkU7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUk7SUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBQSxtQkFBZ0IsR0FBRSxDQUFBO0lBQy9CLE1BQU0sZUFBZSxHQUFHLElBQUEsc0JBQVcsRUFDbEMsU0FBUyxFQUNULEVBQUUsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDekIsQ0FBQTtJQUNELE1BQU0sV0FBVyxHQUFHLENBQUMsa0JBQWtCO1FBQ3RDLENBQUMsQ0FBQyxJQUFBLGdDQUFpQixFQUFDLGNBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsU0FBUyxDQUFBO0lBRVosTUFBTSxHQUFHLEdBQUcsSUFBSSxvQkFBZSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDbkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLElB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
103
+ export {
104
+ createServer
105
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * TEE Bundle Claim Handler
3
+ * Handles ClaimTeeBundleRequest by verifying TEE attestations and reconstructing TLS transcript
4
+ */
5
+ import type { RPCHandler } from '#src/types/index.ts';
6
+ export declare const claimTeeBundle: RPCHandler<'claimTeeBundle'>;
@@ -0,0 +1,232 @@
1
+ import { ClaimTeeBundleResponse } from "../../proto/api.js";
2
+ import { VerificationBundle } from "../../proto/tee-bundle.js";
3
+ import { substituteParamValues } from "../../providers/http/index.js";
4
+ import { assertValidProviderTranscript } from "../../server/utils/assert-valid-claim-request.js";
5
+ import { getAttestorAddress, niceParseJsonObject, signAsAttestor } from "../../server/utils/generics.js";
6
+ import { verifyOprfMpcOutputs } from "../../server/utils/tee-oprf-mpc-verification.js";
7
+ import { verifyOprfProofs } from "../../server/utils/tee-oprf-verification.js";
8
+ import { reconstructTlsTranscript } from "../../server/utils/tee-transcript-reconstruction.js";
9
+ import { verifyTeeBundle } from "../../server/utils/tee-verification.js";
10
+ import { AttestorError } from "../../utils/error.js";
11
+ import { createSignDataForClaim, getIdentifierFromClaimInfo } from "../../utils/index.js";
12
+ const claimTeeBundle = async (teeBundleRequest, { logger, client }) => {
13
+ const {
14
+ verificationBundle,
15
+ data
16
+ } = teeBundleRequest;
17
+ const res = ClaimTeeBundleResponse.create({ request: teeBundleRequest });
18
+ logger.info("Starting TEE bundle verification");
19
+ const teeData = await verifyTeeBundle(verificationBundle, logger);
20
+ const timestampS = Math.floor(teeData.kOutputPayload.timestampMs / 1e3);
21
+ logger.info("Verifying OPRF proofs");
22
+ const bundle = VerificationBundle.decode(verificationBundle);
23
+ const zkOprfResults = await verifyOprfProofs(
24
+ { ...teeData, oprfVerifications: bundle.oprfVerifications },
25
+ logger
26
+ );
27
+ logger.info("Verifying OPRF MPC outputs");
28
+ const oprfMpcResults = verifyOprfMpcOutputs(
29
+ teeData.kOutputPayload,
30
+ teeData.tOutputPayload,
31
+ logger
32
+ );
33
+ const allOprfResults = validateAndCombineOprfResults(zkOprfResults, oprfMpcResults, logger);
34
+ logger.info("Starting TLS transcript reconstruction with OPRF replacements");
35
+ const transcriptData = await reconstructTlsTranscript(teeData, logger, allOprfResults);
36
+ logger.info("Creating plaintext transcript from TEE data");
37
+ const plaintextTranscript = createPlaintextTranscriptFromTeeData(transcriptData, logger);
38
+ logger.info("Running direct provider validation on TEE reconstructed data");
39
+ if (!data) {
40
+ throw new AttestorError("ERROR_INVALID_CLAIM", "No claim data provided in TEE bundle request");
41
+ }
42
+ const validatedClaim = await validateTeeProviderReceipt(
43
+ plaintextTranscript,
44
+ data,
45
+ logger,
46
+ { version: client.metadata.clientVersion },
47
+ transcriptData.certificateInfo
48
+ );
49
+ const ctx = niceParseJsonObject(validatedClaim.context, "context");
50
+ ctx.pcr0_k = teeData.teekPcr0;
51
+ ctx.pcr0_t = teeData.teetPcr0;
52
+ ctx.tee_session_id = teeData.teeSessionId;
53
+ validatedClaim.context = JSON.stringify(ctx);
54
+ res.claim = {
55
+ ...validatedClaim,
56
+ identifier: getIdentifierFromClaimInfo(validatedClaim),
57
+ // Use timestampS from TEE_K bundle for claim signing
58
+ timestampS,
59
+ // hardcode for compatibility with V1 claims
60
+ epoch: 1
61
+ };
62
+ logger.info({ claim: res.claim }, "TEE bundle claim validation successful");
63
+ res.signatures = {
64
+ attestorAddress: getAttestorAddress(
65
+ client.metadata.signatureType
66
+ ),
67
+ claimSignature: res.claim ? await signAsAttestor(
68
+ createSignDataForClaim(res.claim),
69
+ client.metadata.signatureType
70
+ ) : new Uint8Array(),
71
+ resultSignature: await signAsAttestor(
72
+ ClaimTeeBundleResponse.encode(res).finish(),
73
+ client.metadata.signatureType
74
+ )
75
+ };
76
+ logger.info("TEE bundle claim processing completed");
77
+ return res;
78
+ };
79
+ function createPlaintextTranscriptFromTeeData(transcriptData, logger) {
80
+ const transcript = [];
81
+ if (transcriptData.revealedRequest && transcriptData.revealedRequest.length > 0) {
82
+ transcript.push({
83
+ sender: "client",
84
+ message: transcriptData.revealedRequest
85
+ });
86
+ logger.debug("Added TEE revealed request to plaintext transcript", {
87
+ length: transcriptData.revealedRequest.length
88
+ });
89
+ }
90
+ if (transcriptData.reconstructedResponse && transcriptData.reconstructedResponse.length > 0) {
91
+ transcript.push({
92
+ sender: "server",
93
+ message: transcriptData.reconstructedResponse
94
+ });
95
+ logger.debug("Added TEE consolidated response to plaintext transcript", {
96
+ length: transcriptData.reconstructedResponse.length
97
+ });
98
+ }
99
+ if (transcriptData.certificateInfo) {
100
+ logger.info("Certificate information available for validation", {
101
+ commonName: transcriptData.certificateInfo.commonName,
102
+ issuerCommonName: transcriptData.certificateInfo.issuerCommonName,
103
+ dnsNames: transcriptData.certificateInfo.dnsNames,
104
+ notBefore: new Date(transcriptData.certificateInfo.notBeforeUnix * 1e3).toISOString(),
105
+ notAfter: new Date(transcriptData.certificateInfo.notAfterUnix * 1e3).toISOString()
106
+ });
107
+ }
108
+ logger.info("Created plaintext transcript from TEE data", {
109
+ totalMessages: transcript.length,
110
+ hasRequest: !!transcriptData.revealedRequest?.length,
111
+ hasResponse: !!transcriptData.reconstructedResponse?.length,
112
+ hasCertificateInfo: !!transcriptData.certificateInfo
113
+ });
114
+ return transcript;
115
+ }
116
+ async function validateTeeProviderReceipt(plaintextTranscript, claimInfo, logger, providerCtx, certificateInfo) {
117
+ logger.info("Starting direct TEE provider validation", {
118
+ provider: claimInfo.provider,
119
+ transcriptMessages: plaintextTranscript.length,
120
+ hasCertificateInfo: !!certificateInfo
121
+ });
122
+ if (certificateInfo) {
123
+ validateTlsCertificate(claimInfo, certificateInfo, logger);
124
+ }
125
+ const validatedClaim = await assertValidProviderTranscript(
126
+ plaintextTranscript,
127
+ claimInfo,
128
+ logger,
129
+ providerCtx
130
+ );
131
+ logger.info("TEE provider validation completed successfully", {
132
+ provider: validatedClaim.provider,
133
+ owner: validatedClaim.owner || "unknown"
134
+ });
135
+ return validatedClaim;
136
+ }
137
+ function isHostnameValidForCertificate(hostname, certName) {
138
+ if (hostname === certName) {
139
+ return true;
140
+ }
141
+ if (certName.startsWith("*.")) {
142
+ const wildcardDomain = certName.slice(2);
143
+ if (hostname.endsWith(wildcardDomain)) {
144
+ const subdomainPart = hostname.slice(0, -wildcardDomain.length);
145
+ if (subdomainPart.endsWith(".")) {
146
+ const subdomain = subdomainPart.slice(0, -1);
147
+ return !subdomain.includes(".");
148
+ }
149
+ }
150
+ }
151
+ return false;
152
+ }
153
+ function validateTlsCertificate(claimInfo, certificateInfo, logger) {
154
+ let claimedHostname;
155
+ const paramsWithTemplates = niceParseJsonObject(claimInfo.parameters, "params");
156
+ const params = substituteParamValues(paramsWithTemplates, void 0, true).newParams;
157
+ if ("url" in params && typeof params.url === "string") {
158
+ claimedHostname = new URL(params.url).hostname;
159
+ }
160
+ if (!claimedHostname) {
161
+ logger.warn("Could not extract hostname from claim for certificate validation", {
162
+ provider: claimInfo.provider
163
+ });
164
+ throw new AttestorError(
165
+ "ERROR_INVALID_CLAIM",
166
+ "Certificate validation failed: hostname not found"
167
+ );
168
+ }
169
+ logger.info("Validating TLS certificate for claimed hostname", {
170
+ claimedHostname,
171
+ certificateCommonName: certificateInfo.commonName,
172
+ certificateDnsNames: certificateInfo.dnsNames
173
+ });
174
+ const isValidForHostname = isHostnameValidForCertificate(claimedHostname, certificateInfo.commonName) || certificateInfo.dnsNames.some((name) => isHostnameValidForCertificate(claimedHostname, name));
175
+ if (!isValidForHostname) {
176
+ throw new AttestorError(
177
+ "ERROR_INVALID_CLAIM",
178
+ `Certificate validation failed: hostname '${claimedHostname}' not valid for certificate (CN: ${certificateInfo.commonName}, SANs: ${certificateInfo.dnsNames.join(", ")})`
179
+ );
180
+ }
181
+ const now = Date.now() / 1e3;
182
+ if (now < certificateInfo.notBeforeUnix || now > certificateInfo.notAfterUnix) {
183
+ throw new AttestorError(
184
+ "ERROR_INVALID_CLAIM",
185
+ `Certificate validation failed: certificate not valid at current time (valid from ${new Date(certificateInfo.notBeforeUnix * 1e3).toISOString()} to ${new Date(certificateInfo.notAfterUnix * 1e3).toISOString()})`
186
+ );
187
+ }
188
+ logger.info("TLS certificate validation passed", {
189
+ claimedHostname,
190
+ validatedAgainst: isHostnameValidForCertificate(claimedHostname, certificateInfo.commonName) ? `CommonName: ${certificateInfo.commonName}` : `SAN: ${certificateInfo.dnsNames.find((name) => isHostnameValidForCertificate(claimedHostname, name))}`
191
+ });
192
+ }
193
+ function validateAndCombineOprfResults(zkOprfResults, oprfMpcResults, logger) {
194
+ const allOprfResults = [...zkOprfResults, ...oprfMpcResults];
195
+ if (allOprfResults.length === 0) {
196
+ return allOprfResults;
197
+ }
198
+ logger.info(`Combined ${zkOprfResults.length} ZK OPRF + ${oprfMpcResults.length} OPRF MPC results`);
199
+ const seen = {};
200
+ for (const result of zkOprfResults) {
201
+ seen[result.position] = { length: result.length, source: "zk" };
202
+ }
203
+ for (const result of oprfMpcResults) {
204
+ const existing = seen[result.position];
205
+ if (existing) {
206
+ if (existing.length !== result.length) {
207
+ throw new AttestorError(
208
+ "ERROR_INVALID_CLAIM",
209
+ `OPRF range conflict at position ${result.position}: ZK length ${existing.length} vs MPC length ${result.length}`
210
+ );
211
+ }
212
+ logger.warn(`Duplicate OPRF range at position ${result.position} from both ZK and MPC - using MPC result`);
213
+ }
214
+ for (const [pos, data] of Object.entries(seen)) {
215
+ const position = Number(pos);
216
+ const existingEnd = position + data.length;
217
+ const newEnd = result.position + result.length;
218
+ const overlaps = result.position < existingEnd && newEnd > position && result.position !== position;
219
+ if (overlaps) {
220
+ throw new AttestorError(
221
+ "ERROR_INVALID_CLAIM",
222
+ `Overlapping OPRF ranges: [${position}:${existingEnd}] (${data.source}) and [${result.position}:${newEnd}] (mpc)`
223
+ );
224
+ }
225
+ }
226
+ seen[result.position] = { length: result.length, source: "mpc" };
227
+ }
228
+ return allOprfResults;
229
+ }
230
+ export {
231
+ claimTeeBundle
232
+ };
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const claimTunnel: RPCHandler<'claimTunnel'>;