@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,125 +0,0 @@
1
- import assert from 'node:assert'
2
- import { afterEach, it } from 'node:test'
3
-
4
- import { createClaimOnAttestor } from '#src/client/index.ts'
5
- import { describeWithServer } from '#src/tests/describe-with-server.ts'
6
- import { getFirstTOprfBlock, verifyNoDirectRevealLeaks } from '#src/tests/utils.ts'
7
- import { binaryHashToStr } from '#src/utils/index.ts'
8
-
9
- describeWithServer('HTTP Provider', opts => {
10
-
11
- afterEach(async() => {
12
- await verifyNoDirectRevealLeaks()
13
- })
14
-
15
- it('should create claim with template params', async() => {
16
- const resp = await createClaimOnAttestor({
17
- name: 'http',
18
- params: {
19
- url: 'https://news.ycombinator.{{param1}}/{{param6}}?token={{param4}}&token1={{param5}}',
20
- method: 'GET',
21
- responseMatches: [{
22
- type: 'regex',
23
- value: '<title.*?(?<domain>{{param2}})<\\/title>',
24
- }],
25
- responseRedactions: [{
26
- xPath: './html/head/{{param3}}',
27
- }],
28
- paramValues: {
29
- param1: 'com',
30
- param2: 'Top Links | Hacker News',
31
- param3: 'title',
32
- }
33
- },
34
- secretParams: {
35
- cookieStr: '<cookie-str>',
36
- paramValues: {
37
- param4: 'quhrfqiuherfqlireufh',
38
- param5: 'sssbbbbr123',
39
- param6: 'best',
40
- }
41
- },
42
- ownerPrivateKey: opts.privateKeyHex,
43
- client: opts.client,
44
- zkEngine: 'gnark'
45
- })
46
- assert.ok(!resp.error)
47
- assert.match(
48
- resp.claim?.context || '',
49
- /0x5e3e976476ded7b58120d606b33b75be52adb8345a7979c181764f00763e7b2a/
50
- )
51
- })
52
-
53
- it('should create claim with OPRF template params', async() => {
54
- const resp = await createClaimOnAttestor({
55
- name: 'http',
56
- params: {
57
- url: 'https://example.com/',
58
- method: 'GET',
59
- responseMatches: [
60
- {
61
- type: 'contains',
62
- value: '<title>{{domain}}</title>',
63
- }
64
- ],
65
- responseRedactions: [
66
- {
67
- xPath: '/html/head/title',
68
- regex: '<title>(?<domain>.*?)<\\/title>',
69
- hash: 'oprf'
70
- }
71
- ],
72
- paramValues:{ domain:'Example Domain' }
73
- },
74
- secretParams: {
75
- cookieStr: '<cookie-str>'
76
- },
77
- ownerPrivateKey: opts.privateKeyHex,
78
- client: opts.client,
79
- zkEngine: 'gnark',
80
- })
81
- assert.ok(!resp.error)
82
-
83
- const ctx = JSON.parse(resp.claim!.context)
84
- const domainStr = ctx.extractedParameters.domain
85
-
86
- const toprf = getFirstTOprfBlock(resp.request!)?.payload
87
- assert.ok(toprf)
88
- const toprfStr = binaryHashToStr(
89
- toprf.nullifier,
90
- toprf.dataLocation!.length
91
- )
92
- assert.equal(domainStr, toprfStr.slice(0, domainStr.length))
93
- })
94
-
95
- it('should create claim with non 200 response', async() => {
96
- const resp = await createClaimOnAttestor({
97
- name: 'http',
98
- params: {
99
- url: 'https://the-internet.herokuapp.com/status_codes/201',
100
- method: 'GET',
101
- responseMatches: [{
102
- type: 'contains',
103
- value: 'Status Codes',
104
- }],
105
- responseRedactions: [{
106
- xPath: '/html/body/div[2]/div/div/h3',
107
- }],
108
- headers: {
109
- accept: 'application/json, text/plain, */*'
110
- }
111
- },
112
- secretParams: {
113
- cookieStr: '<cookie-str>'
114
- },
115
- ownerPrivateKey: opts.privateKeyHex,
116
- client: opts.client,
117
- zkEngine: 'gnark'
118
- })
119
- assert.ok(!resp.error)
120
- assert.match(
121
- resp.claim?.context || '',
122
- /0x51004e4a2d91eda6fa8cf2e6fa9a8dd973070114a7c670a4c47797e9a55ab872/
123
- )
124
- })
125
- })
@@ -1,296 +0,0 @@
1
- /**
2
- * This file tests that if the TLS library works on javascript
3
- * core (jsc) environment.
4
- * 1. Ensure you have the jsc binary installed
5
- * 2. Ensure you have built the jsc file via `npm run build:jsc`
6
- */
7
- import { asciiToUint8Array } from '@joclaim/tls'
8
- import { makeLocalFileFetch } from '@joclaim/zk-symmetric-crypto'
9
- import { initGnark } from '@joclaim/zk-symmetric-crypto/gnark'
10
- import { exec } from 'child_process'
11
- import { after, afterEach, before, beforeEach, describe, it } from 'node:test'
12
- import { stderr, stdout } from 'process'
13
- import type { WebSocketServer } from 'ws'
14
-
15
- import { generateRpcRequestId } from '#src/external-rpc/utils.ts'
16
- import { ALL_ENC_ALGORITHMS } from '#src/external-rpc/zk.ts'
17
- import { createServer } from '#src/server/create-server.ts'
18
- import { getRandomPort, randomPrivateKey } from '#src/tests/utils.ts'
19
- import { B64_JSON_REPLACER, B64_JSON_REVIVER } from '#src/utils/b64-json.ts'
20
- import { uint8ArrayToBinaryStr } from '#src/utils/generics.ts'
21
- import { logger } from '#src/utils/logger.ts'
22
- import { makeDefaultZkOperator } from '#src/utils/zk.ts'
23
-
24
- // algorithm doesn't matter, as the JSC bridge handles that part internally
25
- // we'll just initialise all of them now
26
- for(const alg of ALL_ENC_ALGORITHMS) {
27
- await initGnark(alg, makeLocalFileFetch(), logger)
28
- }
29
-
30
- const GNARK_ZK = makeDefaultZkOperator('chacha20', 'gnark', logger)
31
-
32
- describe('JSC Test', () => {
33
-
34
- let wsServer: WebSocketServer
35
- let privateKeyHex: string
36
- const wsServerPort = getRandomPort()
37
-
38
- let bridge: Awaited<ReturnType<typeof runJscBridge>>
39
-
40
- before(async() => {
41
- wsServer = await createServer(wsServerPort)
42
- })
43
-
44
- after(async() => {
45
- wsServer.close()
46
- })
47
-
48
- beforeEach(async() => {
49
- privateKeyHex = randomPrivateKey()
50
- bridge = await runJscBridge(
51
- { attestorBaseUrl: `http://localhost:${wsServerPort}` }
52
- )
53
- })
54
-
55
- afterEach(() => {
56
- bridge?.exit()
57
- })
58
-
59
- it('should create claim with RPC', async() => {
60
- const result = await bridge.rpc({
61
- type: 'createClaim',
62
- id: generateRpcRequestId(),
63
- request: {
64
- name: 'http',
65
- params: {
66
- url: 'https://the-internet.herokuapp.com/status_codes/201',
67
- method: 'GET',
68
- responseMatches: [{
69
- type: 'contains',
70
- value: 'Status Codes',
71
- }],
72
- responseRedactions: [{
73
- xPath: '/html/body/div[2]/div/div/h3',
74
- }],
75
- headers: {
76
- accept: 'application/json, text/plain, */*'
77
- }
78
- },
79
- secretParams: {
80
- cookieStr: '<cookie-str>'
81
- },
82
- ownerPrivateKey: privateKeyHex,
83
- zkEngine: 'gnark',
84
- zkOperatorMode: 'rpc'
85
- }
86
- })
87
- console.log('Claim created:', result)
88
- })
89
- })
90
-
91
- async function runJscBridge(
92
- init: {
93
- attestorBaseUrl: string
94
- },
95
- ) {
96
- const wsMap: Record<string, WebSocket> = {}
97
- const pendingRpcMap: Record<
98
- string, (data: JSCOutgoingMsg) => void
99
- > = {}
100
-
101
- const prc = exec('jsc -x out/jsc-cli-rpc.mjs', { })
102
- prc.stdout!.on('data', async(data) => {
103
- const cmds = Array.from(tryReadCmds(data))
104
- if(!cmds.length) {
105
- stdout.write('[JSC] ')
106
- stdout.write(data)
107
- return
108
- }
109
-
110
- for(const cmd of cmds) {
111
- let res: JSCIncomingMsg
112
- try {
113
- const rslt = await handleCmd(cmd)
114
- if(!rslt) {
115
- return
116
- }
117
-
118
- res = {
119
- type: `${cmd.type}Done`,
120
- id: cmd.id,
121
- module: 'attestor-core',
122
- isResponse: true,
123
- response: rslt,
124
- } as any
125
- } catch(err) {
126
- res = {
127
- type: 'error',
128
- isResponse: true,
129
- id: cmd.id,
130
- data: {
131
- message: err.message,
132
- stack: err.stack,
133
- }
134
- }
135
- }
136
-
137
- await writeCmd(res)
138
- }
139
- })
140
- prc.stderr!.on('data', (data) => {
141
- stderr.write('[JSC-ERR] ')
142
- stderr.write(data)
143
- })
144
-
145
- prc.on('exit', (err) => {
146
- console.error('Error in JSC process', err)
147
- })
148
-
149
- await writeCmd({ type: 'init', ...init })
150
-
151
- return {
152
- writeCmd,
153
- rpc,
154
- exit() {
155
- prc.kill()
156
- onExit()
157
- }
158
- }
159
-
160
- function onExit() {
161
- for(const [id, ws] of Object.entries(wsMap)) {
162
- ws.close()
163
- delete wsMap[id]
164
- }
165
-
166
- for(const [id, resolve] of Object.entries(pendingRpcMap)) {
167
- resolve({
168
- type: 'error',
169
- id,
170
- isResponse: true,
171
- data: {
172
- message: 'Bridge closed before response',
173
- stack: ''
174
- }
175
- })
176
- delete pendingRpcMap[id]
177
- }
178
- }
179
-
180
- async function handleCmd(cmd: JSCOutgoingMsg) {
181
- if(pendingRpcMap[cmd.id]) {
182
- const resolve = pendingRpcMap[cmd.id]
183
- delete pendingRpcMap[cmd.id]
184
- resolve(cmd)
185
- return
186
- }
187
-
188
- if(cmd.type === 'connectWs') {
189
- const { request: { id, url } } = cmd
190
- const ws = (wsMap[id] = new WebSocket(url))
191
- ws.binaryType = 'arraybuffer'
192
- await new Promise<void>((resolve, reject) => {
193
- ws.onopen = () => resolve()
194
- ws.onerror = (ev) => reject(ev['error'] || ev)
195
- })
196
-
197
- ws.onclose = async() => {
198
- await writeCmd({
199
- type: 'disconnectWs',
200
- id: generateRpcRequestId(),
201
- request: { id }
202
- })
203
- delete wsMap[id]
204
- }
205
-
206
- ws.onmessage = async(ev) => {
207
- const data = typeof ev.data === 'string'
208
- ? ev.data
209
- : new Uint8Array(ev.data)
210
- await writeCmd({
211
- type: 'sendWsMessage',
212
- id: generateRpcRequestId(),
213
- request: { id, data }
214
- })
215
- }
216
-
217
- return {}
218
- }
219
-
220
- if(cmd.type === 'sendWsMessage') {
221
- const { request: { id, data } } = cmd
222
- const ws = wsMap[id]
223
- if(!ws) {
224
- throw new Error(`WebSocket with id ${id} not found`)
225
- }
226
-
227
- ws.send(data)
228
- return {}
229
- }
230
-
231
- if(cmd.type === 'executeZkFunctionV3') {
232
- const { request: { fn, args } } = cmd
233
- // @ts-expect-error
234
- const result = await GNARK_ZK[fn]!(...args)
235
- return result
236
- }
237
-
238
- if(cmd.type === 'createClaimStep') {
239
- return
240
- }
241
-
242
- throw new Error(`Unknown command: ${cmd.type}`)
243
- }
244
-
245
- async function rpc<T>(cmd: JSCIncomingMsg) {
246
- if(!('id' in cmd)) {
247
- throw new Error('RPC command must have an id')
248
- }
249
-
250
- const waitForRes = new Promise<T>((resolve, reject) => {
251
- pendingRpcMap[cmd.id] = data => {
252
- if(data.type === 'error') {
253
- reject(new Error(data.data.message))
254
- return
255
- }
256
-
257
- resolve(data['response'] as T)
258
- }
259
- })
260
- await writeCmd(cmd)
261
-
262
- return waitForRes
263
- }
264
-
265
- function writeCmd(cmd: JSCIncomingMsg) {
266
- const cmdStr = JSON.stringify(cmd, B64_JSON_REPLACER)
267
- return new Promise<void>((resolve, reject) => {
268
- prc.stdin!.write(asciiToUint8Array(cmdStr + '\n'), (err) => {
269
- if(err) {
270
- reject(err)
271
- } else {
272
- resolve()
273
- }
274
- })
275
- })
276
- }
277
- }
278
-
279
- function *tryReadCmds(str: string | Uint8Array): Generator<JSCOutgoingMsg> {
280
- str = typeof str === 'string' ? str : uint8ArrayToBinaryStr(str)
281
- const lines = str.split('\n')
282
- for(const line of lines) {
283
- try {
284
- const cmd = JSON.parse(line, B64_JSON_REVIVER)
285
- if(
286
- typeof cmd !== 'object'
287
- || !cmd.type
288
- || cmd.module !== 'attestor-core'
289
- ) {
290
- continue
291
- }
292
-
293
- yield cmd as JSCOutgoingMsg
294
- } catch{}
295
- }
296
- }
@@ -1,106 +0,0 @@
1
- /**
2
- * Mock HTTPS server to implement the "mock-login" provider
3
- */
4
- import { readFileSync } from 'fs'
5
- import { createServer } from 'https'
6
-
7
- import { logger } from '#src/utils/index.ts'
8
-
9
- /**
10
- * Mock https server to test claim creation.
11
- * It implements a GET /me endpoint that returns the email address
12
- * of the user. A bearer token is expected in the Authorization header.
13
- *
14
- * The bearer token is expected to be the email address without the domain.
15
- * Eg. to claim the email address "abcd@mock.com", the header
16
- * should be "Authorization: Bearer abcd".
17
- */
18
- export function createMockServer(port: number) {
19
- const tlsSessionStore: Record<string, Buffer> = {}
20
-
21
- const server = createServer(
22
- {
23
- key: readFileSync('./cert/private-key.pem'),
24
- cert: readFileSync('./cert/public-cert.pem'),
25
- }
26
- )
27
-
28
- server.on('request', (req, res) => {
29
- if(req.method !== 'GET') {
30
- endWithError(405, 'invalid method')
31
- return
32
- }
33
-
34
- if(!req.url?.startsWith('/me')) {
35
- endWithError(404, 'invalid path')
36
- return
37
- }
38
-
39
- const auth = req.headers.authorization
40
- if(!auth) {
41
- endWithError(401, 'missing authorization header')
42
- return
43
- }
44
-
45
- if(!auth?.startsWith('Bearer ')) {
46
- endWithError(401, 'invalid authorization header')
47
- return
48
- }
49
-
50
- const userId = auth.slice('Bearer '.length)
51
- const emailAddress = userId + '@mock.com'
52
- const resp = { emailAddress }
53
- const parsedUrl = new URL(req.url, 'http://localhost')
54
-
55
- const split = parsedUrl.searchParams.get('splitDataAcrossPackets')
56
- if(split === 'true') {
57
- // simulate spread across multiple packets by adding delays
58
- // in sending the response
59
- const str = JSON.stringify({ emailAddress })
60
- const splitStart = str.indexOf(userId) + 4
61
- if(splitStart <= 0 || splitStart >= str.length - 1) {
62
- endWithError(500, 'could not split response')
63
- return
64
- }
65
-
66
- res.writeHead(200, {
67
- 'Content-Type': 'application/json',
68
- 'Content-Length': str.length.toString(),
69
- })
70
- res.write(str.slice(0, splitStart))
71
-
72
- setTimeout(() => {
73
- res.write(str.slice(splitStart))
74
- res.end()
75
- }, 500)
76
-
77
- logger.info({ emailAddress }, 'sent split response')
78
-
79
- return
80
- }
81
-
82
- endWithJson(200, resp)
83
- logger.info({ emailAddress }, 'ended with success')
84
-
85
- function endWithError(status: number, message: string) {
86
- endWithJson(status, { error: message })
87
-
88
- logger.info({ status, message }, 'ended with error')
89
- }
90
-
91
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
- function endWithJson(status: number, json: any) {
93
- const str = JSON.stringify(json)
94
- res.writeHead(status, {
95
- 'Content-Type': 'application/json',
96
- 'Content-Length': str.length.toString(),
97
- })
98
- res.write(str)
99
- res.end()
100
- }
101
- })
102
-
103
- server.listen(port)
104
-
105
- return { server, tlsSessionStore }
106
- }
@@ -1,25 +0,0 @@
1
- import { setCryptoImplementation } from '@joclaim/tls'
2
- import { webcryptoCrypto } from '@joclaim/tls/webcrypto'
3
- import { mock } from 'node:test'
4
- import '#src/server/utils/config-env.ts'
5
-
6
- import { preparePacketsForReveal } from '#src/utils/prepare-packets.ts'
7
-
8
- setCryptoImplementation(webcryptoCrypto)
9
-
10
- /**
11
- * Spies on the preparePacketsForReveal function
12
- */
13
- export const SPY_PREPARER = mock.fn(preparePacketsForReveal)
14
-
15
- mock.module('#src/utils/prepare-packets.ts', {
16
- namedExports: {
17
- preparePacketsForReveal: SPY_PREPARER
18
- }
19
- })
20
-
21
- mock.module('#src/server/utils/apm.ts', {
22
- namedExports: {
23
- getApm: mock.fn()
24
- }
25
- })
Binary file
@@ -1,115 +0,0 @@
1
- import assert from 'node:assert'
2
- import { beforeEach, it } from 'node:test'
3
-
4
- import { AttestorClient } from '#src/client/index.ts'
5
- import { describeWithServer } from '#src/tests/describe-with-server.ts'
6
- import { AttestorError, logger } from '#src/utils/index.ts'
7
-
8
- describeWithServer('RPC Communication', opts => {
9
-
10
- const { getClientOnServer } = opts
11
-
12
- let client: AttestorClient
13
- beforeEach(() => {
14
- client = opts.client
15
- })
16
-
17
- it('should successfully initialise a session', async() => {
18
- await client.waitForInit()
19
- assert.ok(client.isInitialised)
20
- // ensure the server has our client
21
- assert.ok(getClientOnServer())
22
- })
23
-
24
- it('should gracefully handle terminated connection during init', async() => {
25
- await client.terminateConnection()
26
- client = new AttestorClient({
27
- logger,
28
- // a URL without a WS server
29
- url: `ws://localhost:${opts.mockhttpsServerPort}`
30
- })
31
- await assert.rejects(
32
- () => client.waitForInit(),
33
- err => {
34
- assert.ok(err instanceof AttestorError)
35
- assert.strictEqual(err.code, 'ERROR_NETWORK_ERROR')
36
- return true
37
- }
38
- )
39
- })
40
-
41
- it('should gracefully handle connection termination', async() => {
42
- const err = new AttestorError(
43
- 'ERROR_INTERNAL',
44
- 'Test error',
45
- { abcd: 1 }
46
- )
47
- const waitForEnd = new Promise<AttestorError>(resolve => {
48
- client.addEventListener('connection-terminated', d => {
49
- resolve(d.data)
50
- })
51
- })
52
-
53
- const ws = getClientOnServer()!
54
- await ws.terminateConnection(err)
55
- const recvErr = await waitForEnd
56
- assert.deepEqual(recvErr, err)
57
- assert.ok(!client.isOpen)
58
- })
59
-
60
- it('should terminate connection to server', async() => {
61
- const ws = getClientOnServer()!
62
- const waitForEnd = new Promise<AttestorError>(resolve => {
63
- ws.addEventListener('connection-terminated', d => {
64
- resolve(d.data)
65
- })
66
- })
67
-
68
- await client.terminateConnection()
69
- await waitForEnd
70
- })
71
-
72
- it('should handle RPC error response', async() => {
73
- const err = new AttestorError(
74
- 'ERROR_INTERNAL',
75
- 'Test error',
76
- { abcd: 1 }
77
- )
78
-
79
- const ws = getClientOnServer()!
80
- ws.addEventListener('rpc-request', ev => {
81
- ev.stopImmediatePropagation()
82
- ev.data.respond(err)
83
- })
84
-
85
- await assert.rejects(
86
- () => client.rpc(
87
- 'createTunnel',
88
- {
89
- host: 'localhost',
90
- port: 9999,
91
- }
92
- ),
93
- recvErr => {
94
- assert.partialDeepStrictEqual(recvErr, err)
95
- return true
96
- }
97
- )
98
- })
99
-
100
- it('should handle fetchCertificateBytes RPC', async() => {
101
- const url = 'http://cacerts.rapidssl.com/RapidSSLTLSRSACAG1.crt'
102
- const result = await client.rpc('fetchCertificateBytes', { url })
103
- assert.ok(result.bytes?.length)
104
- })
105
-
106
- it('should fail fetchCertificateBytes RPC', async() => {
107
- const url = 'http://cacerts.rapidssl.com/RapidSSLTLSRSACAG1.crt1'
108
- await assert.rejects(
109
- () => client.rpc('fetchCertificateBytes', { url }),
110
- err => {
111
- return err instanceof AttestorError
112
- }
113
- )
114
- })
115
- })