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