@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,375 +0,0 @@
1
- import {
2
- areUint8ArraysEqual,
3
- concatenateUint8Arrays
4
- } from '@joclaim/tls'
5
- import type { ZKEngine } from '@joclaim/zk-symmetric-crypto'
6
-
7
- import type {
8
- InitRequest,
9
- MessageReveal_MessageRevealDirect as MessageRevealDirect,
10
- MessageReveal_MessageRevealZk as MessageRevealZk,
11
- ProviderClaimInfo } from '#src/proto/api.ts'
12
- import {
13
- ClaimTunnelRequest,
14
- TranscriptMessageSenderType,
15
- ZKProofEngine
16
- } from '#src/proto/api.ts'
17
- import { providers } from '#src/providers/index.ts'
18
- import { niceParseJsonObject } from '#src/server/utils/generics.ts'
19
- import { processHandshake } from '#src/server/utils/process-handshake.ts'
20
- import { assertValidateProviderParams } from '#src/server/utils/validation.ts'
21
- import type {
22
- IDecryptedTranscript, IDecryptedTranscriptMessage,
23
- Logger,
24
- ProviderCtx,
25
- ProviderName,
26
- TCPSocketProperties,
27
- Transcript,
28
- } from '#src/types/index.ts'
29
- import {
30
- AttestorError,
31
- canonicalStringify, decryptDirect,
32
- extractApplicationDataFromTranscript,
33
- hashProviderParams, SIGNATURES,
34
- verifyZkPacket } from '#src/utils/index.ts'
35
-
36
- /**
37
- * Asserts that the claim request is valid.
38
- *
39
- * 1. We begin by verifying the signature of the claim request.
40
- * 2. Next, we produce the transcript of the TLS exchange
41
- * from the proofs provided by the client.
42
- * 3. We then pull the provider the client is trying to claim
43
- * from
44
- * 4. We then use the provider's verification function to verify
45
- * whether the claim is valid.
46
- *
47
- * If any of these steps fail, we throw an error.
48
- */
49
- export async function assertValidClaimRequest(
50
- request: ClaimTunnelRequest,
51
- metadata: InitRequest,
52
- logger: Logger,
53
- ) {
54
- const {
55
- data,
56
- signatures: { requestSignature } = {},
57
- zkEngine,
58
- fixedServerIV,
59
- fixedClientIV
60
- } = request
61
- if(!data) {
62
- throw new AttestorError(
63
- 'ERROR_INVALID_CLAIM',
64
- 'No info provided on claim request'
65
- )
66
- }
67
-
68
- if(!requestSignature?.length) {
69
- throw new AttestorError(
70
- 'ERROR_INVALID_CLAIM',
71
- 'No signature provided on claim request'
72
- )
73
- }
74
-
75
- // verify request signature
76
- const serialisedReq = ClaimTunnelRequest
77
- .encode({ ...request, signatures: undefined })
78
- .finish()
79
- const { verify: verifySig } = SIGNATURES[metadata.signatureType]
80
- const verified = await verifySig(serialisedReq, requestSignature, data.owner)
81
- if(!verified) {
82
- throw new AttestorError(
83
- 'ERROR_INVALID_CLAIM',
84
- 'Invalid signature on claim request'
85
- )
86
- }
87
-
88
- const receipt = await decryptTranscript(
89
- request.transcript,
90
- logger,
91
- zkEngine === ZKProofEngine.ZK_ENGINE_GNARK ? 'gnark' : 'snarkjs',
92
- fixedServerIV,
93
- fixedClientIV
94
- )
95
- const reqHost = request.request?.host
96
- if(receipt.hostname !== reqHost) {
97
- throw new Error(
98
- `Expected server name ${reqHost}, got ${receipt.hostname}`
99
- )
100
- }
101
-
102
- // get all application data messages
103
- const applData = extractApplicationDataFromTranscript(receipt)
104
-
105
- const newData = await assertValidProviderTranscript(
106
- applData, data, logger, { version: metadata.clientVersion }
107
- )
108
- if(newData !== data) {
109
- logger.info({ newData }, 'updated claim info')
110
- }
111
-
112
- return newData
113
- }
114
-
115
- /**
116
- * Verify that the transcript contains a valid claim
117
- * for the provider.
118
- */
119
- export async function assertValidProviderTranscript<T extends ProviderClaimInfo>(
120
- applData: Transcript<Uint8Array>,
121
- info: T,
122
- logger: Logger,
123
- providerCtx: ProviderCtx
124
- ) {
125
- const providerName = info.provider as ProviderName
126
- const provider = providers[providerName]
127
- if(!provider) {
128
- throw new AttestorError(
129
- 'ERROR_INVALID_CLAIM',
130
- `Unsupported provider: ${providerName}`
131
- )
132
- }
133
-
134
- const params = niceParseJsonObject(info.parameters, 'params')
135
- const ctx = niceParseJsonObject(info.context, 'context')
136
-
137
- assertValidateProviderParams(providerName, params)
138
-
139
- const rslt = await provider.assertValidProviderReceipt({
140
- receipt: applData,
141
- params,
142
- logger,
143
- ctx: providerCtx
144
- })
145
-
146
- ctx.providerHash = hashProviderParams(params)
147
-
148
- const extractedParameters = rslt?.extractedParameters || {}
149
- if(Object.keys(extractedParameters).length) {
150
- ctx.extractedParameters = extractedParameters
151
- }
152
-
153
- info.context = canonicalStringify(ctx) ?? ''
154
-
155
- return info
156
- }
157
-
158
- /**
159
- * Verify that the transcript provided by the client
160
- * matches the transcript of the tunnel, the server
161
- * has created.
162
- */
163
- export function assertTranscriptsMatch(
164
- clientTranscript: ClaimTunnelRequest['transcript'],
165
- tunnelTranscript: TCPSocketProperties['transcript']
166
- ) {
167
- const clientSends = concatenateUint8Arrays(
168
- clientTranscript
169
- .filter(m => m.sender === TranscriptMessageSenderType.TRANSCRIPT_MESSAGE_SENDER_TYPE_CLIENT)
170
- .map(m => m.message)
171
- )
172
-
173
- const tunnelSends = concatenateUint8Arrays(
174
- tunnelTranscript
175
- .filter(m => m.sender === 'client')
176
- .map(m => m.message)
177
- )
178
-
179
- if(!areUint8ArraysEqual(clientSends, tunnelSends)) {
180
- throw AttestorError.badRequest(
181
- 'Outgoing messages from client do not match the tunnel transcript'
182
- )
183
- }
184
-
185
- const clientRecvs = concatenateUint8Arrays(
186
- clientTranscript
187
- .filter(m => m.sender === TranscriptMessageSenderType.TRANSCRIPT_MESSAGE_SENDER_TYPE_SERVER)
188
- .map(m => m.message)
189
- )
190
-
191
- const tunnelRecvs = concatenateUint8Arrays(
192
- tunnelTranscript
193
- .filter(m => m.sender === 'server')
194
- .map(m => m.message)
195
- )
196
- // We only need to compare the first N messages
197
- // that the client claims to have received
198
- // the rest are not relevant -- so even if they're
199
- // not present in the tunnel transcript, it's fine
200
- .slice(0, clientRecvs.length)
201
- if(!areUint8ArraysEqual(clientRecvs, tunnelRecvs)) {
202
- throw AttestorError.badRequest(
203
- 'Incoming messages from server do not match the tunnel transcript'
204
- )
205
- }
206
- }
207
-
208
- export async function decryptTranscript(
209
- transcript: ClaimTunnelRequest['transcript'],
210
- logger: Logger,
211
- zkEngine: ZKEngine,
212
- serverIV: Uint8Array,
213
- clientIV: Uint8Array,
214
- ): Promise<IDecryptedTranscript> {
215
- const {
216
- tlsVersion, cipherSuite, hostname, nextMsgIndex
217
- } = await processHandshake(transcript, logger)
218
-
219
- // TLS 1.3 has already one record encrypted at this point
220
- let clientRecordNumber = tlsVersion === 'TLS1_3' ? -1 : 0
221
- let serverRecordNumber = clientRecordNumber
222
-
223
- transcript = transcript.slice(nextMsgIndex)
224
-
225
- const overshotMap: { [pkt: number]: { data: Uint8Array } } = {}
226
- const decryptedTranscript: IDecryptedTranscriptMessage[] = []
227
-
228
- for(const [i, {
229
- sender,
230
- message,
231
- reveal: { zkReveal, directReveal } = {}
232
- }] of transcript.entries()) {
233
- try {
234
- //start with first message after last handshake message
235
- await decryptMessage(sender, message, directReveal, zkReveal, i)
236
- } catch(error) {
237
- const err = new AttestorError(
238
- 'ERROR_INVALID_CLAIM',
239
- `error in handling packet at idx ${i}: ${error}`,
240
- { packetIdx: i, error }
241
- )
242
- if(error.stack) {
243
- err.stack = error.stack
244
- }
245
-
246
- throw err
247
- }
248
- }
249
-
250
- return {
251
- transcript: decryptedTranscript,
252
- hostname: hostname,
253
- tlsVersion: tlsVersion,
254
- }
255
-
256
- async function decryptMessage(
257
- sender: TranscriptMessageSenderType,
258
- message: Uint8Array,
259
- directReveal: MessageRevealDirect | undefined,
260
- zkReveal: MessageRevealZk | undefined,
261
- i: number
262
- ) {
263
- const isServer = sender === TranscriptMessageSenderType
264
- .TRANSCRIPT_MESSAGE_SENDER_TYPE_SERVER
265
- const recordHeader = message.slice(0, 5)
266
- const content = getWithoutHeader(message)
267
- if(isServer) {
268
- serverRecordNumber++
269
- } else {
270
- clientRecordNumber++
271
- }
272
-
273
- let redacted = true
274
- let plaintext: Uint8Array | undefined = undefined
275
- let plaintextLength: number
276
-
277
- if(directReveal?.key?.length) {
278
- const result = await decryptDirect(
279
- directReveal, cipherSuite, recordHeader, tlsVersion, content
280
- )
281
- plaintext = result.plaintext
282
- redacted = false
283
- plaintextLength = plaintext.length
284
-
285
- const decoder = new TextDecoder('utf-8', { fatal: false })
286
- const keyHex = Buffer.from(directReveal.key).toString('hex')
287
- const ciphertextPreview = Buffer.from(content.slice(0, 64)).toString('hex')
288
- const plaintextStr = decoder.decode(plaintext)
289
- logger.info(
290
- `\n=======================================================================\n` +
291
- `[directReveal] packet #${i} | sender: ${isServer ? 'server' : 'client'}\n` +
292
- `session key: ${keyHex}\n` +
293
- `ciphertext size: ${content.length} bytes | preview: ${ciphertextPreview}...\n` +
294
- `plaintext (${plaintextLength} bytes):\n${plaintextStr}\n` +
295
- `=======================================================================`
296
- )
297
- } else if(zkReveal?.proofs?.length) {
298
- const iv = sender === TranscriptMessageSenderType
299
- .TRANSCRIPT_MESSAGE_SENDER_TYPE_SERVER
300
- ? serverIV
301
- : clientIV
302
- const recordNumber = isServer
303
- ? serverRecordNumber
304
- : clientRecordNumber
305
-
306
- const result = await verifyZkPacket(
307
- {
308
- ciphertext: content,
309
- zkReveal,
310
- iv,
311
- recordNumber,
312
- toprfOvershotNullifier: overshotMap[i]?.data,
313
- getNextPacket(overshot) {
314
- const nextIdx = transcript
315
- .findIndex((t, j) => t.sender === sender && j > i)
316
- if(nextIdx < 0) {
317
- return
318
- }
319
-
320
- overshotMap[nextIdx] = { data: overshot }
321
- return getWithoutHeader(transcript[nextIdx].message)
322
- },
323
- logger,
324
- cipherSuite,
325
- zkEngine: zkEngine,
326
- }
327
- )
328
- plaintext = result.redactedPlaintext
329
- redacted = false
330
- plaintextLength = plaintext.length
331
-
332
- const decoder2 = new TextDecoder('utf-8', { fatal: false })
333
- const ciphertextPreview2 = Buffer.from(content.slice(0, 64)).toString('hex')
334
- const plaintextStr2 = decoder2.decode(plaintext)
335
- logger.info(
336
- `\n=======================================================================\n` +
337
- `[zkReveal] packet #${i} | sender: ${isServer ? 'server' : 'client'}\n` +
338
- `zk proofs count: ${zkReveal.proofs.length}\n` +
339
- `ciphertext size: ${content.length} bytes | preview: ${ciphertextPreview2}...\n` +
340
- `redacted plaintext (${plaintextLength} bytes):\n${plaintextStr2}\n` +
341
- `=======================================================================`
342
- )
343
- } else {
344
- plaintext = content
345
- plaintextLength = plaintext.length
346
-
347
- const decoder3 = new TextDecoder('utf-8', { fatal: false })
348
- logger.info(
349
- `\n=======================================================================\n` +
350
- `[noReveal] packet #${i} | sender: ${isServer ? 'server' : 'client'}\n` +
351
- `raw content size: ${content.length} bytes\n` +
352
- `content:\n${decoder3.decode(plaintext)}\n` +
353
- `=======================================================================`
354
- )
355
- }
356
-
357
- decryptedTranscript.push({
358
- sender: sender === TranscriptMessageSenderType
359
- .TRANSCRIPT_MESSAGE_SENDER_TYPE_CLIENT
360
- ? 'client'
361
- : 'server',
362
- redacted,
363
- message: plaintext,
364
- recordHeader,
365
- plaintextLength,
366
- })
367
- }
368
- }
369
-
370
- export function getWithoutHeader(message: Uint8Array) {
371
- // strip the record header (xx 03 03 xx xx)
372
- return message.slice(5)
373
- }
374
-
375
-
@@ -1,6 +0,0 @@
1
- import { config } from 'dotenv'
2
-
3
- import { getEnvVariable } from '#src/utils/env.ts'
4
-
5
- const nodeEnv = getEnvVariable('NODE_ENV') || 'development'
6
- config({ path: `.env.${nodeEnv}` })
@@ -1,25 +0,0 @@
1
- import { resolve, setServers } from 'dns'
2
-
3
- import { DNS_SERVERS } from '#src/config/index.ts'
4
-
5
- setDnsServers()
6
-
7
- export async function resolveHostnames(hostname: string) {
8
- return new Promise<string[]>((_resolve, reject) => {
9
- resolve(hostname, (err, addresses) => {
10
- if(err) {
11
- reject(
12
- new Error(
13
- `Could not resolve hostname: ${hostname}, ${err.message}`
14
- )
15
- )
16
- } else {
17
- _resolve(addresses)
18
- }
19
- })
20
- })
21
- }
22
-
23
- function setDnsServers() {
24
- setServers(DNS_SERVERS)
25
- }