@reclaimprotocol/attestor-core 5.0.1-beta.9 → 5.0.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 (307) hide show
  1. package/browser/resources/attestor-browser.min.mjs +4512 -0
  2. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +1 -1
  3. package/lib/external-rpc/index.js +10399 -3
  4. package/lib/index.js +8323 -10
  5. package/lib/server/utils/proxy-session.d.ts +1 -1
  6. package/lib/types/general.d.ts +0 -1
  7. package/lib/utils/generics.d.ts +1 -6
  8. package/lib/utils/index.d.ts +0 -1
  9. package/package.json +8 -10
  10. package/lib/avs/abis/avsDirectoryABI.js +0 -343
  11. package/lib/avs/abis/delegationABI.js +0 -4
  12. package/lib/avs/abis/registryABI.js +0 -728
  13. package/lib/avs/client/create-claim-on-avs.js +0 -168
  14. package/lib/avs/config.js +0 -26
  15. package/lib/avs/contracts/ReclaimServiceManager.js +0 -0
  16. package/lib/avs/contracts/common.js +0 -0
  17. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +0 -1183
  18. package/lib/avs/contracts/factories/index.js +0 -4
  19. package/lib/avs/contracts/index.js +0 -6
  20. package/lib/avs/types/index.js +0 -0
  21. package/lib/avs/utils/contracts.js +0 -53
  22. package/lib/avs/utils/register.js +0 -74
  23. package/lib/avs/utils/tasks.js +0 -48
  24. package/lib/browser/avs/abis/avsDirectoryABI.d.ts +0 -60
  25. package/lib/browser/avs/abis/avsDirectoryABI.js +0 -343
  26. package/lib/browser/avs/abis/delegationABI.d.ts +0 -126
  27. package/lib/browser/avs/abis/delegationABI.js +0 -4
  28. package/lib/browser/avs/abis/registryABI.d.ts +0 -136
  29. package/lib/browser/avs/abis/registryABI.js +0 -728
  30. package/lib/browser/avs/client/create-claim-on-avs.d.ts +0 -12
  31. package/lib/browser/avs/client/create-claim-on-avs.js +0 -168
  32. package/lib/browser/avs/config.d.ts +0 -7
  33. package/lib/browser/avs/config.js +0 -26
  34. package/lib/browser/avs/contracts/ReclaimServiceManager.d.ts +0 -601
  35. package/lib/browser/avs/contracts/ReclaimServiceManager.js +0 -0
  36. package/lib/browser/avs/contracts/common.d.ts +0 -50
  37. package/lib/browser/avs/contracts/common.js +0 -0
  38. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +0 -890
  39. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.js +0 -1183
  40. package/lib/browser/avs/contracts/factories/index.d.ts +0 -1
  41. package/lib/browser/avs/contracts/factories/index.js +0 -4
  42. package/lib/browser/avs/contracts/index.d.ts +0 -3
  43. package/lib/browser/avs/contracts/index.js +0 -6
  44. package/lib/browser/avs/types/index.d.ts +0 -55
  45. package/lib/browser/avs/types/index.js +0 -0
  46. package/lib/browser/avs/utils/contracts.d.ts +0 -21
  47. package/lib/browser/avs/utils/contracts.js +0 -53
  48. package/lib/browser/avs/utils/register.d.ts +0 -27
  49. package/lib/browser/avs/utils/register.js +0 -74
  50. package/lib/browser/avs/utils/tasks.d.ts +0 -22
  51. package/lib/browser/avs/utils/tasks.js +0 -48
  52. package/lib/browser/client/create-claim.d.ts +0 -5
  53. package/lib/browser/client/create-claim.js +0 -461
  54. package/lib/browser/client/index.d.ts +0 -3
  55. package/lib/browser/client/index.js +0 -3
  56. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.d.ts +0 -16
  57. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.js +0 -53
  58. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.d.ts +0 -26
  59. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.js +0 -127
  60. package/lib/browser/client/utils/attestor-pool.d.ts +0 -8
  61. package/lib/browser/client/utils/attestor-pool.js +0 -24
  62. package/lib/browser/client/utils/client-socket.d.ts +0 -11
  63. package/lib/browser/client/utils/client-socket.js +0 -120
  64. package/lib/browser/client/utils/message-handler.d.ts +0 -4
  65. package/lib/browser/client/utils/message-handler.js +0 -97
  66. package/lib/browser/config/index.d.ts +0 -31
  67. package/lib/browser/config/index.js +0 -62
  68. package/lib/browser/external-rpc/benchmark.d.ts +0 -1
  69. package/lib/browser/external-rpc/benchmark.js +0 -82
  70. package/lib/browser/external-rpc/event-bus.d.ts +0 -7
  71. package/lib/browser/external-rpc/event-bus.js +0 -17
  72. package/lib/browser/external-rpc/global.d.js +0 -0
  73. package/lib/browser/external-rpc/handle-incoming-msg.d.ts +0 -2
  74. package/lib/browser/external-rpc/handle-incoming-msg.js +0 -241
  75. package/lib/browser/external-rpc/index.d.ts +0 -3
  76. package/lib/browser/external-rpc/index.js +0 -3
  77. package/lib/browser/external-rpc/jsc-polyfills/1.d.ts +0 -14
  78. package/lib/browser/external-rpc/jsc-polyfills/1.js +0 -80
  79. package/lib/browser/external-rpc/jsc-polyfills/2.d.ts +0 -1
  80. package/lib/browser/external-rpc/jsc-polyfills/2.js +0 -15
  81. package/lib/browser/external-rpc/jsc-polyfills/event.d.ts +0 -10
  82. package/lib/browser/external-rpc/jsc-polyfills/event.js +0 -19
  83. package/lib/browser/external-rpc/jsc-polyfills/index.d.ts +0 -2
  84. package/lib/browser/external-rpc/jsc-polyfills/index.js +0 -2
  85. package/lib/browser/external-rpc/jsc-polyfills/ws.d.ts +0 -21
  86. package/lib/browser/external-rpc/jsc-polyfills/ws.js +0 -83
  87. package/lib/browser/external-rpc/setup-browser.d.ts +0 -6
  88. package/lib/browser/external-rpc/setup-browser.js +0 -33
  89. package/lib/browser/external-rpc/setup-jsc.d.ts +0 -24
  90. package/lib/browser/external-rpc/setup-jsc.js +0 -22
  91. package/lib/browser/external-rpc/types.d.ts +0 -213
  92. package/lib/browser/external-rpc/types.js +0 -0
  93. package/lib/browser/external-rpc/utils.d.ts +0 -20
  94. package/lib/browser/external-rpc/utils.js +0 -100
  95. package/lib/browser/external-rpc/zk.d.ts +0 -14
  96. package/lib/browser/external-rpc/zk.js +0 -58
  97. package/lib/browser/index.browser.js +0 -13
  98. package/lib/browser/index.d.ts +0 -9
  99. package/lib/browser/index.js +0 -13
  100. package/lib/browser/mechain/abis/governanceABI.d.ts +0 -50
  101. package/lib/browser/mechain/abis/governanceABI.js +0 -461
  102. package/lib/browser/mechain/abis/taskABI.d.ts +0 -157
  103. package/lib/browser/mechain/abis/taskABI.js +0 -512
  104. package/lib/browser/mechain/client/create-claim-on-mechain.d.ts +0 -10
  105. package/lib/browser/mechain/client/create-claim-on-mechain.js +0 -33
  106. package/lib/browser/mechain/client/index.d.ts +0 -1
  107. package/lib/browser/mechain/client/index.js +0 -1
  108. package/lib/browser/mechain/constants/index.d.ts +0 -3
  109. package/lib/browser/mechain/constants/index.js +0 -8
  110. package/lib/browser/mechain/index.d.ts +0 -2
  111. package/lib/browser/mechain/index.js +0 -2
  112. package/lib/browser/mechain/types/index.d.ts +0 -23
  113. package/lib/browser/mechain/types/index.js +0 -0
  114. package/lib/browser/proto/api.d.ts +0 -651
  115. package/lib/browser/proto/api.js +0 -4250
  116. package/lib/browser/proto/tee-bundle.d.ts +0 -156
  117. package/lib/browser/proto/tee-bundle.js +0 -1296
  118. package/lib/browser/providers/http/index.d.ts +0 -18
  119. package/lib/browser/providers/http/index.js +0 -640
  120. package/lib/browser/providers/http/patch-parse5-tree.d.ts +0 -6
  121. package/lib/browser/providers/http/patch-parse5-tree.js +0 -34
  122. package/lib/browser/providers/http/utils.d.ts +0 -77
  123. package/lib/browser/providers/http/utils.js +0 -283
  124. package/lib/browser/providers/index.d.ts +0 -4
  125. package/lib/browser/providers/index.js +0 -7
  126. package/lib/browser/types/bgp.d.ts +0 -11
  127. package/lib/browser/types/bgp.js +0 -0
  128. package/lib/browser/types/claims.d.ts +0 -70
  129. package/lib/browser/types/claims.js +0 -0
  130. package/lib/browser/types/client.d.ts +0 -163
  131. package/lib/browser/types/client.js +0 -0
  132. package/lib/browser/types/general.d.ts +0 -77
  133. package/lib/browser/types/general.js +0 -0
  134. package/lib/browser/types/handlers.d.ts +0 -10
  135. package/lib/browser/types/handlers.js +0 -0
  136. package/lib/browser/types/index.d.ts +0 -10
  137. package/lib/browser/types/index.js +0 -10
  138. package/lib/browser/types/providers.d.ts +0 -161
  139. package/lib/browser/types/providers.gen.d.ts +0 -443
  140. package/lib/browser/types/providers.gen.js +0 -16
  141. package/lib/browser/types/providers.js +0 -0
  142. package/lib/browser/types/rpc.d.ts +0 -35
  143. package/lib/browser/types/rpc.js +0 -0
  144. package/lib/browser/types/signatures.d.ts +0 -28
  145. package/lib/browser/types/signatures.js +0 -0
  146. package/lib/browser/types/tunnel.d.ts +0 -18
  147. package/lib/browser/types/tunnel.js +0 -0
  148. package/lib/browser/types/zk.d.ts +0 -38
  149. package/lib/browser/types/zk.js +0 -0
  150. package/lib/browser/utils/auth.d.ts +0 -8
  151. package/lib/browser/utils/auth.js +0 -71
  152. package/lib/browser/utils/b64-json.d.ts +0 -2
  153. package/lib/browser/utils/b64-json.js +0 -17
  154. package/lib/browser/utils/claims.d.ts +0 -33
  155. package/lib/browser/utils/claims.js +0 -89
  156. package/lib/browser/utils/env.d.ts +0 -3
  157. package/lib/browser/utils/env.js +0 -19
  158. package/lib/browser/utils/error.d.ts +0 -26
  159. package/lib/browser/utils/error.js +0 -54
  160. package/lib/browser/utils/generics.d.ts +0 -119
  161. package/lib/browser/utils/generics.js +0 -272
  162. package/lib/browser/utils/http-parser.d.ts +0 -59
  163. package/lib/browser/utils/http-parser.js +0 -201
  164. package/lib/browser/utils/index.browser.js +0 -13
  165. package/lib/browser/utils/index.d.ts +0 -13
  166. package/lib/browser/utils/index.js +0 -13
  167. package/lib/browser/utils/logger.browser.js +0 -88
  168. package/lib/browser/utils/logger.d.ts +0 -14
  169. package/lib/browser/utils/logger.js +0 -88
  170. package/lib/browser/utils/prepare-packets.d.ts +0 -16
  171. package/lib/browser/utils/prepare-packets.js +0 -69
  172. package/lib/browser/utils/redactions.d.ts +0 -73
  173. package/lib/browser/utils/redactions.js +0 -135
  174. package/lib/browser/utils/retries.d.ts +0 -12
  175. package/lib/browser/utils/retries.js +0 -26
  176. package/lib/browser/utils/signatures/eth.d.ts +0 -2
  177. package/lib/browser/utils/signatures/eth.js +0 -31
  178. package/lib/browser/utils/signatures/index.d.ts +0 -5
  179. package/lib/browser/utils/signatures/index.js +0 -12
  180. package/lib/browser/utils/socket-base.d.ts +0 -23
  181. package/lib/browser/utils/socket-base.js +0 -96
  182. package/lib/browser/utils/tls-imports.d.ts +0 -21
  183. package/lib/browser/utils/tls-imports.js +0 -71
  184. package/lib/browser/utils/tls.d.ts +0 -2
  185. package/lib/browser/utils/tls.js +0 -58
  186. package/lib/browser/utils/ws.d.ts +0 -7
  187. package/lib/browser/utils/ws.js +0 -22
  188. package/lib/browser/utils/zk.d.ts +0 -71
  189. package/lib/browser/utils/zk.js +0 -625
  190. package/lib/client/create-claim.js +0 -461
  191. package/lib/client/index.js +0 -3
  192. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +0 -53
  193. package/lib/client/tunnels/make-rpc-tls-tunnel.js +0 -127
  194. package/lib/client/utils/attestor-pool.js +0 -24
  195. package/lib/client/utils/client-socket.js +0 -120
  196. package/lib/client/utils/message-handler.js +0 -97
  197. package/lib/config/index.js +0 -62
  198. package/lib/external-rpc/benchmark.js +0 -82
  199. package/lib/external-rpc/event-bus.js +0 -17
  200. package/lib/external-rpc/global.d.js +0 -0
  201. package/lib/external-rpc/handle-incoming-msg.js +0 -241
  202. package/lib/external-rpc/jsc-polyfills/1.js +0 -80
  203. package/lib/external-rpc/jsc-polyfills/2.js +0 -15
  204. package/lib/external-rpc/jsc-polyfills/event.js +0 -19
  205. package/lib/external-rpc/jsc-polyfills/index.js +0 -2
  206. package/lib/external-rpc/jsc-polyfills/ws.js +0 -83
  207. package/lib/external-rpc/setup-browser.js +0 -33
  208. package/lib/external-rpc/setup-jsc.js +0 -22
  209. package/lib/external-rpc/types.js +0 -0
  210. package/lib/external-rpc/utils.js +0 -100
  211. package/lib/external-rpc/zk.js +0 -58
  212. package/lib/index.browser.d.ts +0 -9
  213. package/lib/mechain/abis/governanceABI.js +0 -461
  214. package/lib/mechain/abis/taskABI.js +0 -512
  215. package/lib/mechain/client/create-claim-on-mechain.js +0 -33
  216. package/lib/mechain/client/index.js +0 -1
  217. package/lib/mechain/constants/index.js +0 -8
  218. package/lib/mechain/index.js +0 -2
  219. package/lib/mechain/types/index.js +0 -0
  220. package/lib/proto/api.js +0 -4250
  221. package/lib/proto/tee-bundle.js +0 -1296
  222. package/lib/providers/http/index.js +0 -640
  223. package/lib/providers/http/patch-parse5-tree.js +0 -34
  224. package/lib/providers/http/utils.js +0 -283
  225. package/lib/providers/index.js +0 -7
  226. package/lib/scripts/check-avs-registration.js +0 -28
  227. package/lib/scripts/fallbacks/crypto.js +0 -4
  228. package/lib/scripts/fallbacks/empty.js +0 -4
  229. package/lib/scripts/fallbacks/re2.js +0 -7
  230. package/lib/scripts/fallbacks/snarkjs.js +0 -10
  231. package/lib/scripts/fallbacks/stwo.js +0 -159
  232. package/lib/scripts/generate-provider-types.js +0 -101
  233. package/lib/scripts/generate-receipt.js +0 -101
  234. package/lib/scripts/generate-toprf-keys.js +0 -24
  235. package/lib/scripts/jsc-cli-rpc.js +0 -35
  236. package/lib/scripts/register-avs-operator.js +0 -3
  237. package/lib/scripts/start-server.js +0 -11
  238. package/lib/scripts/update-avs-metadata.js +0 -20
  239. package/lib/scripts/utils.js +0 -10
  240. package/lib/scripts/whitelist-operator.js +0 -16
  241. package/lib/server/create-server.js +0 -105
  242. package/lib/server/handlers/claimTeeBundle.js +0 -232
  243. package/lib/server/handlers/claimTunnel.js +0 -80
  244. package/lib/server/handlers/completeClaimOnChain.js +0 -29
  245. package/lib/server/handlers/createClaimOnChain.js +0 -32
  246. package/lib/server/handlers/createTaskOnMechain.js +0 -57
  247. package/lib/server/handlers/createTunnel.js +0 -98
  248. package/lib/server/handlers/disconnectTunnel.js +0 -8
  249. package/lib/server/handlers/fetchCertificateBytes.js +0 -57
  250. package/lib/server/handlers/index.js +0 -25
  251. package/lib/server/handlers/init.js +0 -33
  252. package/lib/server/handlers/toprf.js +0 -19
  253. package/lib/server/index.js +0 -4
  254. package/lib/server/socket.js +0 -112
  255. package/lib/server/tunnels/make-tcp-tunnel.js +0 -202
  256. package/lib/server/utils/apm.js +0 -29
  257. package/lib/server/utils/assert-valid-claim-request.js +0 -354
  258. package/lib/server/utils/config-env.js +0 -4
  259. package/lib/server/utils/dns.js +0 -24
  260. package/lib/server/utils/gcp-attestation.js +0 -237
  261. package/lib/server/utils/generics.js +0 -45
  262. package/lib/server/utils/iso.js +0 -259
  263. package/lib/server/utils/keep-alive.js +0 -38
  264. package/lib/server/utils/nitro-attestation.js +0 -249
  265. package/lib/server/utils/oprf-raw.js +0 -61
  266. package/lib/server/utils/process-handshake.js +0 -233
  267. package/lib/server/utils/proxy-session.js +0 -4
  268. package/lib/server/utils/tee-oprf-mpc-verification.js +0 -86
  269. package/lib/server/utils/tee-oprf-verification.js +0 -151
  270. package/lib/server/utils/tee-transcript-reconstruction.js +0 -140
  271. package/lib/server/utils/tee-verification.js +0 -358
  272. package/lib/server/utils/validation.js +0 -45
  273. package/lib/types/bgp.js +0 -0
  274. package/lib/types/claims.js +0 -0
  275. package/lib/types/client.js +0 -0
  276. package/lib/types/general.js +0 -0
  277. package/lib/types/handlers.js +0 -0
  278. package/lib/types/index.js +0 -10
  279. package/lib/types/providers.gen.js +0 -16
  280. package/lib/types/providers.js +0 -0
  281. package/lib/types/rpc.js +0 -0
  282. package/lib/types/signatures.js +0 -0
  283. package/lib/types/tunnel.js +0 -0
  284. package/lib/types/zk.js +0 -0
  285. package/lib/utils/auth.js +0 -71
  286. package/lib/utils/b64-json.js +0 -17
  287. package/lib/utils/bgp-listener.js +0 -123
  288. package/lib/utils/claims.js +0 -89
  289. package/lib/utils/env.js +0 -19
  290. package/lib/utils/error.js +0 -54
  291. package/lib/utils/generics.js +0 -272
  292. package/lib/utils/http-parser.js +0 -201
  293. package/lib/utils/index.browser.d.ts +0 -13
  294. package/lib/utils/index.js +0 -14
  295. package/lib/utils/logger.browser.d.ts +0 -14
  296. package/lib/utils/logger.js +0 -82
  297. package/lib/utils/prepare-packets.js +0 -69
  298. package/lib/utils/redactions.js +0 -135
  299. package/lib/utils/retries.js +0 -26
  300. package/lib/utils/signatures/eth.js +0 -31
  301. package/lib/utils/signatures/index.js +0 -12
  302. package/lib/utils/socket-base.js +0 -96
  303. package/lib/utils/tls-imports.d.ts +0 -21
  304. package/lib/utils/tls-imports.js +0 -71
  305. package/lib/utils/tls.js +0 -58
  306. package/lib/utils/ws.js +0 -22
  307. package/lib/utils/zk.js +0 -625
@@ -1,89 +0,0 @@
1
- import canonicalize from "canonicalize";
2
- import { keccak256 } from "ethers";
3
- import { DEFAULT_METADATA } from "../config/index.js";
4
- import { ClaimTunnelResponse } from "../proto/api.js";
5
- import { SIGNATURES, strToUint8Array } from "../utils/index.js";
6
- function createSignDataForClaim(data) {
7
- const lines = [
8
- getIdentifierFromClaimInfo(data),
9
- // we lowercase the owner to ensure that the
10
- // ETH addresses always serialize the same way
11
- data.owner.toLowerCase(),
12
- data.timestampS.toString(),
13
- data.epoch.toString()
14
- ];
15
- return lines.join("\n");
16
- }
17
- async function assertValidClaimSignatures({
18
- signatures,
19
- ...res
20
- }, metadata = DEFAULT_METADATA) {
21
- if (!signatures) {
22
- throw new Error("No signatures provided");
23
- }
24
- const {
25
- resultSignature,
26
- claimSignature,
27
- attestorAddress
28
- } = signatures;
29
- const { verify } = SIGNATURES[metadata.signatureType];
30
- if (signatures?.resultSignature) {
31
- const resBytes = ClaimTunnelResponse.encode(ClaimTunnelResponse.create(res)).finish();
32
- const verified = await verify(resBytes, resultSignature, attestorAddress);
33
- if (!verified) {
34
- throw new Error("Invalid result signature");
35
- }
36
- }
37
- if (!res.claim) {
38
- return;
39
- }
40
- const signData = createSignDataForClaim(res.claim);
41
- const verifiedClaim = await verify(
42
- strToUint8Array(signData),
43
- claimSignature,
44
- attestorAddress
45
- );
46
- if (!verifiedClaim) {
47
- throw new Error("Invalid claim signature");
48
- }
49
- }
50
- function getIdentifierFromClaimInfo(info) {
51
- if (info.context?.length > 0) {
52
- try {
53
- const ctx = JSON.parse(info.context);
54
- info.context = canonicalStringify(ctx);
55
- } catch {
56
- throw new Error("unable to parse non-empty context. Must be JSON");
57
- }
58
- }
59
- const str = `${info.provider}
60
- ${info.parameters}
61
- ${info.context || ""}`;
62
- return keccak256(strToUint8Array(str)).toLowerCase();
63
- }
64
- function canonicalStringify(params) {
65
- if (!params) {
66
- return "";
67
- }
68
- return canonicalize(params) || "";
69
- }
70
- function hashProviderParams(params) {
71
- const filteredParams = {
72
- url: params.url,
73
- method: params.method,
74
- body: params.body,
75
- responseMatches: params.responseMatches,
76
- responseRedactions: params.responseRedactions
77
- };
78
- const serializedParams = canonicalStringify(filteredParams);
79
- return keccak256(
80
- strToUint8Array(serializedParams)
81
- ).toLowerCase();
82
- }
83
- export {
84
- assertValidClaimSignatures,
85
- canonicalStringify,
86
- createSignDataForClaim,
87
- getIdentifierFromClaimInfo,
88
- hashProviderParams
89
- };
package/lib/utils/env.js DELETED
@@ -1,19 +0,0 @@
1
- function detectEnvironment() {
2
- if (typeof navigator !== "undefined" && navigator.product === "ReactNative") {
3
- return "react-native";
4
- }
5
- if (typeof window !== "undefined") {
6
- return "browser";
7
- }
8
- return "node";
9
- }
10
- function getEnvVariable(name) {
11
- if (typeof process === "undefined") {
12
- return void 0;
13
- }
14
- return process?.env[name];
15
- }
16
- export {
17
- detectEnvironment,
18
- getEnvVariable
19
- };
@@ -1,54 +0,0 @@
1
- import { ErrorCode, ErrorData } from "../proto/api.js";
2
- const PROTO_ERROR = ErrorData.fromJSON({});
3
- class AttestorError extends Error {
4
- name = "AttestorError";
5
- code;
6
- data;
7
- constructor(code, message, data) {
8
- super(message);
9
- this.code = code;
10
- this.data = data;
11
- }
12
- /**
13
- * Encodes the error as a ErrorData
14
- * protobuf message
15
- */
16
- toProto() {
17
- return ErrorData.create({
18
- code: ErrorCode[this.code],
19
- message: this.message,
20
- data: JSON.stringify(this.data)
21
- });
22
- }
23
- static fromProto(data = PROTO_ERROR) {
24
- return new AttestorError(
25
- typeof data.code === "number" ? getKeyForValue(ErrorCode, data.code) || "UNRECOGNIZED" : data.code,
26
- data.message,
27
- data.data ? JSON.parse(data.data) : void 0
28
- );
29
- }
30
- static fromError(err, code = "ERROR_INTERNAL") {
31
- if (err instanceof AttestorError) {
32
- return err;
33
- }
34
- return new AttestorError(code, err.message);
35
- }
36
- static badRequest(message, data) {
37
- return new AttestorError(
38
- "ERROR_BAD_REQUEST",
39
- message,
40
- data
41
- );
42
- }
43
- }
44
- function getKeyForValue(obj, value) {
45
- for (const key in obj) {
46
- if (obj[key] === value) {
47
- return key;
48
- }
49
- }
50
- return void 0;
51
- }
52
- export {
53
- AttestorError
54
- };
@@ -1,272 +0,0 @@
1
- import {
2
- areUint8ArraysEqual,
3
- CONTENT_TYPE_MAP,
4
- crypto,
5
- decryptWrappedRecord,
6
- PACKET_TYPE,
7
- SUPPORTED_CIPHER_SUITE_MAP,
8
- uint8ArrayToBinaryStr,
9
- uint8ArrayToDataView
10
- } from "../utils/tls-imports.js";
11
- import { REDACTION_CHAR_CODE } from "@reclaimprotocol/zk-symmetric-crypto";
12
- import { RPCMessage, RPCMessages } from "../proto/api.js";
13
- const DEFAULT_REDACTION_DATA = new Uint8Array(4).fill(REDACTION_CHAR_CODE);
14
- function uint8ArrayToStr(arr) {
15
- return new TextDecoder().decode(arr);
16
- }
17
- function strToUint8Array(str) {
18
- return new TextEncoder().encode(str);
19
- }
20
- function getTranscriptString(receipt) {
21
- const applMsgs = extractApplicationDataFromTranscript(receipt);
22
- const strList = [];
23
- for (const { message, sender } of applMsgs) {
24
- const content = uint8ArrayToStr(message);
25
- if (strList[strList.length - 1]?.startsWith(sender)) {
26
- strList[strList.length - 1] += content;
27
- } else {
28
- strList.push(`${sender}: ${content}`);
29
- }
30
- }
31
- return strList.join("\n");
32
- }
33
- const unixTimestampSeconds = () => Math.floor(Date.now() / 1e3);
34
- function findIndexInUint8Array(haystack, needle) {
35
- for (let i = 0; i < haystack.length; i++) {
36
- if (areUint8ArraysEqual(haystack.slice(i, i + needle.length), needle)) {
37
- return i;
38
- }
39
- }
40
- return -1;
41
- }
42
- function getZkAlgorithmForCipherSuite(cipherSuite) {
43
- if (cipherSuite.includes("CHACHA20")) {
44
- return "chacha20";
45
- }
46
- if (cipherSuite.includes("AES_256_GCM")) {
47
- return "aes-256-ctr";
48
- }
49
- if (cipherSuite.includes("AES_128_GCM")) {
50
- return "aes-128-ctr";
51
- }
52
- throw new Error(`${cipherSuite} not supported for ZK ops`);
53
- }
54
- function getPureCiphertext(content, cipherSuite) {
55
- getZkAlgorithmForCipherSuite(cipherSuite);
56
- content = content.slice(0, -16);
57
- const {
58
- ivLength: fixedIvLength
59
- } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite];
60
- const recordIvLength = 12 - fixedIvLength;
61
- content = content.slice(recordIvLength);
62
- return content;
63
- }
64
- function getRecordIV(content, cipherSuite) {
65
- getZkAlgorithmForCipherSuite(cipherSuite);
66
- const {
67
- ivLength: fixedIvLength
68
- } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite];
69
- const recordIvLength = 12 - fixedIvLength;
70
- return content.slice(0, recordIvLength);
71
- }
72
- function getProviderValue(params, fn, secretParams) {
73
- return typeof fn === "function" ? fn(params, secretParams) : fn;
74
- }
75
- function generateRpcMessageId() {
76
- return uint8ArrayToDataView(crypto.randomBytes(4)).getUint32(0);
77
- }
78
- function generateSessionId() {
79
- return generateRpcMessageId();
80
- }
81
- function generateTunnelId() {
82
- return generateRpcMessageId();
83
- }
84
- function makeRpcEvent(type, data) {
85
- const ev = new Event(type);
86
- ev.data = data;
87
- return ev;
88
- }
89
- function getRpcTypeFromKey(key) {
90
- if (key.endsWith("Request")) {
91
- return {
92
- type: key.slice(0, -7),
93
- direction: "request"
94
- };
95
- }
96
- if (key.endsWith("Response")) {
97
- return {
98
- type: key.slice(0, -8),
99
- direction: "response"
100
- };
101
- }
102
- }
103
- function getRpcResponseType(type) {
104
- return `${type}Response`;
105
- }
106
- function getRpcRequestType(type) {
107
- return `${type}Request`;
108
- }
109
- function isApplicationData(packet, tlsVersion) {
110
- return packet.type === "ciphertext" && (packet.contentType === "APPLICATION_DATA" || packet.data[0] === PACKET_TYPE.WRAPPED_RECORD && tlsVersion === "TLS1_2");
111
- }
112
- async function extractArrayBufferFromWsData(data) {
113
- if (data instanceof ArrayBuffer) {
114
- return new Uint8Array(data);
115
- }
116
- if (data instanceof Uint8Array || typeof data === "object" && data && "buffer" in data) {
117
- return data;
118
- }
119
- if (typeof data === "string") {
120
- return strToUint8Array(data);
121
- }
122
- if (typeof Blob !== "undefined" && data instanceof Blob) {
123
- return new Uint8Array(await data.arrayBuffer());
124
- }
125
- throw new Error("unsupported data: " + String(data));
126
- }
127
- function getRpcRequest(msg) {
128
- if (msg.requestError) {
129
- return {
130
- direction: "response",
131
- type: "error"
132
- };
133
- }
134
- for (const key in msg) {
135
- if (!msg[key]) {
136
- continue;
137
- }
138
- const rpcType = getRpcTypeFromKey(key);
139
- if (!rpcType) {
140
- continue;
141
- }
142
- return rpcType;
143
- }
144
- }
145
- function extractApplicationDataFromTranscript({ transcript, tlsVersion }) {
146
- const msgs = [];
147
- for (const m of transcript) {
148
- let message;
149
- if (m.redacted) {
150
- if (!m.plaintextLength) {
151
- message = DEFAULT_REDACTION_DATA;
152
- } else {
153
- const len = tlsVersion === "TLS1_3" ? m.plaintextLength - 1 : m.plaintextLength;
154
- message = new Uint8Array(len).fill(REDACTION_CHAR_CODE);
155
- }
156
- } else if (tlsVersion === "TLS1_3") {
157
- const contentType = m.message[m.message.length - 1];
158
- if (contentType !== CONTENT_TYPE_MAP["APPLICATION_DATA"]) {
159
- continue;
160
- }
161
- message = m.message.slice(0, -1);
162
- } else if (m.recordHeader[0] === PACKET_TYPE.WRAPPED_RECORD) {
163
- message = m.message;
164
- } else {
165
- continue;
166
- }
167
- msgs.push({ message, sender: m.sender });
168
- }
169
- return msgs;
170
- }
171
- function extractHandshakeFromTranscript({ transcript, tlsVersion }) {
172
- const msgs = [];
173
- for (const [i, m] of transcript.entries()) {
174
- if (m.redacted) {
175
- break;
176
- }
177
- let message;
178
- if (m.recordHeader[0] === PACKET_TYPE.HELLO) {
179
- message = m.message;
180
- } else if (m.recordHeader[0] === PACKET_TYPE.WRAPPED_RECORD) {
181
- if (tlsVersion === "TLS1_3") {
182
- const contentType = m.message[m.message.length - 1];
183
- if (contentType !== CONTENT_TYPE_MAP["HANDSHAKE"]) {
184
- break;
185
- }
186
- message = m.message.slice(0, -1);
187
- } else {
188
- break;
189
- }
190
- } else {
191
- continue;
192
- }
193
- if (!message.length) {
194
- throw new Error("unsupported handshake message");
195
- }
196
- msgs.push({ message, sender: m.sender, index: i });
197
- }
198
- return msgs;
199
- }
200
- async function decryptDirect(directReveal, cipherSuite, recordHeader, serverTlsVersion, content) {
201
- const { key, iv, recordNumber } = directReveal;
202
- const { cipher } = SUPPORTED_CIPHER_SUITE_MAP[cipherSuite];
203
- const importedKey = await crypto.importKey(cipher, key);
204
- return await decryptWrappedRecord(
205
- content,
206
- {
207
- iv,
208
- key: importedKey,
209
- recordHeader,
210
- recordNumber,
211
- version: serverTlsVersion,
212
- cipherSuite
213
- }
214
- );
215
- }
216
- function packRpcMessages(...msgs) {
217
- return RPCMessages.create({
218
- messages: msgs.map((msg) => RPCMessage.create({
219
- ...msg,
220
- id: msg.id || generateRpcMessageId()
221
- }))
222
- });
223
- }
224
- function ethersStructToPlainObject(struct) {
225
- if (!Array.isArray(struct)) {
226
- return struct;
227
- }
228
- const namedKeys = Object.keys(struct).filter((key) => isNaN(Number(key)));
229
- if (!namedKeys.length) {
230
- return struct.map(ethersStructToPlainObject);
231
- }
232
- const obj = {};
233
- for (const key of namedKeys) {
234
- obj[key] = ethersStructToPlainObject(struct[key]);
235
- }
236
- return obj;
237
- }
238
- function isTls13Suite(suite) {
239
- return suite === "TLS_AES_128_GCM_SHA256" || suite === "TLS_AES_256_GCM_SHA384" || suite === "TLS_CHACHA20_POLY1305_SHA256";
240
- }
241
- function isValidProxySessionId(sessionId) {
242
- return typeof sessionId === "string" && sessionId.length >= 8 && sessionId.length < 15 && /^[a-z0-9]+$/.test(sessionId);
243
- }
244
- export {
245
- decryptDirect,
246
- ethersStructToPlainObject,
247
- extractApplicationDataFromTranscript,
248
- extractArrayBufferFromWsData,
249
- extractHandshakeFromTranscript,
250
- findIndexInUint8Array,
251
- generateRpcMessageId,
252
- generateSessionId,
253
- generateTunnelId,
254
- getProviderValue,
255
- getPureCiphertext,
256
- getRecordIV,
257
- getRpcRequest,
258
- getRpcRequestType,
259
- getRpcResponseType,
260
- getRpcTypeFromKey,
261
- getTranscriptString,
262
- getZkAlgorithmForCipherSuite,
263
- isApplicationData,
264
- isTls13Suite,
265
- isValidProxySessionId,
266
- makeRpcEvent,
267
- packRpcMessages,
268
- strToUint8Array,
269
- uint8ArrayToBinaryStr,
270
- uint8ArrayToStr,
271
- unixTimestampSeconds
272
- };
@@ -1,201 +0,0 @@
1
- import { asciiToUint8Array, concatenateUint8Arrays } from "../utils/tls-imports.js";
2
- import { findIndexInUint8Array, uint8ArrayToStr } from "../utils/generics.js";
3
- import { REDACTION_CHAR_CODE } from "../utils/redactions.js";
4
- const HTTP_HEADER_LINE_END = asciiToUint8Array("\r\n");
5
- function makeHttpResponseParser() {
6
- const res = {
7
- statusCode: 0,
8
- statusMessage: "",
9
- headers: {},
10
- body: new Uint8Array(),
11
- complete: false,
12
- headersComplete: false,
13
- headerIndices: /* @__PURE__ */ new Map(),
14
- headerEndIdx: 0
15
- };
16
- let remainingBodyBytes = 0;
17
- let isChunked = false;
18
- let remaining = new Uint8Array();
19
- let currentByteIdx = 0;
20
- return {
21
- res,
22
- /**
23
- * Parse the next chunk of data
24
- * @param data the data to parse
25
- */
26
- onChunk(data) {
27
- remaining = concatenateUint8Arrays([remaining, data]);
28
- if (!res.headersComplete) {
29
- for (let line = getLine(); typeof line !== "undefined"; line = getLine()) {
30
- if (!res.statusCode) {
31
- const [, statusCode, statusMessage] = line.match(/HTTP\/\d\.\d (\d+) (.*)/) || [];
32
- res.statusCode = Number(statusCode);
33
- res.statusMessage = statusMessage;
34
- res.statusLineEndIndex = currentByteIdx - HTTP_HEADER_LINE_END.length;
35
- } else if (line === "") {
36
- res.headersComplete = true;
37
- res.headerEndIdx = currentByteIdx - 4;
38
- if (res.headers["transfer-encoding"]?.includes("chunked")) {
39
- isChunked = true;
40
- res.chunks = [];
41
- break;
42
- } else if (res.headers["content-length"]) {
43
- remainingBodyBytes = Number(res.headers["content-length"]);
44
- break;
45
- } else {
46
- remainingBodyBytes = -1;
47
- break;
48
- }
49
- } else if (!res.complete) {
50
- const [key, value] = line.split(": ");
51
- res.headers[key.toLowerCase()] = value;
52
- res.headerIndices[key.toLowerCase()] = {
53
- fromIndex: currentByteIdx - line.length - HTTP_HEADER_LINE_END.length,
54
- toIndex: currentByteIdx - HTTP_HEADER_LINE_END.length
55
- };
56
- } else {
57
- throw new Error("got more data after response was complete");
58
- }
59
- }
60
- }
61
- if (res.headersComplete) {
62
- if (remainingBodyBytes) {
63
- readBody();
64
- if (!remainingBodyBytes && !isChunked) {
65
- res.complete = true;
66
- }
67
- }
68
- if (res.headers["content-length"] === "0") {
69
- res.complete = true;
70
- }
71
- if (isChunked) {
72
- for (let line = getLine(); typeof line !== "undefined"; line = getLine()) {
73
- if (line === "") {
74
- continue;
75
- }
76
- const chunkSize = Number.parseInt(line, 16);
77
- if (!chunkSize) {
78
- res.complete = true;
79
- continue;
80
- }
81
- res.chunks?.push({
82
- fromIndex: currentByteIdx,
83
- toIndex: currentByteIdx + chunkSize
84
- });
85
- remainingBodyBytes = chunkSize;
86
- readBody();
87
- if (remainingBodyBytes) {
88
- break;
89
- }
90
- }
91
- }
92
- }
93
- },
94
- /**
95
- * Call to prevent further parsing; indicating the end of the request
96
- * Checks that the response is valid & complete, otherwise throws an error
97
- */
98
- streamEnded() {
99
- if (!res.headersComplete) {
100
- throw new Error("stream ended before headers were complete");
101
- }
102
- if (remaining.length) {
103
- throw new Error("stream ended before remaining data arrived");
104
- }
105
- if (remainingBodyBytes > 0) {
106
- throw new Error("stream ended before all body bytes were received");
107
- }
108
- res.complete = true;
109
- }
110
- };
111
- function readBody() {
112
- if (res.complete) {
113
- throw new Error("got more data after response was complete");
114
- }
115
- if (!res.bodyStartIndex) {
116
- res.bodyStartIndex = currentByteIdx;
117
- }
118
- let bytesToCopy;
119
- if (remainingBodyBytes === -1) {
120
- bytesToCopy = remaining.length;
121
- } else {
122
- bytesToCopy = Math.min(remainingBodyBytes, remaining.length);
123
- remainingBodyBytes -= bytesToCopy;
124
- }
125
- res.body = concatenateUint8Arrays([
126
- res.body,
127
- remaining.slice(0, bytesToCopy)
128
- ]);
129
- remaining = remaining.slice(bytesToCopy);
130
- currentByteIdx += bytesToCopy;
131
- }
132
- function getLine() {
133
- const idx = findIndexInUint8Array(remaining, HTTP_HEADER_LINE_END);
134
- if (idx === -1) {
135
- return void 0;
136
- }
137
- const line = uint8ArrayToStr(remaining.slice(0, idx));
138
- remaining = remaining.slice(idx + HTTP_HEADER_LINE_END.length);
139
- currentByteIdx += idx + HTTP_HEADER_LINE_END.length;
140
- return line;
141
- }
142
- }
143
- function getHttpRequestDataFromTranscript(receipt) {
144
- const clientMsgs = receipt.filter((s) => s.sender === "client");
145
- if (clientMsgs[0].message[0] === REDACTION_CHAR_CODE) {
146
- throw new Error("First client message request is redacted. Cannot parse");
147
- }
148
- const request = {
149
- method: "",
150
- url: "",
151
- protocol: "",
152
- headers: {}
153
- };
154
- let requestBuffer = concatenateUint8Arrays(clientMsgs.map((m) => m.message));
155
- for (let line = getLine(); typeof line !== "undefined"; line = getLine()) {
156
- if (line === "") {
157
- break;
158
- }
159
- if (!request.method) {
160
- const [, method, url, protocol] = line.match(/(\w+) (.*) (.*)/) || [];
161
- request.method = method.toLowerCase();
162
- request.url = url;
163
- request.protocol = protocol;
164
- } else {
165
- let keyIdx = line.indexOf(":");
166
- if (keyIdx === -1) {
167
- keyIdx = line.length - 1;
168
- }
169
- const key = line.slice(0, keyIdx).toLowerCase().trim();
170
- const value = line.slice(keyIdx + 1).trim();
171
- const oldValue = request.headers[key];
172
- if (typeof oldValue === "string") {
173
- request.headers[key] = [oldValue, value];
174
- } else if (Array.isArray(oldValue)) {
175
- oldValue.push(value);
176
- } else {
177
- request.headers[key] = value;
178
- }
179
- }
180
- }
181
- if (requestBuffer.length) {
182
- request.body = requestBuffer;
183
- }
184
- if (!request.method) {
185
- throw new Error("Client request is incomplete");
186
- }
187
- return request;
188
- function getLine() {
189
- const idx = findIndexInUint8Array(requestBuffer, HTTP_HEADER_LINE_END);
190
- if (idx === -1) {
191
- return void 0;
192
- }
193
- const line = uint8ArrayToStr(requestBuffer.slice(0, idx));
194
- requestBuffer = requestBuffer.slice(idx + HTTP_HEADER_LINE_END.length);
195
- return line;
196
- }
197
- }
198
- export {
199
- getHttpRequestDataFromTranscript,
200
- makeHttpResponseParser
201
- };
@@ -1,13 +0,0 @@
1
- export * from './tls-imports.ts';
2
- export * from './generics.ts';
3
- export * from './logger.browser.ts';
4
- export * from './redactions.ts';
5
- export * from './http-parser.ts';
6
- export * from './zk.ts';
7
- export * from './claims.ts';
8
- export * from './error.ts';
9
- export * from './prepare-packets.ts';
10
- export * from './signatures/index.ts';
11
- export * from './auth.ts';
12
- export * from './b64-json.ts';
13
- export * from './tls.ts';
@@ -1,14 +0,0 @@
1
- export * from "./tls-imports.js";
2
- export * from "./generics.js";
3
- export * from "./logger.js";
4
- export * from "./redactions.js";
5
- export * from "./http-parser.js";
6
- export * from "./zk.js";
7
- export * from "./claims.js";
8
- export * from "./error.js";
9
- export * from "./prepare-packets.js";
10
- export * from "./signatures/index.js";
11
- export * from "./auth.js";
12
- export * from "./b64-json.js";
13
- export * from "./bgp-listener.js";
14
- export * from "./tls.js";
@@ -1,14 +0,0 @@
1
- import type { Logger } from '#src/types/index.ts';
2
- import type { LogLevel } from '#src/types/index.ts';
3
- export declare let logger: Logger;
4
- /**
5
- * Creates a logger instance with optional redaction of PII.
6
- * Replaces default logger
7
- * See PII_PROPERTIES for the list of properties that will be redacted.
8
- *
9
- * @param redactPii - whether to redact PII from logs
10
- * @param level - the log level to use
11
- * @param onLog - a callback to call when a log is written
12
- */
13
- export declare function makeLogger(redactPii: boolean, level?: LogLevel, onLog?: (level: LogLevel, log: any) => void): Logger;
14
- export declare function redact(json: any): any;