@reclaimprotocol/attestor-core 5.0.1-beta.1 → 5.0.1-beta.2

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 (261) hide show
  1. package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
  2. package/lib/avs/abis/avsDirectoryABI.js +343 -0
  3. package/lib/avs/abis/delegationABI.d.ts +126 -0
  4. package/lib/avs/abis/delegationABI.js +4 -0
  5. package/lib/avs/abis/registryABI.d.ts +136 -0
  6. package/lib/avs/abis/registryABI.js +728 -0
  7. package/lib/avs/client/create-claim-on-avs.d.ts +12 -0
  8. package/lib/avs/client/create-claim-on-avs.js +168 -0
  9. package/lib/avs/config.d.ts +7 -0
  10. package/lib/avs/config.js +26 -0
  11. package/lib/avs/contracts/ReclaimServiceManager.d.ts +601 -0
  12. package/lib/avs/contracts/ReclaimServiceManager.js +0 -0
  13. package/lib/avs/contracts/common.d.ts +50 -0
  14. package/lib/avs/contracts/common.js +0 -0
  15. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +890 -0
  16. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1183 -0
  17. package/lib/avs/contracts/factories/index.d.ts +1 -0
  18. package/lib/avs/contracts/factories/index.js +4 -0
  19. package/lib/avs/contracts/index.d.ts +3 -0
  20. package/lib/avs/contracts/index.js +6 -0
  21. package/lib/avs/types/index.d.ts +55 -0
  22. package/lib/avs/types/index.js +0 -0
  23. package/lib/avs/utils/contracts.d.ts +21 -0
  24. package/lib/avs/utils/contracts.js +53 -0
  25. package/lib/avs/utils/register.d.ts +27 -0
  26. package/lib/avs/utils/register.js +74 -0
  27. package/lib/avs/utils/tasks.d.ts +22 -0
  28. package/lib/avs/utils/tasks.js +48 -0
  29. package/lib/client/create-claim.d.ts +5 -0
  30. package/lib/client/create-claim.js +461 -0
  31. package/lib/client/index.d.ts +3 -0
  32. package/lib/client/index.js +3 -0
  33. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  34. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +53 -0
  35. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +26 -0
  36. package/lib/client/tunnels/make-rpc-tls-tunnel.js +127 -0
  37. package/lib/client/utils/attestor-pool.d.ts +8 -0
  38. package/lib/client/utils/attestor-pool.js +24 -0
  39. package/lib/client/utils/client-socket.d.ts +11 -0
  40. package/lib/client/utils/client-socket.js +120 -0
  41. package/lib/client/utils/message-handler.d.ts +4 -0
  42. package/lib/client/utils/message-handler.js +97 -0
  43. package/lib/config/index.d.ts +31 -0
  44. package/lib/config/index.js +62 -0
  45. package/lib/external-rpc/benchmark.d.ts +1 -0
  46. package/lib/external-rpc/benchmark.js +82 -0
  47. package/lib/external-rpc/event-bus.d.ts +7 -0
  48. package/lib/external-rpc/event-bus.js +17 -0
  49. package/lib/external-rpc/global.d.js +0 -0
  50. package/lib/external-rpc/handle-incoming-msg.d.ts +2 -0
  51. package/lib/external-rpc/handle-incoming-msg.js +241 -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 +80 -0
  56. package/lib/external-rpc/jsc-polyfills/2.d.ts +1 -0
  57. package/lib/external-rpc/jsc-polyfills/2.js +15 -0
  58. package/lib/external-rpc/jsc-polyfills/event.d.ts +10 -0
  59. package/lib/external-rpc/jsc-polyfills/event.js +19 -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 +83 -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 +0 -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 +58 -0
  74. package/lib/index.d.ts +9 -0
  75. package/lib/index.js +13 -0
  76. package/lib/mechain/abis/governanceABI.d.ts +50 -0
  77. package/lib/mechain/abis/governanceABI.js +461 -0
  78. package/lib/mechain/abis/taskABI.d.ts +157 -0
  79. package/lib/mechain/abis/taskABI.js +512 -0
  80. package/lib/mechain/client/create-claim-on-mechain.d.ts +10 -0
  81. package/lib/mechain/client/create-claim-on-mechain.js +33 -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/lib/mechain/constants/index.js +8 -0
  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 +0 -0
  90. package/lib/proto/api.d.ts +651 -0
  91. package/lib/proto/api.js +4250 -0
  92. package/lib/proto/tee-bundle.d.ts +156 -0
  93. package/lib/proto/tee-bundle.js +1296 -0
  94. package/lib/providers/http/index.d.ts +18 -0
  95. package/lib/providers/http/index.js +640 -0
  96. package/lib/providers/http/patch-parse5-tree.d.ts +6 -0
  97. package/lib/providers/http/patch-parse5-tree.js +34 -0
  98. package/lib/providers/http/utils.d.ts +77 -0
  99. package/lib/providers/http/utils.js +283 -0
  100. package/lib/providers/index.d.ts +4 -0
  101. package/lib/providers/index.js +7 -0
  102. package/lib/scripts/build-browser.d.ts +1 -0
  103. package/lib/scripts/build-jsc.d.ts +1 -0
  104. package/lib/scripts/build-lib.d.ts +1 -0
  105. package/lib/scripts/check-avs-registration.d.ts +1 -0
  106. package/lib/scripts/check-avs-registration.js +28 -0
  107. package/lib/scripts/fallbacks/crypto.d.ts +1 -0
  108. package/lib/scripts/fallbacks/crypto.js +4 -0
  109. package/lib/scripts/fallbacks/empty.d.ts +3 -0
  110. package/lib/scripts/fallbacks/empty.js +4 -0
  111. package/lib/scripts/fallbacks/re2.d.ts +1 -0
  112. package/lib/scripts/fallbacks/re2.js +7 -0
  113. package/lib/scripts/fallbacks/snarkjs.d.ts +1 -0
  114. package/lib/scripts/fallbacks/snarkjs.js +10 -0
  115. package/lib/scripts/fallbacks/stwo.d.ts +6 -0
  116. package/lib/scripts/fallbacks/stwo.js +159 -0
  117. package/lib/scripts/generate-provider-types.d.ts +5 -0
  118. package/lib/scripts/generate-provider-types.js +101 -0
  119. package/lib/scripts/generate-receipt.d.ts +9 -0
  120. package/lib/scripts/generate-receipt.js +101 -0
  121. package/lib/scripts/generate-toprf-keys.d.ts +1 -0
  122. package/lib/scripts/generate-toprf-keys.js +24 -0
  123. package/lib/scripts/jsc-cli-rpc.d.ts +1 -0
  124. package/lib/scripts/jsc-cli-rpc.js +35 -0
  125. package/lib/scripts/register-avs-operator.d.ts +1 -0
  126. package/lib/scripts/register-avs-operator.js +3 -0
  127. package/lib/scripts/start-server.d.ts +1 -0
  128. package/lib/scripts/start-server.js +11 -0
  129. package/lib/scripts/update-avs-metadata.d.ts +1 -0
  130. package/lib/scripts/update-avs-metadata.js +20 -0
  131. package/lib/scripts/utils.d.ts +1 -0
  132. package/lib/scripts/utils.js +10 -0
  133. package/lib/scripts/whitelist-operator.d.ts +1 -0
  134. package/lib/scripts/whitelist-operator.js +16 -0
  135. package/lib/server/create-server.d.ts +8 -0
  136. package/lib/server/create-server.js +105 -0
  137. package/lib/server/handlers/claimTeeBundle.d.ts +6 -0
  138. package/lib/server/handlers/claimTeeBundle.js +232 -0
  139. package/lib/server/handlers/claimTunnel.d.ts +2 -0
  140. package/lib/server/handlers/claimTunnel.js +80 -0
  141. package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
  142. package/lib/server/handlers/completeClaimOnChain.js +29 -0
  143. package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
  144. package/lib/server/handlers/createClaimOnChain.js +32 -0
  145. package/lib/server/handlers/createTaskOnMechain.d.ts +2 -0
  146. package/lib/server/handlers/createTaskOnMechain.js +57 -0
  147. package/lib/server/handlers/createTunnel.d.ts +2 -0
  148. package/lib/server/handlers/createTunnel.js +98 -0
  149. package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
  150. package/lib/server/handlers/disconnectTunnel.js +8 -0
  151. package/lib/server/handlers/fetchCertificateBytes.d.ts +2 -0
  152. package/lib/server/handlers/fetchCertificateBytes.js +57 -0
  153. package/lib/server/handlers/index.d.ts +4 -0
  154. package/lib/server/handlers/index.js +25 -0
  155. package/lib/server/handlers/init.d.ts +2 -0
  156. package/lib/server/handlers/init.js +33 -0
  157. package/lib/server/handlers/toprf.d.ts +2 -0
  158. package/lib/server/handlers/toprf.js +19 -0
  159. package/lib/server/index.d.ts +4 -0
  160. package/lib/server/index.js +4 -0
  161. package/lib/server/socket.d.ts +13 -0
  162. package/lib/server/socket.js +112 -0
  163. package/lib/server/tunnels/make-tcp-tunnel.d.ts +22 -0
  164. package/lib/server/tunnels/make-tcp-tunnel.js +202 -0
  165. package/lib/server/utils/apm.d.ts +11 -0
  166. package/lib/server/utils/apm.js +29 -0
  167. package/lib/server/utils/assert-valid-claim-request.d.ts +31 -0
  168. package/lib/server/utils/assert-valid-claim-request.js +354 -0
  169. package/lib/server/utils/config-env.d.ts +1 -0
  170. package/lib/server/utils/config-env.js +4 -0
  171. package/lib/server/utils/dns.d.ts +1 -0
  172. package/lib/server/utils/dns.js +24 -0
  173. package/lib/server/utils/gcp-attestation.d.ts +17 -0
  174. package/lib/server/utils/gcp-attestation.js +237 -0
  175. package/lib/server/utils/generics.d.ts +22 -0
  176. package/lib/server/utils/generics.js +45 -0
  177. package/lib/server/utils/iso.d.ts +1 -0
  178. package/lib/server/utils/iso.js +259 -0
  179. package/lib/server/utils/keep-alive.d.ts +7 -0
  180. package/lib/server/utils/keep-alive.js +38 -0
  181. package/lib/server/utils/nitro-attestation.d.ts +33 -0
  182. package/lib/server/utils/nitro-attestation.js +249 -0
  183. package/lib/server/utils/oprf-raw.d.ts +21 -0
  184. package/lib/server/utils/oprf-raw.js +61 -0
  185. package/lib/server/utils/process-handshake.d.ts +13 -0
  186. package/lib/server/utils/process-handshake.js +233 -0
  187. package/lib/server/utils/proxy-session.d.ts +1 -0
  188. package/lib/server/utils/proxy-session.js +6 -0
  189. package/lib/server/utils/tee-oprf-mpc-verification.d.ts +16 -0
  190. package/lib/server/utils/tee-oprf-mpc-verification.js +86 -0
  191. package/lib/server/utils/tee-oprf-verification.d.ts +24 -0
  192. package/lib/server/utils/tee-oprf-verification.js +151 -0
  193. package/lib/server/utils/tee-transcript-reconstruction.d.ts +24 -0
  194. package/lib/server/utils/tee-transcript-reconstruction.js +140 -0
  195. package/lib/server/utils/tee-verification.d.ts +28 -0
  196. package/lib/server/utils/tee-verification.js +358 -0
  197. package/lib/server/utils/validation.d.ts +2 -0
  198. package/lib/server/utils/validation.js +45 -0
  199. package/lib/types/bgp.d.ts +11 -0
  200. package/lib/types/bgp.js +0 -0
  201. package/lib/types/claims.d.ts +70 -0
  202. package/lib/types/claims.js +0 -0
  203. package/lib/types/client.d.ts +163 -0
  204. package/lib/types/client.js +0 -0
  205. package/lib/types/general.d.ts +76 -0
  206. package/lib/types/general.js +0 -0
  207. package/lib/types/handlers.d.ts +10 -0
  208. package/lib/types/handlers.js +0 -0
  209. package/lib/types/index.d.ts +10 -0
  210. package/lib/types/index.js +10 -0
  211. package/lib/types/providers.d.ts +161 -0
  212. package/lib/types/providers.gen.d.ts +443 -0
  213. package/lib/types/providers.gen.js +16 -0
  214. package/lib/types/providers.js +0 -0
  215. package/lib/types/rpc.d.ts +35 -0
  216. package/lib/types/rpc.js +0 -0
  217. package/lib/types/signatures.d.ts +28 -0
  218. package/lib/types/signatures.js +0 -0
  219. package/lib/types/tunnel.d.ts +18 -0
  220. package/lib/types/tunnel.js +0 -0
  221. package/lib/types/zk.d.ts +38 -0
  222. package/lib/types/zk.js +0 -0
  223. package/lib/utils/auth.d.ts +8 -0
  224. package/lib/utils/auth.js +71 -0
  225. package/lib/utils/b64-json.d.ts +2 -0
  226. package/lib/utils/b64-json.js +17 -0
  227. package/lib/utils/bgp-listener.d.ts +7 -0
  228. package/lib/utils/bgp-listener.js +123 -0
  229. package/lib/utils/claims.d.ts +33 -0
  230. package/lib/utils/claims.js +89 -0
  231. package/lib/utils/env.d.ts +3 -0
  232. package/lib/utils/env.js +19 -0
  233. package/lib/utils/error.d.ts +26 -0
  234. package/lib/utils/error.js +54 -0
  235. package/lib/utils/generics.d.ts +114 -0
  236. package/lib/utils/generics.js +268 -0
  237. package/lib/utils/http-parser.d.ts +59 -0
  238. package/lib/utils/http-parser.js +201 -0
  239. package/lib/utils/index.d.ts +13 -0
  240. package/lib/utils/index.js +13 -0
  241. package/lib/utils/logger.d.ts +13 -0
  242. package/lib/utils/logger.js +82 -0
  243. package/lib/utils/prepare-packets.d.ts +16 -0
  244. package/lib/utils/prepare-packets.js +69 -0
  245. package/lib/utils/redactions.d.ts +73 -0
  246. package/lib/utils/redactions.js +135 -0
  247. package/lib/utils/retries.d.ts +12 -0
  248. package/lib/utils/retries.js +26 -0
  249. package/lib/utils/signatures/eth.d.ts +2 -0
  250. package/lib/utils/signatures/eth.js +31 -0
  251. package/lib/utils/signatures/index.d.ts +5 -0
  252. package/lib/utils/signatures/index.js +12 -0
  253. package/lib/utils/socket-base.d.ts +23 -0
  254. package/lib/utils/socket-base.js +96 -0
  255. package/lib/utils/tls.d.ts +2 -0
  256. package/lib/utils/tls.js +58 -0
  257. package/lib/utils/ws.d.ts +7 -0
  258. package/lib/utils/ws.js +22 -0
  259. package/lib/utils/zk.d.ts +71 -0
  260. package/lib/utils/zk.js +625 -0
  261. package/package.json +2 -2
@@ -0,0 +1,101 @@
1
+ import { readdir, readFile, writeFile } from "fs/promises";
2
+ import { compile } from "json-schema-to-typescript";
3
+ import { parse } from "yaml";
4
+ const PROVIDER_SCHEMAS_PATH = "./provider-schemas";
5
+ const GEN_TS_FILENAME = "./src/types/providers.gen.ts";
6
+ const BinaryDataType = "BinaryData";
7
+ async function main() {
8
+ const folders = await findAllProviderFolders();
9
+ console.log(`Generating for ${folders.length} provider folders`);
10
+ let ts = "/* eslint-disable */\n/* Generated file. Do not edit */";
11
+ ts += `
12
+
13
+ type ${BinaryDataType} = Uint8Array | string
14
+ `;
15
+ let providerTypeMap = "\nexport interface ProvidersConfig {\n";
16
+ let providerSchemaMap = "\nexport const PROVIDER_SCHEMAS = {\n";
17
+ for (const folder of folders) {
18
+ const {
19
+ schemaTitle: paramsSchemaTitle,
20
+ ts: paramsSchemaTs,
21
+ jsonTitle: paramsJsonTitle
22
+ } = await generateTsFromYamlSchema(folder, "parameters");
23
+ const {
24
+ schemaTitle: secretParamsSchemaTitle,
25
+ ts: secretParamsSchemaTs,
26
+ jsonTitle: secretParamsJsonTitle
27
+ } = await generateTsFromYamlSchema(
28
+ folder,
29
+ "secret-parameters"
30
+ );
31
+ ts += `
32
+ ${paramsSchemaTs}
33
+ ${secretParamsSchemaTs}`;
34
+ providerTypeMap += ` ${folder}: {
35
+ `;
36
+ providerTypeMap += ` parameters: ${paramsSchemaTitle}
37
+ `;
38
+ providerTypeMap += ` secretParameters: ${secretParamsSchemaTitle}
39
+ `;
40
+ providerTypeMap += " }\n";
41
+ providerSchemaMap += ` ${folder}: {
42
+ `;
43
+ providerSchemaMap += ` parameters: ${paramsJsonTitle},
44
+ `;
45
+ providerSchemaMap += ` secretParameters: ${secretParamsJsonTitle}
46
+ `;
47
+ providerSchemaMap += " },\n";
48
+ }
49
+ providerTypeMap += "}\n";
50
+ providerSchemaMap += "}\n";
51
+ ts += providerTypeMap;
52
+ ts += providerSchemaMap;
53
+ await writeFile(GEN_TS_FILENAME, ts);
54
+ console.log(`Wrote to ${GEN_TS_FILENAME}`);
55
+ }
56
+ async function getJsonSchemaForProvider(name, type) {
57
+ const paramsYaml = await readFile(
58
+ `${PROVIDER_SCHEMAS_PATH}/${name}/${type}.yaml`,
59
+ { encoding: "utf-8" }
60
+ );
61
+ const paramsJson = parse(paramsYaml);
62
+ return paramsJson;
63
+ }
64
+ async function generateTsFromYamlSchema(name, type) {
65
+ const paramsJson = await getJsonSchemaForProvider(name, type);
66
+ let paramsSchemaTs = await compile(
67
+ paramsJson,
68
+ "",
69
+ {
70
+ additionalProperties: false,
71
+ bannerComment: "",
72
+ ignoreMinAndMaxItems: true,
73
+ declareExternallyReferenced: false,
74
+ customName({ type: type2, format }) {
75
+ if (type2 === "string" && format === "binary") {
76
+ return BinaryDataType;
77
+ }
78
+ return void 0;
79
+ }
80
+ }
81
+ );
82
+ const jsonTitle = `${paramsJson.title}Json`;
83
+ paramsSchemaTs += `
84
+ export const ${jsonTitle} = ${JSON.stringify(paramsJson)}`;
85
+ return {
86
+ ts: paramsSchemaTs,
87
+ schemaTitle: paramsJson.title,
88
+ jsonTitle
89
+ };
90
+ }
91
+ async function findAllProviderFolders() {
92
+ const providerFolders = await readdir(
93
+ PROVIDER_SCHEMAS_PATH,
94
+ { withFileTypes: true }
95
+ );
96
+ return providerFolders.filter((p) => p.isDirectory()).map((p) => p.name);
97
+ }
98
+ void main();
99
+ export {
100
+ generateTsFromYamlSchema
101
+ };
@@ -0,0 +1,9 @@
1
+ import '#src/server/utils/config-env.ts';
2
+ import type { ProviderName, ProviderParams, ProviderSecretParams } from '#src/index.ts';
3
+ type ProviderReceiptGenerationParams<P extends ProviderName> = {
4
+ name: P;
5
+ params: ProviderParams<P>;
6
+ secretParams: ProviderSecretParams<P>;
7
+ };
8
+ export declare function main<T extends ProviderName>(receiptParams?: ProviderReceiptGenerationParams<T>): Promise<void>;
9
+ export {};
@@ -0,0 +1,101 @@
1
+ import "../server/utils/config-env.js";
2
+ import { setCryptoImplementation } from "@reclaimprotocol/tls";
3
+ import { webcryptoCrypto } from "@reclaimprotocol/tls/webcrypto";
4
+ import { readFile } from "fs/promises";
5
+ import {
6
+ API_SERVER_PORT,
7
+ createClaimOnAttestor,
8
+ getAttestorClientFromPool,
9
+ getTranscriptString,
10
+ logger,
11
+ providers,
12
+ WS_PATHNAME
13
+ } from "../index.js";
14
+ import { getCliArgument } from "../scripts/utils.js";
15
+ import { createServer, decryptTranscript } from "../server/index.js";
16
+ import { assertValidateProviderParams } from "../server/utils/validation.js";
17
+ import { getEnvVariable } from "../utils/env.js";
18
+ setCryptoImplementation(webcryptoCrypto);
19
+ const DEFAULT_ATTESTOR_HOST_PORT = "wss://eu.attestor.reclaimprotocol.org/ws";
20
+ const PRIVATE_KEY_HEX = getEnvVariable("PRIVATE_KEY_HEX") || "0x0123788edad59d7c013cdc85e4372f350f828e2cec62d9a2de4560e69aec7f89";
21
+ let server;
22
+ async function main(receiptParams) {
23
+ const paramsJson = receiptParams ?? await getInputParameters();
24
+ if (!(paramsJson.name in providers)) {
25
+ throw new Error(`Unknown provider "${paramsJson.name}"`);
26
+ }
27
+ assertValidateProviderParams(paramsJson.name, paramsJson.params);
28
+ let attestorHostPort = getCliArgument("attestor") || DEFAULT_ATTESTOR_HOST_PORT;
29
+ if (attestorHostPort === "local") {
30
+ console.log("starting local attestor server...");
31
+ server = await createServer();
32
+ attestorHostPort = `ws://localhost:${API_SERVER_PORT}${WS_PATHNAME}`;
33
+ }
34
+ globalThis.ATTESTOR_BASE_URL = attestorHostPort.replace("ws://", "http://").replace("wss://", "https://");
35
+ const zkEngine = getCliArgument("zk") === "gnark" ? "gnark" : "stwo";
36
+ const { request, error, claim } = await createClaimOnAttestor({
37
+ name: paramsJson.name,
38
+ secretParams: paramsJson.secretParams,
39
+ params: paramsJson.params,
40
+ ownerPrivateKey: PRIVATE_KEY_HEX,
41
+ client: { url: attestorHostPort },
42
+ logger,
43
+ zkEngine
44
+ });
45
+ if (error) {
46
+ console.error("claim creation failed:", error);
47
+ } else {
48
+ const ctx = claim?.context ? JSON.parse(claim.context) : {};
49
+ console.log(`receipt is valid for ${paramsJson.name} provider`);
50
+ if (ctx.extractedParameters) {
51
+ console.log("extracted params:", ctx.extractedParameters);
52
+ }
53
+ }
54
+ if (!request) {
55
+ throw new Error("Missing request in claim");
56
+ }
57
+ const decTranscript = await decryptTranscript(
58
+ request?.transcript,
59
+ logger,
60
+ zkEngine,
61
+ request?.fixedServerIV,
62
+ request?.fixedClientIV
63
+ );
64
+ const transcriptStr = getTranscriptString(decTranscript);
65
+ console.log("receipt:\n", transcriptStr);
66
+ console.log("claim:\n", claim);
67
+ const client = getAttestorClientFromPool(attestorHostPort);
68
+ await client.terminateConnection();
69
+ }
70
+ async function getInputParameters() {
71
+ const paramsJsonFile = getCliArgument("json");
72
+ if (!paramsJsonFile) {
73
+ const name = getCliArgument("name");
74
+ const paramsStr = getCliArgument("params");
75
+ const secretParamsStr = getCliArgument("secretParams");
76
+ if (!name || !paramsStr || !secretParamsStr) {
77
+ throw new Error("Either provide --json argument for parameters JSON or provide separately with --name, --params & --secretParams");
78
+ }
79
+ return {
80
+ name,
81
+ params: JSON.parse(paramsStr),
82
+ secretParams: JSON.parse(secretParamsStr)
83
+ };
84
+ }
85
+ let fileContents = await readFile(paramsJsonFile, "utf8");
86
+ for (const variable in process.env) {
87
+ fileContents = fileContents.replace(
88
+ `{{${variable}}}`,
89
+ process.env[variable]
90
+ );
91
+ }
92
+ return JSON.parse(fileContents);
93
+ }
94
+ main().catch((err) => {
95
+ console.error("error in receipt gen", err);
96
+ }).finally(() => {
97
+ server?.close();
98
+ });
99
+ export {
100
+ main
101
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ import { hexlify } from "ethers";
2
+ import { logger, makeDefaultOPRFOperator } from "../utils/index.js";
3
+ const ENGINE = "gnark";
4
+ const TOTAL_KEYS = 10;
5
+ const THRESHOLD = 1;
6
+ async function main() {
7
+ const op = makeDefaultOPRFOperator("chacha20", ENGINE, logger);
8
+ const {
9
+ publicKey,
10
+ privateKey,
11
+ shares
12
+ } = await op.generateThresholdKeys(TOTAL_KEYS, THRESHOLD);
13
+ logEnvValue("TOPRF_PUBLIC_KEY", publicKey);
14
+ logEnvValue("TOPRF_PRIVATE_KEY", privateKey);
15
+ for (const [i, share] of shares.entries()) {
16
+ console.log(`# Share ${i}`);
17
+ logEnvValue("TOPRF_SHARE_PUBLIC_KEY", share.publicKey);
18
+ logEnvValue("TOPRF_SHARE_PRIVATE_KEY", share.privateKey);
19
+ }
20
+ }
21
+ function logEnvValue(name, value) {
22
+ console.log(`${name}=${hexlify(value)}`);
23
+ }
24
+ void main();
@@ -0,0 +1 @@
1
+ import '#src/external-rpc/jsc-polyfills/index.ts';
@@ -0,0 +1,35 @@
1
+ import "../external-rpc/jsc-polyfills/index.js";
2
+ import { setCryptoImplementation } from "@reclaimprotocol/tls";
3
+ import { pureJsCrypto } from "@reclaimprotocol/tls/purejs-crypto";
4
+ import { handleIncomingMessage } from "../external-rpc/index.js";
5
+ import { B64_JSON_REVIVER } from "../utils/b64-json.js";
6
+ function readIncomingMsg() {
7
+ const cmd2 = readline();
8
+ return JSON.parse(cmd2, B64_JSON_REVIVER);
9
+ }
10
+ setCryptoImplementation(pureJsCrypto);
11
+ print("Input base URL for attestor");
12
+ const initCmd = readIncomingMsg();
13
+ if (initCmd.type !== "init") {
14
+ throw new Error("Expected init command");
15
+ }
16
+ globalThis.RPC_CHANNEL_NAME = "cli";
17
+ globalThis.ATTESTOR_BASE_URL = initCmd.attestorBaseUrl;
18
+ const channel = {
19
+ postMessage(message) {
20
+ print(message);
21
+ }
22
+ };
23
+ globalThis[RPC_CHANNEL_NAME] = channel;
24
+ print("reading RPC messages...");
25
+ let cmd;
26
+ while (cmd = readIncomingMsg(), cmd.type !== "quit") {
27
+ if (cmd.type === "init") {
28
+ continue;
29
+ }
30
+ handleIncomingMessage(cmd);
31
+ await new Promise((resolve) => {
32
+ setTimeout(resolve, 500);
33
+ });
34
+ }
35
+ print("done");
@@ -0,0 +1 @@
1
+ import 'src/server/utils/config-env';
@@ -0,0 +1,3 @@
1
+ import "src/server/utils/config-env";
2
+ import { registerOperator } from "../avs/utils/register.js";
3
+ void registerOperator();
@@ -0,0 +1 @@
1
+ import '#src/server/utils/config-env.ts';
@@ -0,0 +1,11 @@
1
+ import "../server/utils/config-env.js";
2
+ import { setCryptoImplementation } from "@reclaimprotocol/tls";
3
+ import { webcryptoCrypto } from "@reclaimprotocol/tls/webcrypto";
4
+ import { getApm } from "../server/utils/apm.js";
5
+ getApm();
6
+ setCryptoImplementation(webcryptoCrypto);
7
+ async function main() {
8
+ const { createServer } = await import("../server/index.js");
9
+ return createServer();
10
+ }
11
+ main();
@@ -0,0 +1 @@
1
+ import 'src/server/utils/config-env';
@@ -0,0 +1,20 @@
1
+ import "src/server/utils/config-env";
2
+ import { getContracts } from "../avs/utils/contracts.js";
3
+ import { getCliArgument } from "../scripts/utils.js";
4
+ async function main() {
5
+ const { contract } = getContracts();
6
+ const minSignaturesPerTask = getCliArgument("minSignaturesPerTask");
7
+ if (!minSignaturesPerTask) {
8
+ throw new Error(
9
+ "Provide operator address via --minSignaturesPerTask <num>"
10
+ );
11
+ }
12
+ const tx = await contract.updateTaskCreationMetadata({
13
+ minSignaturesPerTask: +(minSignaturesPerTask || 0),
14
+ maxTaskCreationDelayS: 0,
15
+ maxTaskLifetimeS: 0
16
+ });
17
+ await tx.wait();
18
+ console.log("Updated task creation metadata");
19
+ }
20
+ void main();
@@ -0,0 +1 @@
1
+ export declare function getCliArgument(arg: string): string | undefined;
@@ -0,0 +1,10 @@
1
+ function getCliArgument(arg) {
2
+ const index = process.argv.indexOf(`--${arg}`);
3
+ if (index === -1) {
4
+ return void 0;
5
+ }
6
+ return process.argv[index + 1];
7
+ }
8
+ export {
9
+ getCliArgument
10
+ };
@@ -0,0 +1 @@
1
+ import 'src/server/utils/config-env';
@@ -0,0 +1,16 @@
1
+ import "src/server/utils/config-env";
2
+ import { getContracts } from "../avs/utils/contracts.js";
3
+ import { getCliArgument } from "../scripts/utils.js";
4
+ async function main() {
5
+ const { contract } = getContracts();
6
+ const address = getCliArgument("address");
7
+ if (!address) {
8
+ throw new Error(
9
+ "Provide operator address via --address <addr>"
10
+ );
11
+ }
12
+ const tx = await contract.whitelistAddressAsOperator(address, true);
13
+ await tx.wait();
14
+ console.log("Whitelisted address:", address);
15
+ }
16
+ void main();
@@ -0,0 +1,8 @@
1
+ import type { IncomingMessage } from 'http';
2
+ import type { WebSocket } from 'ws';
3
+ /**
4
+ * Creates the WebSocket API server,
5
+ * creates a fileserver to serve the browser RPC client,
6
+ * and listens on the given port.
7
+ */
8
+ export declare function createServer(port?: number): Promise<import("ws").Server<typeof WebSocket, typeof IncomingMessage>>;
@@ -0,0 +1,105 @@
1
+ import { createServer as createHttpServer } from "http";
2
+ import serveStatic from "serve-static";
3
+ import { WebSocketServer } from "ws";
4
+ import { API_SERVER_PORT, ATTESTOR_ADDRESS_PATHNAME, BROWSER_RPC_PATHNAME, WS_PATHNAME } from "../config/index.js";
5
+ import { AttestorServerSocket } from "../server/socket.js";
6
+ import { getAttestorAddress } from "../server/utils/generics.js";
7
+ import { addKeepAlive } from "../server/utils/keep-alive.js";
8
+ import { createBgpListener } from "../utils/bgp-listener.js";
9
+ import { getEnvVariable } from "../utils/env.js";
10
+ import { logger as LOGGER } from "../utils/index.js";
11
+ import { SelectedServiceSignatureType } from "../utils/signatures/index.js";
12
+ import { promisifySend } from "../utils/ws.js";
13
+ const PORT = +(getEnvVariable("PORT") || API_SERVER_PORT);
14
+ const DISABLE_BGP_CHECKS = getEnvVariable("DISABLE_BGP_CHECKS") === "1";
15
+ const ATTESTOR_ADDRESS_JSON_RES = JSON.stringify({
16
+ address: getAttestorAddress(SelectedServiceSignatureType),
17
+ signatureType: SelectedServiceSignatureType
18
+ });
19
+ async function createServer(port = PORT) {
20
+ const http = createHttpServer();
21
+ const serveBrowserRpc = serveStatic(
22
+ "browser",
23
+ {
24
+ index: ["index.html"],
25
+ setHeaders(res) {
26
+ res.setHeader("Access-Control-Allow-Origin", "*");
27
+ }
28
+ }
29
+ );
30
+ const bgpListener = !DISABLE_BGP_CHECKS ? createBgpListener(LOGGER.child({ service: "bgp-listener" })) : void 0;
31
+ const wss = new WebSocketServer({ noServer: true });
32
+ http.on("upgrade", handleUpgrade.bind(wss));
33
+ http.on("request", (req, res) => {
34
+ const url = URL.parse(req.url || "", "http://localhost");
35
+ if (!url) {
36
+ res.statusCode = 422;
37
+ res.end("Invalid URL");
38
+ return;
39
+ }
40
+ if (url.pathname === ATTESTOR_ADDRESS_PATHNAME) {
41
+ res.writeHead(200, { "Content-Type": "application/json" });
42
+ res.end(ATTESTOR_ADDRESS_JSON_RES);
43
+ return;
44
+ }
45
+ if (!url.pathname?.startsWith(BROWSER_RPC_PATHNAME)) {
46
+ res.statusCode = 404;
47
+ res.end("Not found");
48
+ return;
49
+ }
50
+ req.url = req.url.slice(BROWSER_RPC_PATHNAME.length) || "/";
51
+ serveBrowserRpc(req, res, (err) => {
52
+ if (err) {
53
+ LOGGER.error({ err, url: req.url }, "Failed to serve file");
54
+ }
55
+ res.statusCode = err?.statusCode ?? 404;
56
+ res.end(err?.message ?? "Not found");
57
+ });
58
+ });
59
+ http.listen(port);
60
+ await new Promise((resolve, reject) => {
61
+ http.once("listening", () => resolve());
62
+ http.once("error", reject);
63
+ });
64
+ wss.on("connection", (ws, req) => handleNewClient(ws, req, bgpListener));
65
+ LOGGER.info(
66
+ {
67
+ port,
68
+ apiPath: WS_PATHNAME,
69
+ browserRpcPath: BROWSER_RPC_PATHNAME,
70
+ signerAddress: getAttestorAddress(SelectedServiceSignatureType)
71
+ },
72
+ "WS server listening"
73
+ );
74
+ const wssClose = wss.close.bind(wss);
75
+ wss.close = (cb) => {
76
+ wssClose(() => http.close(cb));
77
+ bgpListener?.close();
78
+ };
79
+ return wss;
80
+ }
81
+ async function handleNewClient(ws, req, bgpListener) {
82
+ promisifySend(ws);
83
+ const client = await AttestorServerSocket.acceptConnection(
84
+ ws,
85
+ { req, bgpListener, logger: LOGGER }
86
+ );
87
+ if (!client) {
88
+ return;
89
+ }
90
+ ws.serverSocket = client;
91
+ addKeepAlive(ws, LOGGER.child({ sessionId: client.sessionId }));
92
+ }
93
+ function handleUpgrade(request, socket, head) {
94
+ const { pathname } = new URL(request.url, "wss://base.url");
95
+ if (pathname === WS_PATHNAME) {
96
+ this.handleUpgrade(request, socket, head, (ws) => {
97
+ this.emit("connection", ws, request);
98
+ });
99
+ return;
100
+ }
101
+ socket.destroy();
102
+ }
103
+ export {
104
+ createServer
105
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * TEE Bundle Claim Handler
3
+ * Handles ClaimTeeBundleRequest by verifying TEE attestations and reconstructing TLS transcript
4
+ */
5
+ import type { RPCHandler } from '#src/types/index.ts';
6
+ export declare const claimTeeBundle: RPCHandler<'claimTeeBundle'>;