@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,453 +0,0 @@
1
- import type { CipherSuite } from '@joclaim/tls'
2
- import { crypto, encryptWrappedRecord, SUPPORTED_CIPHER_SUITE_MAP } from '@joclaim/tls'
3
- import type { ZKEngine } from '@joclaim/zk-symmetric-crypto'
4
- import assert from 'node:assert'
5
- import { describe, it } from 'node:test'
6
- import '#src/server/utils/config-env.ts'
7
-
8
- import { TOPRF_DOMAIN_SEPARATOR } from '#src/config/index.ts'
9
- import type { MessageReveal_ZKProof as ZKProof } from '#src/proto/api.ts'
10
- import { ZKProofEngine } from '#src/proto/api.ts'
11
- import { toprf } from '#src/server/handlers/toprf.ts'
12
- import type { CompleteTLSPacket, MessageRevealInfo, RedactedOrHashedArraySlice, TOPRFProofParams } from '#src/types/index.ts'
13
- import {
14
- getBlocksToReveal,
15
- isTls13Suite,
16
- logger,
17
- makeDefaultOPRFOperator,
18
- makeZkProofGenerator,
19
- preparePacketsForReveal,
20
- redactSlices,
21
- strToUint8Array,
22
- uint8ArrayToStr,
23
- verifyZkPacket
24
- } from '#src/utils/index.ts'
25
-
26
- const ZK_CIPHER_SUITES: CipherSuite[] = [
27
- 'TLS_CHACHA20_POLY1305_SHA256',
28
- 'TLS_AES_128_GCM_SHA256',
29
- 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
30
- ]
31
-
32
- const ZK_ENGINES: ZKEngine[] = [
33
- 'gnark',
34
- 'snarkjs'
35
- ]
36
-
37
- type RedactionTestVector = {
38
- input: string[]
39
- output: string[]
40
- redactions: RedactedOrHashedArraySlice[]
41
- }
42
-
43
- describe('Redaction Tests', () => {
44
-
45
- it('should correctly redact blocks', async() => {
46
- const vectors: RedactionTestVector[] = [
47
- {
48
- input: [
49
- 'hell',
50
- 'o world'
51
- ],
52
- output: [
53
- 'h***',
54
- '* world'
55
- ],
56
- redactions: [
57
- { fromIndex: 1, toIndex: 5 }
58
- ]
59
- },
60
- {
61
- input: [
62
- 'hell',
63
- 'o world'
64
- ],
65
- output: [
66
- // first block is completely
67
- // redacted, so it won't be included
68
- '* world'
69
- ],
70
- redactions: [
71
- { fromIndex: 0, toIndex: 5 }
72
- ]
73
- },
74
- {
75
- input: [
76
- 'hello',
77
- 'how',
78
- 'do',
79
- 'you',
80
- 'do'
81
- ],
82
- output: [
83
- 'he**o',
84
- 'd*',
85
- 'y*u',
86
- 'do'
87
- ],
88
- redactions: [
89
- { fromIndex: 2, toIndex: 4 },
90
- { fromIndex: 5, toIndex: 8 },
91
- { fromIndex: 9, toIndex: 10 },
92
- { fromIndex: 11, toIndex: 12 }
93
- ]
94
- }
95
- ]
96
-
97
- for(const { input, output, redactions } of vectors) {
98
- const realOutput = await getBlocksToReveal(
99
- input.map(i => ({ plaintext: Buffer.from(i) })),
100
- () => redactions,
101
- () => {
102
- throw new Error('should not call this')
103
- }
104
- )
105
- assert(realOutput !== 'all', 'should not return "all"')
106
-
107
- assert.equal(realOutput.length, output.length)
108
- for(const [i, element] of output.entries()) {
109
- assert.equal(
110
- uint8ArrayToStr(realOutput[i].redactedPlaintext),
111
- element
112
- )
113
- }
114
- }
115
- })
116
-
117
- it('should correctly hash blocks', async() => {
118
- const nullifer = strToUint8Array('abcdefg')
119
- const base64Nullifier = Buffer.from(nullifer).toString('base64')
120
- const vectors: RedactionTestVector[] = [
121
- {
122
- input: [
123
- 'hell',
124
- 'o world'
125
- ],
126
- output: [
127
- 'h' + base64Nullifier.slice(0, 3),
128
- base64Nullifier.slice(3, 4) + ' world'
129
- ],
130
- redactions: [
131
- { fromIndex: 1, toIndex: 5, hash: 'oprf' }
132
- ]
133
- },
134
- {
135
- input: [
136
- 'hell',
137
- 'o world'
138
- ],
139
- output: [
140
- base64Nullifier.slice(0, 4),
141
- base64Nullifier.slice(4, 5) + ' world'
142
- ],
143
- redactions: [
144
- { fromIndex: 0, toIndex: 5, hash: 'oprf' }
145
- ]
146
- },
147
- ]
148
-
149
- for(const { input, output, redactions } of vectors) {
150
- const realOutput = await getBlocksToReveal(
151
- input.map(i => ({ plaintext: Buffer.from(i) })),
152
- () => redactions,
153
- async() => ({
154
- dataLocation: undefined,
155
- nullifier: nullifer,
156
- responses: [],
157
- mask: strToUint8Array('mask'),
158
- plaintext: strToUint8Array('abcdefg')
159
- })
160
- )
161
- assert(realOutput !== 'all', 'should not return "all"')
162
-
163
- assert.equal(realOutput.length, output.length)
164
- for(const [i, element] of output.entries()) {
165
- assert.equal(
166
- uint8ArrayToStr(realOutput[i].redactedPlaintext),
167
- element
168
- )
169
- }
170
- }
171
- })
172
- })
173
-
174
- describe('OPRF Slicing Tests', () => {
175
-
176
- const cipherSuite: CipherSuite = 'TLS_CHACHA20_POLY1305_SHA256'
177
- const alg = 'CHACHA20-POLY1305'
178
- const zkEngine = 'gnark'
179
- const keylength = 32
180
-
181
- it('should correctly demarcate blocks for OPRF', async() => {
182
- const plaintext = `lorem ipsum dolor sit amet, consectetur adipiscing elit,
183
- sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
184
- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
185
- nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
186
- cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
187
- cupidatat non proident, sunt in culpa qui officia deserunt mollit anim
188
- id est laborum`
189
- const vectors = [
190
- {
191
- plaintext: plaintext,
192
- redactions: [
193
- { fromIndex: 0, toIndex: 35, hash: 'oprf' as const },
194
- ]
195
- },
196
- {
197
- plaintext: plaintext,
198
- redactions: [
199
- { fromIndex: 128, toIndex: 138, hash: 'oprf' as const },
200
- ]
201
- },
202
- {
203
- plaintext: plaintext,
204
- redactions: [
205
- { fromIndex: 125, toIndex: 135, hash: 'oprf' as const },
206
- ]
207
- }
208
- ]
209
-
210
- const key = Buffer.alloc(keylength, 0)
211
- key[0] = 1
212
- key[3] = 4
213
- const {
214
- ivLength: fixedIvLength,
215
- } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite]
216
- const fixedIv = Buffer.alloc(fixedIvLength, 0)
217
- fixedIv[0] = 1
218
- fixedIv[3] = 4
219
-
220
- const encKey = await crypto.importKey(alg, key)
221
-
222
- for(const [i, { plaintext, redactions }] of vectors.entries()) {
223
- const plaintextArr = Buffer.from(plaintext)
224
- const { ciphertext, iv } = await encryptWrappedRecord(
225
- plaintextArr,
226
- {
227
- key: encKey,
228
- iv: fixedIv,
229
- recordNumber: 1234,
230
- recordHeaderOpts: { type: 'WRAPPED_RECORD' },
231
- cipherSuite,
232
- version: isTls13Suite(cipherSuite) ? 'TLS1_3' : 'TLS1_2',
233
- }
234
- )
235
-
236
- const packet: CompleteTLSPacket = {
237
- type: 'ciphertext',
238
- encKey,
239
- iv,
240
- recordNumber: 1234,
241
- plaintext: plaintextArr,
242
- ciphertext,
243
- fixedIv: fixedIv,
244
- data: ciphertext
245
- }
246
-
247
- const blocksToReveal
248
- = await getBlocksToReveal([packet], () => redactions, performOprf)
249
- assert(blocksToReveal !== 'all')
250
- assert.equal(blocksToReveal.length, 1)
251
- assert.ok(blocksToReveal[0].toprfs)
252
-
253
- const revealsMap: Map<CompleteTLSPacket, MessageRevealInfo> = new Map()
254
- revealsMap.set(packet, {
255
- type: 'zk',
256
- redactedPlaintext: blocksToReveal[0].redactedPlaintext,
257
- toprfs: blocksToReveal[0].toprfs
258
- })
259
-
260
- const revealedMessages = await preparePacketsForReveal(
261
- [{ sender: 'server', message: packet }],
262
- revealsMap,
263
- {
264
- logger,
265
- cipherSuite: cipherSuite,
266
- zkEngine: zkEngine,
267
- }
268
- )
269
-
270
- const zkReveal = revealedMessages[0].reveal?.zkReveal
271
- assert.ok(zkReveal?.proofs?.length)
272
- assert.ok(zkReveal?.toprfs?.length)
273
-
274
- const x = await verifyZkPacket(
275
- {
276
- ciphertext,
277
- zkReveal,
278
- logger,
279
- cipherSuite,
280
- zkEngine,
281
- recordNumber: 1234,
282
- iv: fixedIv,
283
- getNextPacket() {
284
- throw new Error('should not be called in this test')
285
- }
286
- },
287
- )
288
-
289
- assert.deepEqual(
290
- uint8ArrayToStr(x.redactedPlaintext),
291
- uint8ArrayToStr(blocksToReveal[0].redactedPlaintext)
292
- )
293
-
294
- console.log(`done: ${i + 1}/${vectors.length}`)
295
- }
296
- })
297
-
298
- async function performOprf(plaintext: Uint8Array) {
299
- logger.info({ length: plaintext.length }, 'generating OPRF...')
300
-
301
- const oprfOperator = makeDefaultOPRFOperator(
302
- 'chacha20',
303
- zkEngine,
304
- logger
305
- )
306
- const reqData = await oprfOperator.generateOPRFRequestData(
307
- plaintext,
308
- TOPRF_DOMAIN_SEPARATOR,
309
- logger
310
- )
311
- const res = await toprf(
312
- {
313
- maskedData: reqData.maskedData,
314
- engine: ZKProofEngine.ZK_ENGINE_GNARK
315
- },
316
- { logger } as any
317
- )
318
- const nullifier = await oprfOperator.finaliseOPRF(
319
- res.publicKeyShare,
320
- reqData,
321
- [res]
322
- )
323
-
324
- const data: TOPRFProofParams = {
325
- nullifier,
326
- responses: [res],
327
- mask: reqData.mask,
328
- dataLocation: undefined,
329
- plaintext
330
- }
331
-
332
- return data
333
- }
334
- })
335
-
336
- const ZK_TEST_MATRIX = ZK_CIPHER_SUITES.flatMap(cipherSuite => (
337
- ZK_ENGINES.map(zkEngine => ({ cipherSuite, zkEngine }))
338
- ))
339
-
340
- for(const { cipherSuite, zkEngine } of ZK_TEST_MATRIX) {
341
- describe(`[${cipherSuite}]-[${zkEngine}] should generate ZK proof for ciphertext`, () => {
342
- const zkProofConcurrency = zkEngine === 'snarkjs' ? 1 : undefined
343
-
344
- it(zkEngine + '-' + cipherSuite, async() => {
345
- const alg = cipherSuite.includes('CHACHA20')
346
- ? 'CHACHA20-POLY1305'
347
- : (
348
- cipherSuite.includes('AES_256_GCM')
349
- ? 'AES-256-GCM'
350
- : 'AES-128-GCM'
351
- )
352
- const keylength = alg === 'AES-128-GCM' ? 16 : 32
353
- const key = Buffer.alloc(keylength, 0)
354
- key[0] = 1
355
- key[3] = 4
356
- const {
357
- ivLength: fixedIvLength,
358
- } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite]
359
- const fixedIv = Buffer.alloc(fixedIvLength, 0)
360
- fixedIv[0] = 1
361
- fixedIv[3] = 4
362
-
363
- const encKey = await crypto.importKey(alg, key)
364
- const vectors = [
365
- {
366
- plaintext:
367
- 'My cool API secret is "my name jeff". Please don\'t reveal it',
368
- redactions: [
369
- { fromIndex: 23, toIndex: 35 }
370
- ]
371
- },
372
- {
373
- plaintext: `lorem ipsum dolor sit amet, consectetur adipiscing elit,
374
- sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
375
- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
376
- nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
377
- cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
378
- cupidatat non proident, sunt in culpa qui officia deserunt mollit anim
379
- id est laborum`,
380
- redactions: [
381
- { fromIndex: 5, toIndex: 15 },
382
- ]
383
- }
384
- ]
385
-
386
- const proofGenerator = await makeZkProofGenerator({
387
- logger,
388
- cipherSuite,
389
- zkEngine,
390
- zkProofConcurrency,
391
- })
392
- for(const { plaintext, redactions } of vectors) {
393
- const plaintextArr = Buffer.from(plaintext)
394
- const redactedPlaintext = redactSlices(plaintextArr, redactions)
395
- // ensure redaction fn kinda works at least
396
- assert.notEqual(redactedPlaintext, plaintextArr)
397
-
398
- const { ciphertext, iv } = await encryptWrappedRecord(
399
- plaintextArr,
400
- {
401
- key: encKey,
402
- iv: fixedIv,
403
- recordNumber: 1234,
404
- recordHeaderOpts: { type: 'WRAPPED_RECORD' },
405
- cipherSuite,
406
- version: cipherSuite.includes('ECDHE_')
407
- ? 'TLS1_2'
408
- : 'TLS1_3',
409
- }
410
- )
411
-
412
- const packet: CompleteTLSPacket = {
413
- type: 'ciphertext',
414
- encKey,
415
- iv,
416
- recordNumber: 1234,
417
- plaintext: plaintextArr,
418
- ciphertext,
419
- fixedIv: fixedIv,
420
- data: ciphertext
421
- }
422
-
423
- let proofs: ZKProof[] | undefined
424
- await proofGenerator.addPacketToProve(
425
- packet,
426
- { type: 'zk', redactedPlaintext },
427
- p => proofs = p,
428
- () => {
429
- throw new Error('should not be called in this test')
430
- }
431
- )
432
- await proofGenerator.generateProofs()
433
-
434
- const x = await verifyZkPacket(
435
- {
436
- ciphertext,
437
- zkReveal: { proofs: proofs!, toprfs: [] },
438
- logger,
439
- cipherSuite,
440
- zkEngine: zkEngine,
441
- recordNumber: 1234,
442
- iv: fixedIv,
443
- getNextPacket() {
444
- throw new Error('should not be called in this test')
445
- }
446
- },
447
- )
448
-
449
- assert.deepEqual(redactedPlaintext, x.redactedPlaintext)
450
- }
451
- })
452
- })
453
- }
package/src/types/bgp.ts DELETED
@@ -1,17 +0,0 @@
1
-
2
- export type BGPAnnouncementOverlapData = {
3
- prefix: string
4
- }
5
-
6
- export type BGPListener = {
7
- /**
8
- * Add an IP to listen for overlap,
9
- * @returns a function to remove the IP from the listener
10
- */
11
- onOverlap(
12
- ips: string[],
13
- callback: (event: BGPAnnouncementOverlapData) => void
14
- ): (() => void)
15
-
16
- close(): void
17
- }
@@ -1,79 +0,0 @@
1
- import type { ProviderClaimData } from '#src/proto/api.ts'
2
- import type { IAttestorClient, IAttestorClientInitParams } from '#src/types/client.ts'
3
- import type { CompleteTLSPacket, Logger } from '#src/types/general.ts'
4
- import type { ProofGenerationStep, ProviderName, ProviderParams, ProviderSecretParams } from '#src/types/providers.ts'
5
- import type { Transcript } from '#src/types/tunnel.ts'
6
- import type { PrepareZKProofsBaseOpts } from '#src/types/zk.ts'
7
-
8
- /**
9
- * Uniquely identifies a claim.
10
- * Hash of claim info.
11
- * Utilise `getIdentifierFromClaimInfo` to obtain this.
12
- */
13
- export type ClaimID = ProviderClaimData['identifier']
14
-
15
- export type ClaimInfo = Pick<ProviderClaimData, 'context' | 'provider' | 'parameters'>
16
-
17
- export type AnyClaimInfo = ClaimInfo | { identifier: ClaimID }
18
-
19
- export type CompleteClaimData = Pick<ProviderClaimData, 'owner' | 'timestampS' | 'epoch'>
20
- & AnyClaimInfo
21
-
22
- export type CreateClaimOnAttestorOpts<N extends ProviderName> = {
23
- /** name of the provider to generate signed receipt for */
24
- name: N
25
- /**
26
- * secrets that are used to make the API request;
27
- * not included in the receipt & cannot be viewed by anyone
28
- * outside this client
29
- */
30
- secretParams: ProviderSecretParams<N>
31
- params: ProviderParams<N>
32
- /**
33
- * Some metadata context to be included in the claim
34
- */
35
- context?: { [key: string]: any }
36
-
37
- onStep?(step: ProofGenerationStep): void
38
- /**
39
- * Private key in hex format,
40
- * prefixed with '0x'
41
- */
42
- ownerPrivateKey: string
43
- /**
44
- * Provide either the client or the URL
45
- * to the server -- so a client can be created internally.
46
- *
47
- * The created client will go into the global client pool.
48
- */
49
- client: IAttestorClient | IAttestorClientInitParams
50
- /**
51
- * Optionally set the timestamp of the claim
52
- * in unix seconds. If not provided, the current
53
- * time will be used.
54
- */
55
- timestampS?: number
56
-
57
- logger?: Logger
58
-
59
- /**
60
- * Maximum number of retries to attempt
61
- * @default 3
62
- */
63
- maxRetries?: number
64
- /**
65
- * Optionally update the provider parameters
66
- * based on the transcript
67
- */
68
- updateProviderParams? (transcript: Transcript<CompleteTLSPacket>, tlsVersion: string): Promise<{
69
- params: Partial<ProviderParams<N>>
70
- secretParams: Partial<ProviderSecretParams<N>>
71
- }>
72
-
73
- /**
74
- * Replaces paramValue with corresponding OPRF hash before proof is made
75
- * Only if there's matching redaction exists
76
- * For example: "domain.com" -> "dv4Nrgtr"
77
- */
78
- updateParametersFromOprfData?: boolean
79
- } & PrepareZKProofsBaseOpts