@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
@@ -0,0 +1,114 @@
1
+ import type { CipherSuite, TLSProtocolVersion } from '@joclaim/tls';
2
+ import { uint8ArrayToBinaryStr } from '@joclaim/tls';
3
+ import { RPCMessage, RPCMessages } from '../proto/api.js';
4
+ import type { CompleteTLSPacket, IDecryptedTranscript, IDecryptedTranscriptMessage, ProviderField, RPCEvent, RPCEventMap, RPCEventType, RPCType, Transcript } from '../types/index.js';
5
+ export { uint8ArrayToBinaryStr };
6
+ /**
7
+ * Decodes a Uint8Array to a UTF-8 string.
8
+ */
9
+ export declare function uint8ArrayToStr(arr: Uint8Array): string;
10
+ /**
11
+ * Encodes a UTF-8 string to a Uint8Array.
12
+ */
13
+ export declare function strToUint8Array(str: string): Uint8Array;
14
+ export declare function getTranscriptString(receipt: IDecryptedTranscript): string;
15
+ export declare const unixTimestampSeconds: () => number;
16
+ /**
17
+ * Find index of needle in haystack
18
+ */
19
+ export declare function findIndexInUint8Array(haystack: Uint8Array, needle: Uint8Array): number;
20
+ /**
21
+ * Fetch the ZK algorithm for the specified cipher suite
22
+ */
23
+ export declare function getZkAlgorithmForCipherSuite(cipherSuite: CipherSuite): "aes-256-ctr" | "aes-128-ctr" | "chacha20";
24
+ /**
25
+ * Get the pure ciphertext without any MAC,
26
+ * or authentication tag,
27
+ * @param content content w/o header
28
+ * @param cipherSuite
29
+ */
30
+ export declare function getPureCiphertext(content: Uint8Array, cipherSuite: CipherSuite): Uint8Array<ArrayBufferLike>;
31
+ /**
32
+ * Get the 8 byte IV part that's stored in the record for some cipher suites
33
+ * @param content content w/o header
34
+ * @param cipherSuite
35
+ */
36
+ export declare function getRecordIV(content: Uint8Array, cipherSuite: CipherSuite): Uint8Array<ArrayBuffer>;
37
+ export declare function getProviderValue<P, S, T>(params: P, fn: ProviderField<P, S, T>, secretParams?: S): T;
38
+ export declare function generateRpcMessageId(): number;
39
+ /**
40
+ * Random session ID for a WebSocket client.
41
+ */
42
+ export declare function generateSessionId(): number;
43
+ /**
44
+ * Random ID for a tunnel.
45
+ */
46
+ export declare function generateTunnelId(): number;
47
+ export declare function makeRpcEvent<T extends RPCEventType>(type: T, data: RPCEventMap[T]): RPCEvent<T>;
48
+ /**
49
+ * Get the RPC type from the key.
50
+ * For eg. "claimTunnelRequest" ->
51
+ * { type: 'claimTunnel', direction: 'request' }
52
+ */
53
+ export declare function getRpcTypeFromKey(key: string): {
54
+ type: RPCType;
55
+ direction: "request";
56
+ } | {
57
+ type: RPCType;
58
+ direction: "response";
59
+ } | undefined;
60
+ /**
61
+ * Get the RPC response type from the RPC type.
62
+ * For eg. "claimTunnel" -> "claimTunnelResponse"
63
+ */
64
+ export declare function getRpcResponseType<T extends RPCType>(type: T): `${T}Response`;
65
+ /**
66
+ * Get the RPC request type from the RPC type.
67
+ * For eg. "claimTunnel" -> "claimTunnelRequest"
68
+ */
69
+ export declare function getRpcRequestType<T extends RPCType>(type: T): `${T}Request`;
70
+ export declare function isApplicationData(packet: CompleteTLSPacket, tlsVersion: string | undefined): boolean;
71
+ /**
72
+ * Convert the received data from a WS to a Uint8Array
73
+ */
74
+ export declare function extractArrayBufferFromWsData(data: unknown): Promise<Uint8Array>;
75
+ /**
76
+ * Check if the RPC message is a request or a response.
77
+ */
78
+ export declare function getRpcRequest(msg: RPCMessage): {
79
+ type: RPCType;
80
+ direction: "request";
81
+ } | {
82
+ type: RPCType;
83
+ direction: "response";
84
+ } | {
85
+ direction: "response";
86
+ type: "error";
87
+ } | undefined;
88
+ /**
89
+ * Finds all application data messages in a transcript
90
+ * and returns them. Removes the "contentType" suffix from the message.
91
+ * in TLS 1.3
92
+ */
93
+ export declare function extractApplicationDataFromTranscript({ transcript, tlsVersion }: IDecryptedTranscript): Transcript<Uint8Array<ArrayBufferLike>>;
94
+ export type HandshakeTranscript<T> = {
95
+ sender: 'client' | 'server';
96
+ index: number;
97
+ message: T;
98
+ }[];
99
+ export declare function extractHandshakeFromTranscript({ transcript, tlsVersion }: {
100
+ transcript: IDecryptedTranscriptMessage[];
101
+ tlsVersion: TLSProtocolVersion;
102
+ }): HandshakeTranscript<Uint8Array<ArrayBufferLike>>;
103
+ export declare function decryptDirect(directReveal: any, cipherSuite: CipherSuite, recordHeader: Uint8Array, serverTlsVersion: TLSProtocolVersion, content: Uint8Array): Promise<{
104
+ plaintext: Uint8Array<ArrayBufferLike>;
105
+ iv: Uint8Array<ArrayBufferLike>;
106
+ }>;
107
+ export declare function packRpcMessages(...msgs: Partial<RPCMessage>[]): RPCMessages;
108
+ /**
109
+ * Converts an Ethers struct (an array w named keys) to
110
+ * a plain object. Recursively converts all structs inside.
111
+ * Required to correctly JSON.stringify the struct.
112
+ */
113
+ export declare function ethersStructToPlainObject<T>(struct: T): T;
114
+ export declare function isTls13Suite(suite: CipherSuite): suite is "TLS_CHACHA20_POLY1305_SHA256" | "TLS_AES_256_GCM_SHA384" | "TLS_AES_128_GCM_SHA256";
@@ -0,0 +1,317 @@
1
+ import { areUint8ArraysEqual, CONTENT_TYPE_MAP, crypto, decryptWrappedRecord, PACKET_TYPE, SUPPORTED_CIPHER_SUITE_MAP, uint8ArrayToBinaryStr, uint8ArrayToDataView } from '@joclaim/tls';
2
+ import { REDACTION_CHAR_CODE } from '@joclaim/zk-symmetric-crypto';
3
+ import { RPCMessage, RPCMessages } from '../proto/api.js';
4
+ const DEFAULT_REDACTION_DATA = new Uint8Array(4)
5
+ .fill(REDACTION_CHAR_CODE);
6
+ export { uint8ArrayToBinaryStr };
7
+ /**
8
+ * Decodes a Uint8Array to a UTF-8 string.
9
+ */
10
+ export function uint8ArrayToStr(arr) {
11
+ return new TextDecoder().decode(arr);
12
+ }
13
+ /**
14
+ * Encodes a UTF-8 string to a Uint8Array.
15
+ */
16
+ export function strToUint8Array(str) {
17
+ return new TextEncoder().encode(str);
18
+ }
19
+ export function getTranscriptString(receipt) {
20
+ const applMsgs = extractApplicationDataFromTranscript(receipt);
21
+ const strList = [];
22
+ for (const { message, sender } of applMsgs) {
23
+ const content = uint8ArrayToStr(message);
24
+ if (strList[strList.length - 1]?.startsWith(sender)) {
25
+ strList[strList.length - 1] += content;
26
+ }
27
+ else {
28
+ strList.push(`${sender}: ${content}`);
29
+ }
30
+ }
31
+ return strList.join('\n');
32
+ }
33
+ export const unixTimestampSeconds = () => Math.floor(Date.now() / 1000);
34
+ /**
35
+ * Find index of needle in haystack
36
+ */
37
+ export function findIndexInUint8Array(haystack, needle) {
38
+ for (let i = 0; i < haystack.length; i++) {
39
+ if (areUint8ArraysEqual(haystack.slice(i, i + needle.length), needle)) {
40
+ return i;
41
+ }
42
+ }
43
+ return -1;
44
+ }
45
+ /**
46
+ * Fetch the ZK algorithm for the specified cipher suite
47
+ */
48
+ export function getZkAlgorithmForCipherSuite(cipherSuite) {
49
+ if (cipherSuite.includes('CHACHA20')) {
50
+ return 'chacha20';
51
+ }
52
+ if (cipherSuite.includes('AES_256_GCM')) {
53
+ return 'aes-256-ctr';
54
+ }
55
+ if (cipherSuite.includes('AES_128_GCM')) {
56
+ return 'aes-128-ctr';
57
+ }
58
+ throw new Error(`${cipherSuite} not supported for ZK ops`);
59
+ }
60
+ /**
61
+ * Get the pure ciphertext without any MAC,
62
+ * or authentication tag,
63
+ * @param content content w/o header
64
+ * @param cipherSuite
65
+ */
66
+ export function getPureCiphertext(content, cipherSuite) {
67
+ // assert that the cipher suite is supported
68
+ getZkAlgorithmForCipherSuite(cipherSuite);
69
+ // 16 => auth tag length
70
+ content = content.slice(0, -16);
71
+ const { ivLength: fixedIvLength, } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite];
72
+ // 12 => total IV length
73
+ const recordIvLength = 12 - fixedIvLength;
74
+ // record IV is prefixed to the ciphertext
75
+ content = content.slice(recordIvLength);
76
+ return content;
77
+ }
78
+ /**
79
+ * Get the 8 byte IV part that's stored in the record for some cipher suites
80
+ * @param content content w/o header
81
+ * @param cipherSuite
82
+ */
83
+ export function getRecordIV(content, cipherSuite) {
84
+ // assert that the cipher suite is supported
85
+ getZkAlgorithmForCipherSuite(cipherSuite);
86
+ const { ivLength: fixedIvLength, } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite];
87
+ // 12 => total IV length
88
+ const recordIvLength = 12 - fixedIvLength;
89
+ return content.slice(0, recordIvLength);
90
+ }
91
+ export function getProviderValue(params, fn, secretParams) {
92
+ return typeof fn === 'function'
93
+ // @ts-ignore
94
+ ? fn(params, secretParams)
95
+ : fn;
96
+ }
97
+ export function generateRpcMessageId() {
98
+ return uint8ArrayToDataView(crypto.randomBytes(4)).getUint32(0);
99
+ }
100
+ /**
101
+ * Random session ID for a WebSocket client.
102
+ */
103
+ export function generateSessionId() {
104
+ return generateRpcMessageId();
105
+ }
106
+ /**
107
+ * Random ID for a tunnel.
108
+ */
109
+ export function generateTunnelId() {
110
+ return generateRpcMessageId();
111
+ }
112
+ export function makeRpcEvent(type, data) {
113
+ const ev = new Event(type);
114
+ ev.data = data;
115
+ return ev;
116
+ }
117
+ /**
118
+ * Get the RPC type from the key.
119
+ * For eg. "claimTunnelRequest" ->
120
+ * { type: 'claimTunnel', direction: 'request' }
121
+ */
122
+ export function getRpcTypeFromKey(key) {
123
+ if (key.endsWith('Request')) {
124
+ return {
125
+ type: key.slice(0, -7),
126
+ direction: 'request'
127
+ };
128
+ }
129
+ if (key.endsWith('Response')) {
130
+ return {
131
+ type: key.slice(0, -8),
132
+ direction: 'response'
133
+ };
134
+ }
135
+ }
136
+ /**
137
+ * Get the RPC response type from the RPC type.
138
+ * For eg. "claimTunnel" -> "claimTunnelResponse"
139
+ */
140
+ export function getRpcResponseType(type) {
141
+ return `${type}Response`;
142
+ }
143
+ /**
144
+ * Get the RPC request type from the RPC type.
145
+ * For eg. "claimTunnel" -> "claimTunnelRequest"
146
+ */
147
+ export function getRpcRequestType(type) {
148
+ return `${type}Request`;
149
+ }
150
+ export function isApplicationData(packet, tlsVersion) {
151
+ return packet.type === 'ciphertext'
152
+ && (packet.contentType === 'APPLICATION_DATA'
153
+ || (packet.data[0] === PACKET_TYPE.WRAPPED_RECORD
154
+ && tlsVersion === 'TLS1_2'));
155
+ }
156
+ /**
157
+ * Convert the received data from a WS to a Uint8Array
158
+ */
159
+ export async function extractArrayBufferFromWsData(data) {
160
+ if (data instanceof ArrayBuffer) {
161
+ return new Uint8Array(data);
162
+ }
163
+ // uint8array/Buffer
164
+ if (data instanceof Uint8Array
165
+ || (typeof data === 'object' && data && 'buffer' in data)) {
166
+ return data;
167
+ }
168
+ if (typeof data === 'string') {
169
+ return strToUint8Array(data);
170
+ }
171
+ if (typeof Blob !== 'undefined' && data instanceof Blob) {
172
+ return new Uint8Array(await data.arrayBuffer());
173
+ }
174
+ throw new Error('unsupported data: ' + String(data));
175
+ }
176
+ /**
177
+ * Check if the RPC message is a request or a response.
178
+ */
179
+ export function getRpcRequest(msg) {
180
+ if (msg.requestError) {
181
+ return {
182
+ direction: 'response',
183
+ type: 'error'
184
+ };
185
+ }
186
+ for (const key in msg) {
187
+ if (!msg[key]) {
188
+ continue;
189
+ }
190
+ const rpcType = getRpcTypeFromKey(key);
191
+ if (!rpcType) {
192
+ continue;
193
+ }
194
+ return rpcType;
195
+ }
196
+ }
197
+ /**
198
+ * Finds all application data messages in a transcript
199
+ * and returns them. Removes the "contentType" suffix from the message.
200
+ * in TLS 1.3
201
+ */
202
+ export function extractApplicationDataFromTranscript({ transcript, tlsVersion }) {
203
+ const msgs = [];
204
+ for (const m of transcript) {
205
+ let message;
206
+ // redacted msgs but with a valid packet header
207
+ // can be considered application data messages
208
+ if (m.redacted) {
209
+ if (!m.plaintextLength) {
210
+ message = DEFAULT_REDACTION_DATA;
211
+ }
212
+ else {
213
+ const len = tlsVersion === 'TLS1_3'
214
+ // remove content type suffix
215
+ ? m.plaintextLength - 1
216
+ : m.plaintextLength;
217
+ message = new Uint8Array(len)
218
+ .fill(REDACTION_CHAR_CODE);
219
+ }
220
+ // otherwise, we need to check the content type
221
+ }
222
+ else if (tlsVersion === 'TLS1_3') {
223
+ const contentType = m.message[m.message.length - 1];
224
+ if (contentType !== CONTENT_TYPE_MAP['APPLICATION_DATA']) {
225
+ continue;
226
+ }
227
+ message = m.message.slice(0, -1);
228
+ }
229
+ else if (m.recordHeader[0] === PACKET_TYPE.WRAPPED_RECORD) {
230
+ message = m.message;
231
+ }
232
+ else {
233
+ continue;
234
+ }
235
+ msgs.push({ message, sender: m.sender });
236
+ }
237
+ return msgs;
238
+ }
239
+ export function extractHandshakeFromTranscript({ transcript, tlsVersion }) {
240
+ const msgs = [];
241
+ for (const [i, m] of transcript.entries()) {
242
+ if (m.redacted) {
243
+ break; // stop at first encrypted message
244
+ }
245
+ let message;
246
+ if (m.recordHeader[0] === PACKET_TYPE.HELLO) {
247
+ message = m.message;
248
+ }
249
+ else if (m.recordHeader[0] === PACKET_TYPE.WRAPPED_RECORD) {
250
+ if (tlsVersion === 'TLS1_3') {
251
+ const contentType = m.message[m.message.length - 1];
252
+ if (contentType !== CONTENT_TYPE_MAP['HANDSHAKE']) {
253
+ break;
254
+ }
255
+ message = m.message.slice(0, -1);
256
+ }
257
+ else {
258
+ break;
259
+ }
260
+ }
261
+ else {
262
+ continue;
263
+ }
264
+ if (!message.length) {
265
+ throw new Error('unsupported handshake message');
266
+ }
267
+ msgs.push({ message, sender: m.sender, index: i });
268
+ }
269
+ return msgs;
270
+ }
271
+ export async function decryptDirect(directReveal, cipherSuite, recordHeader, serverTlsVersion, content) {
272
+ const { key, iv, recordNumber } = directReveal;
273
+ const { cipher } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite];
274
+ const importedKey = await crypto.importKey(cipher, key);
275
+ return await decryptWrappedRecord(content, {
276
+ iv,
277
+ key: importedKey,
278
+ recordHeader,
279
+ recordNumber,
280
+ version: serverTlsVersion,
281
+ cipherSuite,
282
+ });
283
+ }
284
+ export function packRpcMessages(...msgs) {
285
+ return RPCMessages.create({
286
+ messages: msgs.map(msg => (RPCMessage.create({
287
+ ...msg,
288
+ id: msg.id || generateRpcMessageId()
289
+ })))
290
+ });
291
+ }
292
+ /**
293
+ * Converts an Ethers struct (an array w named keys) to
294
+ * a plain object. Recursively converts all structs inside.
295
+ * Required to correctly JSON.stringify the struct.
296
+ */
297
+ export function ethersStructToPlainObject(struct) {
298
+ if (!Array.isArray(struct)) {
299
+ return struct;
300
+ }
301
+ const namedKeys = Object.keys(struct)
302
+ .filter(key => isNaN(Number(key)));
303
+ // seems to be an actual array
304
+ if (!namedKeys.length) {
305
+ return struct.map(ethersStructToPlainObject);
306
+ }
307
+ const obj = {};
308
+ for (const key of namedKeys) {
309
+ obj[key] = ethersStructToPlainObject(struct[key]);
310
+ }
311
+ return obj;
312
+ }
313
+ export function isTls13Suite(suite) {
314
+ return suite === 'TLS_AES_128_GCM_SHA256'
315
+ || suite === 'TLS_AES_256_GCM_SHA384'
316
+ || suite === 'TLS_CHACHA20_POLY1305_SHA256';
317
+ }
@@ -0,0 +1,59 @@
1
+ import type { IncomingHttpHeaders } from 'http';
2
+ import type { ArraySlice, Transcript } from '../types/index.js';
3
+ export type HttpRequest = {
4
+ method: string;
5
+ url: string;
6
+ protocol: string;
7
+ headers: IncomingHttpHeaders;
8
+ body?: Uint8Array;
9
+ };
10
+ export type HttpResponse = {
11
+ statusCode: number;
12
+ statusMessage: string;
13
+ headers: IncomingHttpHeaders;
14
+ body: Uint8Array;
15
+ headersComplete: boolean;
16
+ complete: boolean;
17
+ /**
18
+ * Index of the first byte of the status line
19
+ */
20
+ statusLineEndIndex?: number;
21
+ /**
22
+ * Index of the first byte of the body
23
+ * in the complete response
24
+ */
25
+ bodyStartIndex?: number;
26
+ /**
27
+ * If using chunked transfer encoding,
28
+ * this will be set & contain indices of each
29
+ * chunk in the complete response
30
+ */
31
+ chunks?: ArraySlice[];
32
+ headerIndices: Map<string, ArraySlice>;
33
+ /**
34
+ * index of separator \r\n\r\n between headers and body
35
+ */
36
+ headerEndIdx: number;
37
+ };
38
+ /**
39
+ * parses http/1.1 responses
40
+ */
41
+ export declare function makeHttpResponseParser(): {
42
+ res: HttpResponse;
43
+ /**
44
+ * Parse the next chunk of data
45
+ * @param data the data to parse
46
+ */
47
+ onChunk(data: Uint8Array): void;
48
+ /**
49
+ * Call to prevent further parsing; indicating the end of the request
50
+ * Checks that the response is valid & complete, otherwise throws an error
51
+ */
52
+ streamEnded(): void;
53
+ };
54
+ /**
55
+ * Read the HTTP request from a TLS receipt transcript.
56
+ * @param receipt the transcript to read from or application messages if they were extracted beforehand
57
+ * @returns the parsed HTTP request
58
+ */
59
+ export declare function getHttpRequestDataFromTranscript(receipt: Transcript<Uint8Array>): HttpRequest;