@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,203 +0,0 @@
1
- import { base64Encode } from '@bufbuild/protobuf/wire'
2
- import { concatenateUint8Arrays } from '@joclaim/tls'
3
-
4
- import type { ArraySlice, RedactedOrHashedArraySlice, TOPRFProofParams } from '#src/types/index.ts'
5
-
6
- export const REDACTION_CHAR = '*'
7
- export const REDACTION_CHAR_CODE = REDACTION_CHAR.charCodeAt(0)
8
-
9
- type SliceWithReveal<T> = {
10
- block: T
11
- redactedPlaintext: Uint8Array
12
- /**
13
- * If the block has some TOPRF claims -- they'll be set here
14
- */
15
- toprfs?: TOPRFProofParams[]
16
- /**
17
- * If text was replaced in the previous block w TOPRF but
18
- * it overshot into this block. The "length" specifies how much
19
- * of it got overshot into this block
20
- */
21
- overshotToprfFromPrevBlock?: { length: number }
22
- }
23
-
24
- export type RevealedSlices<T> = 'all' | SliceWithReveal<T>[]
25
-
26
- /**
27
- * Check if a redacted string is congruent with the original string.
28
- * @param redacted the redacted content, redacted content is replaced by '*'
29
- * @param original the original content
30
- */
31
- export function isRedactionCongruent<T extends string | Uint8Array>(
32
- redacted: T,
33
- original: T
34
- ): boolean {
35
- // eslint-disable-next-line unicorn/no-for-loop
36
- for(let i = 0;i < redacted.length;i++) {
37
- const element = redacted[i]
38
- const areSame = element === original[i]
39
- || (typeof element === 'string' && element === REDACTION_CHAR)
40
- || (typeof element === 'number' && element === REDACTION_CHAR_CODE)
41
- if(!areSame) {
42
- return false
43
- }
44
- }
45
-
46
- return true
47
- }
48
-
49
- /**
50
- * Is the string fully redacted?
51
- */
52
- export function isFullyRedacted<T extends string | Uint8Array>(
53
- redacted: T
54
- ): boolean {
55
- for(const element of redacted) {
56
- if(
57
- element !== REDACTION_CHAR
58
- && element !== REDACTION_CHAR_CODE
59
- ) {
60
- return false
61
- }
62
- }
63
-
64
- return true
65
- }
66
-
67
- /**
68
- * Given some plaintext blocks and a redaction function, return the blocks that
69
- * need to be revealed to the other party
70
- *
71
- * Use case: we get the response for a request in several blocks, and want to redact
72
- * pieces that go through multiple blocks. We can use this function to get the
73
- * blocks that need to be revealed to the other party
74
- *
75
- * @example if we received ["secret is 12","345","678. Thanks"]. We'd want
76
- * to redact the "12345678" and reveal the rest. We'd pass in the blocks and
77
- * the redact function will return the redactions, namely [10,19].
78
- * The function will return the blocks ["secret is **","***. Thanks"].
79
- * The middle block is fully redacted, so it's not returned
80
- *
81
- * @param blocks blocks to reveal
82
- * @param redact function that returns the redactions
83
- * @returns blocks to reveal
84
- */
85
- export async function getBlocksToReveal<T extends { plaintext: Uint8Array }>(
86
- blocks: T[],
87
- redact: (total: Uint8Array) => RedactedOrHashedArraySlice[],
88
- performOprf: (plaintext: Uint8Array) => Promise<TOPRFProofParams>
89
- ) {
90
- const slicesWithReveal: SliceWithReveal<T>[] = blocks.map(block => ({
91
- block,
92
- // copy the plaintext to avoid mutating the original
93
- redactedPlaintext: new Uint8Array(block.plaintext)
94
- }))
95
- const total = concatenateUint8Arrays(blocks.map(b => b.plaintext))
96
- const redactions = redact(total)
97
-
98
- if(!redactions.length) {
99
- return 'all'
100
- }
101
-
102
- let blockIdx = 0
103
- let cursorInBlock = 0
104
- let cursor = 0
105
-
106
- for(const redaction of redactions) {
107
- await redactBlocks(redaction)
108
- }
109
-
110
- // only reveal blocks that have some data to reveal,
111
- // or are completely plaintext
112
- return slicesWithReveal
113
- .filter(s => !isFullyRedacted(s.redactedPlaintext))
114
-
115
- async function redactBlocks(slice: RedactedOrHashedArraySlice) {
116
- while(cursor < slice.fromIndex) {
117
- advance()
118
- }
119
-
120
- if(slice.hash) {
121
- const plaintext = total.slice(slice.fromIndex, slice.toIndex)
122
- const { nullifier, responses, mask } = await performOprf(plaintext)
123
-
124
- // set the TOPRF claim on the first blocks this
125
- // redaction covers
126
- const toprf: TOPRFProofParams = {
127
- nullifier,
128
- responses,
129
- dataLocation: {
130
- fromIndex: cursorInBlock,
131
- length: slice.toIndex - slice.fromIndex
132
- },
133
- mask,
134
- plaintext
135
- }
136
- const startBlockIdx = blockIdx
137
- const block = slicesWithReveal[blockIdx]
138
- block.toprfs ||= []
139
- block.toprfs.push(toprf)
140
-
141
- const nullifierStr
142
- = binaryHashToStr(nullifier, toprf.dataLocation!.length)
143
-
144
- let i = 0
145
- let overshootLen = 0
146
- while(cursor < slice.toIndex) {
147
- if(blockIdx !== startBlockIdx) {
148
- overshootLen += 1
149
- }
150
-
151
- slicesWithReveal[blockIdx].redactedPlaintext[cursorInBlock]
152
- = nullifierStr.charCodeAt(i)
153
- advance()
154
-
155
- i += 1
156
- }
157
-
158
- if(overshootLen) {
159
- slicesWithReveal[blockIdx]
160
- .overshotToprfFromPrevBlock = { length: overshootLen }
161
- }
162
- }
163
-
164
- while(cursor < slice.toIndex) {
165
- slicesWithReveal[blockIdx]
166
- .redactedPlaintext[cursorInBlock] = REDACTION_CHAR_CODE
167
- advance()
168
- }
169
- }
170
-
171
- function advance() {
172
- cursor += 1
173
- cursorInBlock += 1
174
- if(cursorInBlock >= blocks[blockIdx].plaintext.length) {
175
- blockIdx += 1
176
- cursorInBlock = 0
177
- }
178
- }
179
- }
180
-
181
- /**
182
- * Redact the following slices from the total
183
- */
184
- export function redactSlices(total: Uint8Array, slices: ArraySlice[]) {
185
- const redacted = new Uint8Array(total)
186
-
187
- for(const slice of slices) {
188
- for(let i = slice.fromIndex;i < slice.toIndex;i++) {
189
- redacted[i] = REDACTION_CHAR_CODE
190
- }
191
- }
192
-
193
- return redacted
194
- }
195
-
196
- /**
197
- * Converts the binary hash to an ASCII string of the expected length.
198
- * If the hash is shorter than the expected length, it will be padded with
199
- * '0' characters. If it's longer, it will be truncated.
200
- */
201
- export function binaryHashToStr(hash: Uint8Array, expLength: number) {
202
- return base64Encode(hash).padEnd(expLength, '0').slice(0, expLength)
203
- }
@@ -1,41 +0,0 @@
1
- import type { Logger } from '#src/types/index.ts'
2
-
3
- type RetryLoopOptions = {
4
- maxRetries?: number
5
- logger: Logger
6
- shouldRetry: (error: Error) => boolean
7
- }
8
-
9
- /**
10
- * Execute a function, and upon failure -- retry
11
- * based on specified options.
12
- */
13
- export async function executeWithRetries<T>(
14
- code: (attempt: number) => Promise<T>,
15
- {
16
- maxRetries = 3,
17
- shouldRetry,
18
- logger,
19
- }: RetryLoopOptions
20
- ) {
21
- let retries = 0
22
- while(retries < maxRetries) {
23
- try {
24
- const result = await code(retries)
25
- return result
26
- } catch(err) {
27
- retries += 1
28
- if(retries >= maxRetries) {
29
- throw err
30
- }
31
-
32
- if(!shouldRetry(err)) {
33
- throw err
34
- }
35
-
36
- logger.info({ err, retries }, 'retrying failed operation')
37
- }
38
- }
39
-
40
- throw new Error('retries exhausted')
41
- }
@@ -1,35 +0,0 @@
1
- import { utils, Wallet } from 'ethers'
2
-
3
- import type { ServiceSignatureProvider } from '#src/types/index.ts'
4
-
5
- const { computeAddress, computePublicKey } = utils
6
-
7
- export const ETH_SIGNATURE_PROVIDER: ServiceSignatureProvider = {
8
- getPublicKey(privateKey) {
9
- const pub = computePublicKey(privateKey, true)
10
- return utils.arrayify(pub)
11
- },
12
- getAddress(publicKey) {
13
- return computeAddress(publicKey).toLowerCase()
14
- },
15
- async sign(data, privateKey) {
16
- const wallet = getEthWallet(privateKey)
17
- const signature = await wallet.signMessage(data)
18
- return utils.arrayify(signature)
19
- },
20
- async verify(data, signature, addressBytes) {
21
- const address = typeof addressBytes === 'string'
22
- ? addressBytes
23
- : utils.hexlify(addressBytes)
24
- const signerAddress = utils.verifyMessage(data, signature)
25
- return signerAddress.toLowerCase() === address.toLowerCase()
26
- }
27
- }
28
-
29
- function getEthWallet(privateKey: string) {
30
- if(!privateKey) {
31
- throw new Error('Private key missing')
32
- }
33
-
34
- return new Wallet(privateKey)
35
- }
@@ -1,11 +0,0 @@
1
- import { ServiceSignatureType } from '#src/proto/api.ts'
2
- import type { ServiceSignatureProvider } from '#src/types/index.ts'
3
- import { ETH_SIGNATURE_PROVIDER } from '#src/utils/signatures/eth.ts'
4
-
5
- export const SIGNATURES = {
6
- [ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH]: ETH_SIGNATURE_PROVIDER,
7
- } as { [key in ServiceSignatureType]: ServiceSignatureProvider }
8
-
9
- export const SelectedServiceSignatureType = ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH
10
-
11
- export const SelectedServiceSignature = SIGNATURES[SelectedServiceSignatureType]
@@ -1,132 +0,0 @@
1
- import type { WebSocket as WSWebSocket } from 'ws'
2
-
3
- import { wsMessageHandler } from '#src/client/utils/message-handler.ts'
4
- import type { InitRequest, RPCMessage } from '#src/proto/api.ts'
5
- import { RPCMessages } from '#src/proto/api.ts'
6
- import type { IAttestorSocket, Logger, RPCEvent, RPCEventMap } from '#src/types/index.ts'
7
- import { AttestorError, makeRpcEvent, packRpcMessages } from '#src/utils/index.ts'
8
-
9
- /**
10
- * Common AttestorSocket class used on the client & server side as the
11
- * base for their respective socket implementations.
12
- */
13
- export class AttestorSocket implements IAttestorSocket {
14
-
15
- private eventTarget = new EventTarget()
16
- protected socket: WebSocket | WSWebSocket
17
- readonly logger: Logger
18
- readonly metadata: InitRequest
19
-
20
- isInitialised = false
21
-
22
- constructor(
23
- socket: WebSocket | WSWebSocket,
24
- metadata: InitRequest,
25
- logger: Logger
26
- ) {
27
- this.socket = socket
28
- this.metadata = metadata
29
- this.logger = logger
30
-
31
- socket.addEventListener('error', (event) => {
32
- const witErr = AttestorError.fromError(
33
- event.error || new Error(event.message),
34
- 'ERROR_NETWORK_ERROR'
35
- )
36
-
37
- this.dispatchRPCEvent('connection-terminated', witErr)
38
- })
39
-
40
- socket.addEventListener('close', () => (
41
- this.dispatchRPCEvent(
42
- 'connection-terminated',
43
- new AttestorError(
44
- 'ERROR_NO_ERROR',
45
- 'connection closed'
46
- )
47
- )
48
- ))
49
-
50
- socket.addEventListener('message', async({ data }) => {
51
- try {
52
- await wsMessageHandler.call(this, data)
53
- } catch(err) {
54
- this.logger.error({ err }, 'error processing message')
55
- }
56
- })
57
- }
58
-
59
- get isOpen() {
60
- return this.socket.readyState === this.socket.OPEN
61
- }
62
-
63
- get isClosed() {
64
- return this.socket.readyState === this.socket.CLOSED
65
- || this.socket.readyState === this.socket.CLOSING
66
- }
67
-
68
- async sendMessage(...msgs: Partial<RPCMessage>[]) {
69
- if(this.isClosed) {
70
- throw new AttestorError(
71
- 'ERROR_NETWORK_ERROR',
72
- 'Connection closed, cannot send message'
73
- )
74
- }
75
-
76
- if(!this.isOpen) {
77
- throw new AttestorError(
78
- 'ERROR_NETWORK_ERROR',
79
- 'Wait for connection to open before sending message'
80
- )
81
- }
82
-
83
- const msg = packRpcMessages(...msgs)
84
- const bytes = RPCMessages.encode(msg).finish()
85
-
86
- this.logger.trace({ msg }, 'sending messages')
87
-
88
- if('sendPromise' in this.socket && this.socket.sendPromise) {
89
- await this.socket.sendPromise(bytes)
90
- } else {
91
- this.socket.send(bytes)
92
- }
93
-
94
- return msg
95
- }
96
-
97
- dispatchRPCEvent<K extends keyof RPCEventMap>(type: K, data: RPCEventMap[K]) {
98
- const event = makeRpcEvent(type, data)
99
- this.eventTarget.dispatchEvent(event)
100
- }
101
-
102
- addEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void {
103
- this.eventTarget.addEventListener(type, listener)
104
- }
105
-
106
- removeEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void {
107
- this.eventTarget.removeEventListener(type, listener)
108
- }
109
-
110
- async terminateConnection(err?: Error) {
111
- // connection already closed
112
- if(this.isClosed) {
113
- return
114
- }
115
-
116
- try {
117
- const witErr = err
118
- ? AttestorError.fromError(err)
119
- : new AttestorError('ERROR_NO_ERROR', '')
120
- this.dispatchRPCEvent('connection-terminated', witErr)
121
- if(this.isOpen) {
122
- await this.sendMessage({
123
- connectionTerminationAlert: witErr.toProto()
124
- })
125
- }
126
- } catch(err) {
127
- this.logger?.error({ err }, 'error terminating connection')
128
- } finally {
129
- this.socket.close()
130
- }
131
- }
132
- }
package/src/utils/ws.ts DELETED
@@ -1,30 +0,0 @@
1
- import type { WebSocket as WSWebSocket } from 'ws'
2
-
3
- export function makeWebSocket(url: string) {
4
- return new WebSocket(url)
5
- }
6
-
7
- /**
8
- * Adds the "sendPromise" fn to the given WebSocket instance,
9
- * if not already present.
10
- */
11
- export function promisifySend(ws: WSWebSocket) {
12
- if(ws.sendPromise) {
13
- return ws
14
- }
15
-
16
- ws.sendPromise = (data) => (
17
- new Promise((resolve, reject) => {
18
- ws.send(data, err => {
19
- if(err) {
20
- reject(err)
21
- return
22
- }
23
-
24
- resolve()
25
- })
26
- })
27
- )
28
-
29
- return ws
30
- }