@joclaim/attestor-core 0.2.0 → 0.2.3

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 (420) hide show
  1. package/README.md +21 -15
  2. package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
  3. package/lib/avs/abis/avsDirectoryABI.js +340 -0
  4. package/lib/avs/abis/delegationABI.d.ts +126 -0
  5. package/lib/avs/abis/delegationABI.js +1 -0
  6. package/lib/avs/abis/registryABI.d.ts +136 -0
  7. package/lib/avs/abis/registryABI.js +725 -0
  8. package/lib/avs/client/create-claim-on-avs.d.ts +12 -0
  9. package/lib/avs/client/create-claim-on-avs.js +138 -0
  10. package/lib/avs/config.d.ts +7 -0
  11. package/lib/avs/config.js +20 -0
  12. package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
  13. package/lib/avs/contracts/ReclaimServiceManager.js +1 -0
  14. package/lib/avs/contracts/common.d.ts +21 -0
  15. package/lib/avs/contracts/common.js +1 -0
  16. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
  17. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1169 -0
  18. package/lib/avs/contracts/factories/index.d.ts +1 -0
  19. package/{src/avs/contracts/factories/index.ts → lib/avs/contracts/factories/index.js} +1 -1
  20. package/{src/avs/contracts/index.ts → lib/avs/contracts/index.d.ts} +0 -3
  21. package/lib/avs/contracts/index.js +2 -0
  22. package/lib/avs/types/index.d.ts +55 -0
  23. package/lib/avs/types/index.js +1 -0
  24. package/lib/avs/utils/contracts.d.ts +21 -0
  25. package/lib/avs/utils/contracts.js +33 -0
  26. package/lib/avs/utils/register.d.ts +27 -0
  27. package/lib/avs/utils/register.js +78 -0
  28. package/lib/avs/utils/tasks.d.ts +22 -0
  29. package/lib/avs/utils/tasks.js +40 -0
  30. package/lib/client/create-claim.d.ts +5 -0
  31. package/lib/client/create-claim.js +437 -0
  32. package/lib/client/index.d.ts +3 -0
  33. package/lib/client/index.js +3 -0
  34. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  35. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +51 -0
  36. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +26 -0
  37. package/lib/client/tunnels/make-rpc-tls-tunnel.js +131 -0
  38. package/lib/client/utils/attestor-pool.d.ts +8 -0
  39. package/lib/client/utils/attestor-pool.js +25 -0
  40. package/lib/client/utils/client-socket.d.ts +11 -0
  41. package/lib/client/utils/client-socket.js +98 -0
  42. package/lib/client/utils/message-handler.d.ts +4 -0
  43. package/lib/client/utils/message-handler.js +87 -0
  44. package/lib/config/index.d.ts +30 -0
  45. package/lib/config/index.js +43 -0
  46. package/lib/external-rpc/benchmark.d.ts +1 -0
  47. package/lib/external-rpc/benchmark.js +69 -0
  48. package/lib/external-rpc/event-bus.d.ts +7 -0
  49. package/lib/external-rpc/event-bus.js +14 -0
  50. package/lib/external-rpc/handle-incoming-msg.d.ts +2 -0
  51. package/lib/external-rpc/handle-incoming-msg.js +233 -0
  52. package/lib/external-rpc/index.d.ts +3 -0
  53. package/lib/external-rpc/index.js +3 -0
  54. package/lib/external-rpc/jsc-polyfills/1.d.ts +14 -0
  55. package/lib/external-rpc/jsc-polyfills/1.js +82 -0
  56. package/lib/external-rpc/jsc-polyfills/2.d.ts +1 -0
  57. package/lib/external-rpc/jsc-polyfills/2.js +20 -0
  58. package/lib/external-rpc/jsc-polyfills/event.d.ts +10 -0
  59. package/lib/external-rpc/jsc-polyfills/event.js +14 -0
  60. package/lib/external-rpc/jsc-polyfills/index.d.ts +2 -0
  61. package/lib/external-rpc/jsc-polyfills/index.js +2 -0
  62. package/lib/external-rpc/jsc-polyfills/ws.d.ts +21 -0
  63. package/lib/external-rpc/jsc-polyfills/ws.js +81 -0
  64. package/lib/external-rpc/setup-browser.d.ts +6 -0
  65. package/lib/external-rpc/setup-browser.js +33 -0
  66. package/lib/external-rpc/setup-jsc.d.ts +24 -0
  67. package/lib/external-rpc/setup-jsc.js +22 -0
  68. package/lib/external-rpc/types.d.ts +213 -0
  69. package/lib/external-rpc/types.js +1 -0
  70. package/lib/external-rpc/utils.d.ts +20 -0
  71. package/lib/external-rpc/utils.js +100 -0
  72. package/lib/external-rpc/zk.d.ts +14 -0
  73. package/lib/external-rpc/zk.js +63 -0
  74. package/lib/index.d.ts +9 -0
  75. package/lib/index.js +9 -0
  76. package/lib/mechain/abis/governanceABI.d.ts +50 -0
  77. package/lib/mechain/abis/governanceABI.js +458 -0
  78. package/lib/mechain/abis/taskABI.d.ts +157 -0
  79. package/lib/mechain/abis/taskABI.js +509 -0
  80. package/lib/mechain/client/create-claim-on-mechain.d.ts +10 -0
  81. package/lib/mechain/client/create-claim-on-mechain.js +28 -0
  82. package/lib/mechain/client/index.d.ts +1 -0
  83. package/lib/mechain/client/index.js +1 -0
  84. package/lib/mechain/constants/index.d.ts +3 -0
  85. package/{src/mechain/constants/index.ts → lib/mechain/constants/index.js} +3 -5
  86. package/lib/mechain/index.d.ts +2 -0
  87. package/lib/mechain/index.js +2 -0
  88. package/lib/mechain/types/index.d.ts +23 -0
  89. package/lib/mechain/types/index.js +1 -0
  90. package/lib/proto/api.d.ts +633 -0
  91. package/lib/proto/api.js +4258 -0
  92. package/lib/proto/tee-bundle.d.ts +135 -0
  93. package/lib/proto/tee-bundle.js +1161 -0
  94. package/lib/providers/http/index.d.ts +18 -0
  95. package/lib/providers/http/index.js +658 -0
  96. package/lib/providers/http/patch-parse5-tree.d.ts +6 -0
  97. package/lib/providers/http/patch-parse5-tree.js +33 -0
  98. package/lib/providers/http/utils.d.ts +77 -0
  99. package/lib/providers/http/utils.js +324 -0
  100. package/lib/providers/index.d.ts +4 -0
  101. package/lib/providers/index.js +4 -0
  102. package/lib/scripts/build-browser.d.ts +1 -0
  103. package/lib/scripts/build-browser.js +37 -0
  104. package/lib/scripts/build-jsc.d.ts +1 -0
  105. package/lib/scripts/build-jsc.js +49 -0
  106. package/lib/scripts/check-avs-registration.d.ts +1 -0
  107. package/lib/scripts/check-avs-registration.js +26 -0
  108. package/lib/scripts/fallbacks/crypto.d.ts +1 -0
  109. package/lib/scripts/fallbacks/crypto.js +1 -0
  110. package/lib/scripts/fallbacks/empty.d.ts +3 -0
  111. package/lib/scripts/fallbacks/empty.js +1 -0
  112. package/lib/scripts/fallbacks/re2.d.ts +1 -0
  113. package/lib/scripts/fallbacks/re2.js +4 -0
  114. package/lib/scripts/fallbacks/snarkjs.d.ts +1 -0
  115. package/lib/scripts/fallbacks/snarkjs.js +1 -0
  116. package/lib/scripts/generate-provider-types.d.ts +5 -0
  117. package/lib/scripts/generate-provider-types.js +78 -0
  118. package/lib/scripts/generate-receipt.d.ts +9 -0
  119. package/lib/scripts/generate-receipt.js +90 -0
  120. package/lib/scripts/generate-toprf-keys.d.ts +1 -0
  121. package/lib/scripts/generate-toprf-keys.js +20 -0
  122. package/lib/scripts/jsc-cli-rpc.d.ts +1 -0
  123. package/lib/scripts/jsc-cli-rpc.js +37 -0
  124. package/lib/scripts/register-avs-operator.d.ts +1 -0
  125. package/lib/scripts/register-avs-operator.js +4 -0
  126. package/lib/scripts/start-server.d.ts +1 -0
  127. package/lib/scripts/start-server.js +13 -0
  128. package/lib/scripts/update-avs-metadata.d.ts +1 -0
  129. package/lib/scripts/update-avs-metadata.js +19 -0
  130. package/lib/scripts/utils.d.ts +1 -0
  131. package/lib/scripts/utils.js +7 -0
  132. package/lib/scripts/whitelist-operator.d.ts +1 -0
  133. package/lib/scripts/whitelist-operator.js +15 -0
  134. package/lib/server/create-server.d.ts +7 -0
  135. package/lib/server/create-server.js +122 -0
  136. package/lib/server/handlers/claimTeeBundle.d.ts +6 -0
  137. package/lib/server/handlers/claimTeeBundle.js +206 -0
  138. package/lib/server/handlers/claimTunnel.d.ts +2 -0
  139. package/lib/server/handlers/claimTunnel.js +73 -0
  140. package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
  141. package/lib/server/handlers/completeClaimOnChain.js +22 -0
  142. package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
  143. package/lib/server/handlers/createClaimOnChain.js +26 -0
  144. package/lib/server/handlers/createTaskOnMechain.d.ts +2 -0
  145. package/lib/server/handlers/createTaskOnMechain.js +47 -0
  146. package/lib/server/handlers/createTunnel.d.ts +2 -0
  147. package/lib/server/handlers/createTunnel.js +93 -0
  148. package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
  149. package/lib/server/handlers/disconnectTunnel.js +5 -0
  150. package/lib/server/handlers/fetchCertificateBytes.d.ts +2 -0
  151. package/lib/server/handlers/fetchCertificateBytes.js +41 -0
  152. package/lib/server/handlers/index.d.ts +4 -0
  153. package/lib/server/handlers/index.js +22 -0
  154. package/lib/server/handlers/init.d.ts +2 -0
  155. package/lib/server/handlers/init.js +30 -0
  156. package/lib/server/handlers/toprf.d.ts +2 -0
  157. package/lib/server/handlers/toprf.js +16 -0
  158. package/lib/server/index.d.ts +4 -0
  159. package/lib/server/index.js +4 -0
  160. package/lib/server/provider-api.d.ts +9 -0
  161. package/lib/server/provider-api.js +98 -0
  162. package/lib/server/provider-store.d.ts +53 -0
  163. package/lib/server/provider-store.js +80 -0
  164. package/lib/server/session-api.d.ts +9 -0
  165. package/lib/server/session-api.js +95 -0
  166. package/lib/server/session-store.d.ts +14 -0
  167. package/lib/server/session-store.js +36 -0
  168. package/lib/server/socket.d.ts +13 -0
  169. package/lib/server/socket.js +109 -0
  170. package/lib/server/tunnels/make-tcp-tunnel.d.ts +22 -0
  171. package/lib/server/tunnels/make-tcp-tunnel.js +177 -0
  172. package/lib/server/utils/apm.d.ts +11 -0
  173. package/lib/server/utils/apm.js +36 -0
  174. package/lib/server/utils/assert-valid-claim-request.d.ts +31 -0
  175. package/lib/server/utils/assert-valid-claim-request.js +229 -0
  176. package/lib/server/utils/config-env.d.ts +1 -0
  177. package/lib/server/utils/config-env.js +4 -0
  178. package/lib/server/utils/dns.d.ts +1 -0
  179. package/lib/server/utils/dns.js +18 -0
  180. package/lib/server/utils/gcp-attestation.d.ts +17 -0
  181. package/lib/server/utils/gcp-attestation.js +289 -0
  182. package/lib/server/utils/generics.d.ts +22 -0
  183. package/lib/server/utils/generics.js +51 -0
  184. package/lib/server/utils/iso.d.ts +1 -0
  185. package/lib/server/utils/iso.js +256 -0
  186. package/lib/server/utils/keep-alive.d.ts +7 -0
  187. package/lib/server/utils/keep-alive.js +38 -0
  188. package/lib/server/utils/nitro-attestation.d.ts +33 -0
  189. package/lib/server/utils/nitro-attestation.js +325 -0
  190. package/lib/server/utils/process-handshake.d.ts +13 -0
  191. package/lib/server/utils/process-handshake.js +214 -0
  192. package/lib/server/utils/proxy-session.d.ts +1 -0
  193. package/lib/server/utils/proxy-session.js +6 -0
  194. package/lib/server/utils/tee-oprf-verification.d.ts +22 -0
  195. package/lib/server/utils/tee-oprf-verification.js +160 -0
  196. package/lib/server/utils/tee-transcript-reconstruction.d.ts +24 -0
  197. package/lib/server/utils/tee-transcript-reconstruction.js +187 -0
  198. package/lib/server/utils/tee-verification.d.ts +27 -0
  199. package/lib/server/utils/tee-verification.js +365 -0
  200. package/lib/server/utils/validation.d.ts +2 -0
  201. package/lib/server/utils/validation.js +38 -0
  202. package/lib/types/bgp.d.ts +11 -0
  203. package/lib/types/bgp.js +1 -0
  204. package/lib/types/claims.d.ts +73 -0
  205. package/lib/types/claims.js +1 -0
  206. package/lib/types/client.d.ts +163 -0
  207. package/lib/types/client.js +1 -0
  208. package/lib/types/general.d.ts +54 -0
  209. package/lib/types/general.js +1 -0
  210. package/lib/types/handlers.d.ts +10 -0
  211. package/lib/types/handlers.js +1 -0
  212. package/lib/types/index.d.ts +10 -0
  213. package/lib/types/index.js +10 -0
  214. package/lib/types/providers.d.ts +161 -0
  215. package/lib/types/providers.gen.d.ts +443 -0
  216. package/lib/types/providers.gen.js +10 -0
  217. package/lib/types/providers.js +1 -0
  218. package/lib/types/rpc.d.ts +35 -0
  219. package/lib/types/rpc.js +1 -0
  220. package/lib/types/signatures.d.ts +28 -0
  221. package/lib/types/signatures.js +1 -0
  222. package/lib/types/tunnel.d.ts +18 -0
  223. package/lib/types/tunnel.js +1 -0
  224. package/lib/types/zk.d.ts +28 -0
  225. package/lib/types/zk.js +1 -0
  226. package/lib/utils/auth.d.ts +8 -0
  227. package/lib/utils/auth.js +59 -0
  228. package/lib/utils/b64-json.d.ts +2 -0
  229. package/lib/utils/b64-json.js +17 -0
  230. package/lib/utils/bgp-listener.d.ts +7 -0
  231. package/lib/utils/bgp-listener.js +119 -0
  232. package/lib/utils/claims.d.ts +33 -0
  233. package/lib/utils/claims.js +101 -0
  234. package/lib/utils/env.d.ts +3 -0
  235. package/lib/utils/env.js +15 -0
  236. package/lib/utils/error.d.ts +26 -0
  237. package/lib/utils/error.js +50 -0
  238. package/lib/utils/generics.d.ts +114 -0
  239. package/lib/utils/generics.js +317 -0
  240. package/lib/utils/http-parser.d.ts +59 -0
  241. package/lib/utils/http-parser.js +246 -0
  242. package/lib/utils/index.d.ts +13 -0
  243. package/lib/utils/index.js +13 -0
  244. package/lib/utils/logger.d.ts +13 -0
  245. package/lib/utils/logger.js +91 -0
  246. package/lib/utils/prepare-packets.d.ts +16 -0
  247. package/lib/utils/prepare-packets.js +62 -0
  248. package/lib/utils/redactions.d.ts +62 -0
  249. package/lib/utils/redactions.js +148 -0
  250. package/lib/utils/retries.d.ts +12 -0
  251. package/lib/utils/retries.js +24 -0
  252. package/lib/utils/signatures/eth.d.ts +2 -0
  253. package/lib/utils/signatures/eth.js +29 -0
  254. package/lib/utils/signatures/index.d.ts +5 -0
  255. package/lib/utils/signatures/index.js +7 -0
  256. package/lib/utils/socket-base.d.ts +23 -0
  257. package/lib/utils/socket-base.js +90 -0
  258. package/lib/utils/tls.d.ts +2 -0
  259. package/{src/utils/tls.ts → lib/utils/tls.js} +28 -35
  260. package/lib/utils/ws.d.ts +7 -0
  261. package/lib/utils/ws.js +22 -0
  262. package/lib/utils/zk.d.ts +70 -0
  263. package/lib/utils/zk.js +572 -0
  264. package/package.json +19 -12
  265. package/src/avs/abis/avsDirectoryABI.ts +0 -340
  266. package/src/avs/abis/delegationABI.ts +0 -1
  267. package/src/avs/abis/registryABI.ts +0 -725
  268. package/src/avs/client/create-claim-on-avs.ts +0 -206
  269. package/src/avs/config.ts +0 -25
  270. package/src/avs/contracts/ReclaimServiceManager.ts +0 -1457
  271. package/src/avs/contracts/common.ts +0 -44
  272. package/src/avs/contracts/factories/ReclaimServiceManager__factory.ts +0 -1213
  273. package/src/avs/tests/test.operator.ts +0 -413
  274. package/src/avs/tests/utils.ts +0 -51
  275. package/src/avs/types/index.ts +0 -60
  276. package/src/avs/utils/contracts.ts +0 -66
  277. package/src/avs/utils/register.ts +0 -125
  278. package/src/avs/utils/tasks.ts +0 -76
  279. package/src/client/create-claim.ts +0 -626
  280. package/src/client/index.ts +0 -3
  281. package/src/client/tunnels/make-rpc-tcp-tunnel.ts +0 -78
  282. package/src/client/tunnels/make-rpc-tls-tunnel.ts +0 -172
  283. package/src/client/utils/attestor-pool.ts +0 -35
  284. package/src/client/utils/client-socket.ts +0 -160
  285. package/src/client/utils/message-handler.ts +0 -116
  286. package/src/config/index.ts +0 -65
  287. package/src/external-rpc/benchmark.ts +0 -102
  288. package/src/external-rpc/event-bus.ts +0 -19
  289. package/src/external-rpc/global.d.ts +0 -20
  290. package/src/external-rpc/handle-incoming-msg.ts +0 -308
  291. package/src/external-rpc/index.ts +0 -3
  292. package/src/external-rpc/jsc-polyfills/1.ts +0 -117
  293. package/src/external-rpc/jsc-polyfills/2.ts +0 -24
  294. package/src/external-rpc/jsc-polyfills/event.ts +0 -16
  295. package/src/external-rpc/jsc-polyfills/index.ts +0 -2
  296. package/src/external-rpc/jsc-polyfills/ws.ts +0 -105
  297. package/src/external-rpc/setup-browser.ts +0 -42
  298. package/src/external-rpc/setup-jsc.ts +0 -48
  299. package/src/external-rpc/types.ts +0 -289
  300. package/src/external-rpc/utils.ts +0 -126
  301. package/src/external-rpc/zk.ts +0 -79
  302. package/src/index.ts +0 -9
  303. package/src/mechain/abis/governanceABI.ts +0 -458
  304. package/src/mechain/abis/taskABI.ts +0 -509
  305. package/src/mechain/client/create-claim-on-mechain.ts +0 -52
  306. package/src/mechain/client/index.ts +0 -1
  307. package/src/mechain/index.ts +0 -2
  308. package/src/mechain/types/index.ts +0 -29
  309. package/src/proto/api.ts +0 -5285
  310. package/src/proto/tee-bundle.ts +0 -1413
  311. package/src/providers/http/index.ts +0 -873
  312. package/src/providers/http/patch-parse5-tree.ts +0 -49
  313. package/src/providers/http/utils.ts +0 -439
  314. package/src/providers/index.ts +0 -8
  315. package/src/scripts/build-browser.sh +0 -9
  316. package/src/scripts/build-browser.ts +0 -40
  317. package/src/scripts/build-jsc.ts +0 -55
  318. package/src/scripts/check-avs-registration.ts +0 -38
  319. package/src/scripts/contract-data-gen.sh +0 -8
  320. package/src/scripts/fallbacks/crypto.ts +0 -1
  321. package/src/scripts/fallbacks/empty.ts +0 -2
  322. package/src/scripts/fallbacks/re2.ts +0 -5
  323. package/src/scripts/fallbacks/snarkjs.ts +0 -5
  324. package/src/scripts/generate-certs.sh +0 -11
  325. package/src/scripts/generate-proto.sh +0 -5
  326. package/src/scripts/generate-provider-types.ts +0 -121
  327. package/src/scripts/generate-receipt.ts +0 -138
  328. package/src/scripts/generate-toprf-keys.ts +0 -30
  329. package/src/scripts/jsc-cli-rpc.ts +0 -48
  330. package/src/scripts/register-avs-operator.ts +0 -5
  331. package/src/scripts/start-server.ts +0 -17
  332. package/src/scripts/update-avs-metadata.ts +0 -26
  333. package/src/scripts/utils.ts +0 -8
  334. package/src/scripts/whitelist-operator.ts +0 -22
  335. package/src/server/create-server.ts +0 -169
  336. package/src/server/handlers/claimTeeBundle.ts +0 -308
  337. package/src/server/handlers/claimTunnel.ts +0 -106
  338. package/src/server/handlers/completeClaimOnChain.ts +0 -36
  339. package/src/server/handlers/createClaimOnChain.ts +0 -39
  340. package/src/server/handlers/createTaskOnMechain.ts +0 -80
  341. package/src/server/handlers/createTunnel.ts +0 -128
  342. package/src/server/handlers/disconnectTunnel.ts +0 -11
  343. package/src/server/handlers/fetchCertificateBytes.ts +0 -66
  344. package/src/server/handlers/index.ts +0 -24
  345. package/src/server/handlers/init.ts +0 -46
  346. package/src/server/handlers/toprf.ts +0 -25
  347. package/src/server/index.ts +0 -4
  348. package/src/server/provider-api.ts +0 -118
  349. package/src/server/provider-store.ts +0 -117
  350. package/src/server/session-api.ts +0 -115
  351. package/src/server/session-store.ts +0 -60
  352. package/src/server/socket.ts +0 -156
  353. package/src/server/tunnels/make-tcp-tunnel.ts +0 -275
  354. package/src/server/utils/apm.ts +0 -49
  355. package/src/server/utils/assert-valid-claim-request.ts +0 -375
  356. package/src/server/utils/config-env.ts +0 -6
  357. package/src/server/utils/dns.ts +0 -25
  358. package/src/server/utils/gcp-attestation.ts +0 -415
  359. package/src/server/utils/generics.ts +0 -68
  360. package/src/server/utils/iso.ts +0 -258
  361. package/src/server/utils/keep-alive.ts +0 -50
  362. package/src/server/utils/nitro-attestation.ts +0 -396
  363. package/src/server/utils/process-handshake.ts +0 -311
  364. package/src/server/utils/proxy-session.ts +0 -6
  365. package/src/server/utils/tee-oprf-verification.ts +0 -231
  366. package/src/server/utils/tee-transcript-reconstruction.ts +0 -254
  367. package/src/server/utils/tee-verification.ts +0 -513
  368. package/src/server/utils/validation.ts +0 -57
  369. package/src/tests/auth.test.ts +0 -105
  370. package/src/tests/bgp-listener.test.ts +0 -193
  371. package/src/tests/claim-creation.test.ts +0 -415
  372. package/src/tests/describe-with-server.ts +0 -94
  373. package/src/tests/gcp-attestation.test.ts +0 -206
  374. package/src/tests/http-parser.test.ts +0 -135
  375. package/src/tests/http-provider-utils.test.ts +0 -3306
  376. package/src/tests/http-provider.test.ts +0 -125
  377. package/src/tests/jsc.test_mac.ts +0 -296
  378. package/src/tests/mock-provider-server.ts +0 -106
  379. package/src/tests/mocks.ts +0 -25
  380. package/src/tests/proof_bundle.bin +0 -0
  381. package/src/tests/rpc-communication.test.ts +0 -115
  382. package/src/tests/rpc-tunnel.test.ts +0 -239
  383. package/src/tests/signatures.test.ts +0 -37
  384. package/src/tests/tcp-tunnel.test.ts +0 -154
  385. package/src/tests/tee-bundle.test.ts +0 -321
  386. package/src/tests/tee-signatures.test.ts +0 -81
  387. package/src/tests/utils.ts +0 -108
  388. package/src/tests/verification_bundle.pb +0 -0
  389. package/src/tests/verification_bundle_tee.pb +0 -0
  390. package/src/tests/zk.test.ts +0 -453
  391. package/src/types/bgp.ts +0 -17
  392. package/src/types/claims.ts +0 -79
  393. package/src/types/client.ts +0 -205
  394. package/src/types/general.ts +0 -61
  395. package/src/types/handlers.ts +0 -16
  396. package/src/types/index.ts +0 -10
  397. package/src/types/providers.gen.ts +0 -135
  398. package/src/types/providers.ts +0 -203
  399. package/src/types/rpc.ts +0 -46
  400. package/src/types/signatures.ts +0 -29
  401. package/src/types/tunnel.ts +0 -25
  402. package/src/types/zk.ts +0 -31
  403. package/src/utils/auth.ts +0 -92
  404. package/src/utils/b64-json.ts +0 -25
  405. package/src/utils/bgp-listener.ts +0 -159
  406. package/src/utils/claims.ts +0 -132
  407. package/src/utils/env.ts +0 -21
  408. package/src/utils/error.ts +0 -76
  409. package/src/utils/generics.ts +0 -429
  410. package/src/utils/http-parser.ts +0 -312
  411. package/src/utils/index.ts +0 -13
  412. package/src/utils/logger.ts +0 -114
  413. package/src/utils/prepare-packets.ts +0 -98
  414. package/src/utils/redactions.ts +0 -203
  415. package/src/utils/retries.ts +0 -41
  416. package/src/utils/signatures/eth.ts +0 -35
  417. package/src/utils/signatures/index.ts +0 -11
  418. package/src/utils/socket-base.ts +0 -132
  419. package/src/utils/ws.ts +0 -30
  420. package/src/utils/zk.ts +0 -908
@@ -1,78 +0,0 @@
1
- import type { CreateTunnelRequest } from '#src/proto/api.ts'
2
- import type { IAttestorClient, MakeTunnelFn, RPCEvent } from '#src/types/index.ts'
3
- import { AttestorError } from '#src/utils/index.ts'
4
-
5
- export type TCPTunnelCreateOpts = {
6
- /**
7
- * The tunnel ID to communicate with.
8
- */
9
- tunnelId: CreateTunnelRequest['id']
10
- client: IAttestorClient
11
- }
12
-
13
- /**
14
- * Makes a tunnel communication wrapper for a TCP tunnel.
15
- *
16
- * It listens for messages and disconnect events from the server,
17
- * and appropriately calls the `onMessage` and `onClose` callbacks.
18
- */
19
- export const makeRpcTcpTunnel: MakeTunnelFn<TCPTunnelCreateOpts> = ({
20
- tunnelId,
21
- client,
22
- onClose,
23
- onMessage,
24
- }) => {
25
- let closed = false
26
- client.addEventListener('tunnel-message', onMessageListener)
27
- client.addEventListener('tunnel-disconnect-event', onDisconnectListener)
28
- client.addEventListener('connection-terminated', onConnectionTerminatedListener)
29
-
30
- return {
31
- async write(message) {
32
- await client.sendMessage({ tunnelMessage: { tunnelId, message } })
33
- },
34
- async close(err) {
35
- if(closed) {
36
- return
37
- }
38
-
39
- onErrorRecv(err)
40
- await client.rpc('disconnectTunnel', { id: tunnelId })
41
- }
42
- }
43
-
44
- function onMessageListener({ data }: RPCEvent<'tunnel-message'>) {
45
- if(data.tunnelId !== tunnelId) {
46
- return
47
- }
48
-
49
- onMessage?.(data.message)
50
- }
51
-
52
- function onDisconnectListener({ data }: RPCEvent<'tunnel-disconnect-event'>) {
53
- if(data.tunnelId !== tunnelId) {
54
- return
55
- }
56
-
57
- onErrorRecv(
58
- data.error?.code
59
- ? AttestorError.fromProto(data.error)
60
- : undefined
61
- )
62
- }
63
-
64
- function onConnectionTerminatedListener({ data }: RPCEvent<'connection-terminated'>) {
65
- onErrorRecv(data)
66
- }
67
-
68
- function onErrorRecv(err: Error | undefined) {
69
- client.logger?.debug({ tunnelId, err }, 'TCP tunnel closed')
70
-
71
- client.removeEventListener('tunnel-message', onMessageListener)
72
- client.removeEventListener('tunnel-disconnect-event', onDisconnectListener)
73
- client.removeEventListener('connection-terminated', onConnectionTerminatedListener)
74
- onClose?.(err)
75
- onClose = undefined
76
- closed = true
77
- }
78
- }
@@ -1,172 +0,0 @@
1
- import type { TLSConnectionOptions } from '@joclaim/tls'
2
- import { concatenateUint8Arrays, makeTLSClient } from '@joclaim/tls'
3
-
4
- import { makeRpcTcpTunnel } from '#src/client/tunnels/make-rpc-tcp-tunnel.ts'
5
- import { DEFAULT_HTTPS_PORT } from '#src/config/index.ts'
6
- import type { CreateTunnelRequest, RPCMessage } from '#src/proto/api.ts'
7
- import type { CompleteTLSPacket, IAttestorClient, Logger, MakeTunnelFn, Transcript, Tunnel } from '#src/types/index.ts'
8
- import { generateRpcMessageId, generateTunnelId } from '#src/utils/index.ts'
9
-
10
- type ExtraTLSOptions = {
11
- request: Partial<CreateTunnelRequest>
12
- logger: Logger
13
- /**
14
- * Either create a client with the given initMessages,
15
- * or simply send the messages to the server via an existing
16
- * client
17
- *
18
- * @returns the client that was used to send the messages
19
- */
20
- connect(initMessages: Partial<RPCMessage>[]): IAttestorClient
21
- tlsOpts?: TLSConnectionOptions
22
- }
23
-
24
- type TLSTunnelProperties = {
25
- transcript: Transcript<CompleteTLSPacket>
26
- tls: ReturnType<typeof makeTLSClient>
27
- }
28
-
29
- /**
30
- * Makes a TLS tunnel that connects to the server via RPC protocol
31
- */
32
- export const makeRpcTlsTunnel: MakeTunnelFn<ExtraTLSOptions, TLSTunnelProperties> = async({
33
- onMessage, onClose,
34
- tlsOpts, request,
35
- connect, logger
36
- }) => {
37
- const transcript: TLSTunnelProperties['transcript'] = []
38
- const tunnelId = request.id || generateTunnelId()
39
- let tunnel: Tunnel<{}>
40
- let client: IAttestorClient | undefined
41
-
42
- let handshakeResolve: ((value: void) => void) | undefined
43
- let handshakeReject: ((reason: any) => void) | undefined
44
- const waitForHandshake = new Promise<void>((resolve, reject) => {
45
- handshakeResolve = resolve
46
- handshakeReject = reject
47
- })
48
-
49
- const tls = makeTLSClient({
50
- host: request.host!,
51
- ...tlsOpts,
52
- logger,
53
- onHandshake() {
54
- handshakeResolve?.()
55
- },
56
- onApplicationData(plaintext) {
57
- return onMessage?.(plaintext)
58
- },
59
- onTlsEnd: onConnectionClose,
60
- async write(packet, ctx) {
61
- const message = concatenateUint8Arrays([
62
- packet.header,
63
- packet.content
64
- ])
65
- transcript.push({
66
- sender: 'client',
67
- message: { ...ctx, data: message }
68
- })
69
-
70
- if(!tunnel) {
71
- // sends the packet as the initial message
72
- // to the plaintext tunnel. Prevents another
73
- // round trip to the server as we send the packet
74
- // in the same message as the tunnel creation.
75
- const createTunnelReqId = generateRpcMessageId()
76
- client = connect([
77
- {
78
- id: createTunnelReqId,
79
- createTunnelRequest: {
80
- host: request.host || '',
81
- port: request.port || DEFAULT_HTTPS_PORT,
82
- geoLocation: request.geoLocation || '',
83
- proxySessionId: request.proxySessionId || '',
84
- id: tunnelId
85
- },
86
- },
87
- { tunnelMessage: { tunnelId, message } }
88
- ])
89
-
90
- try {
91
- await makeTunnel()
92
- // wait for tunnel to be successfully created
93
- await client.waitForResponse(createTunnelReqId)
94
- } catch(err) {
95
- onConnectionClose(err)
96
- }
97
-
98
- return
99
- }
100
-
101
- return tunnel.write(message)
102
- },
103
- onRead(packet, ctx) {
104
- transcript.push({
105
- sender: 'server',
106
- message: {
107
- ...ctx,
108
- data: concatenateUint8Arrays([
109
- packet.header,
110
- // the TLS package sends us the decrypted
111
- // content, so we need to get the orginal
112
- // ciphertext received from the server
113
- // as that's part of the true transcript.
114
- ctx.type === 'ciphertext'
115
- ? ctx.ciphertext
116
- : packet.content
117
- ])
118
- }
119
- })
120
- },
121
- })
122
-
123
- await tls.startHandshake()
124
- // wait for handshake completion
125
- await waitForHandshake
126
-
127
- handshakeResolve = handshakeReject = undefined
128
-
129
- return {
130
- transcript,
131
- tls,
132
- write(data) {
133
- return tls.write(data)
134
- },
135
- async close(err) {
136
- onConnectionClose(err)
137
- try {
138
- await tunnel.close(err)
139
- } catch(err) {
140
- logger?.error({ err }, 'err in close tunnel')
141
- }
142
- },
143
- }
144
-
145
- function onConnectionClose(err: Error | undefined) {
146
- onClose?.(err)
147
- // once the TLS connection is closed, we no longer
148
- // want to send `onClose` events back to the caller
149
- // of this function.
150
- onClose = undefined
151
- handshakeReject?.(
152
- err || new Error('TLS connection closed')
153
- )
154
- }
155
-
156
- async function makeTunnel() {
157
- tunnel = await makeRpcTcpTunnel({
158
- tunnelId,
159
- client: client!,
160
- onMessage(data) {
161
- tls.handleReceivedBytes(data)
162
- },
163
- onClose(err) {
164
- tls.end(err)
165
- },
166
- })
167
-
168
- logger?.debug('plaintext tunnel created')
169
-
170
- return tunnel
171
- }
172
- }
@@ -1,35 +0,0 @@
1
- import { AttestorClient } from '#src/client/utils/client-socket.ts'
2
- import type { IAttestorClient, IAttestorClientCreateOpts } from '#src/types/index.ts'
3
-
4
- const POOL: { [url: string]: IAttestorClient | undefined } = {}
5
-
6
- /**
7
- * Get a attestor client from the pool,
8
- * if it doesn't exist, create one.
9
- * @param [getCreateOpts] - Function to get the options for creating a new client.
10
- * called synchronously, in the same tick as this function.
11
- */
12
- export function getAttestorClientFromPool(
13
- url: string | URL,
14
- getCreateOpts: () => Omit<IAttestorClientCreateOpts, 'url'> = () => ({})
15
- ) {
16
- const key = url.toString()
17
- let client = POOL[key]
18
- let createReason: string | undefined
19
- if(client?.isClosed) {
20
- createReason = 'closed'
21
- } else if(!client) {
22
- createReason = 'non-existent'
23
- }
24
-
25
- if(createReason) {
26
- const createOpts = getCreateOpts()
27
- createOpts?.logger?.info(
28
- { key, createReason },
29
- 'creating new client'
30
- )
31
- client = (POOL[key] = new AttestorClient({ ...createOpts, url }))
32
- }
33
-
34
- return client!
35
- }
@@ -1,160 +0,0 @@
1
- import { utils } from 'ethers'
2
-
3
- import { DEFAULT_METADATA, DEFAULT_RPC_TIMEOUT_MS } from '#src/config/index.ts'
4
- import type { InitResponse } from '#src/proto/api.ts'
5
- import { RPCMessages } from '#src/proto/api.ts'
6
- import type { IAttestorClient, IAttestorClientCreateOpts, RPCEvent, RPCRequestData, RPCResponseData, RPCType } from '#src/types/index.ts'
7
- import { AttestorError, generateRpcMessageId, getRpcRequestType, logger as LOGGER, packRpcMessages } from '#src/utils/index.ts'
8
- import { AttestorSocket } from '#src/utils/socket-base.ts'
9
- import { makeWebSocket as defaultMakeWebSocket } from '#src/utils/ws.ts'
10
-
11
- const { base64 } = utils
12
-
13
- export class AttestorClient extends AttestorSocket implements IAttestorClient {
14
-
15
- private waitForInitPromise: Promise<void>
16
-
17
- public initResponse?: InitResponse
18
-
19
- constructor({
20
- url,
21
- initMessages = [],
22
- signatureType = DEFAULT_METADATA.signatureType,
23
- logger = LOGGER,
24
- authRequest,
25
- makeWebSocket = defaultMakeWebSocket
26
- }: IAttestorClientCreateOpts) {
27
- const initRequest = {
28
- ...DEFAULT_METADATA,
29
- signatureType,
30
- auth: authRequest
31
- }
32
- const msg = packRpcMessages({ initRequest }, ...initMessages)
33
- const initRequestBytes = RPCMessages.encode(msg).finish()
34
- const initRequestB64 = base64.encode(initRequestBytes)
35
-
36
- url = new URL(url.toString())
37
- url.searchParams.set('messages', initRequestB64)
38
-
39
- super(
40
- makeWebSocket(url) as WebSocket,
41
- initRequest,
42
- logger
43
- )
44
-
45
- const initReqId = msg.messages[0].id
46
- this.waitForInitPromise = this
47
- .waitForResponse<'init'>(initReqId, DEFAULT_RPC_TIMEOUT_MS)
48
- .then(res => {
49
- logger.info('client initialised')
50
- this.isInitialised = true
51
- this.initResponse = res
52
- })
53
- // swallow the error if anything bad happens, and we've no
54
- // catch block to handle it
55
- this.waitForInitPromise
56
- .catch(() => { })
57
-
58
- this.addEventListener('connection-terminated', ev => (
59
- logger.info({ err: ev.data }, 'connection terminated')
60
- ))
61
- }
62
-
63
- async rpc<T extends RPCType>(
64
- type: T,
65
- request: Partial<RPCRequestData<T>>,
66
- timeoutMs: number = DEFAULT_RPC_TIMEOUT_MS
67
- ) {
68
- const msgId = generateRpcMessageId()
69
- this.logger.debug({ type, id: msgId }, 'sending rpc request')
70
- const now = Date.now()
71
- try {
72
- const rslt = this.waitForResponse<T>(msgId, timeoutMs)
73
- await this.sendMessage({ id: msgId, [getRpcRequestType(type)]: request })
74
-
75
- return await rslt
76
- } finally {
77
- const timeTakenMs = Date.now() - now
78
- this.logger.debug({ type, timeTakenMs }, 'received rpc response')
79
- }
80
- }
81
-
82
- waitForResponse<T extends RPCType>(
83
- id: number,
84
- timeoutMs: number = DEFAULT_RPC_TIMEOUT_MS
85
- ) {
86
- if(this.isClosed) {
87
- throw new AttestorError(
88
- 'ERROR_NETWORK_ERROR',
89
- 'Client connection already closed'
90
- )
91
- }
92
-
93
- // setup a promise to wait for the response
94
- return new Promise<RPCResponseData<T>>((resolve, reject) => {
95
- const handler = (event: RPCEvent<'rpc-response'>) => {
96
- if(event.data.id !== id) {
97
- return
98
- }
99
-
100
- removeHandlers()
101
- if('error' in event.data) {
102
- reject(event.data.error)
103
- return
104
- }
105
-
106
- // @ts-expect-error
107
- resolve(event.data.data)
108
- }
109
-
110
- const terminateHandler = (event: RPCEvent<'connection-terminated'>) => {
111
- removeHandlers()
112
- // if the connection was terminated, reject the promise
113
- // but update the error code to reflect the network error
114
- if(event.data.code === 'ERROR_NO_ERROR') {
115
- reject(
116
- new AttestorError(
117
- 'ERROR_NETWORK_ERROR',
118
- event.data.message,
119
- event.data.data
120
- )
121
- )
122
- return
123
- }
124
-
125
- reject(event.data)
126
- }
127
-
128
- const timeout = setTimeout(() => {
129
- removeHandlers()
130
- reject(
131
- new AttestorError(
132
- 'ERROR_TIMEOUT',
133
- `RPC request timed out after ${timeoutMs}ms`,
134
- { id }
135
- )
136
- )
137
- }, timeoutMs)
138
-
139
- const removeHandlers = () => {
140
- clearTimeout(timeout)
141
- this.removeEventListener('rpc-response', handler)
142
- this.removeEventListener('connection-terminated', terminateHandler)
143
- }
144
-
145
- this.addEventListener('rpc-response', handler)
146
- this.addEventListener('connection-terminated', terminateHandler)
147
- })
148
- }
149
-
150
- waitForInit = () => {
151
- if(this.isClosed) {
152
- throw new AttestorError(
153
- 'ERROR_NETWORK_ERROR',
154
- 'Client connection already closed'
155
- )
156
- }
157
-
158
- return this.waitForInitPromise
159
- }
160
- }
@@ -1,116 +0,0 @@
1
- import type { RPCMessage } from '#src/proto/api.ts'
2
- import { RPCMessages } from '#src/proto/api.ts'
3
- import type { IAttestorSocket } from '#src/types/index.ts'
4
- import { AttestorError, extractArrayBufferFromWsData, getRpcRequest, getRpcRequestType, getRpcResponseType } from '#src/utils/index.ts'
5
-
6
- export async function wsMessageHandler(this: IAttestorSocket, data: unknown) {
7
- // extract array buffer from WS data & decode proto
8
- const buff = await extractArrayBufferFromWsData(data)
9
- const { messages } = RPCMessages.decode(buff)
10
- for(const msg of messages) {
11
- await handleMessage.call(this, msg)
12
- }
13
- }
14
-
15
- export function handleMessage(this: IAttestorSocket, msg: RPCMessage) {
16
- this.logger?.trace({ msg }, 'received message')
17
- // handle connection termination alert
18
- if(msg.connectionTerminationAlert) {
19
- const err = AttestorError.fromProto(
20
- msg.connectionTerminationAlert
21
- )
22
- this.logger?.warn(
23
- {
24
- err: err.code !== 'ERROR_NO_ERROR'
25
- ? err
26
- : undefined
27
- },
28
- 'received connection termination alert'
29
- )
30
- this.dispatchRPCEvent('connection-terminated', err)
31
- return
32
- }
33
-
34
- const rpcRequest = getRpcRequest(msg)
35
- if(rpcRequest) {
36
- if(
37
- rpcRequest.direction === 'response'
38
- && rpcRequest.type === 'error'
39
- ) {
40
- this.dispatchRPCEvent('rpc-response', {
41
- id: msg.id,
42
- error: AttestorError.fromProto(msg.requestError)
43
- })
44
- return
45
- }
46
-
47
- const resType = getRpcResponseType(rpcRequest.type)
48
- if(rpcRequest.direction === 'response') {
49
- this.dispatchRPCEvent('rpc-response', {
50
- id: msg.id,
51
- type: rpcRequest.type,
52
- data: msg[resType]!
53
- })
54
- return
55
- }
56
-
57
- if(!this.isInitialised && rpcRequest.type !== 'init') {
58
- this.logger.warn(
59
- { type: rpcRequest.type },
60
- 'RPC request received before initialisation'
61
- )
62
- void this.sendMessage({
63
- id: msg.id,
64
- requestError: AttestorError
65
- .badRequest('Initialise connection first')
66
- .toProto()
67
- })
68
- return
69
- }
70
-
71
- return new Promise<void>((resolve, reject) => {
72
- this.dispatchRPCEvent('rpc-request', {
73
- requestId: msg.id,
74
- type: rpcRequest.type,
75
- data: msg[getRpcRequestType(rpcRequest.type)]!,
76
- respond: (res) => {
77
- if(!this.isOpen) {
78
- this.logger?.debug(
79
- { type: rpcRequest.type, res },
80
- 'connection closed before responding'
81
- )
82
- reject(new Error('connection closed'))
83
- return
84
- }
85
-
86
- if('code' in res) {
87
- reject(res)
88
- return this.sendMessage({
89
- id: msg.id,
90
- requestError: res.toProto()
91
- })
92
- }
93
-
94
- resolve()
95
- return this
96
- .sendMessage({ id: msg.id, [resType]: res })
97
- },
98
- })
99
- })
100
- }
101
-
102
- if(msg.tunnelMessage) {
103
- this.dispatchRPCEvent('tunnel-message', msg.tunnelMessage)
104
- return
105
- }
106
-
107
- if(msg.tunnelDisconnectEvent) {
108
- this.dispatchRPCEvent(
109
- 'tunnel-disconnect-event',
110
- msg.tunnelDisconnectEvent
111
- )
112
- return
113
- }
114
-
115
- this.logger.warn({ msg }, 'unhandled message')
116
- }
@@ -1,65 +0,0 @@
1
- import type { InitRequest } from '#src/proto/api.ts'
2
- import { AttestorVersion, ServiceSignatureType } from '#src/proto/api.ts'
3
-
4
- export const DEFAULT_ZK_CONCURRENCY = 10
5
-
6
- export const JOCLAIM_USER_AGENT = 'joclaim/0.0.1'
7
-
8
- export const DEFAULT_HTTPS_PORT = 443
9
-
10
- export const WS_PATHNAME = '/ws'
11
-
12
- export const BROWSER_RPC_PATHNAME = '/browser-rpc'
13
-
14
- export const DEFAULT_REMOTE_FILE_FETCH_BASE_URL = `${BROWSER_RPC_PATHNAME}/resources`
15
-
16
- export const API_SERVER_PORT = 8001
17
-
18
- // 10s
19
- export const CONNECTION_TIMEOUT_MS = 10_000
20
-
21
- export const DNS_SERVERS = [
22
- '8.8.8.8',
23
- '8.8.4.4'
24
- ]
25
-
26
- // 10m
27
- export const MAX_CLAIM_TIMESTAMP_DIFF_S = 10 * 60
28
-
29
- export const CURRENT_ATTESTOR_VERSION = AttestorVersion.ATTESTOR_VERSION_3_0_0
30
-
31
- export const DEFAULT_METADATA: InitRequest = {
32
- signatureType: ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH,
33
- clientVersion: CURRENT_ATTESTOR_VERSION,
34
- auth: undefined
35
- }
36
-
37
- export const PROVIDER_CTX = { version: CURRENT_ATTESTOR_VERSION }
38
-
39
- export const PING_INTERVAL_MS = 10_000
40
- /**
41
- * Maximum interval in seconds to wait for before assuming
42
- * the connection is dead
43
- * @default 30s
44
- */
45
- export const MAX_NO_DATA_INTERVAL_MS = 30_000
46
-
47
- export const MAX_PAYLOAD_SIZE = 512 * 1024 * 1024 // 512MB
48
-
49
- export const DEFAULT_AUTH_EXPIRY_S = 15 * 60 // 15m
50
-
51
- export const DEFAULT_RPC_TIMEOUT_MS = 90_000
52
-
53
- export const TOPRF_DOMAIN_SEPARATOR = 'joclaim-toprf'
54
-
55
- export const MAX_CERT_SIZE_BYTES = 10 * 1024 * 1024 * 1024 // 10MB
56
-
57
- export const CERT_ALLOWED_MIMETYPES = [
58
- 'application/x-x509-ca-cert',
59
- 'application/x-x509-user-cert',
60
- 'application/pkix-cert',
61
- 'application/pkcs7-mime',
62
- 'application/octet-stream'
63
- ]
64
-
65
- export const BGP_WS_URL = 'wss://ris-live.ripe.net/v1/ws/?client=joclaim-hijack-detector'