@reclaimprotocol/attestor-core 5.0.1-beta.9 → 5.0.2-beta.1

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 (310) hide show
  1. package/browser/resources/attestor-browser.min.mjs +4513 -0
  2. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +1 -1
  3. package/lib/external-rpc/index.js +10397 -3
  4. package/lib/index.js +8325 -10
  5. package/lib/server/utils/generics.d.ts +1 -1
  6. package/lib/server/utils/proxy-session.d.ts +1 -1
  7. package/lib/types/general.d.ts +0 -1
  8. package/lib/types/providers.d.ts +3 -2
  9. package/lib/types/signatures.d.ts +1 -2
  10. package/lib/utils/generics.d.ts +1 -6
  11. package/lib/utils/index.d.ts +0 -1
  12. package/package.json +9 -11
  13. package/lib/avs/abis/avsDirectoryABI.js +0 -343
  14. package/lib/avs/abis/delegationABI.js +0 -4
  15. package/lib/avs/abis/registryABI.js +0 -728
  16. package/lib/avs/client/create-claim-on-avs.js +0 -168
  17. package/lib/avs/config.js +0 -26
  18. package/lib/avs/contracts/ReclaimServiceManager.js +0 -0
  19. package/lib/avs/contracts/common.js +0 -0
  20. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +0 -1183
  21. package/lib/avs/contracts/factories/index.js +0 -4
  22. package/lib/avs/contracts/index.js +0 -6
  23. package/lib/avs/types/index.js +0 -0
  24. package/lib/avs/utils/contracts.js +0 -53
  25. package/lib/avs/utils/register.js +0 -74
  26. package/lib/avs/utils/tasks.js +0 -48
  27. package/lib/browser/avs/abis/avsDirectoryABI.d.ts +0 -60
  28. package/lib/browser/avs/abis/avsDirectoryABI.js +0 -343
  29. package/lib/browser/avs/abis/delegationABI.d.ts +0 -126
  30. package/lib/browser/avs/abis/delegationABI.js +0 -4
  31. package/lib/browser/avs/abis/registryABI.d.ts +0 -136
  32. package/lib/browser/avs/abis/registryABI.js +0 -728
  33. package/lib/browser/avs/client/create-claim-on-avs.d.ts +0 -12
  34. package/lib/browser/avs/client/create-claim-on-avs.js +0 -168
  35. package/lib/browser/avs/config.d.ts +0 -7
  36. package/lib/browser/avs/config.js +0 -26
  37. package/lib/browser/avs/contracts/ReclaimServiceManager.d.ts +0 -601
  38. package/lib/browser/avs/contracts/ReclaimServiceManager.js +0 -0
  39. package/lib/browser/avs/contracts/common.d.ts +0 -50
  40. package/lib/browser/avs/contracts/common.js +0 -0
  41. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +0 -890
  42. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.js +0 -1183
  43. package/lib/browser/avs/contracts/factories/index.d.ts +0 -1
  44. package/lib/browser/avs/contracts/factories/index.js +0 -4
  45. package/lib/browser/avs/contracts/index.d.ts +0 -3
  46. package/lib/browser/avs/contracts/index.js +0 -6
  47. package/lib/browser/avs/types/index.d.ts +0 -55
  48. package/lib/browser/avs/types/index.js +0 -0
  49. package/lib/browser/avs/utils/contracts.d.ts +0 -21
  50. package/lib/browser/avs/utils/contracts.js +0 -53
  51. package/lib/browser/avs/utils/register.d.ts +0 -27
  52. package/lib/browser/avs/utils/register.js +0 -74
  53. package/lib/browser/avs/utils/tasks.d.ts +0 -22
  54. package/lib/browser/avs/utils/tasks.js +0 -48
  55. package/lib/browser/client/create-claim.d.ts +0 -5
  56. package/lib/browser/client/create-claim.js +0 -461
  57. package/lib/browser/client/index.d.ts +0 -3
  58. package/lib/browser/client/index.js +0 -3
  59. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.d.ts +0 -16
  60. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.js +0 -53
  61. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.d.ts +0 -26
  62. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.js +0 -127
  63. package/lib/browser/client/utils/attestor-pool.d.ts +0 -8
  64. package/lib/browser/client/utils/attestor-pool.js +0 -24
  65. package/lib/browser/client/utils/client-socket.d.ts +0 -11
  66. package/lib/browser/client/utils/client-socket.js +0 -120
  67. package/lib/browser/client/utils/message-handler.d.ts +0 -4
  68. package/lib/browser/client/utils/message-handler.js +0 -97
  69. package/lib/browser/config/index.d.ts +0 -31
  70. package/lib/browser/config/index.js +0 -62
  71. package/lib/browser/external-rpc/benchmark.d.ts +0 -1
  72. package/lib/browser/external-rpc/benchmark.js +0 -82
  73. package/lib/browser/external-rpc/event-bus.d.ts +0 -7
  74. package/lib/browser/external-rpc/event-bus.js +0 -17
  75. package/lib/browser/external-rpc/global.d.js +0 -0
  76. package/lib/browser/external-rpc/handle-incoming-msg.d.ts +0 -2
  77. package/lib/browser/external-rpc/handle-incoming-msg.js +0 -241
  78. package/lib/browser/external-rpc/index.d.ts +0 -3
  79. package/lib/browser/external-rpc/index.js +0 -3
  80. package/lib/browser/external-rpc/jsc-polyfills/1.d.ts +0 -14
  81. package/lib/browser/external-rpc/jsc-polyfills/1.js +0 -80
  82. package/lib/browser/external-rpc/jsc-polyfills/2.d.ts +0 -1
  83. package/lib/browser/external-rpc/jsc-polyfills/2.js +0 -15
  84. package/lib/browser/external-rpc/jsc-polyfills/event.d.ts +0 -10
  85. package/lib/browser/external-rpc/jsc-polyfills/event.js +0 -19
  86. package/lib/browser/external-rpc/jsc-polyfills/index.d.ts +0 -2
  87. package/lib/browser/external-rpc/jsc-polyfills/index.js +0 -2
  88. package/lib/browser/external-rpc/jsc-polyfills/ws.d.ts +0 -21
  89. package/lib/browser/external-rpc/jsc-polyfills/ws.js +0 -83
  90. package/lib/browser/external-rpc/setup-browser.d.ts +0 -6
  91. package/lib/browser/external-rpc/setup-browser.js +0 -33
  92. package/lib/browser/external-rpc/setup-jsc.d.ts +0 -24
  93. package/lib/browser/external-rpc/setup-jsc.js +0 -22
  94. package/lib/browser/external-rpc/types.d.ts +0 -213
  95. package/lib/browser/external-rpc/types.js +0 -0
  96. package/lib/browser/external-rpc/utils.d.ts +0 -20
  97. package/lib/browser/external-rpc/utils.js +0 -100
  98. package/lib/browser/external-rpc/zk.d.ts +0 -14
  99. package/lib/browser/external-rpc/zk.js +0 -58
  100. package/lib/browser/index.browser.js +0 -13
  101. package/lib/browser/index.d.ts +0 -9
  102. package/lib/browser/index.js +0 -13
  103. package/lib/browser/mechain/abis/governanceABI.d.ts +0 -50
  104. package/lib/browser/mechain/abis/governanceABI.js +0 -461
  105. package/lib/browser/mechain/abis/taskABI.d.ts +0 -157
  106. package/lib/browser/mechain/abis/taskABI.js +0 -512
  107. package/lib/browser/mechain/client/create-claim-on-mechain.d.ts +0 -10
  108. package/lib/browser/mechain/client/create-claim-on-mechain.js +0 -33
  109. package/lib/browser/mechain/client/index.d.ts +0 -1
  110. package/lib/browser/mechain/client/index.js +0 -1
  111. package/lib/browser/mechain/constants/index.d.ts +0 -3
  112. package/lib/browser/mechain/constants/index.js +0 -8
  113. package/lib/browser/mechain/index.d.ts +0 -2
  114. package/lib/browser/mechain/index.js +0 -2
  115. package/lib/browser/mechain/types/index.d.ts +0 -23
  116. package/lib/browser/mechain/types/index.js +0 -0
  117. package/lib/browser/proto/api.d.ts +0 -651
  118. package/lib/browser/proto/api.js +0 -4250
  119. package/lib/browser/proto/tee-bundle.d.ts +0 -156
  120. package/lib/browser/proto/tee-bundle.js +0 -1296
  121. package/lib/browser/providers/http/index.d.ts +0 -18
  122. package/lib/browser/providers/http/index.js +0 -640
  123. package/lib/browser/providers/http/patch-parse5-tree.d.ts +0 -6
  124. package/lib/browser/providers/http/patch-parse5-tree.js +0 -34
  125. package/lib/browser/providers/http/utils.d.ts +0 -77
  126. package/lib/browser/providers/http/utils.js +0 -283
  127. package/lib/browser/providers/index.d.ts +0 -4
  128. package/lib/browser/providers/index.js +0 -7
  129. package/lib/browser/types/bgp.d.ts +0 -11
  130. package/lib/browser/types/bgp.js +0 -0
  131. package/lib/browser/types/claims.d.ts +0 -70
  132. package/lib/browser/types/claims.js +0 -0
  133. package/lib/browser/types/client.d.ts +0 -163
  134. package/lib/browser/types/client.js +0 -0
  135. package/lib/browser/types/general.d.ts +0 -77
  136. package/lib/browser/types/general.js +0 -0
  137. package/lib/browser/types/handlers.d.ts +0 -10
  138. package/lib/browser/types/handlers.js +0 -0
  139. package/lib/browser/types/index.d.ts +0 -10
  140. package/lib/browser/types/index.js +0 -10
  141. package/lib/browser/types/providers.d.ts +0 -161
  142. package/lib/browser/types/providers.gen.d.ts +0 -443
  143. package/lib/browser/types/providers.gen.js +0 -16
  144. package/lib/browser/types/providers.js +0 -0
  145. package/lib/browser/types/rpc.d.ts +0 -35
  146. package/lib/browser/types/rpc.js +0 -0
  147. package/lib/browser/types/signatures.d.ts +0 -28
  148. package/lib/browser/types/signatures.js +0 -0
  149. package/lib/browser/types/tunnel.d.ts +0 -18
  150. package/lib/browser/types/tunnel.js +0 -0
  151. package/lib/browser/types/zk.d.ts +0 -38
  152. package/lib/browser/types/zk.js +0 -0
  153. package/lib/browser/utils/auth.d.ts +0 -8
  154. package/lib/browser/utils/auth.js +0 -71
  155. package/lib/browser/utils/b64-json.d.ts +0 -2
  156. package/lib/browser/utils/b64-json.js +0 -17
  157. package/lib/browser/utils/claims.d.ts +0 -33
  158. package/lib/browser/utils/claims.js +0 -89
  159. package/lib/browser/utils/env.d.ts +0 -3
  160. package/lib/browser/utils/env.js +0 -19
  161. package/lib/browser/utils/error.d.ts +0 -26
  162. package/lib/browser/utils/error.js +0 -54
  163. package/lib/browser/utils/generics.d.ts +0 -119
  164. package/lib/browser/utils/generics.js +0 -272
  165. package/lib/browser/utils/http-parser.d.ts +0 -59
  166. package/lib/browser/utils/http-parser.js +0 -201
  167. package/lib/browser/utils/index.browser.js +0 -13
  168. package/lib/browser/utils/index.d.ts +0 -13
  169. package/lib/browser/utils/index.js +0 -13
  170. package/lib/browser/utils/logger.browser.js +0 -88
  171. package/lib/browser/utils/logger.d.ts +0 -14
  172. package/lib/browser/utils/logger.js +0 -88
  173. package/lib/browser/utils/prepare-packets.d.ts +0 -16
  174. package/lib/browser/utils/prepare-packets.js +0 -69
  175. package/lib/browser/utils/redactions.d.ts +0 -73
  176. package/lib/browser/utils/redactions.js +0 -135
  177. package/lib/browser/utils/retries.d.ts +0 -12
  178. package/lib/browser/utils/retries.js +0 -26
  179. package/lib/browser/utils/signatures/eth.d.ts +0 -2
  180. package/lib/browser/utils/signatures/eth.js +0 -31
  181. package/lib/browser/utils/signatures/index.d.ts +0 -5
  182. package/lib/browser/utils/signatures/index.js +0 -12
  183. package/lib/browser/utils/socket-base.d.ts +0 -23
  184. package/lib/browser/utils/socket-base.js +0 -96
  185. package/lib/browser/utils/tls-imports.d.ts +0 -21
  186. package/lib/browser/utils/tls-imports.js +0 -71
  187. package/lib/browser/utils/tls.d.ts +0 -2
  188. package/lib/browser/utils/tls.js +0 -58
  189. package/lib/browser/utils/ws.d.ts +0 -7
  190. package/lib/browser/utils/ws.js +0 -22
  191. package/lib/browser/utils/zk.d.ts +0 -71
  192. package/lib/browser/utils/zk.js +0 -625
  193. package/lib/client/create-claim.js +0 -461
  194. package/lib/client/index.js +0 -3
  195. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +0 -53
  196. package/lib/client/tunnels/make-rpc-tls-tunnel.js +0 -127
  197. package/lib/client/utils/attestor-pool.js +0 -24
  198. package/lib/client/utils/client-socket.js +0 -120
  199. package/lib/client/utils/message-handler.js +0 -97
  200. package/lib/config/index.js +0 -62
  201. package/lib/external-rpc/benchmark.js +0 -82
  202. package/lib/external-rpc/event-bus.js +0 -17
  203. package/lib/external-rpc/global.d.js +0 -0
  204. package/lib/external-rpc/handle-incoming-msg.js +0 -241
  205. package/lib/external-rpc/jsc-polyfills/1.js +0 -80
  206. package/lib/external-rpc/jsc-polyfills/2.js +0 -15
  207. package/lib/external-rpc/jsc-polyfills/event.js +0 -19
  208. package/lib/external-rpc/jsc-polyfills/index.js +0 -2
  209. package/lib/external-rpc/jsc-polyfills/ws.js +0 -83
  210. package/lib/external-rpc/setup-browser.js +0 -33
  211. package/lib/external-rpc/setup-jsc.js +0 -22
  212. package/lib/external-rpc/types.js +0 -0
  213. package/lib/external-rpc/utils.js +0 -100
  214. package/lib/external-rpc/zk.js +0 -58
  215. package/lib/index.browser.d.ts +0 -9
  216. package/lib/mechain/abis/governanceABI.js +0 -461
  217. package/lib/mechain/abis/taskABI.js +0 -512
  218. package/lib/mechain/client/create-claim-on-mechain.js +0 -33
  219. package/lib/mechain/client/index.js +0 -1
  220. package/lib/mechain/constants/index.js +0 -8
  221. package/lib/mechain/index.js +0 -2
  222. package/lib/mechain/types/index.js +0 -0
  223. package/lib/proto/api.js +0 -4250
  224. package/lib/proto/tee-bundle.js +0 -1296
  225. package/lib/providers/http/index.js +0 -640
  226. package/lib/providers/http/patch-parse5-tree.js +0 -34
  227. package/lib/providers/http/utils.js +0 -283
  228. package/lib/providers/index.js +0 -7
  229. package/lib/scripts/check-avs-registration.js +0 -28
  230. package/lib/scripts/fallbacks/crypto.js +0 -4
  231. package/lib/scripts/fallbacks/empty.js +0 -4
  232. package/lib/scripts/fallbacks/re2.js +0 -7
  233. package/lib/scripts/fallbacks/snarkjs.js +0 -10
  234. package/lib/scripts/fallbacks/stwo.js +0 -159
  235. package/lib/scripts/generate-provider-types.js +0 -101
  236. package/lib/scripts/generate-receipt.js +0 -101
  237. package/lib/scripts/generate-toprf-keys.js +0 -24
  238. package/lib/scripts/jsc-cli-rpc.js +0 -35
  239. package/lib/scripts/register-avs-operator.js +0 -3
  240. package/lib/scripts/start-server.js +0 -11
  241. package/lib/scripts/update-avs-metadata.js +0 -20
  242. package/lib/scripts/utils.js +0 -10
  243. package/lib/scripts/whitelist-operator.js +0 -16
  244. package/lib/server/create-server.js +0 -105
  245. package/lib/server/handlers/claimTeeBundle.js +0 -232
  246. package/lib/server/handlers/claimTunnel.js +0 -80
  247. package/lib/server/handlers/completeClaimOnChain.js +0 -29
  248. package/lib/server/handlers/createClaimOnChain.js +0 -32
  249. package/lib/server/handlers/createTaskOnMechain.js +0 -57
  250. package/lib/server/handlers/createTunnel.js +0 -98
  251. package/lib/server/handlers/disconnectTunnel.js +0 -8
  252. package/lib/server/handlers/fetchCertificateBytes.js +0 -57
  253. package/lib/server/handlers/index.js +0 -25
  254. package/lib/server/handlers/init.js +0 -33
  255. package/lib/server/handlers/toprf.js +0 -19
  256. package/lib/server/index.js +0 -4
  257. package/lib/server/socket.js +0 -112
  258. package/lib/server/tunnels/make-tcp-tunnel.js +0 -202
  259. package/lib/server/utils/apm.js +0 -29
  260. package/lib/server/utils/assert-valid-claim-request.js +0 -354
  261. package/lib/server/utils/config-env.js +0 -4
  262. package/lib/server/utils/dns.js +0 -24
  263. package/lib/server/utils/gcp-attestation.js +0 -237
  264. package/lib/server/utils/generics.js +0 -45
  265. package/lib/server/utils/iso.js +0 -259
  266. package/lib/server/utils/keep-alive.js +0 -38
  267. package/lib/server/utils/nitro-attestation.js +0 -249
  268. package/lib/server/utils/oprf-raw.js +0 -61
  269. package/lib/server/utils/process-handshake.js +0 -233
  270. package/lib/server/utils/proxy-session.js +0 -4
  271. package/lib/server/utils/tee-oprf-mpc-verification.js +0 -86
  272. package/lib/server/utils/tee-oprf-verification.js +0 -151
  273. package/lib/server/utils/tee-transcript-reconstruction.js +0 -140
  274. package/lib/server/utils/tee-verification.js +0 -358
  275. package/lib/server/utils/validation.js +0 -45
  276. package/lib/types/bgp.js +0 -0
  277. package/lib/types/claims.js +0 -0
  278. package/lib/types/client.js +0 -0
  279. package/lib/types/general.js +0 -0
  280. package/lib/types/handlers.js +0 -0
  281. package/lib/types/index.js +0 -10
  282. package/lib/types/providers.gen.js +0 -16
  283. package/lib/types/providers.js +0 -0
  284. package/lib/types/rpc.js +0 -0
  285. package/lib/types/signatures.js +0 -0
  286. package/lib/types/tunnel.js +0 -0
  287. package/lib/types/zk.js +0 -0
  288. package/lib/utils/auth.js +0 -71
  289. package/lib/utils/b64-json.js +0 -17
  290. package/lib/utils/bgp-listener.js +0 -123
  291. package/lib/utils/claims.js +0 -89
  292. package/lib/utils/env.js +0 -19
  293. package/lib/utils/error.js +0 -54
  294. package/lib/utils/generics.js +0 -272
  295. package/lib/utils/http-parser.js +0 -201
  296. package/lib/utils/index.browser.d.ts +0 -13
  297. package/lib/utils/index.js +0 -14
  298. package/lib/utils/logger.browser.d.ts +0 -14
  299. package/lib/utils/logger.js +0 -82
  300. package/lib/utils/prepare-packets.js +0 -69
  301. package/lib/utils/redactions.js +0 -135
  302. package/lib/utils/retries.js +0 -26
  303. package/lib/utils/signatures/eth.js +0 -31
  304. package/lib/utils/signatures/index.js +0 -12
  305. package/lib/utils/socket-base.js +0 -96
  306. package/lib/utils/tls-imports.d.ts +0 -21
  307. package/lib/utils/tls-imports.js +0 -71
  308. package/lib/utils/tls.js +0 -58
  309. package/lib/utils/ws.js +0 -22
  310. package/lib/utils/zk.js +0 -625
@@ -1,461 +0,0 @@
1
- import { makeRpcTlsTunnel } from "../client/tunnels/make-rpc-tls-tunnel.js";
2
- import { getAttestorClientFromPool } from "../client/utils/attestor-pool.js";
3
- import { DEFAULT_HTTPS_PORT, PROVIDER_CTX, TOPRF_DOMAIN_SEPARATOR } from "../config/index.js";
4
- import { ClaimTunnelRequest } from "../proto/api.js";
5
- import { providers } from "../providers/index.js";
6
- import {
7
- asciiToUint8Array,
8
- AttestorError,
9
- binaryHashToStr,
10
- canonicalStringify,
11
- generateTunnelId,
12
- getBlocksToReveal,
13
- getEngineProto,
14
- getProviderValue,
15
- isApplicationData,
16
- logger as LOGGER,
17
- makeDefaultOPRFOperator,
18
- makeHttpResponseParser,
19
- preparePacketsForReveal,
20
- redactSlices,
21
- uint8ArrayToStr,
22
- unixTimestampSeconds
23
- } from "../utils/index.js";
24
- import { executeWithRetries } from "../utils/retries.js";
25
- import { SIGNATURES } from "../utils/signatures/index.js";
26
- import { getDefaultTlsOptions } from "../utils/tls.js";
27
- function createClaimOnAttestor({
28
- logger: _logger,
29
- maxRetries = 3,
30
- ...opts
31
- }) {
32
- const logger = _logger || ("logger" in opts.client ? opts.client.logger : LOGGER);
33
- return executeWithRetries(
34
- (attempt) => _createClaimOnAttestor({
35
- ...opts,
36
- logger: attempt ? logger.child({ attempt }) : logger
37
- }),
38
- { maxRetries, logger, shouldRetry }
39
- );
40
- }
41
- function shouldRetry(err) {
42
- if (err instanceof TypeError) {
43
- return false;
44
- }
45
- if (err?.message?.includes("stream ended before")) {
46
- return true;
47
- }
48
- return err instanceof AttestorError && err.code !== "ERROR_INVALID_CLAIM" && err.code !== "ERROR_BAD_REQUEST" && err.code !== "ERROR_AUTHENTICATION_FAILED" && err.code !== "ERROR_TOPRF_OUT_OF_BOUNDS";
49
- }
50
- async function _createClaimOnAttestor({
51
- name,
52
- params,
53
- secretParams,
54
- context,
55
- onStep,
56
- ownerPrivateKey,
57
- client: clientInit,
58
- logger = LOGGER,
59
- timestampS,
60
- updateProviderParams,
61
- updateParametersFromOprfData = true,
62
- ...zkOpts
63
- }) {
64
- const provider = providers[name];
65
- const hostPort = getProviderValue(params, provider.hostPort, secretParams);
66
- const geoLocation = getProviderValue(params, provider.geoLocation, secretParams);
67
- const proxySessionId = getProviderValue(params, provider.proxySessionId, secretParams);
68
- const providerTlsOpts = getProviderValue(
69
- params,
70
- provider.additionalClientOptions
71
- );
72
- const tlsOpts = {
73
- ...getDefaultTlsOptions(),
74
- fetchCertificateBytes: fetchCertificateBytesFromAttestor,
75
- ...providerTlsOpts
76
- };
77
- const { zkEngine = "snarkjs" } = zkOpts;
78
- let redactionMode = getProviderValue(params, provider.writeRedactionMode);
79
- const [host, port] = hostPort.split(":");
80
- const resParser = makeHttpResponseParser();
81
- let client;
82
- let lastMsgRevealed = false;
83
- const revealMap = /* @__PURE__ */ new Map();
84
- onStep?.({ name: "connecting" });
85
- let endedHttpRequest;
86
- const createTunnelReq = {
87
- host,
88
- port: port ? +port : DEFAULT_HTTPS_PORT,
89
- geoLocation,
90
- proxySessionId,
91
- id: generateTunnelId()
92
- };
93
- logger = logger.child({ tunnelId: createTunnelReq.id });
94
- const authRequest = "authRequest" in clientInit ? typeof clientInit.authRequest === "function" ? await clientInit.authRequest() : clientInit.authRequest : void 0;
95
- const tunnel = await makeRpcTlsTunnel({
96
- tlsOpts,
97
- connect: (connectMsgs) => {
98
- let created = false;
99
- if ("metadata" in clientInit) {
100
- client = clientInit;
101
- } else {
102
- client = getAttestorClientFromPool(
103
- clientInit.url,
104
- () => {
105
- created = true;
106
- return {
107
- authRequest,
108
- initMessages: connectMsgs,
109
- logger
110
- };
111
- }
112
- );
113
- }
114
- if (!created) {
115
- client.waitForInit().then(() => client.sendMessage(...connectMsgs)).catch((err) => {
116
- logger.error(
117
- { err },
118
- "error in sending init msgs"
119
- );
120
- });
121
- }
122
- return client;
123
- },
124
- logger,
125
- request: createTunnelReq,
126
- onMessage(data) {
127
- logger.debug({ bytes: data.length }, "recv data from server");
128
- resParser.onChunk(data);
129
- if (resParser.res.complete) {
130
- logger?.debug("got complete HTTP response from server");
131
- setTimeout(() => {
132
- endedHttpRequest?.();
133
- }, 100);
134
- }
135
- },
136
- onClose(err) {
137
- const level = err ? "error" : "debug";
138
- logger?.[level]({ err }, "tls session ended");
139
- endedHttpRequest?.(err);
140
- try {
141
- resParser.streamEnded();
142
- } catch {
143
- }
144
- }
145
- });
146
- const {
147
- version: tlsVersion,
148
- cipherSuite
149
- } = tunnel.tls.getMetadata();
150
- if (tlsVersion === "TLS1_2" && redactionMode !== "zk") {
151
- redactionMode = "zk";
152
- logger.info("TLS1.2 detected, defaulting to zk redaction mode");
153
- }
154
- const {
155
- redactions,
156
- data: requestStr
157
- } = provider.createRequest(
158
- // @ts-ignore
159
- secretParams,
160
- params,
161
- logger
162
- );
163
- const requestData = typeof requestStr === "string" ? asciiToUint8Array(requestStr) : requestStr;
164
- logger.debug(
165
- { redactions: redactions.length },
166
- "generated request"
167
- );
168
- const waitForAllData = new Promise(
169
- (resolve, reject) => {
170
- endedHttpRequest = (err) => err ? reject(err) : resolve();
171
- }
172
- );
173
- onStep?.({ name: "sending-request-data" });
174
- try {
175
- if (redactionMode === "zk") {
176
- await writeRedactedZk();
177
- } else {
178
- await writeRedactedWithKeyUpdate();
179
- }
180
- logger.info("wrote request to server");
181
- } catch (err) {
182
- logger.error(
183
- { err },
184
- "session errored during write, waiting for stream end"
185
- );
186
- }
187
- onStep?.({ name: "waiting-for-response" });
188
- await waitForAllData;
189
- await tunnel.close();
190
- logger.info("session closed, processing response");
191
- if (updateProviderParams) {
192
- const { params: updatedParms, secretParams: updatedSecretParms } = await updateProviderParams(tunnel.transcript, tlsVersion ?? "TLS1_2");
193
- params = { ...params, ...updatedParms };
194
- secretParams = { ...secretParams, ...updatedSecretParms };
195
- }
196
- const signatureAlg = SIGNATURES[client.metadata.signatureType];
197
- let serverIV;
198
- let clientIV;
199
- const [serverBlock] = getLastBlocks("server", 1);
200
- if (serverBlock?.message.type === "ciphertext") {
201
- serverIV = serverBlock.message.fixedIv;
202
- }
203
- const [clientBlock] = getLastBlocks("client", 1);
204
- if (clientBlock?.message.type === "ciphertext") {
205
- clientIV = clientBlock.message.fixedIv;
206
- }
207
- const transcript = await generateTranscript();
208
- const claimTunnelReq = ClaimTunnelRequest.create({
209
- request: createTunnelReq,
210
- data: {
211
- provider: name,
212
- parameters: canonicalStringify(params),
213
- context: canonicalStringify(context),
214
- timestampS: timestampS ?? unixTimestampSeconds(),
215
- owner: getAddress()
216
- },
217
- transcript,
218
- zkEngine: getEngineProto(zkEngine),
219
- fixedServerIV: serverIV,
220
- fixedClientIV: clientIV
221
- });
222
- onStep?.({ name: "waiting-for-verification" });
223
- const claimTunnelBytes = ClaimTunnelRequest.encode(claimTunnelReq).finish();
224
- const requestSignature = await signatureAlg.sign(claimTunnelBytes, ownerPrivateKey);
225
- claimTunnelReq.signatures = { requestSignature };
226
- const result = await client.rpc("claimTunnel", claimTunnelReq);
227
- logger.info({ success: !!result.claim }, "recv claim response");
228
- return result;
229
- async function fetchCertificateBytesFromAttestor(url) {
230
- if (!client) {
231
- throw new Error("attestor client not initialized");
232
- }
233
- const result2 = await client.rpc("fetchCertificateBytes", { url });
234
- return result2.bytes;
235
- }
236
- async function writeRedactedWithKeyUpdate() {
237
- let currentIndex = 0;
238
- for (const section of redactions) {
239
- const block2 = requestData.slice(currentIndex, section.fromIndex);
240
- if (block2.length) {
241
- await writeWithReveal(block2, true);
242
- }
243
- const redacted = requestData.slice(section.fromIndex, section.toIndex);
244
- await writeWithReveal(redacted, false);
245
- currentIndex = section.toIndex;
246
- }
247
- const lastBlockStart = redactions?.[redactions.length - 1]?.toIndex || 0;
248
- const block = requestData.slice(lastBlockStart);
249
- if (block.length) {
250
- await writeWithReveal(block, true);
251
- }
252
- }
253
- async function writeRedactedZk() {
254
- let blocksWritten = tunnel.transcript.length;
255
- await tunnel.tls.write(requestData);
256
- blocksWritten = tunnel.transcript.length - blocksWritten;
257
- setRevealOfLastSentBlocks(
258
- {
259
- type: "zk",
260
- redactedPlaintext: redactSlices(requestData, redactions)
261
- },
262
- blocksWritten
263
- );
264
- }
265
- async function writeWithReveal(data, reveal) {
266
- if (reveal !== lastMsgRevealed) {
267
- await tunnel.tls.updateTrafficKeys();
268
- }
269
- let blocksWritten = tunnel.transcript.length;
270
- await tunnel.write(data);
271
- blocksWritten = tunnel.transcript.length - blocksWritten;
272
- setRevealOfLastSentBlocks(reveal ? { type: "complete" } : void 0, blocksWritten);
273
- lastMsgRevealed = reveal;
274
- }
275
- function setRevealOfLastSentBlocks(reveal, nBlocks = 1) {
276
- const lastBlocks = getLastBlocks("client", nBlocks);
277
- if (!lastBlocks.length) {
278
- return;
279
- }
280
- for (const block of lastBlocks) {
281
- setRevealOfMessage(block.message, reveal);
282
- }
283
- }
284
- function getLastBlocks(sender, nBlocks) {
285
- const lastBlocks = [];
286
- for (let i = tunnel.transcript.length - 1; i >= 0; i--) {
287
- const block = tunnel.transcript[i];
288
- if (block.sender === sender) {
289
- lastBlocks.push(block);
290
- if (lastBlocks.length === nBlocks) {
291
- break;
292
- }
293
- }
294
- }
295
- return lastBlocks;
296
- }
297
- async function generateTranscript() {
298
- await addServerSideReveals();
299
- const startMs = Date.now();
300
- const revealedMessages = await preparePacketsForReveal(
301
- tunnel.transcript,
302
- revealMap,
303
- {
304
- logger,
305
- cipherSuite,
306
- onZkProgress(done, total) {
307
- const timeSinceStartMs = Date.now() - startMs;
308
- const timePerBlockMs = timeSinceStartMs / done;
309
- const timeLeftMs = timePerBlockMs * (total - done);
310
- onStep?.({
311
- name: "generating-zk-proofs",
312
- proofsDone: done,
313
- proofsTotal: total,
314
- approxTimeLeftS: Math.round(timeLeftMs / 1e3)
315
- });
316
- },
317
- ...zkOpts
318
- }
319
- );
320
- return revealedMessages;
321
- }
322
- async function addServerSideReveals() {
323
- const allPackets = tunnel.transcript;
324
- let serverPacketsToReveal = "all";
325
- const packets = [];
326
- const serverBlocks = [];
327
- for (const b of allPackets) {
328
- if (b.message.type !== "ciphertext" || !isApplicationData(b.message, tlsVersion)) {
329
- continue;
330
- }
331
- const plaintext = tlsVersion === "TLS1_3" ? b.message.plaintext.slice(0, -1) : b.message.plaintext;
332
- packets.push({
333
- message: plaintext,
334
- sender: b.sender
335
- });
336
- if (b.sender === "server") {
337
- serverBlocks.push({
338
- plaintext,
339
- message: b.message
340
- });
341
- }
342
- }
343
- if (provider.getResponseRedactions) {
344
- serverPacketsToReveal = await getBlocksToReveal(
345
- serverBlocks,
346
- (total) => provider.getResponseRedactions({
347
- response: total,
348
- params,
349
- logger,
350
- ctx: PROVIDER_CTX
351
- }),
352
- performOprf
353
- );
354
- }
355
- const revealedPackets = packets.filter((p) => p.sender === "client");
356
- if (serverPacketsToReveal === "all") {
357
- for (const { message, sender } of allPackets) {
358
- if (sender === "server") {
359
- setRevealOfMessage(message, { type: "complete" });
360
- }
361
- }
362
- revealedPackets.push(...packets.filter((p) => p.sender === "server"));
363
- } else {
364
- for (const {
365
- block,
366
- redactedPlaintext,
367
- overshotToprfFromPrevBlock,
368
- toprfs,
369
- oprfRawMarkers
370
- } of serverPacketsToReveal) {
371
- setRevealOfMessage(block.message, {
372
- type: "zk",
373
- redactedPlaintext,
374
- toprfs,
375
- oprfRawMarkers,
376
- overshotToprfFromPrevBlock
377
- });
378
- revealedPackets.push(
379
- { sender: "server", message: redactedPlaintext }
380
- );
381
- if (updateParametersFromOprfData && toprfs) {
382
- let strParams = canonicalStringify(params);
383
- for (const toprf of toprfs) {
384
- const ogText = uint8ArrayToStr(toprf.plaintext);
385
- const hashedText = binaryHashToStr(
386
- toprf.nullifier,
387
- toprf.dataLocation.length
388
- );
389
- strParams = strParams.replaceAll(ogText, hashedText);
390
- }
391
- params = JSON.parse(strParams);
392
- }
393
- }
394
- }
395
- await provider.assertValidProviderReceipt({
396
- receipt: revealedPackets,
397
- params: {
398
- ...params,
399
- // provide secret params for proper
400
- // request body validation
401
- secretParams
402
- },
403
- logger,
404
- ctx: PROVIDER_CTX
405
- });
406
- for (const p of allPackets) {
407
- if (p.message.type !== "ciphertext") {
408
- continue;
409
- }
410
- if (isApplicationData(p.message, tlsVersion)) {
411
- break;
412
- }
413
- setRevealOfMessage(p.message, { type: "complete" });
414
- }
415
- }
416
- async function performOprf(plaintext) {
417
- logger.info({ length: plaintext.length }, "generating OPRF...");
418
- const oprfOperator = zkOpts.oprfOperators?.["chacha20"] || makeDefaultOPRFOperator(
419
- "chacha20",
420
- zkEngine,
421
- logger
422
- );
423
- const reqData = await oprfOperator.generateOPRFRequestData(
424
- plaintext,
425
- TOPRF_DOMAIN_SEPARATOR,
426
- logger
427
- );
428
- const res = await client.rpc("toprf", {
429
- maskedData: reqData.maskedData,
430
- engine: getEngineProto(zkEngine)
431
- });
432
- const nullifier = await oprfOperator.finaliseOPRF(
433
- client.initResponse.toprfPublicKey,
434
- reqData,
435
- [res]
436
- );
437
- const data = {
438
- nullifier,
439
- responses: [res],
440
- mask: reqData.mask,
441
- dataLocation: void 0,
442
- plaintext
443
- };
444
- return data;
445
- }
446
- function setRevealOfMessage(message, reveal) {
447
- if (reveal) {
448
- revealMap.set(message, reveal);
449
- return;
450
- }
451
- revealMap.delete(message);
452
- }
453
- function getAddress() {
454
- const { getAddress: getAddress2, getPublicKey } = signatureAlg;
455
- const pubKey = getPublicKey(ownerPrivateKey);
456
- return getAddress2(pubKey);
457
- }
458
- }
459
- export {
460
- createClaimOnAttestor
461
- };
@@ -1,3 +0,0 @@
1
- export * from './create-claim.ts';
2
- export * from './utils/attestor-pool.ts';
3
- export * from './utils/client-socket.ts';
@@ -1,3 +0,0 @@
1
- export * from "./create-claim.js";
2
- export * from "./utils/attestor-pool.js";
3
- export * from "./utils/client-socket.js";
@@ -1,16 +0,0 @@
1
- import type { CreateTunnelRequest } from '#src/proto/api.ts';
2
- import type { IAttestorClient, MakeTunnelFn } from '#src/types/index.ts';
3
- export type TCPTunnelCreateOpts = {
4
- /**
5
- * The tunnel ID to communicate with.
6
- */
7
- tunnelId: CreateTunnelRequest['id'];
8
- client: IAttestorClient;
9
- };
10
- /**
11
- * Makes a tunnel communication wrapper for a TCP tunnel.
12
- *
13
- * It listens for messages and disconnect events from the server,
14
- * and appropriately calls the `onMessage` and `onClose` callbacks.
15
- */
16
- export declare const makeRpcTcpTunnel: MakeTunnelFn<TCPTunnelCreateOpts>;
@@ -1,53 +0,0 @@
1
- import { AttestorError } from "../../utils/index.js";
2
- const makeRpcTcpTunnel = ({
3
- tunnelId,
4
- client,
5
- onClose,
6
- onMessage
7
- }) => {
8
- let closed = false;
9
- client.addEventListener("tunnel-message", onMessageListener);
10
- client.addEventListener("tunnel-disconnect-event", onDisconnectListener);
11
- client.addEventListener("connection-terminated", onConnectionTerminatedListener);
12
- return {
13
- async write(message) {
14
- await client.sendMessage({ tunnelMessage: { tunnelId, message } });
15
- },
16
- async close(err) {
17
- if (closed) {
18
- return;
19
- }
20
- onErrorRecv(err);
21
- await client.rpc("disconnectTunnel", { id: tunnelId });
22
- }
23
- };
24
- function onMessageListener({ data }) {
25
- if (data.tunnelId !== tunnelId) {
26
- return;
27
- }
28
- onMessage?.(data.message);
29
- }
30
- function onDisconnectListener({ data }) {
31
- if (data.tunnelId !== tunnelId) {
32
- return;
33
- }
34
- onErrorRecv(
35
- data.error?.code ? AttestorError.fromProto(data.error) : void 0
36
- );
37
- }
38
- function onConnectionTerminatedListener({ data }) {
39
- onErrorRecv(data);
40
- }
41
- function onErrorRecv(err) {
42
- client.logger?.debug({ tunnelId, err }, "TCP tunnel closed");
43
- client.removeEventListener("tunnel-message", onMessageListener);
44
- client.removeEventListener("tunnel-disconnect-event", onDisconnectListener);
45
- client.removeEventListener("connection-terminated", onConnectionTerminatedListener);
46
- onClose?.(err);
47
- onClose = void 0;
48
- closed = true;
49
- }
50
- };
51
- export {
52
- makeRpcTcpTunnel
53
- };
@@ -1,26 +0,0 @@
1
- import type { TLSConnectionOptions } from '@reclaimprotocol/tls';
2
- import { makeTLSClient } from '#src/utils/tls-imports.ts';
3
- import type { CreateTunnelRequest, RPCMessage } from '#src/proto/api.ts';
4
- import type { CompleteTLSPacket, IAttestorClient, Logger, MakeTunnelFn, Transcript } from '#src/types/index.ts';
5
- type ExtraTLSOptions = {
6
- request: Partial<CreateTunnelRequest>;
7
- logger: Logger;
8
- /**
9
- * Either create a client with the given initMessages,
10
- * or simply send the messages to the server via an existing
11
- * client
12
- *
13
- * @returns the client that was used to send the messages
14
- */
15
- connect(initMessages: Partial<RPCMessage>[]): IAttestorClient;
16
- tlsOpts?: TLSConnectionOptions;
17
- };
18
- type TLSTunnelProperties = {
19
- transcript: Transcript<CompleteTLSPacket>;
20
- tls: ReturnType<typeof makeTLSClient>;
21
- };
22
- /**
23
- * Makes a TLS tunnel that connects to the server via RPC protocol
24
- */
25
- export declare const makeRpcTlsTunnel: MakeTunnelFn<ExtraTLSOptions, TLSTunnelProperties>;
26
- export {};
@@ -1,127 +0,0 @@
1
- import { concatenateUint8Arrays, makeTLSClient } from "../../utils/tls-imports.js";
2
- import { makeRpcTcpTunnel } from "../../client/tunnels/make-rpc-tcp-tunnel.js";
3
- import { DEFAULT_HTTPS_PORT } from "../../config/index.js";
4
- import { generateRpcMessageId, generateTunnelId } from "../../utils/index.js";
5
- const makeRpcTlsTunnel = async ({
6
- onMessage,
7
- onClose,
8
- tlsOpts,
9
- request,
10
- connect,
11
- logger
12
- }) => {
13
- const transcript = [];
14
- const tunnelId = request.id || generateTunnelId();
15
- let tunnel;
16
- let client;
17
- let handshakeResolve;
18
- let handshakeReject;
19
- const waitForHandshake = new Promise((resolve, reject) => {
20
- handshakeResolve = resolve;
21
- handshakeReject = reject;
22
- });
23
- const tls = makeTLSClient({
24
- host: request.host,
25
- ...tlsOpts,
26
- logger,
27
- onHandshake() {
28
- handshakeResolve?.();
29
- },
30
- onApplicationData(plaintext) {
31
- return onMessage?.(plaintext);
32
- },
33
- onTlsEnd: onConnectionClose,
34
- async write(packet, ctx) {
35
- const message = concatenateUint8Arrays([
36
- packet.header,
37
- packet.content
38
- ]);
39
- transcript.push({
40
- sender: "client",
41
- message: { ...ctx, data: message }
42
- });
43
- if (!tunnel) {
44
- const createTunnelReqId = generateRpcMessageId();
45
- client = connect([
46
- {
47
- id: createTunnelReqId,
48
- createTunnelRequest: {
49
- host: request.host || "",
50
- port: request.port || DEFAULT_HTTPS_PORT,
51
- geoLocation: request.geoLocation || "",
52
- proxySessionId: request.proxySessionId || "",
53
- id: tunnelId
54
- }
55
- },
56
- { tunnelMessage: { tunnelId, message } }
57
- ]);
58
- try {
59
- await makeTunnel();
60
- await client.waitForResponse(createTunnelReqId);
61
- } catch (err) {
62
- onConnectionClose(err);
63
- }
64
- return;
65
- }
66
- return tunnel.write(message);
67
- },
68
- onRead(packet, ctx) {
69
- transcript.push({
70
- sender: "server",
71
- message: {
72
- ...ctx,
73
- data: concatenateUint8Arrays([
74
- packet.header,
75
- // the TLS package sends us the decrypted
76
- // content, so we need to get the orginal
77
- // ciphertext received from the server
78
- // as that's part of the true transcript.
79
- ctx.type === "ciphertext" ? ctx.ciphertext : packet.content
80
- ])
81
- }
82
- });
83
- }
84
- });
85
- await tls.startHandshake();
86
- await waitForHandshake;
87
- handshakeResolve = handshakeReject = void 0;
88
- return {
89
- transcript,
90
- tls,
91
- write(data) {
92
- return tls.write(data);
93
- },
94
- async close(err) {
95
- onConnectionClose(err);
96
- try {
97
- await tunnel.close(err);
98
- } catch (err2) {
99
- logger?.error({ err: err2 }, "err in close tunnel");
100
- }
101
- }
102
- };
103
- function onConnectionClose(err) {
104
- onClose?.(err);
105
- onClose = void 0;
106
- handshakeReject?.(
107
- err || new Error("TLS connection closed")
108
- );
109
- }
110
- async function makeTunnel() {
111
- tunnel = await makeRpcTcpTunnel({
112
- tunnelId,
113
- client,
114
- onMessage(data) {
115
- tls.handleReceivedBytes(data);
116
- },
117
- onClose(err) {
118
- tls.end(err);
119
- }
120
- });
121
- logger?.debug("plaintext tunnel created");
122
- return tunnel;
123
- }
124
- };
125
- export {
126
- makeRpcTlsTunnel
127
- };
@@ -1,8 +0,0 @@
1
- import type { IAttestorClient, IAttestorClientCreateOpts } from '#src/types/index.ts';
2
- /**
3
- * Get a attestor client from the pool,
4
- * if it doesn't exist, create one.
5
- * @param [getCreateOpts] - Function to get the options for creating a new client.
6
- * called synchronously, in the same tick as this function.
7
- */
8
- export declare function getAttestorClientFromPool(url: string | URL, getCreateOpts?: () => Omit<IAttestorClientCreateOpts, 'url'>): IAttestorClient;