@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,29 +0,0 @@
1
- export type PrivateKey = string
2
-
3
- type Awaitable<T> = T | Promise<T>
4
-
5
- export type ServiceSignatureProvider = {
6
- /**
7
- * Returns public key in compressed (compact) format used in Joclaim RPC calls
8
- * @param privateKey corresponding private key in raw o hex form
9
- */
10
- getPublicKey(privateKey: PrivateKey): Uint8Array
11
- /**
12
- * Returns address corresponding to the provided public key
13
- * @param publicKey raw o hex form, compressed or uncompressed
14
- */
15
- getAddress(publicKey: Uint8Array): string
16
- /**
17
- * Signs data with the provided private key
18
- * @param data raw data to be signed
19
- * @param privateKey private key in raw or hex format
20
- */
21
- sign(data: Uint8Array, privateKey: PrivateKey): Awaitable<Uint8Array>
22
- /**
23
- * Verifies signature against provided data and an address
24
- * @param data raw data to be verified. Must be same as used in sign() call
25
- * @param signature signature bytes or string
26
- * @param addressBytes address corresponding to a public key
27
- */
28
- verify(data: Uint8Array, signature: Uint8Array | string, addressBytes: Uint8Array | string): Awaitable<boolean>
29
- }
@@ -1,25 +0,0 @@
1
- import type { CreateTunnelRequest } from '#src/proto/api.ts'
2
-
3
- export type MakeTunnelBaseOpts<O> = O & {
4
- onClose?(err?: Error): void
5
- onMessage?(data: Uint8Array): void
6
- }
7
-
8
- export type Tunnel<E> = E & {
9
- write(data: Uint8Array): void | Promise<void>
10
- close(err?: Error): void | Promise<void>
11
- }
12
-
13
- export type MakeTunnelFn<O, E = {}> = (opts: MakeTunnelBaseOpts<O>) => (
14
- Tunnel<E> | Promise<Tunnel<E>>
15
- )
16
-
17
- export type Transcript<T> = {
18
- sender: 'client' | 'server'
19
- message: T
20
- }[]
21
-
22
- export type TCPSocketProperties = {
23
- transcript: Transcript<Uint8Array>
24
- createRequest: Pick<CreateTunnelRequest, 'host' | 'port' | 'geoLocation' | 'proxySessionId'>
25
- }
package/src/types/zk.ts DELETED
@@ -1,31 +0,0 @@
1
- import type { EncryptionAlgorithm, OPRFOperator, ZKEngine, ZKOperator } from '@joclaim/zk-symmetric-crypto'
2
-
3
- import type { TOPRFPayload } from '#src/proto/api.ts'
4
-
5
- export type ZKOperators = { [E in EncryptionAlgorithm]?: ZKOperator }
6
-
7
- export type OPRFOperators = { [E in EncryptionAlgorithm]?: OPRFOperator }
8
-
9
- export type PrepareZKProofsBaseOpts = {
10
- /** get ZK operator for specified algorithm */
11
- zkOperators?: ZKOperators
12
-
13
- oprfOperators?: OPRFOperators
14
- /**
15
- * max number of ZK proofs to generate concurrently
16
- * @default 10
17
- */
18
- zkProofConcurrency?: number
19
- zkEngine?: ZKEngine
20
- }
21
-
22
- export type TOPRFProofParams = TOPRFPayload & {
23
- mask: Uint8Array
24
- plaintext: Uint8Array
25
-
26
- overshoot?: {
27
- ciphertext: Uint8Array
28
- iv: Uint8Array
29
- recordNumber: number
30
- }
31
- }
package/src/utils/auth.ts DELETED
@@ -1,92 +0,0 @@
1
- import { ethers } from 'ethers'
2
-
3
- import { DEFAULT_AUTH_EXPIRY_S } from '#src/config/index.ts'
4
- import type { AuthenticationRequest, ServiceSignatureType } from '#src/proto/api.ts'
5
- import { AuthenticatedUserData } from '#src/proto/api.ts'
6
- import { getEnvVariable } from '#src/utils/env.ts'
7
- import { AttestorError } from '#src/utils/error.ts'
8
- import { unixTimestampSeconds } from '#src/utils/generics.ts'
9
- import { SelectedServiceSignature, SIGNATURES } from '#src/utils/signatures/index.ts'
10
-
11
- export async function assertValidAuthRequest(
12
- request: AuthenticationRequest | undefined,
13
- signatureType: ServiceSignatureType
14
- ) {
15
- const publicKey = getEnvVariable('AUTHENTICATION_PUBLIC_KEY')
16
- // nothing to verify
17
- if(!request) {
18
- // if pub key is provided -- but user didn't attempt to
19
- // authenticate, then we should throw an error
20
- if(publicKey) {
21
- throw new AttestorError(
22
- 'ERROR_AUTHENTICATION_FAILED',
23
- 'User must be authenticated'
24
- )
25
- }
26
-
27
- return
28
- }
29
-
30
- if(!publicKey) {
31
- throw new AttestorError(
32
- 'ERROR_BAD_REQUEST',
33
- 'The attestor is not configured for authentication'
34
- )
35
- }
36
-
37
- const { signature, data } = request
38
- if(!data) {
39
- throw new AttestorError(
40
- 'ERROR_AUTHENTICATION_FAILED',
41
- 'Missing data in auth request'
42
- )
43
- }
44
-
45
- if(data.expiresAt < unixTimestampSeconds()) {
46
- throw new AttestorError(
47
- 'ERROR_AUTHENTICATION_FAILED',
48
- 'Authentication request has expired'
49
- )
50
- }
51
-
52
- const proto = AuthenticatedUserData.encode(data).finish()
53
- const signatureAlg = SIGNATURES[signatureType]
54
- const address = signatureAlg.getAddress(
55
- await ethers.utils.arrayify(publicKey)
56
- )
57
- const verified = await signatureAlg
58
- .verify(proto, signature, address)
59
- if(!verified) {
60
- throw new AttestorError(
61
- 'ERROR_AUTHENTICATION_FAILED',
62
- 'Signature verification failed'
63
- )
64
- }
65
- }
66
-
67
- /**
68
- * Create an authentication request with the given data and private key,
69
- * which can then be used to authenticate with the service.
70
- */
71
- export async function createAuthRequest(
72
- _data: Partial<AuthenticatedUserData>,
73
- privateKey: string
74
- ) {
75
- const createdAt = unixTimestampSeconds()
76
- const data: AuthenticatedUserData = {
77
- createdAt,
78
- expiresAt: createdAt + DEFAULT_AUTH_EXPIRY_S,
79
- id: '',
80
- hostWhitelist: [],
81
- ..._data,
82
- }
83
- const proto = AuthenticatedUserData.encode(data).finish()
84
- const signature = await SelectedServiceSignature
85
- .sign(proto, privateKey)
86
- const request: AuthenticationRequest = {
87
- data,
88
- signature
89
- }
90
-
91
- return request
92
- }
@@ -1,25 +0,0 @@
1
- import { utils } from 'ethers'
2
-
3
- export const B64_JSON_REPLACER = (key: string, value: any) => {
4
- if(
5
- value instanceof Uint8Array
6
- || (
7
- typeof value === 'object'
8
- && value
9
- && 'buffer' in value
10
- && value.buffer instanceof ArrayBuffer
11
- )
12
- ) {
13
- return { type: 'uint8array', value: utils.base64.encode(value) }
14
- }
15
-
16
- return value
17
- }
18
-
19
- export const B64_JSON_REVIVER = (key: string, value: any) => {
20
- if(value?.type === 'uint8array') {
21
- return utils.base64.decode(value.value)
22
- }
23
-
24
- return value
25
- }
@@ -1,159 +0,0 @@
1
- import CIDR from 'ip-cidr'
2
- import type { Logger } from 'pino'
3
-
4
- import { BGP_WS_URL } from '#src/config/index.ts'
5
- import type { BGPAnnouncementOverlapData, BGPListener } from '#src/types/index.ts'
6
- import { makeWebSocket } from '#src/utils/ws.ts'
7
-
8
- const ANNOUNCEMENT_OVERLAP = 'announcement-overlap'
9
-
10
- class BGPAnnouncementOverlapEvent extends Event {
11
-
12
- readonly data: BGPAnnouncementOverlapData
13
-
14
- constructor(data: BGPAnnouncementOverlapData) {
15
- super(ANNOUNCEMENT_OVERLAP)
16
- this.data = data
17
- }
18
- }
19
-
20
- /**
21
- * Listens for BGP announcements and emits events whenever
22
- * an announcement overlaps with a target IP.
23
- */
24
- export function createBgpListener(logger: Logger): BGPListener {
25
- let ws: ReturnType<typeof makeWebSocket>
26
- let closed = false
27
-
28
- const targetIps = new Set<string>()
29
- const eventTarget = new EventTarget()
30
-
31
- openWs()
32
-
33
- return {
34
- onOverlap(ips, callback) {
35
- for(const ip of ips) {
36
- targetIps.add(ip)
37
- }
38
-
39
- eventTarget.addEventListener(
40
- ANNOUNCEMENT_OVERLAP,
41
- _callback
42
- )
43
-
44
- return () => {
45
- for(const ip of ips) {
46
- targetIps.delete(ip)
47
- }
48
-
49
- eventTarget.removeEventListener(
50
- ANNOUNCEMENT_OVERLAP,
51
- _callback
52
- )
53
- }
54
-
55
- function _callback(event: BGPAnnouncementOverlapEvent) {
56
- callback(event.data)
57
- }
58
- },
59
- close() {
60
- ws.onclose = null
61
- ws.onerror = null
62
- ws.close()
63
- closed = true
64
- }
65
- }
66
-
67
- function openWs() {
68
- logger.debug('connecting to BGP websocket')
69
-
70
- ws = makeWebSocket(BGP_WS_URL)
71
- ws.onopen = onOpen
72
- ws.onerror = (ev) => onClose(ev)
73
- ws.onclose = () => onClose(new Error('Unexpected close'))
74
- ws.onmessage = ({ data }) => {
75
- const str = typeof data === 'string' ? data : data.toString()
76
- try {
77
- onMessage(str)
78
- } catch(err) {
79
- logger.error({ data, err }, 'error processing BGP message')
80
- }
81
- }
82
- }
83
-
84
- function onOpen(): void {
85
- const subscriptionMessage = {
86
- type: 'ris_subscribe',
87
- data: {
88
- type: 'UPDATE',
89
- },
90
- }
91
- ws.send(JSON.stringify(subscriptionMessage))
92
-
93
- logger.info('connected to BGP websocket')
94
- }
95
-
96
- function onClose(err?: Error | Event) {
97
- if(closed) {
98
- return
99
- }
100
-
101
- logger.info({ err }, 'BGP websocket closed')
102
- if(!err) {
103
- return
104
- }
105
-
106
- logger.info('reconnecting to BGP websocket')
107
- openWs()
108
- }
109
-
110
- function onMessage(message: string): void {
111
- const data = JSON.parse(message)
112
- const announcements = data?.data?.announcements
113
-
114
- logger.trace({ data }, 'got BGP update')
115
-
116
- if(!Array.isArray(announcements)) {
117
- return
118
- }
119
-
120
- const asPath = data?.data?.path
121
-
122
- for(const announcement of announcements) {
123
- const prefixes = announcement?.prefixes
124
- const nextHop = announcement?.['next_hop']
125
-
126
- const hasPrefixes = prefixes?.length && (nextHop || asPath)
127
- if(!hasPrefixes) {
128
- return
129
- }
130
-
131
- for(const prefix of prefixes) {
132
- if(!overlapsTargetIps(prefix)) {
133
- continue
134
- }
135
-
136
- // emit event
137
- eventTarget.dispatchEvent(
138
- new BGPAnnouncementOverlapEvent({ prefix })
139
- )
140
- }
141
- }
142
- }
143
-
144
- function overlapsTargetIps(prefix: string): boolean {
145
- // ignore all prefixes that end with /0
146
- if(prefix.endsWith('/0')) {
147
- return false
148
- }
149
-
150
- const cidr = new CIDR(prefix)
151
- for(const ip of targetIps) {
152
- if(cidr.contains(ip)) {
153
- return true
154
- }
155
- }
156
-
157
- return false
158
- }
159
- }
@@ -1,132 +0,0 @@
1
- import canonicalize from 'canonicalize'
2
- import { utils } from 'ethers'
3
-
4
- import { DEFAULT_METADATA } from '#src/config/index.ts'
5
- import { ClaimTunnelResponse } from '#src/proto/api.ts'
6
- import type { ClaimID, ClaimInfo, CompleteClaimData, ProviderParams } from '#src/types/index.ts'
7
- import { SIGNATURES, strToUint8Array } from '#src/utils/index.ts'
8
-
9
- /**
10
- * Creates the standard string to sign for a claim.
11
- * This data is what the attestor will sign when it successfully
12
- * verifies a claim.
13
- */
14
- export function createSignDataForClaim(data: CompleteClaimData) {
15
- const identifier = 'identifier' in data
16
- ? data.identifier
17
- : getIdentifierFromClaimInfo(data)
18
- const lines = [
19
- identifier,
20
- // we lowercase the owner to ensure that the
21
- // ETH addresses always serialize the same way
22
- data.owner.toLowerCase(),
23
- data.timestampS.toString(),
24
- data.epoch.toString(),
25
- ]
26
-
27
- return lines.join('\n')
28
- }
29
-
30
- /**
31
- * Verify the claim tunnel response from a attestor.
32
- *
33
- * If you'd only like to verify the claim signature, you can
34
- * optionally only pass "claim" & "signatures.claimSignature"
35
- * to this function.
36
- *
37
- * The successful run of this function means that the claim
38
- * is valid, and the attestor that signed the claim is valid.
39
- */
40
- export async function assertValidClaimSignatures(
41
- {
42
- signatures,
43
- ...res
44
- }: Partial<ClaimTunnelResponse>,
45
- metadata = DEFAULT_METADATA
46
- ) {
47
- if(!signatures) {
48
- throw new Error('No signatures provided')
49
- }
50
-
51
- const {
52
- resultSignature,
53
- claimSignature,
54
- attestorAddress
55
- } = signatures
56
-
57
- const { verify } = SIGNATURES[metadata.signatureType]
58
- if(signatures?.resultSignature) {
59
- const resBytes = ClaimTunnelResponse
60
- .encode(ClaimTunnelResponse.create(res)).finish()
61
- const verified
62
- = await verify(resBytes, resultSignature, attestorAddress)
63
- if(!verified) {
64
- throw new Error('Invalid result signature')
65
- }
66
- }
67
-
68
- // claim wasn't generated -- i.e. the transcript
69
- // did not contain the necessary data
70
- if(!res.claim) {
71
- return
72
- }
73
-
74
- const signData = createSignDataForClaim(res.claim)
75
- const verifiedClaim = await verify(
76
- strToUint8Array(signData),
77
- claimSignature,
78
- attestorAddress
79
- )
80
- if(!verifiedClaim) {
81
- throw new Error('Invalid claim signature')
82
- }
83
- }
84
-
85
- /**
86
- * Generates a unique identifier for given claim info
87
- * @param info
88
- * @returns
89
- */
90
- export function getIdentifierFromClaimInfo(info: ClaimInfo): ClaimID {
91
- //re-canonicalize context if it's not empty
92
- if(info.context?.length > 0) {
93
- try {
94
- const ctx = JSON.parse(info.context)
95
- info.context = canonicalStringify(ctx)!
96
- } catch(e) {
97
- throw new Error('unable to parse non-empty context. Must be JSON')
98
- }
99
- }
100
-
101
- const str = `${info.provider}\n${info.parameters}\n${info.context || ''}`
102
- //console.log('Identifier: ' + btoa(str))
103
- return utils.keccak256(strToUint8Array(str)).toLowerCase()
104
- }
105
-
106
- /**
107
- * Canonically stringifies an object, so that the same object will always
108
- * produce the same string despite the order of keys
109
- */
110
- export function canonicalStringify(params: { [key: string]: any } | undefined) {
111
- if(!params) {
112
- return ''
113
- }
114
-
115
- // have to cast as ESM isn't correctly typing this
116
- return (canonicalize as unknown as ((p: unknown) => string))(params) || ''
117
- }
118
-
119
- export function hashProviderParams(params: ProviderParams<'http'>): string {
120
- const filteredParams = {
121
- url:params.url,
122
- method:params.method,
123
- body: params.body,
124
- responseMatches: params.responseMatches,
125
- responseRedactions: params.responseRedactions
126
- }
127
-
128
- const serializedParams = canonicalStringify(filteredParams)
129
- return utils.keccak256(
130
- strToUint8Array(serializedParams)
131
- ).toLowerCase()
132
- }
package/src/utils/env.ts DELETED
@@ -1,21 +0,0 @@
1
- export type TransportType = 'node' | 'react-native' | 'browser'
2
-
3
- export function detectEnvironment(): TransportType {
4
- if(typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
5
- return 'react-native'
6
- }
7
-
8
- if(typeof window !== 'undefined') {
9
- return 'browser'
10
- }
11
-
12
- return 'node'
13
- }
14
-
15
- export function getEnvVariable(name: string) {
16
- if(typeof process === 'undefined') {
17
- return undefined
18
- }
19
-
20
- return process?.env[name]
21
- }
@@ -1,76 +0,0 @@
1
- import { ErrorCode, ErrorData } from '#src/proto/api.ts'
2
-
3
- const PROTO_ERROR = ErrorData.fromJSON({})
4
-
5
- /**
6
- * Represents an error that can be thrown by the Attestor Core
7
- * or server. Provides a code, and optional data
8
- * to pass along with the error.
9
- */
10
- export class AttestorError extends Error {
11
-
12
- readonly name = 'AttestorError'
13
- readonly code: keyof typeof ErrorCode
14
- readonly data: { [_: string]: any } | undefined
15
-
16
- constructor(
17
- code: keyof typeof ErrorCode,
18
- message: string,
19
- data?: { [_: string]: any }
20
- ) {
21
- super(message)
22
- this.code = code
23
- this.data = data
24
- }
25
-
26
- /**
27
- * Encodes the error as a ErrorData
28
- * protobuf message
29
- */
30
- toProto() {
31
- return ErrorData.create({
32
- code: ErrorCode[this.code],
33
- message: this.message,
34
- data: JSON.stringify(this.data)
35
- })
36
- }
37
-
38
- static fromProto(data = PROTO_ERROR) {
39
- return new AttestorError(
40
- typeof data.code === 'number'
41
- ? getKeyForValue(ErrorCode, data.code) || 'UNRECOGNIZED'
42
- : data.code,
43
- data.message,
44
- data.data ? JSON.parse(data.data) : undefined
45
- )
46
- }
47
-
48
- static fromError(
49
- err: Error,
50
- code: keyof typeof ErrorCode = 'ERROR_INTERNAL'
51
- ) {
52
- if(err instanceof AttestorError) {
53
- return err
54
- }
55
-
56
- return new AttestorError(code, err.message)
57
- }
58
-
59
- static badRequest(message: string, data?: { [_: string]: any }) {
60
- return new AttestorError(
61
- 'ERROR_BAD_REQUEST',
62
- message,
63
- data
64
- )
65
- }
66
- }
67
-
68
- function getKeyForValue<T>(obj: T, value: T[keyof T]): keyof T | undefined {
69
- for(const key in obj) {
70
- if(obj[key] === value) {
71
- return key as keyof T
72
- }
73
- }
74
-
75
- return undefined
76
- }