@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,429 +0,0 @@
1
- import type {
2
- CipherSuite, TLSProtocolVersion } from '@joclaim/tls'
3
- import {
4
- areUint8ArraysEqual,
5
- CONTENT_TYPE_MAP,
6
- crypto,
7
- decryptWrappedRecord,
8
- PACKET_TYPE,
9
- SUPPORTED_CIPHER_SUITE_MAP,
10
- uint8ArrayToBinaryStr,
11
- uint8ArrayToDataView } from '@joclaim/tls'
12
- import { REDACTION_CHAR_CODE } from '@joclaim/zk-symmetric-crypto'
13
-
14
- import { RPCMessage, RPCMessages } from '#src/proto/api.ts'
15
- import type {
16
- CompleteTLSPacket,
17
- IDecryptedTranscript, IDecryptedTranscriptMessage,
18
- ProviderField,
19
- RPCEvent,
20
- RPCEventMap,
21
- RPCEventType,
22
- RPCType,
23
- Transcript
24
- } from '#src/types/index.ts'
25
-
26
- const DEFAULT_REDACTION_DATA = new Uint8Array(4)
27
- .fill(REDACTION_CHAR_CODE)
28
-
29
- export { uint8ArrayToBinaryStr }
30
-
31
- /**
32
- * Decodes a Uint8Array to a UTF-8 string.
33
- */
34
- export function uint8ArrayToStr(arr: Uint8Array) {
35
- return new TextDecoder().decode(arr)
36
- }
37
-
38
- /**
39
- * Encodes a UTF-8 string to a Uint8Array.
40
- */
41
- export function strToUint8Array(str: string): Uint8Array {
42
- return new TextEncoder().encode(str)
43
- }
44
-
45
- export function getTranscriptString(receipt: IDecryptedTranscript) {
46
- const applMsgs = extractApplicationDataFromTranscript(receipt)
47
- const strList: string[] = []
48
- for(const { message, sender } of applMsgs) {
49
- const content = uint8ArrayToStr(message)
50
- if(strList[strList.length - 1]?.startsWith(sender)) {
51
- strList[strList.length - 1] += content
52
- } else {
53
- strList.push(`${sender}: ${content}`)
54
- }
55
- }
56
-
57
- return strList.join('\n')
58
- }
59
-
60
- export const unixTimestampSeconds = () => Math.floor(Date.now() / 1000)
61
-
62
- /**
63
- * Find index of needle in haystack
64
- */
65
- export function findIndexInUint8Array(
66
- haystack: Uint8Array,
67
- needle: Uint8Array,
68
- ) {
69
- for(let i = 0; i < haystack.length; i++) {
70
- if(areUint8ArraysEqual(haystack.slice(i, i + needle.length), needle)) {
71
- return i
72
- }
73
- }
74
-
75
- return -1
76
- }
77
-
78
- /**
79
- * Fetch the ZK algorithm for the specified cipher suite
80
- */
81
- export function getZkAlgorithmForCipherSuite(cipherSuite: CipherSuite) {
82
- if(cipherSuite.includes('CHACHA20')) {
83
- return 'chacha20'
84
- }
85
-
86
- if(cipherSuite.includes('AES_256_GCM')) {
87
- return 'aes-256-ctr'
88
- }
89
-
90
- if(cipherSuite.includes('AES_128_GCM')) {
91
- return 'aes-128-ctr'
92
- }
93
-
94
- throw new Error(`${cipherSuite} not supported for ZK ops`)
95
- }
96
-
97
- /**
98
- * Get the pure ciphertext without any MAC,
99
- * or authentication tag,
100
- * @param content content w/o header
101
- * @param cipherSuite
102
- */
103
- export function getPureCiphertext(
104
- content: Uint8Array,
105
- cipherSuite: CipherSuite
106
- ) {
107
- // assert that the cipher suite is supported
108
- getZkAlgorithmForCipherSuite(cipherSuite)
109
-
110
- // 16 => auth tag length
111
- content = content.slice(0, -16)
112
-
113
- const {
114
- ivLength: fixedIvLength,
115
- } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite]
116
- // 12 => total IV length
117
- const recordIvLength = 12 - fixedIvLength
118
- // record IV is prefixed to the ciphertext
119
- content = content.slice(recordIvLength)
120
-
121
- return content
122
- }
123
-
124
-
125
- /**
126
- * Get the 8 byte IV part that's stored in the record for some cipher suites
127
- * @param content content w/o header
128
- * @param cipherSuite
129
- */
130
- export function getRecordIV(
131
- content: Uint8Array,
132
- cipherSuite: CipherSuite
133
- ) {
134
- // assert that the cipher suite is supported
135
- getZkAlgorithmForCipherSuite(cipherSuite)
136
-
137
- const {
138
- ivLength: fixedIvLength,
139
- } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite]
140
- // 12 => total IV length
141
- const recordIvLength = 12 - fixedIvLength
142
- return content.slice(0, recordIvLength)
143
- }
144
-
145
- export function getProviderValue<P, S, T>(params: P, fn: ProviderField<P, S, T>, secretParams?: S) {
146
- return typeof fn === 'function'
147
- // @ts-ignore
148
- ? fn(params, secretParams) as T
149
- : fn
150
- }
151
-
152
- export function generateRpcMessageId() {
153
- return uint8ArrayToDataView(crypto.randomBytes(4)).getUint32(0)
154
- }
155
-
156
- /**
157
- * Random session ID for a WebSocket client.
158
- */
159
- export function generateSessionId() {
160
- return generateRpcMessageId()
161
- }
162
-
163
- /**
164
- * Random ID for a tunnel.
165
- */
166
- export function generateTunnelId() {
167
- return generateRpcMessageId()
168
- }
169
-
170
- export function makeRpcEvent<T extends RPCEventType>(
171
- type: T,
172
- data: RPCEventMap[T]
173
- ) {
174
- const ev = new Event(type) as RPCEvent<T>
175
- ev.data = data
176
- return ev
177
- }
178
-
179
- /**
180
- * Get the RPC type from the key.
181
- * For eg. "claimTunnelRequest" ->
182
- * { type: 'claimTunnel', direction: 'request' }
183
- */
184
- export function getRpcTypeFromKey(key: string) {
185
- if(key.endsWith('Request')) {
186
- return {
187
- type: key.slice(0, -7) as RPCType,
188
- direction: 'request' as const
189
- }
190
- }
191
-
192
- if(key.endsWith('Response')) {
193
- return {
194
- type: key.slice(0, -8) as RPCType,
195
- direction: 'response' as const
196
- }
197
- }
198
- }
199
-
200
- /**
201
- * Get the RPC response type from the RPC type.
202
- * For eg. "claimTunnel" -> "claimTunnelResponse"
203
- */
204
- export function getRpcResponseType<T extends RPCType>(type: T) {
205
- return `${type}Response` as const
206
- }
207
-
208
- /**
209
- * Get the RPC request type from the RPC type.
210
- * For eg. "claimTunnel" -> "claimTunnelRequest"
211
- */
212
- export function getRpcRequestType<T extends RPCType>(type: T) {
213
- return `${type}Request` as const
214
- }
215
-
216
- export function isApplicationData(
217
- packet: CompleteTLSPacket,
218
- tlsVersion: string | undefined
219
- ) {
220
- return packet.type === 'ciphertext'
221
- && (
222
- packet.contentType === 'APPLICATION_DATA'
223
- || (
224
- packet.data[0] === PACKET_TYPE.WRAPPED_RECORD
225
- && tlsVersion === 'TLS1_2'
226
- )
227
- )
228
- }
229
-
230
- /**
231
- * Convert the received data from a WS to a Uint8Array
232
- */
233
- export async function extractArrayBufferFromWsData(
234
- data: unknown
235
- ): Promise<Uint8Array> {
236
- if(data instanceof ArrayBuffer) {
237
- return new Uint8Array(data)
238
- }
239
-
240
- // uint8array/Buffer
241
- if(
242
- data instanceof Uint8Array
243
- || (typeof data === 'object' && data && 'buffer' in data)
244
- ) {
245
- return data as Uint8Array
246
- }
247
-
248
- if(typeof data === 'string') {
249
- return strToUint8Array(data)
250
- }
251
-
252
- if(typeof Blob !== 'undefined' && data instanceof Blob) {
253
- return new Uint8Array(await data.arrayBuffer())
254
- }
255
-
256
- throw new Error('unsupported data: ' + String(data))
257
- }
258
-
259
- /**
260
- * Check if the RPC message is a request or a response.
261
- */
262
- export function getRpcRequest(msg: RPCMessage) {
263
- if(msg.requestError) {
264
- return {
265
- direction: 'response' as const,
266
- type: 'error' as const
267
- }
268
- }
269
-
270
- for(const key in msg) {
271
- if(!msg[key]) {
272
- continue
273
- }
274
-
275
- const rpcType = getRpcTypeFromKey(key)
276
- if(!rpcType) {
277
- continue
278
- }
279
-
280
- return rpcType
281
- }
282
- }
283
-
284
- /**
285
- * Finds all application data messages in a transcript
286
- * and returns them. Removes the "contentType" suffix from the message.
287
- * in TLS 1.3
288
- */
289
- export function extractApplicationDataFromTranscript(
290
- { transcript, tlsVersion }: IDecryptedTranscript,
291
- ) {
292
- const msgs: Transcript<Uint8Array> = []
293
- for(const m of transcript) {
294
- let message: Uint8Array
295
- // redacted msgs but with a valid packet header
296
- // can be considered application data messages
297
- if(m.redacted) {
298
- if(!m.plaintextLength) {
299
- message = DEFAULT_REDACTION_DATA
300
- } else {
301
- const len = tlsVersion === 'TLS1_3'
302
- // remove content type suffix
303
- ? m.plaintextLength - 1
304
- : m.plaintextLength
305
- message = new Uint8Array(len)
306
- .fill(REDACTION_CHAR_CODE)
307
- }
308
- // otherwise, we need to check the content type
309
- } else if(tlsVersion === 'TLS1_3') {
310
- const contentType = m.message[m.message.length - 1]
311
- if(contentType !== CONTENT_TYPE_MAP['APPLICATION_DATA']) {
312
- continue
313
- }
314
-
315
- message = m.message.slice(0, -1)
316
- } else if(m.recordHeader[0] === PACKET_TYPE.WRAPPED_RECORD) {
317
- message = m.message
318
- } else {
319
- continue
320
- }
321
-
322
- msgs.push({ message, sender: m.sender })
323
- }
324
-
325
- return msgs
326
- }
327
-
328
- export type HandshakeTranscript<T> = {
329
- sender: 'client' | 'server'
330
- index: number
331
- message: T
332
- }[]
333
-
334
- export function extractHandshakeFromTranscript(
335
- { transcript, tlsVersion }: { transcript: IDecryptedTranscriptMessage[], tlsVersion: TLSProtocolVersion }
336
- ) {
337
- const msgs: HandshakeTranscript<Uint8Array> = []
338
- for(const [i, m] of transcript.entries()) {
339
- if(m.redacted) {
340
- break // stop at first encrypted message
341
- }
342
-
343
- let message: Uint8Array
344
- if(m.recordHeader[0] === PACKET_TYPE.HELLO) {
345
- message = m.message
346
- } else if(m.recordHeader[0] === PACKET_TYPE.WRAPPED_RECORD) {
347
- if(tlsVersion === 'TLS1_3') {
348
- const contentType = m.message[m.message.length - 1]
349
- if(contentType !== CONTENT_TYPE_MAP['HANDSHAKE']) {
350
- break
351
- }
352
-
353
- message = m.message.slice(0, -1)
354
- } else {
355
- break
356
- }
357
- } else {
358
- continue
359
- }
360
-
361
- if(!message.length) {
362
- throw new Error('unsupported handshake message')
363
- }
364
-
365
- msgs.push({ message, sender: m.sender, index: i })
366
-
367
- }
368
-
369
- return msgs
370
- }
371
-
372
- export async function decryptDirect(directReveal, cipherSuite: CipherSuite, recordHeader: Uint8Array, serverTlsVersion: TLSProtocolVersion, content: Uint8Array) {
373
- const { key, iv, recordNumber } = directReveal
374
- const { cipher } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite]
375
- const importedKey = await crypto.importKey(cipher, key)
376
- return await decryptWrappedRecord(
377
- content,
378
- {
379
- iv,
380
- key: importedKey,
381
- recordHeader,
382
- recordNumber,
383
- version: serverTlsVersion,
384
- cipherSuite,
385
- }
386
- )
387
- }
388
-
389
- export function packRpcMessages(...msgs: Partial<RPCMessage>[]) {
390
- return RPCMessages.create({
391
- messages: msgs.map(msg => (
392
- RPCMessage.create({
393
- ...msg,
394
- id: msg.id || generateRpcMessageId()
395
- })
396
- ))
397
- })
398
- }
399
-
400
- /**
401
- * Converts an Ethers struct (an array w named keys) to
402
- * a plain object. Recursively converts all structs inside.
403
- * Required to correctly JSON.stringify the struct.
404
- */
405
- export function ethersStructToPlainObject<T>(struct: T): T {
406
- if(!Array.isArray(struct)) {
407
- return struct
408
- }
409
-
410
- const namedKeys = Object.keys(struct)
411
- .filter(key => isNaN(Number(key)))
412
- // seems to be an actual array
413
- if(!namedKeys.length) {
414
- return struct.map(ethersStructToPlainObject) as any
415
- }
416
-
417
- const obj: any = {}
418
- for(const key of namedKeys) {
419
- obj[key] = ethersStructToPlainObject(struct[key])
420
- }
421
-
422
- return obj
423
- }
424
-
425
- export function isTls13Suite(suite: CipherSuite) {
426
- return suite === 'TLS_AES_128_GCM_SHA256'
427
- || suite === 'TLS_AES_256_GCM_SHA384'
428
- || suite === 'TLS_CHACHA20_POLY1305_SHA256'
429
- }