@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,105 +0,0 @@
1
- import type { ExternalRPCIncomingMsg } from '#src/external-rpc/types.ts'
2
- import { RPC_MSG_BRIDGE, rpcRequest } from '#src/external-rpc/utils.ts'
3
-
4
- export class RPCWebSocket extends EventTarget implements WebSocket {
5
-
6
- readonly CONNECTING: 0 = 0
7
- readonly OPEN: 1 = 1
8
- readonly CLOSING: 2 = 2
9
- readonly CLOSED: 3 = 3
10
-
11
- readonly id = `ws_${Date.now()}`
12
- readonly binaryType: BinaryType = 'arraybuffer'
13
- readonly bufferedAmount: number = 0
14
- readonly extensions: string = ''
15
- readonly url: string
16
- readonly protocol: string
17
- readyState: number = this.CONNECTING
18
-
19
- onopen: ((this: WebSocket, ev: Event) => any) | null
20
- onerror: ((this: WebSocket, ev: Event) => any) | null
21
- onclose: ((this: WebSocket, ev: CloseEvent) => any) | null
22
- onmessage: ((this: WebSocket, ev: MessageEvent<any>) => any) | null
23
-
24
- #cancelRpcBridge?: (() => void)
25
-
26
- constructor(url: string) {
27
- super()
28
- this.url = url
29
- this.protocol = ''
30
- this.#onMessage = this.#onMessage.bind(this)
31
-
32
- rpcRequest({
33
- type: 'connectWs',
34
- request: { id: this.id, url }
35
- })
36
- .then(() => this.#callOpen(new Event('open')))
37
- .catch(error => this.#callError(new ErrorEvent('error', { error })))
38
- }
39
-
40
- send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void {
41
- if(
42
- typeof data !== 'string'
43
- && !ArrayBuffer.isView(data)
44
- ) {
45
- throw new TypeError('Data must be a string, Uint8Array or ArrayBuffer')
46
- }
47
-
48
- rpcRequest({ type: 'sendWsMessage', request: { id: this.id, data: data } })
49
- }
50
-
51
- close(code?: number, reason?: string): void {
52
- this.readyState = this.CLOSING
53
- rpcRequest({
54
- type: 'disconnectWs',
55
- request: { id: this.id, code, reason }
56
- })
57
- .then(() => this.#callClose(new CloseEvent('close', { code, reason })))
58
- .catch(error => this.#callError(new ErrorEvent('error', { error })))
59
- }
60
-
61
- #callOpen(ev: Event): void {
62
- this.readyState = this.OPEN
63
- this.onopen?.call(this, ev)
64
- this.dispatchEvent(ev)
65
-
66
- this.#cancelRpcBridge?.()
67
- this.#cancelRpcBridge = RPC_MSG_BRIDGE.addListener(this.#onMessage)
68
- }
69
-
70
- #callError(ev: ErrorEvent): void {
71
- this.readyState = this.CLOSED
72
- this.onerror?.call(this, ev)
73
- this.dispatchEvent(ev)
74
- }
75
-
76
- #callClose(ev: CloseEvent): void {
77
- this.readyState = this.CLOSED
78
- this.onclose?.call(this, ev)
79
- this.dispatchEvent(ev)
80
- }
81
-
82
- #onMessage = (msg: ExternalRPCIncomingMsg) => {
83
- if(msg.type === 'sendWsMessage' && msg.request.id === this.id) {
84
- const data = msg.request.data
85
- const event = new MessageEvent('message', { data })
86
- this.onmessage?.call(this, event)
87
- this.dispatchEvent(event)
88
- return
89
- }
90
-
91
- if(msg.type === 'disconnectWs' && msg.request.id === this.id) {
92
- if(!msg.request.err) {
93
- this.#callClose(
94
- new CloseEvent('close', { code: 1000, reason: 'Normal Closure' })
95
- )
96
- return
97
- }
98
-
99
- this.#callError(
100
- new ErrorEvent('error', { error: new Error(msg.request.err) })
101
- )
102
- return
103
- }
104
- }
105
- }
@@ -1,42 +0,0 @@
1
- import { setCryptoImplementation } from '@joclaim/tls'
2
- import { webcryptoCrypto } from '@joclaim/tls/webcrypto'
3
-
4
- import { handleIncomingMessage } from '#src/external-rpc/handle-incoming-msg.ts'
5
- import { getWsApiUrlFromBaseUrl } from '#src/external-rpc/utils.ts'
6
- import { logger, makeLogger } from '#src/utils/index.ts'
7
-
8
- makeLogger(true)
9
-
10
- setCryptoImplementation(webcryptoCrypto)
11
-
12
- /**
13
- * For browsers only. Sets up the current window to listen for RPC requests
14
- * from React Native or other windows
15
- */
16
- export function setupWindowRpc(baseUrl?: string, channel = 'attestor-core') {
17
- if(baseUrl) {
18
- globalThis.ATTESTOR_BASE_URL = baseUrl
19
- } else if(typeof window !== 'undefined' && window.location) {
20
- globalThis.ATTESTOR_BASE_URL = window.location.toString()
21
- } else {
22
- throw new Error('No base URL provided and window.location unavailable')
23
- }
24
-
25
- if(channel) {
26
- globalThis.RPC_CHANNEL_NAME = channel
27
- } else if(!globalThis.RPC_CHANNEL_NAME) {
28
- throw new Error('No channel name provided and globalThis.RPC_CHANNEL_NAME unavailable')
29
- }
30
-
31
- if(typeof window !== 'undefined') {
32
- window.addEventListener(
33
- 'message',
34
- ev => handleIncomingMessage(ev.data),
35
- false
36
- )
37
- }
38
-
39
- logger.info({ defaultUrl: getWsApiUrlFromBaseUrl() }, 'window RPC setup')
40
- }
41
-
42
- export * from '#src/index.ts'
@@ -1,48 +0,0 @@
1
- import '#src/external-rpc/jsc-polyfills/index.ts'
2
- 1 // done to avoid eslint rule
3
-
4
- import { setCryptoImplementation } from '@joclaim/tls'
5
- import { pureJsCrypto } from '@joclaim/tls/purejs-crypto'
6
-
7
- import * as AttestorRPCImport from '#src/external-rpc/index.ts'
8
- import { makeLogger } from '#src/utils/logger.ts'
9
-
10
- declare global {
11
- /**
12
- * `sendMessage` function should be provided by the host of the JS environment for sending messages to host
13
- */
14
- function sendMessage(channelName: string, message: any): void | Promise<void>
15
-
16
- var AttestorRPC: typeof AttestorRPCImport & {
17
- /**
18
- * Sets up the library to run in JS environments like QuickJS or JavascriptCore.
19
- *
20
- * RPC will communicate with user by sending messages using `AttestorRPCChannel` by `<channel>.postMessage(message: string)`,
21
- * for example: `globalThis['attestor-core'].postMessage(message: string)`.
22
- *
23
- * @param baseUrl
24
- * @param channel The name of the channel for sending messages. Default channel is 'attestor-core'.
25
- */
26
- setupJsRpc(baseUrl: string, channel?: string): void
27
- }
28
- }
29
-
30
- setCryptoImplementation(pureJsCrypto)
31
- makeLogger(true)
32
-
33
- /**
34
- * Sets up the library to run in JS environments like QuickJS or JavascriptCore.
35
- */
36
- export function setupJsRpc(baseUrl: string, channel = 'attestor-core') {
37
- globalThis.ATTESTOR_BASE_URL = baseUrl
38
- globalThis.RPC_CHANNEL_NAME = channel
39
- const rpcChannel: AttestorRPCChannel = {
40
- postMessage(message) {
41
- return globalThis.sendMessage(channel, message)
42
- }
43
- }
44
-
45
- globalThis[channel] = rpcChannel
46
- }
47
-
48
- globalThis.AttestorRPC = { ...AttestorRPCImport, setupJsRpc }
@@ -1,289 +0,0 @@
1
- import type { OPRFOperator, ZKEngine, ZKOperator } from '@joclaim/zk-symmetric-crypto'
2
- import '#src/external-rpc/global.d.ts'
3
-
4
- import type { TaskCompletedEventObject } from '#src/avs/contracts/ReclaimServiceManager.ts'
5
- import type { CreateClaimOnAvsOpts, CreateClaimOnAvsStep } from '#src/avs/types/index.ts'
6
- import type { CreateClaimOnMechainStep } from '#src/mechain/types/index.ts'
7
- import type { AuthenticationRequest } from '#src/proto/api.ts'
8
- import type { extractHTMLElement, extractJSONValueIndex } from '#src/providers/http/utils.ts'
9
- import type {
10
- AttestorData,
11
- CompleteClaimData,
12
- CreateClaimOnAttestorOpts,
13
- LogLevel,
14
- ProofGenerationStep,
15
- ProviderName,
16
- ProviderParams,
17
- ProviderSecretParams,
18
- } from '#src/types/index.ts'
19
- import type { HttpRequest, HttpResponse } from '#src/utils/index.ts'
20
-
21
- type IdentifiedMessage = {
22
- id: string
23
- }
24
-
25
- type CreateClaimRPCBaseOpts = {
26
- /**
27
- * Specify the mode for the ZK & OPRF operator,
28
- * 'default' -> will use the default ZK operator included in the SDK
29
- * (presently that's SnarkJS supported by FFs running on WASM)
30
- * 'rpc' -> if you've access to a native ZK operator, you can use this mode
31
- * For eg. on React Native
32
- */
33
- zkOperatorMode?: 'default' | 'rpc'
34
- context?: string
35
- zkEngine?: ZKEngine
36
- updateProviderParams?: boolean
37
- authRequest?: AuthenticationRequest
38
- }
39
-
40
- export type RPCCreateClaimOptions<N extends ProviderName = any> = Omit<
41
- CreateClaimOnAttestorOpts<N>,
42
- 'zkOperators' | 'context' | 'client'
43
- > & CreateClaimRPCBaseOpts
44
-
45
- export type RPCCreateClaimOnAvsOptions<N extends ProviderName = any> = Omit<
46
- CreateClaimOnAvsOpts<N>,
47
- 'zkOperators' | 'context' | 'payer'
48
- > & {
49
- payer?: 'attestor'
50
- } & CreateClaimRPCBaseOpts
51
-
52
- export type RPCCreateClaimOnMechainOptions<N extends ProviderName = any> = Omit<
53
- CreateClaimOnAvsOpts<N>,
54
- 'zkOperators' | 'context'
55
- > & CreateClaimRPCBaseOpts
56
-
57
- type ExtractHTMLElementOptions = {
58
- html: string
59
- xpathExpression: string
60
- contentsOnly: boolean
61
- }
62
-
63
- type ExtractJSONValueIndexOptions = {
64
- json: string
65
- jsonPath: string
66
- }
67
-
68
- type UpdateProviderParamsOpts = {
69
- request: Omit<HttpRequest, 'body'> & { body: string | undefined }
70
- response: Omit<HttpResponse, 'body'> & { body: string | undefined }
71
- }
72
-
73
- type LogLevelOptions = {
74
- logLevel: LogLevel
75
- /**
76
- * If true, log messages will be sent back to the app
77
- * via postMessage
78
- */
79
- sendLogsToApp: boolean
80
- }
81
-
82
- type AVSCreateResult = {
83
- object: TaskCompletedEventObject
84
- txHash: string
85
- }
86
-
87
- type MechainCreateResult = {
88
- taskId: number
89
- data: CreateClaimResponse[]
90
- }
91
-
92
- /**
93
- * Legacy V1 create claim response
94
- */
95
- export type CreateClaimResponse = {
96
- identifier: string
97
- claimData: CompleteClaimData
98
- signatures: string[]
99
- /**
100
- * @deprecated no longer valid
101
- */
102
- witnesses: AttestorData[]
103
- }
104
-
105
- /**
106
- * Fns the app calls on the attestor.
107
- * These are things done inside the attestor
108
- */
109
- export type ExternalRPCClient = {
110
- /**
111
- * Create a claim on the attestor where the RPC SDK is hosted.
112
- */
113
- createClaim(options: RPCCreateClaimOptions): Promise<CreateClaimResponse>
114
- /**
115
- * Create a claim on the AVS
116
- */
117
- createClaimOnAvs(opts: RPCCreateClaimOnAvsOptions): Promise<AVSCreateResult>
118
- /**
119
- * Create a claim on Mechain
120
- */
121
- createClaimOnMechain(opts: RPCCreateClaimOnMechainOptions): Promise<MechainCreateResult>
122
- /**
123
- * Extract an HTML element from a string of HTML
124
- */
125
- extractHtmlElement(options: ExtractHTMLElementOptions): Promise<ReturnType<typeof extractHTMLElement>>
126
- extractJSONValueIndex(options: ExtractJSONValueIndexOptions): Promise<ReturnType<typeof extractJSONValueIndex>>
127
- getCurrentMemoryUsage(): Promise<{
128
- available: boolean
129
- content: string
130
- }>
131
- /**
132
- * Set the log level for the attestor,
133
- * optionally set "sendLogsToApp" to true to send logs
134
- * back to the app
135
- */
136
- setLogLevel(options: LogLevelOptions): Promise<void>
137
-
138
- benchmarkZK(): Promise<string>
139
-
140
- ping(): Promise<{ pong: string }>
141
- }
142
-
143
- type AsFunction<K> = K extends (...args: any[]) => any ? K : never
144
-
145
- type FunctionalOperator<T, K extends keyof T> = {
146
- fn: K
147
- args: Parameters<AsFunction<T[K]>>
148
- }
149
-
150
- export type ExecuteZKOpts<T extends keyof ZKOperator = keyof ZKOperator>
151
- = FunctionalOperator<ZKOperator, T>
152
-
153
- export type ExecuteOPRFOpts<T extends keyof OPRFOperator = keyof OPRFOperator>
154
- = FunctionalOperator<OPRFOperator, T>
155
-
156
- /**
157
- * Fns the attestor calls on the app
158
- */
159
- export type ExternalRPCAppClient = {
160
- executeZkFunctionV3(opts: ExecuteZKOpts): Promise<any>
161
- executeOprfFunctionV3(opts: ExecuteOPRFOpts): Promise<any>
162
-
163
- updateProviderParams(opts: UpdateProviderParamsOpts): Promise<{
164
- params: Partial<ProviderParams<'http'>>
165
- secretParams: Partial<ProviderSecretParams<'http'>>
166
- }>
167
- /**
168
- * The runtime needs to open a WebSocket connection. Is required for
169
- * runtimes that do not support WebSockets natively.
170
- *
171
- * The app should facilitate this by opening a WebSocket connection
172
- * to the given URL.
173
- * "id" is a unique identifier for the WebSocket connection.
174
- */
175
- connectWs(opts: { id: string, url: string }): Promise<{}>
176
- /**
177
- * Runtime wants to disconnect a WebSocket connection.
178
- * "code" is an optional close code,
179
- * and "reason" is an optional reason for closing.
180
- */
181
- disconnectWs(opts: { id: string, code?: number, reason?: any }): Promise<{}>
182
- /**
183
- * Runtime wants to send a message over a WebSocket connection.
184
- */
185
- sendWsMessage(opts: { id: string, data: ArrayBufferView | string }): Promise<{}>
186
- }
187
-
188
- type AnyRPCClient = { [_: string]: (opts: any) => any }
189
-
190
- export type ExternalRPCRequest<T extends AnyRPCClient, K extends keyof T> = {
191
- type: K
192
- request: Parameters<T[K]>[0]
193
- }
194
-
195
- export type ExternalRPCResponse<T extends AnyRPCClient, K extends (keyof T) & string> = {
196
- type: `${K}Done`
197
- response: Awaited<ReturnType<T[K]>>
198
- }
199
-
200
- export type ExternalRPCErrorResponse = {
201
- type: 'error'
202
- data: {
203
- message: string
204
- stack: string
205
- }
206
- }
207
-
208
- type AsResponse<T> = T & { isResponse: true }
209
-
210
- /**
211
- * Data sent to the attestor from the window/application
212
- */
213
- // spread out each key because TS can't handle
214
- export type ExternalRPCIncomingMsg = (
215
- ExternalRPCRequest<ExternalRPCClient, 'createClaim'>
216
- | ExternalRPCRequest<ExternalRPCClient, 'createClaimOnAvs'>
217
- | ExternalRPCRequest<ExternalRPCClient, 'createClaimOnMechain'>
218
- | ExternalRPCRequest<ExternalRPCClient, 'extractHtmlElement'>
219
- | ExternalRPCRequest<ExternalRPCClient, 'extractJSONValueIndex'>
220
- | ExternalRPCRequest<ExternalRPCClient, 'getCurrentMemoryUsage'>
221
- | ExternalRPCRequest<ExternalRPCClient, 'setLogLevel'>
222
- | ExternalRPCRequest<ExternalRPCClient, 'benchmarkZK'>
223
- | ExternalRPCRequest<ExternalRPCClient, 'ping'>
224
- | AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'executeZkFunctionV3'>>
225
- | AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'executeOprfFunctionV3'>>
226
- | AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'updateProviderParams'>>
227
- | AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'connectWs'>>
228
- | AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'disconnectWs'>>
229
- | AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'sendWsMessage'>>
230
- | AsResponse<ExternalRPCErrorResponse>
231
- | ExternalRPCRequest<ExternalRPCAppClient, 'sendWsMessage'>
232
- | {
233
- type: 'disconnectWs'
234
- request: {
235
- id: string
236
- err?: string
237
- }
238
- }
239
- ) & IdentifiedMessage
240
-
241
- /**
242
- * Data sent back from the attestor to
243
- * the window/application containing the attestor
244
- */
245
- export type ExternalRPCOutgoingMsg = (
246
- AsResponse<ExternalRPCResponse<ExternalRPCClient, 'createClaim'>>
247
- | AsResponse<ExternalRPCResponse<ExternalRPCClient, 'createClaimOnAvs'>>
248
- | AsResponse<ExternalRPCResponse<ExternalRPCClient, 'extractHtmlElement'>>
249
- | AsResponse<ExternalRPCResponse<ExternalRPCClient, 'extractJSONValueIndex'>>
250
- | AsResponse<ExternalRPCResponse<ExternalRPCClient, 'getCurrentMemoryUsage'>>
251
- | AsResponse<ExternalRPCResponse<ExternalRPCClient, 'setLogLevel'>>
252
- | AsResponse<ExternalRPCResponse<ExternalRPCClient, 'benchmarkZK'>>
253
- | AsResponse<ExternalRPCResponse<ExternalRPCClient, 'ping'>>
254
- | ExternalRPCRequest<ExternalRPCAppClient, 'executeZkFunctionV3'>
255
- | ExternalRPCRequest<ExternalRPCAppClient, 'executeOprfFunctionV3'>
256
- | ExternalRPCRequest<ExternalRPCAppClient, 'updateProviderParams'>
257
- | ExternalRPCRequest<ExternalRPCAppClient, 'connectWs'>
258
- | ExternalRPCRequest<ExternalRPCAppClient, 'disconnectWs'>
259
- | ExternalRPCRequest<ExternalRPCAppClient, 'sendWsMessage'>
260
- | (
261
- {
262
- type: 'createClaimStep'
263
- step: {
264
- name: 'attestor-progress'
265
- step: ProofGenerationStep
266
- }
267
- }
268
- )
269
- | (
270
- {
271
- type: 'createClaimOnAvsStep'
272
- step: CreateClaimOnAvsStep
273
- }
274
- )
275
- | (
276
- {
277
- type: 'createClaimOnMechainStep'
278
- step: CreateClaimOnMechainStep
279
- }
280
- )
281
- | (
282
- {
283
- type: 'log'
284
- level: LogLevelOptions['logLevel']
285
- message: object
286
- }
287
- )
288
- | AsResponse<ExternalRPCErrorResponse>
289
- ) & IdentifiedMessage
@@ -1,126 +0,0 @@
1
- import { WS_PATHNAME } from '#src/config/index.ts'
2
- import { EventBus } from '#src/external-rpc/event-bus.ts'
3
- import type { ExternalRPCAppClient, ExternalRPCIncomingMsg, ExternalRPCOutgoingMsg, ExternalRPCRequest, ExternalRPCResponse } from '#src/external-rpc/types.ts'
4
- import { B64_JSON_REPLACER } from '#src/utils/b64-json.ts'
5
- import { AttestorError } from '#src/utils/error.ts'
6
-
7
- export const RPC_MSG_BRIDGE = new EventBus<ExternalRPCIncomingMsg>()
8
-
9
- // track memory usage
10
- export async function getCurrentMemoryUsage() {
11
- if(!window.crossOriginIsolated) {
12
- return {
13
- available: false,
14
- content: 'N/A (page not cross-origin-isolated)'
15
- }
16
- } else if(!performance.measureUserAgentSpecificMemory) {
17
- return {
18
- available: false,
19
- content: 'N/A (performance.measureUserAgentSpecificMemory() is not available)',
20
- }
21
- } else {
22
- try {
23
- const result = performance.measureUserAgentSpecificMemory()
24
- const totalmb = Math.round(result.bytes / 1024 / 1024)
25
-
26
- return { available: true, content: `${totalmb}mb` }
27
- } catch(error) {
28
- if(error instanceof DOMException && error.name === 'SecurityError') {
29
- return { available: false, content: `N/A (${error.message})` }
30
- }
31
-
32
- throw error
33
- }
34
- }
35
- }
36
-
37
- export function generateRpcRequestId() {
38
- return Math.random().toString(36).slice(2)
39
- }
40
-
41
- /**
42
- * The window RPC will be served from the same origin as the API server.
43
- * so we can get the API server's origin from the location.
44
- */
45
- export function getWsApiUrlFromBaseUrl() {
46
- if(typeof ATTESTOR_BASE_URL !== 'string') {
47
- throw new Error('ATTESTOR_BASE_URL is not set')
48
- }
49
-
50
- const parsed = new URL(ATTESTOR_BASE_URL)
51
- const { host, protocol } = parsed
52
- const wsProtocol = protocol === 'https:' ? 'wss:' : 'ws:'
53
- return `${wsProtocol}//${host}${WS_PATHNAME}`
54
- }
55
-
56
- export function rpcRequest<T extends keyof ExternalRPCAppClient>(
57
- opts: ExternalRPCRequest<ExternalRPCAppClient, T>
58
- ): Promise<ExternalRPCResponse<ExternalRPCAppClient, T>['response']> {
59
- const id = generateRpcRequestId()
60
- const waitForRes = waitForResponse(opts.type, id)
61
-
62
- // @ts-expect-error
63
- sendMessageToApp({
64
- id,
65
- type: opts.type,
66
- request: opts.request,
67
- })
68
-
69
- return waitForRes
70
- }
71
-
72
- export function waitForResponse<T extends keyof ExternalRPCAppClient>(
73
- type: T,
74
- requestId: string,
75
- timeoutMs = 60_000
76
- ) {
77
- type R = Awaited<ReturnType<ExternalRPCAppClient[T]>>
78
- const returnType = `${type}Done` as const
79
- return new Promise<R>((resolve, reject) => {
80
- const timeout = setTimeout(() => {
81
- reject(
82
- new AttestorError(
83
- 'ERROR_INTERNAL',
84
- `Timeout waiting for response: ${type}`,
85
- { requestId }
86
- )
87
- )
88
- cancel()
89
- }, timeoutMs)
90
-
91
- const cancel = RPC_MSG_BRIDGE.addListener(msg => {
92
- if(msg.id !== requestId) {
93
- return
94
- }
95
-
96
- if(msg.type === 'error') {
97
- reject(new Error(msg.data.message))
98
- } else if(msg.type === returnType) {
99
- resolve(msg.response as R)
100
- } else {
101
- return
102
- }
103
-
104
- clearTimeout(timeout)
105
- cancel()
106
- })
107
- })
108
- }
109
-
110
- /**
111
- * Sends a message back to the host app
112
- * @param data
113
- */
114
- export function sendMessageToApp(data: ExternalRPCOutgoingMsg) {
115
- const str = JSON.stringify(data, B64_JSON_REPLACER)
116
- if(!RPC_CHANNEL_NAME) {
117
- throw new Error('global RPC_CHANNEL_NAME is not set')
118
- }
119
-
120
- const channel = globalThis[RPC_CHANNEL_NAME] as AttestorRPCChannel
121
- if(!channel) {
122
- throw new Error(`RPC channel ${RPC_CHANNEL_NAME} not set on globalThis`)
123
- }
124
-
125
- channel.postMessage(str)
126
- }
@@ -1,79 +0,0 @@
1
- import type { EncryptionAlgorithm, OPRFOperator, ZKEngine, ZKOperator } from '@joclaim/zk-symmetric-crypto'
2
-
3
- import type { ExecuteOPRFOpts, ExecuteZKOpts } from '#src/external-rpc/types.ts'
4
- import { rpcRequest } from '#src/external-rpc/utils.ts'
5
- import { logger, makeDefaultZkOperator } from '#src/utils/index.ts'
6
-
7
- export const ALL_ENC_ALGORITHMS: EncryptionAlgorithm[] = [
8
- 'aes-256-ctr',
9
- 'aes-128-ctr',
10
- 'chacha20',
11
- ]
12
-
13
- /**
14
- * The goal of this RPC operator is if the attestor client
15
- * is running in a WebView, it can call the native
16
- * application to perform the ZK operations
17
- */
18
- export function makeExternalRpcZkOperator(
19
- algorithm: EncryptionAlgorithm,
20
- zkEngine: ZKEngine = 'snarkjs'
21
- ): ZKOperator {
22
- return {
23
- async generateWitness(input) {
24
- const operator = await makeDefaultZkOperator(algorithm, zkEngine, logger)
25
- return operator.generateWitness(input)
26
- },
27
- groth16Prove(input) {
28
- return callFnZk({ fn: 'groth16Prove', args: [input] })
29
- },
30
- groth16Verify(publicSignals, proof) {
31
- return callFnZk({ fn: 'groth16Verify', args: [publicSignals, proof] })
32
- },
33
- }
34
- }
35
-
36
-
37
- function callFnZk(request: ExecuteZKOpts) {
38
- return rpcRequest({ type: 'executeZkFunctionV3', request })
39
- }
40
-
41
-
42
- /**
43
- * The goal of this RPC operator is if the attestor client
44
- * is running in a WebView, it can call the native
45
- * application to perform the OPRF operations
46
- */
47
- export function makeExternalRpcOprfOperator(
48
- algorithm: EncryptionAlgorithm,
49
- zkEngine: ZKEngine = 'snarkjs'
50
- ): OPRFOperator {
51
- return {
52
- async generateWitness(input) {
53
- const operator = await makeDefaultZkOperator(algorithm, zkEngine, logger)
54
- return operator.generateWitness(input)
55
- },
56
- groth16Prove(input) {
57
- return callFnOprf({ fn: 'groth16Prove', args: [input] })
58
- },
59
- groth16Verify(publicSignals, proof) {
60
- return callFnOprf({ fn: 'groth16Verify', args: [publicSignals, proof] })
61
- },
62
- generateThresholdKeys(total, threshold) {
63
- return callFnOprf({ fn: 'generateThresholdKeys', args: [total, threshold] })
64
- },
65
- generateOPRFRequestData(data, domainSeparator) {
66
- return callFnOprf({ fn: 'generateOPRFRequestData', args: [data, domainSeparator] })
67
- },
68
- finaliseOPRF(serverPublicKey, request, responses) {
69
- return callFnOprf({ fn: 'finaliseOPRF', args: [serverPublicKey, request, responses] })
70
- },
71
- evaluateOPRF(serverPrivateKey, request) {
72
- return callFnOprf({ fn: 'evaluateOPRF', args: [serverPrivateKey, request] })
73
- },
74
- }
75
- }
76
-
77
- function callFnOprf(request: ExecuteOPRFOpts) {
78
- return rpcRequest({ type: 'executeOprfFunctionV3', request })
79
- }
package/src/index.ts DELETED
@@ -1,9 +0,0 @@
1
- export * as tls from '@joclaim/tls'
2
- export * from './client/utils/client-socket.ts'
3
- export * from './config/index.ts'
4
- export * from './types/index.ts'
5
- export * from './utils/index.ts'
6
- export * from './providers/index.ts'
7
- export * as proto from './proto/api.ts'
8
- export * from './client/index.ts'
9
- export * from './mechain/index.ts'