@reclaimprotocol/attestor-core 3.0.2 → 3.0.4

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 (126) hide show
  1. package/lib/avs/client/create-claim-on-avs.d.ts +3 -3
  2. package/lib/avs/client/create-claim-on-avs.js +5 -5
  3. package/lib/avs/config.d.ts +1 -1
  4. package/lib/avs/config.js +1 -1
  5. package/lib/avs/tests/test.operator.js +7 -7
  6. package/lib/avs/types/index.d.ts +4 -4
  7. package/lib/avs/utils/contracts.d.ts +3 -3
  8. package/lib/avs/utils/contracts.js +5 -5
  9. package/lib/avs/utils/register.d.ts +1 -1
  10. package/lib/avs/utils/register.js +3 -3
  11. package/lib/avs/utils/tasks.d.ts +1 -1
  12. package/lib/avs/utils/tasks.js +1 -1
  13. package/lib/client/create-claim.d.ts +2 -2
  14. package/lib/client/create-claim.js +9 -9
  15. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +2 -2
  16. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +1 -1
  17. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +2 -2
  18. package/lib/client/tunnels/make-rpc-tls-tunnel.js +3 -3
  19. package/lib/client/utils/attestor-pool.d.ts +1 -1
  20. package/lib/client/utils/attestor-pool.js +1 -1
  21. package/lib/client/utils/client-socket.d.ts +3 -3
  22. package/lib/client/utils/client-socket.js +5 -5
  23. package/lib/client/utils/message-handler.d.ts +2 -2
  24. package/lib/client/utils/message-handler.js +2 -2
  25. package/lib/config/index.d.ts +1 -1
  26. package/lib/config/index.js +1 -1
  27. package/lib/providers/http/index.d.ts +1 -1
  28. package/lib/providers/http/index.js +3 -3
  29. package/lib/providers/http/utils.d.ts +2 -2
  30. package/lib/providers/http/utils.js +1 -1
  31. package/lib/providers/index.d.ts +1 -1
  32. package/lib/providers/index.js +1 -1
  33. package/lib/scripts/check-avs-registration.d.ts +1 -1
  34. package/lib/scripts/check-avs-registration.js +2 -2
  35. package/lib/scripts/generate-receipt.d.ts +1 -1
  36. package/lib/scripts/generate-receipt.js +5 -5
  37. package/lib/scripts/register-avs-operator.d.ts +1 -1
  38. package/lib/scripts/register-avs-operator.js +2 -2
  39. package/lib/scripts/start-server.d.ts +1 -1
  40. package/lib/scripts/start-server.js +2 -2
  41. package/lib/scripts/verify-root-ca.js +2 -2
  42. package/lib/scripts/whitelist-operator.d.ts +1 -1
  43. package/lib/scripts/whitelist-operator.js +3 -3
  44. package/lib/server/create-server.js +7 -7
  45. package/lib/server/handlers/claimTunnel.d.ts +1 -1
  46. package/lib/server/handlers/claimTunnel.js +5 -5
  47. package/lib/server/handlers/completeClaimOnChain.d.ts +1 -1
  48. package/lib/server/handlers/completeClaimOnChain.js +3 -3
  49. package/lib/server/handlers/createClaimOnChain.d.ts +1 -1
  50. package/lib/server/handlers/createClaimOnChain.js +4 -4
  51. package/lib/server/handlers/createTunnel.d.ts +1 -1
  52. package/lib/server/handlers/createTunnel.js +3 -3
  53. package/lib/server/handlers/disconnectTunnel.d.ts +1 -1
  54. package/lib/server/handlers/index.d.ts +1 -1
  55. package/lib/server/handlers/index.js +6 -6
  56. package/lib/server/handlers/init.d.ts +1 -1
  57. package/lib/server/handlers/init.js +2 -2
  58. package/lib/server/socket.d.ts +3 -3
  59. package/lib/server/socket.js +5 -5
  60. package/lib/server/tunnels/make-tcp-tunnel.d.ts +3 -3
  61. package/lib/server/tunnels/make-tcp-tunnel.js +4 -4
  62. package/lib/server/utils/apm.js +2 -2
  63. package/lib/server/utils/assert-valid-claim-request.d.ts +3 -3
  64. package/lib/server/utils/assert-valid-claim-request.js +6 -6
  65. package/lib/server/utils/config-env.js +1 -1
  66. package/lib/server/utils/generics.d.ts +2 -2
  67. package/lib/server/utils/generics.js +4 -4
  68. package/lib/server/utils/keep-alive.js +1 -1
  69. package/lib/server/utils/process-handshake.d.ts +2 -2
  70. package/lib/server/utils/process-handshake.js +2 -2
  71. package/lib/tests/describe-with-server.d.ts +3 -3
  72. package/lib/tests/describe-with-server.js +7 -7
  73. package/lib/tests/mock-provider-server.js +1 -1
  74. package/lib/tests/mocks.d.ts +1 -1
  75. package/lib/tests/test.claim-creation.js +7 -7
  76. package/lib/tests/test.http-parser.js +2 -2
  77. package/lib/tests/test.http-provider-utils.js +4 -4
  78. package/lib/tests/test.http-provider.js +3 -3
  79. package/lib/tests/test.rpc-communication.js +3 -3
  80. package/lib/tests/test.rpc-tunnel.js +6 -6
  81. package/lib/tests/test.signatures.js +2 -2
  82. package/lib/tests/test.tcp-tunnel.js +2 -2
  83. package/lib/tests/test.zk.js +1 -1
  84. package/lib/tests/utils.js +1 -1
  85. package/lib/types/claims.d.ts +6 -6
  86. package/lib/types/client.d.ts +4 -4
  87. package/lib/types/handlers.d.ts +3 -3
  88. package/lib/types/providers.d.ts +4 -4
  89. package/lib/types/rpc.d.ts +2 -2
  90. package/lib/types/tunnel.d.ts +1 -1
  91. package/lib/utils/benchmark.js +2 -2
  92. package/lib/utils/claims.d.ts +3 -3
  93. package/lib/utils/claims.js +3 -3
  94. package/lib/utils/error.d.ts +1 -1
  95. package/lib/utils/error.js +1 -1
  96. package/lib/utils/generics.d.ts +2 -2
  97. package/lib/utils/generics.js +1 -1
  98. package/lib/utils/http-parser.d.ts +1 -1
  99. package/lib/utils/http-parser.js +2 -2
  100. package/lib/utils/logger.d.ts +1 -1
  101. package/lib/utils/logger.js +1 -1
  102. package/lib/utils/prepare-packets.d.ts +2 -2
  103. package/lib/utils/prepare-packets.js +2 -2
  104. package/lib/utils/redactions.d.ts +1 -1
  105. package/lib/utils/retries.d.ts +1 -1
  106. package/lib/utils/signatures/eth.d.ts +1 -1
  107. package/lib/utils/signatures/index.d.ts +2 -2
  108. package/lib/utils/signatures/index.js +2 -2
  109. package/lib/utils/socket-base.d.ts +2 -2
  110. package/lib/utils/socket-base.js +3 -3
  111. package/lib/utils/tls.js +1 -1
  112. package/lib/utils/validation.d.ts +1 -1
  113. package/lib/utils/validation.js +2 -2
  114. package/lib/utils/ws.d.ts +1 -1
  115. package/lib/utils/ws.js +1 -1
  116. package/lib/utils/zk.d.ts +2 -2
  117. package/lib/utils/zk.js +7 -7
  118. package/lib/window-rpc/setup-window-rpc.js +7 -7
  119. package/lib/window-rpc/types.d.ts +5 -5
  120. package/lib/window-rpc/utils.d.ts +2 -2
  121. package/lib/window-rpc/utils.js +2 -2
  122. package/lib/window-rpc/window-rpc-zk.d.ts +2 -2
  123. package/lib/window-rpc/window-rpc-zk.js +2 -2
  124. package/package.json +3 -2
  125. package/lib/server/utils/verify-server-certificates.d.ts +0 -7
  126. package/lib/server/utils/verify-server-certificates.js +0 -102
@@ -1,4 +1,4 @@
1
- import type { LogLevel } from 'src/types';
1
+ import type { LogLevel } from '../types';
2
2
  export declare let logger: import("pino").Logger<never, boolean>;
3
3
  /**
4
4
  * Creates a logger instance with optional redaction of PII.
@@ -7,7 +7,7 @@ exports.logger = void 0;
7
7
  exports.makeLogger = makeLogger;
8
8
  exports.redact = redact;
9
9
  const pino_1 = __importDefault(require("pino"));
10
- const env_1 = require("src/utils/env");
10
+ const env_1 = require("../utils/env");
11
11
  const PII_PROPERTIES = ['ownerPrivateKey', 'secretParams'];
12
12
  const redactedText = '[REDACTED]';
13
13
  const envLevel = (0, env_1.getEnvVariable)('LOG_LEVEL');
@@ -1,6 +1,6 @@
1
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';
2
+ import { ClaimTunnelRequest_TranscriptMessage as TranscriptMessage } from '../proto/api';
3
+ import { CompleteTLSPacket, Logger, MessageRevealInfo, PrepareZKProofsBaseOpts, Transcript } from '../types';
4
4
  export type PreparePacketsForRevealOpts = {
5
5
  cipherSuite: CipherSuite;
6
6
  logger: Logger;
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.preparePacketsForReveal = preparePacketsForReveal;
4
4
  const tls_1 = require("@reclaimprotocol/tls");
5
- const api_1 = require("src/proto/api");
6
- const zk_1 = require("src/utils/zk");
5
+ const api_1 = require("../proto/api");
6
+ const zk_1 = require("../utils/zk");
7
7
  /**
8
8
  * Prepares the packets for reveal to the server
9
9
  * according to the specified reveal type
@@ -1,4 +1,4 @@
1
- import type { ArraySlice } from 'src/types';
1
+ import type { ArraySlice } from '../types';
2
2
  export declare const REDACTION_CHAR = "*";
3
3
  export declare const REDACTION_CHAR_CODE: number;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { Logger } from 'src/types';
1
+ import { Logger } from '../types';
2
2
  type RetryLoopOptions = {
3
3
  maxRetries?: number;
4
4
  logger: Logger;
@@ -1,2 +1,2 @@
1
- import { ServiceSignatureProvider } from 'src/types';
1
+ import { ServiceSignatureProvider } from '../../types';
2
2
  export declare const ETH_SIGNATURE_PROVIDER: ServiceSignatureProvider;
@@ -1,5 +1,5 @@
1
- import { ServiceSignatureType } from 'src/proto/api';
2
- import { ServiceSignatureProvider } from 'src/types';
1
+ import { ServiceSignatureType } from '../../proto/api';
2
+ import { ServiceSignatureProvider } from '../../types';
3
3
  export declare const SIGNATURES: { [key in ServiceSignatureType]: ServiceSignatureProvider; };
4
4
  export declare const SelectedServiceSignatureType = ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH;
5
5
  export declare const SelectedServiceSignature: ServiceSignatureProvider;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
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");
4
+ const api_1 = require("../../proto/api");
5
+ const eth_1 = require("../../utils/signatures/eth");
6
6
  exports.SIGNATURES = {
7
7
  [api_1.ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH]: eth_1.ETH_SIGNATURE_PROVIDER,
8
8
  };
@@ -1,5 +1,5 @@
1
- import { InitRequest, RPCMessage, RPCMessages } from 'src/proto/api';
2
- import { IAttestorSocket, Logger, RPCEvent, RPCEventMap } from 'src/types';
1
+ import { InitRequest, RPCMessage, RPCMessages } from '../proto/api';
2
+ import { IAttestorSocket, Logger, RPCEvent, RPCEventMap } from '../types';
3
3
  /**
4
4
  * Common AttestorSocket class used on the client & server side as the
5
5
  * base for their respective socket implementations.
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
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");
4
+ const message_handler_1 = require("../client/utils/message-handler");
5
+ const api_1 = require("../proto/api");
6
+ const utils_1 = require("../utils");
7
7
  /**
8
8
  * Common AttestorSocket class used on the client & server side as the
9
9
  * base for their respective socket implementations.
package/lib/utils/tls.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getDefaultTlsOptions = getDefaultTlsOptions;
4
4
  const tls_1 = require("@reclaimprotocol/tls");
5
- const env_1 = require("src/utils/env");
5
+ const env_1 = require("../utils/env");
6
6
  // we only support the following cipher suites
7
7
  // for ZK proof generation
8
8
  const ZK_CIPHER_SUITES = [
@@ -1,2 +1,2 @@
1
- import { ProviderName, ProviderParams } from 'src/types';
1
+ import { ProviderName, ProviderParams } from '../types';
2
2
  export declare function assertValidateProviderParams<T extends ProviderName>(name: T, params: unknown): asserts params is ProviderParams<T>;
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.assertValidateProviderParams = assertValidateProviderParams;
7
7
  const ajv_1 = __importDefault(require("ajv"));
8
- const providers_gen_1 = require("src/types/providers.gen");
9
- const error_1 = require("src/utils/error");
8
+ const providers_gen_1 = require("../types/providers.gen");
9
+ const error_1 = require("../utils/error");
10
10
  const PROVIDER_VALIDATOR_MAP = {};
11
11
  const AJV = new ajv_1.default({
12
12
  allErrors: true,
package/lib/utils/ws.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AnyWebSocketConstructor } from 'src/types';
1
+ import { AnyWebSocketConstructor } from '../types';
2
2
  /**
3
3
  * Default WebSocket implementation, uses `ws` package
4
4
  * for Node.js and the native WebSocket for the browser & other
package/lib/utils/ws.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Websocket = void 0;
4
4
  exports.setWebsocket = setWebsocket;
5
- const env_1 = require("src/utils/env");
5
+ const env_1 = require("../utils/env");
6
6
  /**
7
7
  * Default WebSocket implementation, uses `ws` package
8
8
  * for Node.js and the native WebSocket for the browser & other
package/lib/utils/zk.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { EncryptionAlgorithm, PrivateInput, PublicInput, ZKOperator } from '@reclaimprotocol/circom-symmetric-crypto';
2
2
  import { CipherSuite } from '@reclaimprotocol/tls';
3
- import { MessageReveal_MessageRevealZk as ZKReveal, MessageReveal_ZKProof as ZKProof } from 'src/proto/api';
4
- import { CompleteTLSPacket, Logger, PrepareZKProofsBaseOpts, ZKEngine, ZKOperators, ZKRevealInfo } from 'src/types';
3
+ import { MessageReveal_MessageRevealZk as ZKReveal, MessageReveal_ZKProof as ZKProof } from '../proto/api';
4
+ import { CompleteTLSPacket, Logger, PrepareZKProofsBaseOpts, ZKEngine, ZKOperators, ZKRevealInfo } from '../types';
5
5
  type PrepareZKProofsOpts = {
6
6
  logger?: Logger;
7
7
  cipherSuite: CipherSuite;
package/lib/utils/zk.js CHANGED
@@ -6,13 +6,13 @@ exports.makeDefaultZkOperator = makeDefaultZkOperator;
6
6
  const circom_symmetric_crypto_1 = require("@reclaimprotocol/circom-symmetric-crypto");
7
7
  const gnark_1 = require("@reclaimprotocol/circom-symmetric-crypto/lib/gnark");
8
8
  const tls_1 = require("@reclaimprotocol/tls");
9
- const config_1 = require("src/config");
10
- const env_1 = require("src/utils/env");
11
- const error_1 = require("src/utils/error");
12
- const generics_1 = require("src/utils/generics");
13
- const logger_1 = require("src/utils/logger");
14
- const redactions_1 = require("src/utils/redactions");
15
- const retries_1 = require("src/utils/retries");
9
+ const config_1 = require("../config");
10
+ const env_1 = require("../utils/env");
11
+ const error_1 = require("../utils/error");
12
+ const generics_1 = require("../utils/generics");
13
+ const logger_1 = require("../utils/logger");
14
+ const redactions_1 = require("../utils/redactions");
15
+ const retries_1 = require("../utils/retries");
16
16
  const ZK_CONCURRENCY = +((0, env_1.getEnvVariable)('ZK_CONCURRENCY')
17
17
  || config_1.DEFAULT_ZK_CONCURRENCY);
18
18
  async function makeZkProofGenerator({ zkOperators, logger = logger_1.logger, zkProofConcurrency = ZK_CONCURRENCY, maxZkChunks = config_1.MAX_ZK_CHUNKS, cipherSuite, zkEngine = 'snarkJS' }) {
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setupWindowRpc = setupWindowRpc;
4
4
  const tls_1 = require("@reclaimprotocol/tls");
5
- const create_claim_on_avs_1 = require("src/avs/client/create-claim-on-avs");
6
- const client_1 = require("src/client");
7
- const utils_1 = require("src/providers/http/utils");
8
- const utils_2 = require("src/utils");
9
- const benchmark_1 = require("src/utils/benchmark");
10
- const utils_3 = require("src/window-rpc/utils");
11
- const window_rpc_zk_1 = require("src/window-rpc/window-rpc-zk");
5
+ const create_claim_on_avs_1 = require("../avs/client/create-claim-on-avs");
6
+ const client_1 = require("../client");
7
+ const utils_1 = require("../providers/http/utils");
8
+ const utils_2 = require("../utils");
9
+ const benchmark_1 = require("../utils/benchmark");
10
+ const utils_3 = require("../window-rpc/utils");
11
+ const window_rpc_zk_1 = require("../window-rpc/window-rpc-zk");
12
12
  class WindowRPCEvent extends Event {
13
13
  constructor(data) {
14
14
  super('message');
@@ -1,9 +1,9 @@
1
1
  import type { EncryptionAlgorithm, ZKOperator } from '@reclaimprotocol/circom-symmetric-crypto';
2
- import type { TaskCompletedEventObject } from 'src/avs/contracts/ReclaimServiceManager';
3
- import type { CreateClaimOnAvsOpts, CreateClaimOnAvsStep } from 'src/avs/types';
4
- import type { extractHTMLElement, extractJSONValueIndex } from 'src/providers/http/utils';
5
- import type { AttestorData, CompleteClaimData, CreateClaimOnAttestorOpts, LogLevel, ProofGenerationStep, ProviderName, ProviderParams, ProviderSecretParams, ZKEngine } from 'src/types';
6
- import { HttpRequest, HttpResponse } from 'src/utils';
2
+ import type { TaskCompletedEventObject } from '../avs/contracts/ReclaimServiceManager';
3
+ import type { CreateClaimOnAvsOpts, CreateClaimOnAvsStep } from '../avs/types';
4
+ import type { extractHTMLElement, extractJSONValueIndex } from '../providers/http/utils';
5
+ import type { AttestorData, CompleteClaimData, CreateClaimOnAttestorOpts, LogLevel, ProofGenerationStep, ProviderName, ProviderParams, ProviderSecretParams, ZKEngine } from '../types';
6
+ import { HttpRequest, HttpResponse } from '../utils';
7
7
  type IdentifiedMessage = {
8
8
  module: 'attestor-core';
9
9
  /**
@@ -1,5 +1,5 @@
1
- import { ClaimTunnelResponse } from 'src/proto/api';
2
- import { CreateClaimResponse } from 'src/window-rpc/types';
1
+ import { ClaimTunnelResponse } from '../proto/api';
2
+ import { CreateClaimResponse } from '../window-rpc/types';
3
3
  export declare function getCurrentMemoryUsage(): Promise<{
4
4
  available: boolean;
5
5
  content: string;
@@ -5,8 +5,8 @@ exports.generateRpcRequestId = generateRpcRequestId;
5
5
  exports.getWsApiUrlFromLocation = getWsApiUrlFromLocation;
6
6
  exports.mapToCreateClaimResponse = mapToCreateClaimResponse;
7
7
  const ethers_1 = require("ethers");
8
- const config_1 = require("src/config");
9
- const utils_1 = require("src/utils");
8
+ const config_1 = require("../config");
9
+ const utils_1 = require("../utils");
10
10
  // track memory usage
11
11
  async function getCurrentMemoryUsage() {
12
12
  if (!window.crossOriginIsolated) {
@@ -1,6 +1,6 @@
1
1
  import { EncryptionAlgorithm, ZKOperator } from '@reclaimprotocol/circom-symmetric-crypto';
2
- import { ZKEngine } from 'src/types';
3
- import { CommunicationBridge, WindowRPCAppClient } from 'src/window-rpc/types';
2
+ import { ZKEngine } from '../types';
3
+ import { CommunicationBridge, WindowRPCAppClient } from '../window-rpc/types';
4
4
  export declare const ALL_ENC_ALGORITHMS: EncryptionAlgorithm[];
5
5
  /**
6
6
  * The goal of this RPC operator is if the attestor client
@@ -4,8 +4,8 @@ exports.ALL_ENC_ALGORITHMS = void 0;
4
4
  exports.makeWindowRpcZkOperator = makeWindowRpcZkOperator;
5
5
  exports.waitForResponse = waitForResponse;
6
6
  const utils_1 = require("ethers/lib/utils");
7
- const utils_2 = require("src/utils");
8
- const utils_3 = require("src/window-rpc/utils");
7
+ const utils_2 = require("../utils");
8
+ const utils_3 = require("../window-rpc/utils");
9
9
  exports.ALL_ENC_ALGORITHMS = [
10
10
  'aes-256-ctr',
11
11
  'aes-128-ctr',
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@reclaimprotocol/attestor-core",
3
- "version": "3.0.2",
3
+ "version": "3.0.4",
4
4
  "description": "",
5
5
  "main": "lib/index",
6
6
  "scripts": {
7
- "build": "tsc -p tsconfig.build.json && tsc-alias",
7
+ "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.json",
8
+ "prepublish": "tsc-alias -p tsconfig.json",
8
9
  "build:browser": "sh ./src/scripts/build-browser.sh",
9
10
  "run:tsc": "SWC_NODE_IGNORE_DYNAMIC=true node -r @swc-node/register",
10
11
  "start:tsc": "npm run run:tsc -- src/scripts/start-server",
@@ -1,7 +0,0 @@
1
- import { IDecryptedTranscript } from 'src/types';
2
- /**
3
- * Verifies server cert chain and removes handshake messages from transcript, returning new one
4
- * @param receipt
5
- * @param logger
6
- */
7
- export declare function verifyServerCertificates(receipt: IDecryptedTranscript, logger: any): Promise<IDecryptedTranscript>;
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verifyServerCertificates = verifyServerCertificates;
4
- const tls_1 = require("@reclaimprotocol/tls");
5
- const parse_certificate_1 = require("@reclaimprotocol/tls/lib/utils/parse-certificate");
6
- const utils_1 = require("src/utils");
7
- const RECORD_LENGTH_BYTES = 3;
8
- /**
9
- * Verifies server cert chain and removes handshake messages from transcript, returning new one
10
- * @param receipt
11
- * @param logger
12
- */
13
- async function verifyServerCertificates(receipt, logger) {
14
- const handshakeMsgs = (0, utils_1.extractHandshakeFromTranscript)(receipt);
15
- let handshakeData = (0, tls_1.concatenateUint8Arrays)(handshakeMsgs.messages.map(m => m.message));
16
- let packetData;
17
- const handshakeRawMessages = [];
18
- const certificates = [];
19
- let cipherSuite = undefined;
20
- let serverRandom = undefined;
21
- let clientRandom = undefined;
22
- let certVerified = false;
23
- while ((packetData = readPacket()) && !certVerified) {
24
- const { type, content } = packetData;
25
- switch (type) {
26
- case tls_1.SUPPORTED_RECORD_TYPE_MAP.CLIENT_HELLO:
27
- const clientHello = (0, tls_1.parseClientHello)(handshakeRawMessages[0]);
28
- clientRandom = clientHello.serverRandom;
29
- break;
30
- case tls_1.SUPPORTED_RECORD_TYPE_MAP.SERVER_HELLO:
31
- const serverHello = await (0, tls_1.parseServerHello)(content);
32
- cipherSuite = serverHello.cipherSuite;
33
- serverRandom = serverHello.serverRandom;
34
- break;
35
- case tls_1.SUPPORTED_RECORD_TYPE_MAP.CERTIFICATE:
36
- const parseResult = (0, tls_1.parseCertificates)(content, { version: receipt.tlsVersion });
37
- certificates.push(...parseResult.certificates);
38
- break;
39
- case tls_1.SUPPORTED_RECORD_TYPE_MAP.CERTIFICATE_VERIFY:
40
- const signature = (0, tls_1.parseServerCertificateVerify)(content);
41
- if (!(certificates === null || certificates === void 0 ? void 0 : certificates.length)) {
42
- throw new Error('No provider certificates received');
43
- }
44
- const signatureData = await (0, tls_1.getSignatureDataTls13)(handshakeRawMessages.slice(0, -1), cipherSuite);
45
- await (0, tls_1.verifyCertificateSignature)({
46
- ...signature,
47
- publicKey: certificates[0].getPublicKey(),
48
- signatureData,
49
- });
50
- await (0, parse_certificate_1.verifyCertificateChain)(certificates, receipt.hostname);
51
- logger.info({ host: receipt.hostname }, 'verified provider certificate chain');
52
- certVerified = true;
53
- break;
54
- case tls_1.SUPPORTED_RECORD_TYPE_MAP.SERVER_KEY_SHARE:
55
- if (!(certificates === null || certificates === void 0 ? void 0 : certificates.length)) {
56
- throw new Error('No provider certificates received');
57
- }
58
- const keyShare = await (0, tls_1.processServerKeyShare)(content);
59
- const signatureData12 = await (0, tls_1.getSignatureDataTls12)({
60
- clientRandom: clientRandom,
61
- serverRandom: serverRandom,
62
- curveType: keyShare.publicKeyType,
63
- publicKey: keyShare.publicKey,
64
- });
65
- // verify signature
66
- await (0, tls_1.verifyCertificateSignature)({
67
- signature: keyShare.signatureBytes,
68
- algorithm: keyShare.signatureAlgorithm,
69
- publicKey: certificates[0].getPublicKey(),
70
- signatureData: signatureData12,
71
- });
72
- await (0, parse_certificate_1.verifyCertificateChain)(certificates, receipt.hostname);
73
- logger.info({ host: receipt.hostname }, 'verified provider certificate chain');
74
- certVerified = true;
75
- break;
76
- }
77
- }
78
- if (!certVerified) {
79
- throw new Error('No provider certificates received');
80
- }
81
- function readPacket() {
82
- if (!handshakeData.length) {
83
- return;
84
- }
85
- const type = handshakeData[0];
86
- const content = (0, tls_1.readWithLength)(handshakeData.slice(1), RECORD_LENGTH_BYTES);
87
- if (!content) {
88
- logger.warn('missing bytes from packet');
89
- return;
90
- }
91
- const totalLength = 1 + RECORD_LENGTH_BYTES + content.length;
92
- handshakeRawMessages.push(handshakeData.slice(0, totalLength));
93
- handshakeData = handshakeData.slice(totalLength);
94
- return { type, content };
95
- }
96
- return {
97
- tlsVersion: receipt.tlsVersion,
98
- hostname: receipt.hostname,
99
- transcript: receipt.transcript.slice(handshakeMsgs.lastMsgIndex)
100
- };
101
- }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LXNlcnZlci1jZXJ0aWZpY2F0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3V0aWxzL3ZlcmlmeS1zZXJ2ZXItY2VydGlmaWNhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUJBLDREQWdIQztBQW5JRCw4Q0FNNkI7QUFDN0Isd0ZBQXlGO0FBRXpGLHFDQUEwRDtBQUcxRCxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtBQUU3Qjs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLHdCQUF3QixDQUFDLE9BQTZCLEVBQUUsTUFBTTtJQUNuRixNQUFNLGFBQWEsR0FBRyxJQUFBLHNDQUE4QixFQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzdELElBQUksYUFBYSxHQUFHLElBQUEsNEJBQXNCLEVBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN0RixJQUFJLFVBQXlDLENBQUE7SUFDN0MsTUFBTSxvQkFBb0IsR0FBaUIsRUFBRSxDQUFBO0lBQzdDLE1BQU0sWUFBWSxHQUFzQixFQUFFLENBQUE7SUFDMUMsSUFBSSxXQUFXLEdBQTRCLFNBQVMsQ0FBQTtJQUNwRCxJQUFJLFlBQVksR0FBMkIsU0FBUyxDQUFBO0lBQ3BELElBQUksWUFBWSxHQUEyQixTQUFTLENBQUE7SUFFcEQsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBQ3hCLE9BQU0sQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BELE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsVUFBVSxDQUFBO1FBRXBDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDZixLQUFLLCtCQUF5QixDQUFDLFlBQVk7Z0JBQzFDLE1BQU0sV0FBVyxHQUFHLElBQUEsc0JBQWdCLEVBQUMs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