@reclaimprotocol/attestor-core 3.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 (204) hide show
  1. package/README.md +39 -0
  2. package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
  3. package/lib/avs/abis/avsDirectoryABI.js +344 -0
  4. package/lib/avs/abis/delegationABI.d.ts +126 -0
  5. package/lib/avs/abis/delegationABI.js +5 -0
  6. package/lib/avs/abis/registryABI.d.ts +136 -0
  7. package/lib/avs/abis/registryABI.js +729 -0
  8. package/lib/avs/client/create-claim-on-avs.d.ts +10 -0
  9. package/lib/avs/client/create-claim-on-avs.js +147 -0
  10. package/lib/avs/config.d.ts +7 -0
  11. package/lib/avs/config.js +24 -0
  12. package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
  13. package/lib/avs/contracts/ReclaimServiceManager.js +3 -0
  14. package/lib/avs/contracts/common.d.ts +21 -0
  15. package/lib/avs/contracts/common.js +3 -0
  16. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
  17. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1174 -0
  18. package/lib/avs/contracts/factories/index.d.ts +1 -0
  19. package/lib/avs/contracts/factories/index.js +9 -0
  20. package/lib/avs/contracts/index.d.ts +3 -0
  21. package/lib/avs/contracts/index.js +30 -0
  22. package/lib/avs/tests/test.operator.d.ts +11 -0
  23. package/lib/avs/tests/test.operator.js +313 -0
  24. package/lib/avs/tests/utils.d.ts +2 -0
  25. package/lib/avs/tests/utils.js +50 -0
  26. package/lib/avs/types/index.d.ts +55 -0
  27. package/lib/avs/types/index.js +3 -0
  28. package/lib/avs/utils/contracts.d.ts +21 -0
  29. package/lib/avs/utils/contracts.js +38 -0
  30. package/lib/avs/utils/register.d.ts +27 -0
  31. package/lib/avs/utils/register.js +76 -0
  32. package/lib/avs/utils/tasks.d.ts +22 -0
  33. package/lib/avs/utils/tasks.js +45 -0
  34. package/lib/client/create-claim.d.ts +5 -0
  35. package/lib/client/create-claim.js +357 -0
  36. package/lib/client/index.d.ts +3 -0
  37. package/lib/client/index.js +20 -0
  38. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  39. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +60 -0
  40. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +25 -0
  41. package/lib/client/tunnels/make-rpc-tls-tunnel.js +135 -0
  42. package/lib/client/utils/attestor-pool.d.ts +6 -0
  43. package/lib/client/utils/attestor-pool.js +28 -0
  44. package/lib/client/utils/client-socket.d.ts +9 -0
  45. package/lib/client/utils/client-socket.js +77 -0
  46. package/lib/client/utils/message-handler.d.ts +4 -0
  47. package/lib/client/utils/message-handler.js +93 -0
  48. package/lib/config/index.d.ts +23 -0
  49. package/lib/config/index.js +35 -0
  50. package/lib/index.d.ts +9 -0
  51. package/lib/index.js +39 -0
  52. package/lib/proto/api.d.ts +414 -0
  53. package/lib/proto/api.js +2756 -0
  54. package/lib/providers/http/index.d.ts +3 -0
  55. package/lib/providers/http/index.js +472 -0
  56. package/lib/providers/http/utils.d.ts +44 -0
  57. package/lib/providers/http/utils.js +302 -0
  58. package/lib/providers/index.d.ts +4 -0
  59. package/lib/providers/index.js +11 -0
  60. package/lib/scripts/check-avs-registration.d.ts +1 -0
  61. package/lib/scripts/check-avs-registration.js +28 -0
  62. package/lib/scripts/generate-provider-types.d.ts +5 -0
  63. package/lib/scripts/generate-provider-types.js +82 -0
  64. package/lib/scripts/generate-receipt.d.ts +9 -0
  65. package/lib/scripts/generate-receipt.js +93 -0
  66. package/lib/scripts/register-avs-operator.d.ts +1 -0
  67. package/lib/scripts/register-avs-operator.js +6 -0
  68. package/lib/scripts/start-server.d.ts +1 -0
  69. package/lib/scripts/start-server.js +6 -0
  70. package/lib/scripts/verify-root-ca.d.ts +1 -0
  71. package/lib/scripts/verify-root-ca.js +51 -0
  72. package/lib/server/create-server.d.ts +7 -0
  73. package/lib/server/create-server.js +85 -0
  74. package/lib/server/handlers/claimTunnel.d.ts +2 -0
  75. package/lib/server/handlers/claimTunnel.js +55 -0
  76. package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
  77. package/lib/server/handlers/completeClaimOnChain.js +28 -0
  78. package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
  79. package/lib/server/handlers/createClaimOnChain.js +31 -0
  80. package/lib/server/handlers/createTunnel.d.ts +2 -0
  81. package/lib/server/handlers/createTunnel.js +65 -0
  82. package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
  83. package/lib/server/handlers/disconnectTunnel.js +10 -0
  84. package/lib/server/handlers/index.d.ts +4 -0
  85. package/lib/server/handlers/index.js +18 -0
  86. package/lib/server/handlers/init.d.ts +2 -0
  87. package/lib/server/handlers/init.js +21 -0
  88. package/lib/server/index.d.ts +4 -0
  89. package/lib/server/index.js +21 -0
  90. package/lib/server/socket.d.ts +11 -0
  91. package/lib/server/socket.js +95 -0
  92. package/lib/server/tunnels/make-tcp-tunnel.d.ts +20 -0
  93. package/lib/server/tunnels/make-tcp-tunnel.js +182 -0
  94. package/lib/server/utils/apm.d.ts +11 -0
  95. package/lib/server/utils/apm.js +39 -0
  96. package/lib/server/utils/assert-valid-claim-request.d.ts +29 -0
  97. package/lib/server/utils/assert-valid-claim-request.js +189 -0
  98. package/lib/server/utils/config-env.d.ts +1 -0
  99. package/lib/server/utils/config-env.js +7 -0
  100. package/lib/server/utils/generics.d.ts +22 -0
  101. package/lib/server/utils/generics.js +59 -0
  102. package/lib/server/utils/iso.d.ts +1 -0
  103. package/lib/server/utils/iso.js +260 -0
  104. package/lib/server/utils/keep-alive.d.ts +7 -0
  105. package/lib/server/utils/keep-alive.js +42 -0
  106. package/lib/server/utils/process-handshake.d.ts +13 -0
  107. package/lib/server/utils/process-handshake.js +179 -0
  108. package/lib/server/utils/verify-server-certificates.d.ts +7 -0
  109. package/lib/server/utils/verify-server-certificates.js +102 -0
  110. package/lib/tests/describe-with-server.d.ts +21 -0
  111. package/lib/tests/describe-with-server.js +67 -0
  112. package/lib/tests/mock-provider-server.d.ts +13 -0
  113. package/lib/tests/mock-provider-server.js +65 -0
  114. package/lib/tests/mocks.d.ts +4 -0
  115. package/lib/tests/mocks.js +23 -0
  116. package/lib/tests/test.claim-creation.d.ts +1 -0
  117. package/lib/tests/test.claim-creation.js +187 -0
  118. package/lib/tests/test.http-parser.d.ts +1 -0
  119. package/lib/tests/test.http-parser.js +118 -0
  120. package/lib/tests/test.http-provider-utils.d.ts +1 -0
  121. package/lib/tests/test.http-provider-utils.js +1932 -0
  122. package/lib/tests/test.http-provider.d.ts +1 -0
  123. package/lib/tests/test.http-provider.js +43 -0
  124. package/lib/tests/test.rpc-communication.d.ts +1 -0
  125. package/lib/tests/test.rpc-communication.js +64 -0
  126. package/lib/tests/test.rpc-tunnel.d.ts +1 -0
  127. package/lib/tests/test.rpc-tunnel.js +168 -0
  128. package/lib/tests/test.signatures.d.ts +1 -0
  129. package/lib/tests/test.signatures.js +24 -0
  130. package/lib/tests/test.tcp-tunnel.d.ts +1 -0
  131. package/lib/tests/test.tcp-tunnel.js +64 -0
  132. package/lib/tests/test.zk.d.ts +1 -0
  133. package/lib/tests/test.zk.js +169 -0
  134. package/lib/tests/utils.d.ts +12 -0
  135. package/lib/tests/utils.js +49 -0
  136. package/lib/types/claims.d.ts +64 -0
  137. package/lib/types/claims.js +3 -0
  138. package/lib/types/client.d.ts +136 -0
  139. package/lib/types/client.js +3 -0
  140. package/lib/types/general.d.ts +39 -0
  141. package/lib/types/general.js +3 -0
  142. package/lib/types/handlers.d.ts +10 -0
  143. package/lib/types/handlers.js +3 -0
  144. package/lib/types/index.d.ts +9 -0
  145. package/lib/types/index.js +26 -0
  146. package/lib/types/providers.d.ts +135 -0
  147. package/lib/types/providers.gen.d.ts +414 -0
  148. package/lib/types/providers.gen.js +14 -0
  149. package/lib/types/providers.js +3 -0
  150. package/lib/types/rpc.d.ts +35 -0
  151. package/lib/types/rpc.js +3 -0
  152. package/lib/types/signatures.d.ts +28 -0
  153. package/lib/types/signatures.js +3 -0
  154. package/lib/types/tunnel.d.ts +18 -0
  155. package/lib/types/tunnel.js +3 -0
  156. package/lib/types/zk.d.ts +16 -0
  157. package/lib/types/zk.js +3 -0
  158. package/lib/utils/benchmark.d.ts +1 -0
  159. package/lib/utils/benchmark.js +70 -0
  160. package/lib/utils/claims.d.ts +33 -0
  161. package/lib/utils/claims.js +112 -0
  162. package/lib/utils/env.d.ts +3 -0
  163. package/lib/utils/env.js +20 -0
  164. package/lib/utils/error.d.ts +27 -0
  165. package/lib/utils/error.js +43 -0
  166. package/lib/utils/generics.d.ts +112 -0
  167. package/lib/utils/generics.js +348 -0
  168. package/lib/utils/http-parser.d.ts +55 -0
  169. package/lib/utils/http-parser.js +249 -0
  170. package/lib/utils/index.d.ts +10 -0
  171. package/lib/utils/index.js +27 -0
  172. package/lib/utils/logger.d.ts +13 -0
  173. package/lib/utils/logger.js +100 -0
  174. package/lib/utils/prepare-packets.d.ts +16 -0
  175. package/lib/utils/prepare-packets.js +61 -0
  176. package/lib/utils/redactions.d.ts +41 -0
  177. package/lib/utils/redactions.js +111 -0
  178. package/lib/utils/retries.d.ts +12 -0
  179. package/lib/utils/retries.js +28 -0
  180. package/lib/utils/signatures/eth.d.ts +2 -0
  181. package/lib/utils/signatures/eth.js +33 -0
  182. package/lib/utils/signatures/index.d.ts +5 -0
  183. package/lib/utils/signatures/index.js +11 -0
  184. package/lib/utils/socket-base.d.ts +21 -0
  185. package/lib/utils/socket-base.js +89 -0
  186. package/lib/utils/tls.d.ts +2 -0
  187. package/lib/utils/tls.js +32 -0
  188. package/lib/utils/validation.d.ts +2 -0
  189. package/lib/utils/validation.js +46 -0
  190. package/lib/utils/ws.d.ts +12 -0
  191. package/lib/utils/ws.js +21 -0
  192. package/lib/utils/zk.d.ts +50 -0
  193. package/lib/utils/zk.js +282 -0
  194. package/lib/window-rpc/index.d.ts +3 -0
  195. package/lib/window-rpc/index.js +20 -0
  196. package/lib/window-rpc/setup-window-rpc.d.ts +5 -0
  197. package/lib/window-rpc/setup-window-rpc.js +239 -0
  198. package/lib/window-rpc/types.d.ts +184 -0
  199. package/lib/window-rpc/types.js +3 -0
  200. package/lib/window-rpc/utils.d.ts +13 -0
  201. package/lib/window-rpc/utils.js +76 -0
  202. package/lib/window-rpc/window-rpc-zk.d.ts +11 -0
  203. package/lib/window-rpc/window-rpc-zk.js +72 -0
  204. package/package.json +117 -0
@@ -0,0 +1,10 @@
1
+ export * from './generics';
2
+ export * from './logger';
3
+ export * from './redactions';
4
+ export * from './http-parser';
5
+ export * from './zk';
6
+ export * from './claims';
7
+ export * from './error';
8
+ export * from './prepare-packets';
9
+ export * from './validation';
10
+ export * from './signatures';
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./generics"), exports);
18
+ __exportStar(require("./logger"), exports);
19
+ __exportStar(require("./redactions"), exports);
20
+ __exportStar(require("./http-parser"), exports);
21
+ __exportStar(require("./zk"), exports);
22
+ __exportStar(require("./claims"), exports);
23
+ __exportStar(require("./error"), exports);
24
+ __exportStar(require("./prepare-packets"), exports);
25
+ __exportStar(require("./validation"), exports);
26
+ __exportStar(require("./signatures"), exports);
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEwQjtBQUMxQiwyQ0FBd0I7QUFDeEIsK0NBQTRCO0FBQzVCLGdEQUE2QjtBQUM3Qix1Q0FBb0I7QUFDcEIsMkNBQXdCO0FBQ3hCLDBDQUF1QjtBQUN2QixvREFBaUM7QUFDakMsK0NBQTRCO0FBQzVCLCtDQUE0QiJ9
@@ -0,0 +1,13 @@
1
+ import type { LogLevel } from 'src/types';
2
+ export declare let logger: import("pino").Logger<never, boolean>;
3
+ /**
4
+ * Creates a logger instance with optional redaction of PII.
5
+ * Replaces default logger
6
+ * See PII_PROPERTIES for the list of properties that will be redacted.
7
+ *
8
+ * @param redactPii - whether to redact PII from logs
9
+ * @param level - the log level to use
10
+ * @param onLog - a callback to call when a log is written
11
+ */
12
+ export declare function makeLogger(redactPii: boolean, level?: LogLevel, onLog?: (level: LogLevel, log: any) => void): import("pino").Logger<never, boolean>;
13
+ export declare function redact(json: any): any;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logger = void 0;
7
+ exports.makeLogger = makeLogger;
8
+ exports.redact = redact;
9
+ const pino_1 = __importDefault(require("pino"));
10
+ const env_1 = require("src/utils/env");
11
+ const PII_PROPERTIES = ['ownerPrivateKey', 'secretParams'];
12
+ const redactedText = '[REDACTED]';
13
+ const envLevel = (0, env_1.getEnvVariable)('LOG_LEVEL');
14
+ exports.logger = (0, pino_1.default)();
15
+ makeLogger(false, envLevel);
16
+ /**
17
+ * Creates a logger instance with optional redaction of PII.
18
+ * Replaces default logger
19
+ * See PII_PROPERTIES for the list of properties that will be redacted.
20
+ *
21
+ * @param redactPii - whether to redact PII from logs
22
+ * @param level - the log level to use
23
+ * @param onLog - a callback to call when a log is written
24
+ */
25
+ function makeLogger(redactPii, level, onLog) {
26
+ const opts = {
27
+ // Log human readable time stamps instead of epoch time
28
+ timestamp: pino_1.default.stdTimeFunctions.isoTime,
29
+ };
30
+ if (redactPii) {
31
+ opts.formatters = { log: redact };
32
+ opts.serializers = { redact };
33
+ opts.browser = {
34
+ write: {
35
+ fatal: log => writeLog('fatal', log),
36
+ error: log => writeLog('error', log),
37
+ warn: log => writeLog('warn', log),
38
+ info: log => writeLog('info', log),
39
+ debug: log => writeLog('debug', log),
40
+ trace: log => writeLog('trace', log),
41
+ }
42
+ };
43
+ }
44
+ const pLogger = (0, pino_1.default)(opts);
45
+ pLogger.level = level || 'info';
46
+ exports.logger = pLogger;
47
+ return pLogger;
48
+ function writeLog(level, log) {
49
+ log = redact(log);
50
+ const { msg, ...obj } = log;
51
+ if (console[level]) {
52
+ console[level](obj, msg);
53
+ }
54
+ else {
55
+ console.log(obj, msg);
56
+ }
57
+ onLog === null || onLog === void 0 ? void 0 : onLog(level, log);
58
+ }
59
+ }
60
+ function isObjectProperty(property) {
61
+ return (typeof property) === 'object'
62
+ && !Array.isArray(property)
63
+ && property !== null;
64
+ }
65
+ function getReplacer() {
66
+ // Store references to previously visited objects
67
+ const references = new WeakSet();
68
+ return function (key, value) {
69
+ const isObject = (typeof value) === 'object' && value !== null;
70
+ if (isObject) {
71
+ if (references.has(value)) {
72
+ return '[CIRCULAR]';
73
+ }
74
+ references.add(value);
75
+ }
76
+ return value;
77
+ };
78
+ }
79
+ function redact(json) {
80
+ const isObject = isObjectProperty(json);
81
+ if (!isObject && !Array.isArray(json)) {
82
+ return json;
83
+ }
84
+ const redacted = JSON.parse(JSON.stringify(json, getReplacer()));
85
+ for (const prop in redacted) {
86
+ if (PII_PROPERTIES.includes(prop)) {
87
+ redacted[prop] = redactedText;
88
+ }
89
+ if (Array.isArray(redacted[prop])) {
90
+ for (const [index, value] of redacted[prop].entries()) {
91
+ redacted[prop][index] = redact(value);
92
+ }
93
+ }
94
+ else if (isObjectProperty(redacted[prop])) {
95
+ redacted[prop] = redact(redacted[prop]);
96
+ }
97
+ }
98
+ return redacted;
99
+ }
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFxQkEsZ0NBeUNDO0FBMEJELHdCQXdCQztBQWhIRCxnREFBdUM7QUFFdkMsdUNBQThDO0FBRTlDLE1BQU0sY0FBYyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLENBQUE7QUFDMUQsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFBO0FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUEsb0JBQWMsRUFBQyxXQUFXLENBQWEsQ0FBQTtBQUU3QyxRQUFBLE1BQU0sR0FBRyxJQUFBLGNBQUMsR0FBRSxDQUFBO0FBRXZCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFFM0I7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixVQUFVLENBQ3pCLFNBQWtCLEVBQ2xCLEtBQWdCLEVBQ2hCLEtBQTJDO0lBRTNDLE1BQU0sSUFBSSxHQUFrQjtRQUMzQix1REFBdUQ7UUFDdkQsU0FBUyxFQUFFLGNBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPO0tBQ3JDLENBQUE7SUFDRCxJQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQTtRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUE7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNkLEtBQUssRUFBRTtnQkFDTixLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztnQkFDcEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7Z0JBQ3BDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2dCQUNsQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQztnQkFDbEMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO2FBQ3BDO1NBQ0QsQ0FBQTtJQUNGLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFBLGNBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtJQUN2QixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUE7SUFFL0IsY0FBTSxHQUFHLE9BQU8sQ0FBQTtJQUNoQixPQUFPLE9BQU8sQ0FBQTtJQUVkLFNBQVMsUUFBUSxDQUFDLEtBQWUsRUFBRSxHQUFRO1FBQzFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQTtRQUMzQixJQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUN0QixDQUFDO1FBRUQsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNwQixDQUFDO0FBQ0YsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsUUFBUTtJQUNqQyxPQUFPLENBQUMsT0FBTyxRQUFRLENBQUMsS0FBSyxRQUFRO1dBQ2pDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7V0FDeEIsUUFBUSxLQUFLLElBQUksQ0FBQTtBQUN0QixDQUFDO0FBRUQsU0FBUyxXQUFXO0lBQ25CLGlEQUFpRDtJQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0lBRWhDLE9BQU8sVUFBUyxHQUFHLEVBQUUsS0FBSztRQUN6QixNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUE7UUFDOUQsSUFBRyxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMxQixPQUFPLFlBQVksQ0FBQTtZQUNwQixDQUFDO1lBRUQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDYixDQUFDLENBQUE7QUFDRixDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFDLElBQUk7SUFDMUIsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFdkMsSUFBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQTtJQUNaLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUVoRSxLQUFJLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUE7UUFDOUIsQ0FBQztRQUVELElBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xDLEtBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDdEQsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN0QyxDQUFDO1FBQ0YsQ0FBQzthQUFNLElBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3hDLENBQUM7SUFDRixDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUE7QUFDaEIsQ0FBQyJ9
@@ -0,0 +1,16 @@
1
+ import { CipherSuite, TLSPacketContext } from '@reclaimprotocol/tls';
2
+ import { ClaimTunnelRequest_TranscriptMessage as TranscriptMessage } from 'src/proto/api';
3
+ import { CompleteTLSPacket, Logger, MessageRevealInfo, PrepareZKProofsBaseOpts, Transcript } from 'src/types';
4
+ export type PreparePacketsForRevealOpts = {
5
+ cipherSuite: CipherSuite;
6
+ logger: Logger;
7
+ /**
8
+ * Progress of Zk proof generation
9
+ */
10
+ onZkProgress?(blocksDone: number, totalBlocks: number): void;
11
+ } & PrepareZKProofsBaseOpts;
12
+ /**
13
+ * Prepares the packets for reveal to the server
14
+ * according to the specified reveal type
15
+ */
16
+ export declare function preparePacketsForReveal(tlsTranscript: Transcript<CompleteTLSPacket>, reveals: Map<TLSPacketContext, MessageRevealInfo>, { onZkProgress, ...opts }: PreparePacketsForRevealOpts): Promise<TranscriptMessage[]>;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.preparePacketsForReveal = preparePacketsForReveal;
4
+ const tls_1 = require("@reclaimprotocol/tls");
5
+ const api_1 = require("src/proto/api");
6
+ const zk_1 = require("src/utils/zk");
7
+ /**
8
+ * Prepares the packets for reveal to the server
9
+ * according to the specified reveal type
10
+ */
11
+ async function preparePacketsForReveal(tlsTranscript, reveals, { onZkProgress, ...opts }) {
12
+ const transcript = [];
13
+ const proofGenerator = await (0, zk_1.makeZkProofGenerator)(opts);
14
+ let zkPacketsDone = 0;
15
+ await Promise.all(tlsTranscript.map(async ({ message, sender }) => {
16
+ const msg = {
17
+ sender: sender === 'client'
18
+ ? api_1.TranscriptMessageSenderType.TRANSCRIPT_MESSAGE_SENDER_TYPE_CLIENT
19
+ : api_1.TranscriptMessageSenderType.TRANSCRIPT_MESSAGE_SENDER_TYPE_SERVER,
20
+ message: message.data,
21
+ reveal: undefined
22
+ };
23
+ transcript.push(msg);
24
+ const reveal = reveals.get(message);
25
+ if (!reveal || message.type === 'plaintext') {
26
+ return;
27
+ }
28
+ switch (reveal === null || reveal === void 0 ? void 0 : reveal.type) {
29
+ case 'complete':
30
+ msg.reveal = {
31
+ directReveal: {
32
+ key: await tls_1.crypto.exportKey(message.encKey),
33
+ iv: message.fixedIv,
34
+ recordNumber: message.recordNumber,
35
+ },
36
+ };
37
+ break;
38
+ case 'zk':
39
+ // the redacted section can be smaller than the actual
40
+ // plaintext encrypted, in case of TLS1.3 as it has a
41
+ // content type suffix
42
+ reveal.redactedPlaintext = (0, tls_1.concatenateUint8Arrays)([
43
+ reveal.redactedPlaintext,
44
+ message.plaintext.slice(reveal.redactedPlaintext.length)
45
+ ]);
46
+ await proofGenerator.addPacketToProve(message, reveal, proofs => (msg.reveal = { zkReveal: { proofs } }));
47
+ break;
48
+ default:
49
+ // no reveal
50
+ break;
51
+ }
52
+ }));
53
+ const zkPacketsTotal = proofGenerator.getTotalChunksToProve();
54
+ onZkProgress === null || onZkProgress === void 0 ? void 0 : onZkProgress(zkPacketsDone, zkPacketsTotal);
55
+ await proofGenerator.generateProofs(() => {
56
+ zkPacketsDone += 1;
57
+ onZkProgress === null || onZkProgress === void 0 ? void 0 : onZkProgress(zkPacketsDone, zkPacketsTotal);
58
+ });
59
+ return transcript;
60
+ }
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1wYWNrZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3ByZXBhcmUtcGFja2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSwwREFtRUM7QUF4RkQsOENBQW9HO0FBQ3BHLHVDQUdzQjtBQUV0QixxQ0FBbUQ7QUFXbkQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLHVCQUF1QixDQUM1QyxhQUE0QyxFQUM1QyxPQUFpRCxFQUNqRCxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksRUFBK0I7SUFFdEQsTUFBTSxVQUFVLEdBQXdCLEVBQUUsQ0FBQTtJQUMxQyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUEseUJBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUE7SUFFdkQsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFBO0lBRXJCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1FBQ2hFLE1BQU0sR0FBRyxHQUFzQjtZQUM5QixNQUFNLEVBQUUsTUFBTSxLQUFLLFFBQVE7Z0JBQzFCLENBQUMsQ0FBQyxpQ0FBMkIsQ0FBQyxxQ0FBcUM7Z0JBQ25FLENBQUMsQ0FBQyxpQ0FBMkIsQ0FBQyxxQ0FBcUM7WUFDcEUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ3JCLE1BQU0sRUFBRSxTQUFTO1NBQ2pCLENBQUE7UUFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXBCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbkMsSUFBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQzVDLE9BQU07UUFDUCxDQUFDO1FBRUQsUUFBUSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsSUFBSSxFQUFFLENBQUM7WUFDdkIsS0FBSyxVQUFVO2dCQUNkLEdBQUcsQ0FBQyxNQUFNLEdBQUc7b0JBQ1osWUFBWSxFQUFFO3dCQUNiLEdBQUcsRUFBRSxNQUFNLFlBQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDM0MsRUFBRSxFQUFFLE9BQU8sQ0FBQyxPQUFPO3dCQUNuQixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7cUJBQ2xDO2lCQUNELENBQUE7Z0JBQ0QsTUFBSztZQUNOLEtBQUssSUFBSTtnQkFDUixzREFBc0Q7Z0JBQ3RELHFEQUFxRDtnQkFDckQsc0JBQXNCO2dCQUN0QixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBQSw0QkFBc0IsRUFBQztvQkFDakQsTUFBTSxDQUFDLGlCQUFpQjtvQkFDeEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQztpQkFDeEQsQ0FBQyxDQUFBO2dCQUVGLE1BQU0sY0FBYyxDQUFDLGdCQUFnQixDQUNwQyxPQUFPLEVBQ1AsTUFBTSxFQUNOLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUNqRCxDQUFBO2dCQUNELE1BQUs7WUFDTjtnQkFDQyxZQUFZO2dCQUNaLE1BQUs7UUFDTixDQUFDO0lBQ0YsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVILE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0lBQzdELFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFFN0MsTUFBTSxjQUFjLENBQUMsY0FBYyxDQUNsQyxHQUFHLEVBQUU7UUFDSixhQUFhLElBQUksQ0FBQyxDQUFBO1FBQ2xCLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUE7SUFDOUMsQ0FBQyxDQUNELENBQUE7SUFFRCxPQUFPLFVBQVUsQ0FBQTtBQUNsQixDQUFDIn0=
@@ -0,0 +1,41 @@
1
+ import type { ArraySlice } from 'src/types';
2
+ export declare const REDACTION_CHAR = "*";
3
+ export declare const REDACTION_CHAR_CODE: number;
4
+ /**
5
+ * Check if a redacted string is congruent with the original string.
6
+ * @param redacted the redacted content, redacted content is replaced by '*'
7
+ * @param original the original content
8
+ */
9
+ export declare function isRedactionCongruent<T extends string | Uint8Array>(redacted: T, original: T): boolean;
10
+ /**
11
+ * Is the string fully redacted?
12
+ */
13
+ export declare function isFullyRedacted<T extends string | Uint8Array>(redacted: T): boolean;
14
+ /**
15
+ * Given some plaintext blocks and a redaction function, return the blocks that
16
+ * need to be revealed to the other party
17
+ *
18
+ * Use case: we get the response for a request in several blocks, and want to redact
19
+ * pieces that go through multiple blocks. We can use this function to get the
20
+ * blocks that need to be revealed to the other party
21
+ *
22
+ * @example if we received ["secret is 12","345","678. Thanks"]. We'd want
23
+ * to redact the "12345678" and reveal the rest. We'd pass in the blocks and
24
+ * the redact function will return the redactions, namely [10,19].
25
+ * The function will return the blocks ["secret is **","***. Thanks"].
26
+ * The middle block is fully redacted, so it's not returned
27
+ *
28
+ * @param blocks blocks to reveal
29
+ * @param redact function that returns the redactions
30
+ * @returns blocks to reveal
31
+ */
32
+ export declare function getBlocksToReveal<T extends {
33
+ plaintext: Uint8Array;
34
+ }>(blocks: T[], redact: (total: Uint8Array) => ArraySlice[]): {
35
+ block: T;
36
+ redactedPlaintext: Uint8Array;
37
+ }[] | "all";
38
+ /**
39
+ * Redact the following slices from the total
40
+ */
41
+ export declare function redactSlices(total: Uint8Array, slices: ArraySlice[]): Uint8Array;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REDACTION_CHAR_CODE = exports.REDACTION_CHAR = void 0;
4
+ exports.isRedactionCongruent = isRedactionCongruent;
5
+ exports.isFullyRedacted = isFullyRedacted;
6
+ exports.getBlocksToReveal = getBlocksToReveal;
7
+ exports.redactSlices = redactSlices;
8
+ const tls_1 = require("@reclaimprotocol/tls");
9
+ exports.REDACTION_CHAR = '*';
10
+ exports.REDACTION_CHAR_CODE = exports.REDACTION_CHAR.charCodeAt(0);
11
+ /**
12
+ * Check if a redacted string is congruent with the original string.
13
+ * @param redacted the redacted content, redacted content is replaced by '*'
14
+ * @param original the original content
15
+ */
16
+ function isRedactionCongruent(redacted, original) {
17
+ // eslint-disable-next-line unicorn/no-for-loop
18
+ for (let i = 0; i < redacted.length; i++) {
19
+ const element = redacted[i];
20
+ const areSame = element === original[i]
21
+ || (typeof element === 'string' && element === exports.REDACTION_CHAR)
22
+ || (typeof element === 'number' && element === exports.REDACTION_CHAR_CODE);
23
+ if (!areSame) {
24
+ return false;
25
+ }
26
+ }
27
+ return true;
28
+ }
29
+ /**
30
+ * Is the string fully redacted?
31
+ */
32
+ function isFullyRedacted(redacted) {
33
+ for (const element of redacted) {
34
+ if (element !== exports.REDACTION_CHAR
35
+ && element !== exports.REDACTION_CHAR_CODE) {
36
+ return false;
37
+ }
38
+ }
39
+ return true;
40
+ }
41
+ /**
42
+ * Given some plaintext blocks and a redaction function, return the blocks that
43
+ * need to be revealed to the other party
44
+ *
45
+ * Use case: we get the response for a request in several blocks, and want to redact
46
+ * pieces that go through multiple blocks. We can use this function to get the
47
+ * blocks that need to be revealed to the other party
48
+ *
49
+ * @example if we received ["secret is 12","345","678. Thanks"]. We'd want
50
+ * to redact the "12345678" and reveal the rest. We'd pass in the blocks and
51
+ * the redact function will return the redactions, namely [10,19].
52
+ * The function will return the blocks ["secret is **","***. Thanks"].
53
+ * The middle block is fully redacted, so it's not returned
54
+ *
55
+ * @param blocks blocks to reveal
56
+ * @param redact function that returns the redactions
57
+ * @returns blocks to reveal
58
+ */
59
+ function getBlocksToReveal(blocks, redact) {
60
+ const slicesWithReveal = blocks.map(block => ({
61
+ block,
62
+ // copy the plaintext to avoid mutating the original
63
+ redactedPlaintext: new Uint8Array(block.plaintext)
64
+ }));
65
+ const total = (0, tls_1.concatenateUint8Arrays)(blocks.map(b => b.plaintext));
66
+ const redactions = redact(total);
67
+ if (!redactions.length) {
68
+ return 'all';
69
+ }
70
+ let blockIdx = 0;
71
+ let cursorInBlock = 0;
72
+ let cursor = 0;
73
+ for (const redaction of redactions) {
74
+ redactBlocks(redaction);
75
+ }
76
+ // only reveal blocks that have some data to reveal,
77
+ // or are completely plaintext
78
+ return slicesWithReveal
79
+ .filter(s => !isFullyRedacted(s.redactedPlaintext));
80
+ function redactBlocks(slice) {
81
+ while (cursor < slice.fromIndex) {
82
+ advance();
83
+ }
84
+ while (cursor < slice.toIndex) {
85
+ slicesWithReveal[blockIdx]
86
+ .redactedPlaintext[cursorInBlock] = exports.REDACTION_CHAR_CODE;
87
+ advance();
88
+ }
89
+ }
90
+ function advance() {
91
+ cursor += 1;
92
+ cursorInBlock += 1;
93
+ if (cursorInBlock >= blocks[blockIdx].plaintext.length) {
94
+ blockIdx += 1;
95
+ cursorInBlock = 0;
96
+ }
97
+ }
98
+ }
99
+ /**
100
+ * Redact the following slices from the total
101
+ */
102
+ function redactSlices(total, slices) {
103
+ const redacted = new Uint8Array(total);
104
+ for (const slice of slices) {
105
+ for (let i = slice.fromIndex; i < slice.toIndex; i++) {
106
+ redacted[i] = exports.REDACTION_CHAR_CODE;
107
+ }
108
+ }
109
+ return redacted;
110
+ }
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yZWRhY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLG9EQWdCQztBQUtELDBDQWFDO0FBb0JELDhDQXNEQztBQUtELG9DQVVDO0FBdElELDhDQUE2RDtBQUdoRCxRQUFBLGNBQWMsR0FBRyxHQUFHLENBQUE7QUFDcEIsUUFBQSxtQkFBbUIsR0FBRyxzQkFBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUUvRDs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ25DLFFBQVcsRUFDWCxRQUFXO0lBRVgsK0NBQStDO0lBQy9DLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzNCLE1BQU0sT0FBTyxHQUFHLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO2VBQ25DLENBQUMsT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxzQkFBYyxDQUFDO2VBQzNELENBQUMsT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSywyQkFBbUIsQ0FBQyxDQUFBO1FBQ3BFLElBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sS0FBSyxDQUFBO1FBQ2IsQ0FBQztJQUNGLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNaLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGVBQWUsQ0FDOUIsUUFBVztJQUVYLEtBQUksTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFDQyxPQUFPLEtBQUssc0JBQWM7ZUFDdkIsT0FBTyxLQUFLLDJCQUFtQixFQUNqQyxDQUFDO1lBQ0YsT0FBTyxLQUFLLENBQUE7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
@@ -0,0 +1,12 @@
1
+ import { Logger } from 'src/types';
2
+ type RetryLoopOptions = {
3
+ maxRetries?: number;
4
+ logger: Logger;
5
+ shouldRetry: (error: Error) => boolean;
6
+ };
7
+ /**
8
+ * Execute a function, and upon failure -- retry
9
+ * based on specified options.
10
+ */
11
+ export declare function executeWithRetries<T>(code: (attempt: number) => Promise<T>, { maxRetries, shouldRetry, logger, }: RetryLoopOptions): Promise<T>;
12
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeWithRetries = executeWithRetries;
4
+ /**
5
+ * Execute a function, and upon failure -- retry
6
+ * based on specified options.
7
+ */
8
+ async function executeWithRetries(code, { maxRetries = 3, shouldRetry, logger, }) {
9
+ let retries = 0;
10
+ while (retries < maxRetries) {
11
+ try {
12
+ const result = await code(retries);
13
+ return result;
14
+ }
15
+ catch (err) {
16
+ retries += 1;
17
+ if (retries >= maxRetries) {
18
+ throw err;
19
+ }
20
+ if (!shouldRetry(err)) {
21
+ throw err;
22
+ }
23
+ logger.info({ err, retries }, 'retrying failed operation');
24
+ }
25
+ }
26
+ throw new Error('retries exhausted');
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cmllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yZXRyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsZ0RBNEJDO0FBaENEOzs7R0FHRztBQUNJLEtBQUssVUFBVSxrQkFBa0IsQ0FDdkMsSUFBcUMsRUFDckMsRUFDQyxVQUFVLEdBQUcsQ0FBQyxFQUNkLFdBQVcsRUFDWCxNQUFNLEdBQ1k7SUFFbkIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0lBQ2YsT0FBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDO1lBQ0osTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDbEMsT0FBTyxNQUFNLENBQUE7UUFDZCxDQUFDO1FBQUMsT0FBTSxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDLENBQUE7WUFDWixJQUFHLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxHQUFHLENBQUE7WUFDVixDQUFDO1lBRUQsSUFBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QixNQUFNLEdBQUcsQ0FBQTtZQUNWLENBQUM7WUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLDJCQUEyQixDQUFDLENBQUE7UUFDM0QsQ0FBQztJQUNGLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7QUFDckMsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import { ServiceSignatureProvider } from 'src/types';
2
+ export declare const ETH_SIGNATURE_PROVIDER: ServiceSignatureProvider;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ETH_SIGNATURE_PROVIDER = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const utils_1 = require("ethers/lib/utils");
6
+ exports.ETH_SIGNATURE_PROVIDER = {
7
+ getPublicKey(privateKey) {
8
+ const pub = (0, utils_1.computePublicKey)(privateKey, true);
9
+ return ethers_1.utils.arrayify(pub);
10
+ },
11
+ getAddress(publicKey) {
12
+ return (0, utils_1.computeAddress)(publicKey).toLowerCase();
13
+ },
14
+ async sign(data, privateKey) {
15
+ const wallet = getEthWallet(privateKey);
16
+ const signature = await wallet.signMessage(data);
17
+ return ethers_1.utils.arrayify(signature);
18
+ },
19
+ async verify(data, signature, addressBytes) {
20
+ const address = typeof addressBytes === 'string'
21
+ ? addressBytes
22
+ : ethers_1.utils.hexlify(addressBytes);
23
+ const signerAddress = ethers_1.utils.verifyMessage(data, signature);
24
+ return signerAddress.toLowerCase() === address.toLowerCase();
25
+ }
26
+ };
27
+ function getEthWallet(privateKey) {
28
+ if (!privateKey) {
29
+ throw new Error('Private key missing');
30
+ }
31
+ return new ethers_1.Wallet(privateKey);
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3NpZ25hdHVyZXMvZXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFzQztBQUN0Qyw0Q0FBbUU7QUFHdEQsUUFBQSxzQkFBc0IsR0FBNkI7SUFDL0QsWUFBWSxDQUFDLFVBQVU7UUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDOUMsT0FBTyxjQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFDRCxVQUFVLENBQUMsU0FBUztRQUNuQixPQUFPLElBQUEsc0JBQWMsRUFBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMvQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVTtRQUMxQixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hELE9BQU8sY0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVk7UUFDekMsTUFBTSxPQUFPLEdBQUcsT0FBTyxZQUFZLEtBQUssUUFBUTtZQUMvQyxDQUFDLENBQUMsWUFBWTtZQUNkLENBQUMsQ0FBQyxjQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzlCLE1BQU0sYUFBYSxHQUFHLGNBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQzFELE9BQU8sYUFBYSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3RCxDQUFDO0NBQ0QsQ0FBQTtBQUVELFNBQVMsWUFBWSxDQUFDLFVBQWtCO0lBQ3ZDLElBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVELE9BQU8sSUFBSSxlQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDOUIsQ0FBQyJ9
@@ -0,0 +1,5 @@
1
+ import { ServiceSignatureType } from 'src/proto/api';
2
+ import { ServiceSignatureProvider } from 'src/types';
3
+ export declare const SIGNATURES: { [key in ServiceSignatureType]: ServiceSignatureProvider; };
4
+ export declare const SelectedServiceSignatureType = ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH;
5
+ export declare const SelectedServiceSignature: ServiceSignatureProvider;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectedServiceSignature = exports.SelectedServiceSignatureType = exports.SIGNATURES = void 0;
4
+ const api_1 = require("src/proto/api");
5
+ const eth_1 = require("src/utils/signatures/eth");
6
+ exports.SIGNATURES = {
7
+ [api_1.ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH]: eth_1.ETH_SIGNATURE_PROVIDER,
8
+ };
9
+ exports.SelectedServiceSignatureType = api_1.ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH;
10
+ exports.SelectedServiceSignature = exports.SIGNATURES[exports.SelectedServiceSignatureType];
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvc2lnbmF0dXJlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBb0Q7QUFFcEQsa0RBQWlFO0FBRXBELFFBQUEsVUFBVSxHQUFHO0lBQ3pCLENBQUMsMEJBQW9CLENBQUMsMEJBQTBCLENBQUMsRUFBRSw0QkFBc0I7Q0FDVixDQUFBO0FBRW5ELFFBQUEsNEJBQTRCLEdBQUcsMEJBQW9CLENBQUMsMEJBQTBCLENBQUE7QUFFOUUsUUFBQSx3QkFBd0IsR0FBRyxrQkFBVSxDQUFDLG9DQUE0QixDQUFDLENBQUEifQ==
@@ -0,0 +1,21 @@
1
+ import { InitRequest, RPCMessage, RPCMessages } from 'src/proto/api';
2
+ import { IAttestorSocket, Logger, RPCEvent, RPCEventMap } from 'src/types';
3
+ /**
4
+ * Common AttestorSocket class used on the client & server side as the
5
+ * base for their respective socket implementations.
6
+ */
7
+ export declare class AttestorSocket implements IAttestorSocket {
8
+ protected socket: WebSocket;
9
+ metadata: InitRequest;
10
+ logger: Logger;
11
+ private eventTarget;
12
+ isInitialised: boolean;
13
+ constructor(socket: WebSocket, metadata: InitRequest, logger: Logger);
14
+ get isOpen(): boolean;
15
+ get isClosed(): boolean;
16
+ sendMessage(...msgs: Partial<RPCMessage>[]): Promise<RPCMessages>;
17
+ dispatchRPCEvent<K extends keyof RPCEventMap>(type: K, data: RPCEventMap[K]): void;
18
+ addEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void;
19
+ removeEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void;
20
+ terminateConnection(err?: Error): Promise<void>;
21
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AttestorSocket = void 0;
4
+ const message_handler_1 = require("src/client/utils/message-handler");
5
+ const api_1 = require("src/proto/api");
6
+ const utils_1 = require("src/utils");
7
+ /**
8
+ * Common AttestorSocket class used on the client & server side as the
9
+ * base for their respective socket implementations.
10
+ */
11
+ class AttestorSocket {
12
+ constructor(socket, metadata, logger) {
13
+ this.socket = socket;
14
+ this.metadata = metadata;
15
+ this.logger = logger;
16
+ this.eventTarget = new EventTarget();
17
+ this.isInitialised = false;
18
+ socket.addEventListener('error', (event) => {
19
+ const witErr = utils_1.AttestorError.fromError(event.error
20
+ || new Error(event.message));
21
+ witErr.code = 'ERROR_NETWORK_ERROR';
22
+ this.dispatchRPCEvent('connection-terminated', witErr);
23
+ });
24
+ socket.addEventListener('close', () => (this.dispatchRPCEvent('connection-terminated', new utils_1.AttestorError('ERROR_NO_ERROR', 'connection closed'))));
25
+ socket.addEventListener('message', async ({ data }) => {
26
+ try {
27
+ await message_handler_1.wsMessageHandler.call(this, data);
28
+ }
29
+ catch (err) {
30
+ this.logger.error({ err }, 'error processing message');
31
+ }
32
+ });
33
+ }
34
+ get isOpen() {
35
+ return this.socket.readyState === this.socket.OPEN;
36
+ }
37
+ get isClosed() {
38
+ return this.socket.readyState === this.socket.CLOSED
39
+ || this.socket.readyState === this.socket.CLOSING;
40
+ }
41
+ async sendMessage(...msgs) {
42
+ if (this.isClosed) {
43
+ throw new utils_1.AttestorError('ERROR_NETWORK_ERROR', 'Connection closed, cannot send message');
44
+ }
45
+ if (!this.isOpen) {
46
+ throw new utils_1.AttestorError('ERROR_NETWORK_ERROR', 'Wait for connection to open before sending message');
47
+ }
48
+ const msg = (0, utils_1.packRpcMessages)(...msgs);
49
+ const bytes = api_1.RPCMessages.encode(msg).finish();
50
+ await this.socket.send(bytes);
51
+ return msg;
52
+ }
53
+ dispatchRPCEvent(type, data) {
54
+ const event = (0, utils_1.makeRpcEvent)(type, data);
55
+ this.eventTarget.dispatchEvent(event);
56
+ }
57
+ addEventListener(type, listener) {
58
+ this.eventTarget.addEventListener(type, listener);
59
+ }
60
+ removeEventListener(type, listener) {
61
+ this.eventTarget.removeEventListener(type, listener);
62
+ }
63
+ async terminateConnection(err) {
64
+ var _a;
65
+ // connection already closed
66
+ if (this.isClosed) {
67
+ return;
68
+ }
69
+ try {
70
+ const witErr = err
71
+ ? utils_1.AttestorError.fromError(err)
72
+ : new utils_1.AttestorError('ERROR_NO_ERROR', '');
73
+ this.dispatchRPCEvent('connection-terminated', witErr);
74
+ if (this.isOpen) {
75
+ await this.sendMessage({
76
+ connectionTerminationAlert: witErr.toProto()
77
+ });
78
+ }
79
+ }
80
+ catch (err) {
81
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error({ err }, 'error terminating connection');
82
+ }
83
+ finally {
84
+ this.socket.close();
85
+ }
86
+ }
87
+ }
88
+ exports.AttestorSocket = AttestorSocket;
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc29ja2V0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0VBQW1FO0FBQ25FLHVDQUFvRTtBQUVwRSxxQ0FBd0U7QUFFeEU7OztHQUdHO0FBQ0gsTUFBYSxjQUFjO0lBTTFCLFlBQ1csTUFBaUIsRUFDcEIsUUFBcUIsRUFDckIsTUFBYztRQUZYLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUGQsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBO1FBRXZDLGtCQUFhLEdBQUcsS0FBSyxDQUFBO1FBT3BCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDdEQsTUFBTSxNQUFNLEdBQUcscUJBQWEsQ0FBQyxTQUFTLENBQ3JDLEtBQUssQ0FBQyxLQUFLO21CQUNQLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FDNUIsQ0FBQTtZQUNELE1BQU0sQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUE7WUFFbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZELENBQUMsQ0FBQyxDQUFBO1FBRUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQ3BCLHVCQUF1QixFQUN2QixJQUFJLHFCQUFhLENBQ2hCLGdCQUFnQixFQUNoQixtQkFBbUIsQ0FDbkIsQ0FDRCxDQUNELENBQUMsQ0FBQTtRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNwRCxJQUFJLENBQUM7Z0JB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
@@ -0,0 +1,2 @@
1
+ import { TLSConnectionOptions } from '@reclaimprotocol/tls';
2
+ export declare function getDefaultTlsOptions(): TLSConnectionOptions;