@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.
- package/README.md +39 -0
- package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
- package/lib/avs/abis/avsDirectoryABI.js +344 -0
- package/lib/avs/abis/delegationABI.d.ts +126 -0
- package/lib/avs/abis/delegationABI.js +5 -0
- package/lib/avs/abis/registryABI.d.ts +136 -0
- package/lib/avs/abis/registryABI.js +729 -0
- package/lib/avs/client/create-claim-on-avs.d.ts +10 -0
- package/lib/avs/client/create-claim-on-avs.js +147 -0
- package/lib/avs/config.d.ts +7 -0
- package/lib/avs/config.js +24 -0
- package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
- package/lib/avs/contracts/ReclaimServiceManager.js +3 -0
- package/lib/avs/contracts/common.d.ts +21 -0
- package/lib/avs/contracts/common.js +3 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1174 -0
- package/lib/avs/contracts/factories/index.d.ts +1 -0
- package/lib/avs/contracts/factories/index.js +9 -0
- package/lib/avs/contracts/index.d.ts +3 -0
- package/lib/avs/contracts/index.js +30 -0
- package/lib/avs/tests/test.operator.d.ts +11 -0
- package/lib/avs/tests/test.operator.js +313 -0
- package/lib/avs/tests/utils.d.ts +2 -0
- package/lib/avs/tests/utils.js +50 -0
- package/lib/avs/types/index.d.ts +55 -0
- package/lib/avs/types/index.js +3 -0
- package/lib/avs/utils/contracts.d.ts +21 -0
- package/lib/avs/utils/contracts.js +38 -0
- package/lib/avs/utils/register.d.ts +27 -0
- package/lib/avs/utils/register.js +76 -0
- package/lib/avs/utils/tasks.d.ts +22 -0
- package/lib/avs/utils/tasks.js +45 -0
- package/lib/client/create-claim.d.ts +5 -0
- package/lib/client/create-claim.js +357 -0
- package/lib/client/index.d.ts +3 -0
- package/lib/client/index.js +20 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.js +60 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +25 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.js +135 -0
- package/lib/client/utils/attestor-pool.d.ts +6 -0
- package/lib/client/utils/attestor-pool.js +28 -0
- package/lib/client/utils/client-socket.d.ts +9 -0
- package/lib/client/utils/client-socket.js +77 -0
- package/lib/client/utils/message-handler.d.ts +4 -0
- package/lib/client/utils/message-handler.js +93 -0
- package/lib/config/index.d.ts +23 -0
- package/lib/config/index.js +35 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +39 -0
- package/lib/proto/api.d.ts +414 -0
- package/lib/proto/api.js +2756 -0
- package/lib/providers/http/index.d.ts +3 -0
- package/lib/providers/http/index.js +472 -0
- package/lib/providers/http/utils.d.ts +44 -0
- package/lib/providers/http/utils.js +302 -0
- package/lib/providers/index.d.ts +4 -0
- package/lib/providers/index.js +11 -0
- package/lib/scripts/check-avs-registration.d.ts +1 -0
- package/lib/scripts/check-avs-registration.js +28 -0
- package/lib/scripts/generate-provider-types.d.ts +5 -0
- package/lib/scripts/generate-provider-types.js +82 -0
- package/lib/scripts/generate-receipt.d.ts +9 -0
- package/lib/scripts/generate-receipt.js +93 -0
- package/lib/scripts/register-avs-operator.d.ts +1 -0
- package/lib/scripts/register-avs-operator.js +6 -0
- package/lib/scripts/start-server.d.ts +1 -0
- package/lib/scripts/start-server.js +6 -0
- package/lib/scripts/verify-root-ca.d.ts +1 -0
- package/lib/scripts/verify-root-ca.js +51 -0
- package/lib/server/create-server.d.ts +7 -0
- package/lib/server/create-server.js +85 -0
- package/lib/server/handlers/claimTunnel.d.ts +2 -0
- package/lib/server/handlers/claimTunnel.js +55 -0
- package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
- package/lib/server/handlers/completeClaimOnChain.js +28 -0
- package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
- package/lib/server/handlers/createClaimOnChain.js +31 -0
- package/lib/server/handlers/createTunnel.d.ts +2 -0
- package/lib/server/handlers/createTunnel.js +65 -0
- package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
- package/lib/server/handlers/disconnectTunnel.js +10 -0
- package/lib/server/handlers/index.d.ts +4 -0
- package/lib/server/handlers/index.js +18 -0
- package/lib/server/handlers/init.d.ts +2 -0
- package/lib/server/handlers/init.js +21 -0
- package/lib/server/index.d.ts +4 -0
- package/lib/server/index.js +21 -0
- package/lib/server/socket.d.ts +11 -0
- package/lib/server/socket.js +95 -0
- package/lib/server/tunnels/make-tcp-tunnel.d.ts +20 -0
- package/lib/server/tunnels/make-tcp-tunnel.js +182 -0
- package/lib/server/utils/apm.d.ts +11 -0
- package/lib/server/utils/apm.js +39 -0
- package/lib/server/utils/assert-valid-claim-request.d.ts +29 -0
- package/lib/server/utils/assert-valid-claim-request.js +189 -0
- package/lib/server/utils/config-env.d.ts +1 -0
- package/lib/server/utils/config-env.js +7 -0
- package/lib/server/utils/generics.d.ts +22 -0
- package/lib/server/utils/generics.js +59 -0
- package/lib/server/utils/iso.d.ts +1 -0
- package/lib/server/utils/iso.js +260 -0
- package/lib/server/utils/keep-alive.d.ts +7 -0
- package/lib/server/utils/keep-alive.js +42 -0
- package/lib/server/utils/process-handshake.d.ts +13 -0
- package/lib/server/utils/process-handshake.js +179 -0
- package/lib/server/utils/verify-server-certificates.d.ts +7 -0
- package/lib/server/utils/verify-server-certificates.js +102 -0
- package/lib/tests/describe-with-server.d.ts +21 -0
- package/lib/tests/describe-with-server.js +67 -0
- package/lib/tests/mock-provider-server.d.ts +13 -0
- package/lib/tests/mock-provider-server.js +65 -0
- package/lib/tests/mocks.d.ts +4 -0
- package/lib/tests/mocks.js +23 -0
- package/lib/tests/test.claim-creation.d.ts +1 -0
- package/lib/tests/test.claim-creation.js +187 -0
- package/lib/tests/test.http-parser.d.ts +1 -0
- package/lib/tests/test.http-parser.js +118 -0
- package/lib/tests/test.http-provider-utils.d.ts +1 -0
- package/lib/tests/test.http-provider-utils.js +1932 -0
- package/lib/tests/test.http-provider.d.ts +1 -0
- package/lib/tests/test.http-provider.js +43 -0
- package/lib/tests/test.rpc-communication.d.ts +1 -0
- package/lib/tests/test.rpc-communication.js +64 -0
- package/lib/tests/test.rpc-tunnel.d.ts +1 -0
- package/lib/tests/test.rpc-tunnel.js +168 -0
- package/lib/tests/test.signatures.d.ts +1 -0
- package/lib/tests/test.signatures.js +24 -0
- package/lib/tests/test.tcp-tunnel.d.ts +1 -0
- package/lib/tests/test.tcp-tunnel.js +64 -0
- package/lib/tests/test.zk.d.ts +1 -0
- package/lib/tests/test.zk.js +169 -0
- package/lib/tests/utils.d.ts +12 -0
- package/lib/tests/utils.js +49 -0
- package/lib/types/claims.d.ts +64 -0
- package/lib/types/claims.js +3 -0
- package/lib/types/client.d.ts +136 -0
- package/lib/types/client.js +3 -0
- package/lib/types/general.d.ts +39 -0
- package/lib/types/general.js +3 -0
- package/lib/types/handlers.d.ts +10 -0
- package/lib/types/handlers.js +3 -0
- package/lib/types/index.d.ts +9 -0
- package/lib/types/index.js +26 -0
- package/lib/types/providers.d.ts +135 -0
- package/lib/types/providers.gen.d.ts +414 -0
- package/lib/types/providers.gen.js +14 -0
- package/lib/types/providers.js +3 -0
- package/lib/types/rpc.d.ts +35 -0
- package/lib/types/rpc.js +3 -0
- package/lib/types/signatures.d.ts +28 -0
- package/lib/types/signatures.js +3 -0
- package/lib/types/tunnel.d.ts +18 -0
- package/lib/types/tunnel.js +3 -0
- package/lib/types/zk.d.ts +16 -0
- package/lib/types/zk.js +3 -0
- package/lib/utils/benchmark.d.ts +1 -0
- package/lib/utils/benchmark.js +70 -0
- package/lib/utils/claims.d.ts +33 -0
- package/lib/utils/claims.js +112 -0
- package/lib/utils/env.d.ts +3 -0
- package/lib/utils/env.js +20 -0
- package/lib/utils/error.d.ts +27 -0
- package/lib/utils/error.js +43 -0
- package/lib/utils/generics.d.ts +112 -0
- package/lib/utils/generics.js +348 -0
- package/lib/utils/http-parser.d.ts +55 -0
- package/lib/utils/http-parser.js +249 -0
- package/lib/utils/index.d.ts +10 -0
- package/lib/utils/index.js +27 -0
- package/lib/utils/logger.d.ts +13 -0
- package/lib/utils/logger.js +100 -0
- package/lib/utils/prepare-packets.d.ts +16 -0
- package/lib/utils/prepare-packets.js +61 -0
- package/lib/utils/redactions.d.ts +41 -0
- package/lib/utils/redactions.js +111 -0
- package/lib/utils/retries.d.ts +12 -0
- package/lib/utils/retries.js +28 -0
- package/lib/utils/signatures/eth.d.ts +2 -0
- package/lib/utils/signatures/eth.js +33 -0
- package/lib/utils/signatures/index.d.ts +5 -0
- package/lib/utils/signatures/index.js +11 -0
- package/lib/utils/socket-base.d.ts +21 -0
- package/lib/utils/socket-base.js +89 -0
- package/lib/utils/tls.d.ts +2 -0
- package/lib/utils/tls.js +32 -0
- package/lib/utils/validation.d.ts +2 -0
- package/lib/utils/validation.js +46 -0
- package/lib/utils/ws.d.ts +12 -0
- package/lib/utils/ws.js +21 -0
- package/lib/utils/zk.d.ts +50 -0
- package/lib/utils/zk.js +282 -0
- package/lib/window-rpc/index.d.ts +3 -0
- package/lib/window-rpc/index.js +20 -0
- package/lib/window-rpc/setup-window-rpc.d.ts +5 -0
- package/lib/window-rpc/setup-window-rpc.js +239 -0
- package/lib/window-rpc/types.d.ts +184 -0
- package/lib/window-rpc/types.js +3 -0
- package/lib/window-rpc/utils.d.ts +13 -0
- package/lib/window-rpc/utils.js +76 -0
- package/lib/window-rpc/window-rpc-zk.d.ts +11 -0
- package/lib/window-rpc/window-rpc-zk.js +72 -0
- package/package.json +117 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerOperator = registerOperator;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const config_1 = require("src/avs/config");
|
|
6
|
+
const contracts_1 = require("src/avs/utils/contracts");
|
|
7
|
+
const utils_1 = require("src/utils");
|
|
8
|
+
/**
|
|
9
|
+
* Registers the operator on the chain, if required.
|
|
10
|
+
* If already registered -- will just pass through
|
|
11
|
+
*/
|
|
12
|
+
async function registerOperator({ logger = utils_1.logger, chainId = config_1.SELECTED_CHAIN_ID, wallet = (0, contracts_1.getContracts)(chainId).wallet, reclaimRpcUrl = config_1.RECLAIM_PUBLIC_URL } = {}) {
|
|
13
|
+
const contracts = (0, contracts_1.getContracts)(chainId);
|
|
14
|
+
const delegationManager = contracts.delegationManager
|
|
15
|
+
.connect(wallet);
|
|
16
|
+
const avsDirectory = contracts.avsDirectory
|
|
17
|
+
.connect(wallet);
|
|
18
|
+
const contract = contracts.contract
|
|
19
|
+
.connect(wallet);
|
|
20
|
+
const registryContract = contracts.registryContract
|
|
21
|
+
.connect(wallet);
|
|
22
|
+
const addr = await wallet.address;
|
|
23
|
+
try {
|
|
24
|
+
const tx1 = await delegationManager
|
|
25
|
+
.registerAsOperator({
|
|
26
|
+
earningsReceiver: addr,
|
|
27
|
+
delegationApprover: '0x0000000000000000000000000000000000000000',
|
|
28
|
+
stakerOptOutWindowBlocks: 0
|
|
29
|
+
}, '');
|
|
30
|
+
await tx1.wait();
|
|
31
|
+
logger.info('operator registered on DM successfully');
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
if (!err.message.includes('operator has already registered')) {
|
|
35
|
+
throw err;
|
|
36
|
+
}
|
|
37
|
+
logger.info('Operator already registered on EL');
|
|
38
|
+
}
|
|
39
|
+
const salt = ethers_1.ethers.utils.hexlify(ethers_1.ethers.utils.randomBytes(32));
|
|
40
|
+
// Example expiry, 1 hour from now
|
|
41
|
+
const expiry = Math.floor(Date.now() / 1000) + 3600;
|
|
42
|
+
// Define the output structure
|
|
43
|
+
const operatorSignature = {
|
|
44
|
+
expiry: expiry,
|
|
45
|
+
salt: salt,
|
|
46
|
+
signature: ''
|
|
47
|
+
};
|
|
48
|
+
// Calculate the digest hash using the avsDirectory's method
|
|
49
|
+
const digestHash = await avsDirectory
|
|
50
|
+
.calculateOperatorAVSRegistrationDigestHash(addr, contract.address, salt, expiry);
|
|
51
|
+
// Sign the digest hash with the operator's private key
|
|
52
|
+
const signingKey = new ethers_1.ethers.utils.SigningKey(wallet.privateKey);
|
|
53
|
+
const signature = signingKey.signDigest(digestHash);
|
|
54
|
+
// Encode the signature in the required format
|
|
55
|
+
operatorSignature.signature = ethers_1.ethers.utils.joinSignature(signature);
|
|
56
|
+
logger.info('operator signature generated successfully');
|
|
57
|
+
if (!(await registryContract.operatorRegistered(addr))) {
|
|
58
|
+
const tx2 = await registryContract
|
|
59
|
+
.registerOperatorWithSignature(addr, operatorSignature);
|
|
60
|
+
await tx2.wait();
|
|
61
|
+
logger.info('operator registered on AVS successfully');
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
logger.info('Operator already registered on AVS');
|
|
65
|
+
}
|
|
66
|
+
const existingMetadata = await contract.getMetadataForOperator(addr);
|
|
67
|
+
const metadata = { addr, url: reclaimRpcUrl };
|
|
68
|
+
if (existingMetadata.addr === metadata.addr
|
|
69
|
+
&& existingMetadata.url === metadata.url) {
|
|
70
|
+
logger.info('operator metadata already up to date');
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
await contract.updateOperatorMetadata(metadata);
|
|
74
|
+
logger.info({ metadata }, 'operator metadata updated successfully');
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZzL3V0aWxzL3JlZ2lzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNkJBLDRDQXVGQztBQXBIRCxtQ0FBK0I7QUFDL0IsMkNBQXNFO0FBQ3RFLHVEQUFzRDtBQUN0RCxxQ0FBNEM7QUFzQjVDOzs7R0FHRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxFQUN0QyxNQUFNLEdBQUcsY0FBTSxFQUNmLE9BQU8sR0FBRywwQkFBaUIsRUFDM0IsTUFBTSxHQUFHLElBQUEsd0JBQVksRUFBQyxPQUFPLENBQUMsQ0FBQyxNQUFPLEVBQ3RDLGFBQWEsR0FBRywyQkFBa0IsS0FDakIsRUFBRTtJQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUE7SUFDdkMsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsaUJBQWlCO1NBQ25ELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNqQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWTtTQUN6QyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDakIsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVE7U0FDakMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGdCQUFnQjtTQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFBO0lBQ2pDLElBQUksQ0FBQztRQUNKLE1BQU0sR0FBRyxHQUFHLE1BQU0saUJBQWlCO2FBQ2pDLGtCQUFrQixDQUFDO1lBQ25CLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsa0JBQWtCLEVBQ2pCLDRDQUE0QztZQUM3Qyx3QkFBd0IsRUFBRSxDQUFDO1NBQzNCLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFD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
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ethers, type Wallet } from 'ethers';
|
|
2
|
+
import type { IReclaimServiceManager, NewTaskCreatedEventObject } from 'src/avs/contracts/ReclaimServiceManager';
|
|
3
|
+
type CreateClaimWithoutOwner = Omit<IReclaimServiceManager.ClaimRequestStruct, 'owner'>;
|
|
4
|
+
type CreateNewClaimRequestOnChainOpts = {
|
|
5
|
+
request: CreateClaimWithoutOwner;
|
|
6
|
+
payer: Wallet;
|
|
7
|
+
chainId?: string;
|
|
8
|
+
} & ({
|
|
9
|
+
owner: Wallet;
|
|
10
|
+
} | {
|
|
11
|
+
/**
|
|
12
|
+
* Address of the owner of the claim
|
|
13
|
+
*/
|
|
14
|
+
owner: string;
|
|
15
|
+
requestSignature?: string | Uint8Array;
|
|
16
|
+
});
|
|
17
|
+
export declare function createNewClaimRequestOnChain({ request, payer, chainId, ...rest }: CreateNewClaimRequestOnChainOpts): Promise<{
|
|
18
|
+
task: NewTaskCreatedEventObject;
|
|
19
|
+
tx: ethers.ContractReceipt;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function signClaimRequest(request: IReclaimServiceManager.ClaimRequestStruct, owner: Wallet, chainId?: string): Promise<Uint8Array>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createNewClaimRequestOnChain = createNewClaimRequestOnChain;
|
|
4
|
+
exports.signClaimRequest = signClaimRequest;
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const contracts_1 = require("src/avs/utils/contracts");
|
|
7
|
+
async function createNewClaimRequestOnChain({ request, payer, chainId, ...rest }) {
|
|
8
|
+
const contracts = (0, contracts_1.getContracts)(chainId);
|
|
9
|
+
const contract = contracts.contract.connect(payer);
|
|
10
|
+
const ownerAddress = typeof rest.owner === 'string'
|
|
11
|
+
? rest.owner
|
|
12
|
+
: rest.owner.address;
|
|
13
|
+
const fullRequest = {
|
|
14
|
+
...request,
|
|
15
|
+
owner: ownerAddress
|
|
16
|
+
};
|
|
17
|
+
const signature = await getSignature();
|
|
18
|
+
const task = await contract.createNewTask(fullRequest, signature || '0x00');
|
|
19
|
+
const rslt = await task.wait();
|
|
20
|
+
const events = rslt.events;
|
|
21
|
+
// check task created event was emitted
|
|
22
|
+
const ev = events === null || events === void 0 ? void 0 : events[0];
|
|
23
|
+
const arg = ev === null || ev === void 0 ? void 0 : ev.args;
|
|
24
|
+
return { task: arg, tx: rslt };
|
|
25
|
+
function getSignature() {
|
|
26
|
+
if (ownerAddress.toLowerCase() === payer.address.toLowerCase()) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if ('requestSignature' in rest) {
|
|
30
|
+
return rest.requestSignature;
|
|
31
|
+
}
|
|
32
|
+
if (typeof rest.owner !== 'object') {
|
|
33
|
+
throw new Error('Owner wallet must be provided or'
|
|
34
|
+
+ ' requestSignature must be provided');
|
|
35
|
+
}
|
|
36
|
+
return signClaimRequest(fullRequest, rest.owner, chainId);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async function signClaimRequest(request, owner, chainId) {
|
|
40
|
+
const contract = (0, contracts_1.getContracts)(chainId).contract;
|
|
41
|
+
const encoded = await contract.encodeClaimRequest(request);
|
|
42
|
+
const strSig = await owner.signMessage(ethers_1.ethers.utils.arrayify(encoded));
|
|
43
|
+
return ethers_1.ethers.utils.arrayify(strSig);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZzL3V0aWxzL3Rhc2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0JBLG9FQTJDQztBQUVELDRDQVNDO0FBMUVELG1DQUE0QztBQUU1Qyx1REFBc0Q7QUFrQi9DLEtBQUssVUFBVSw0QkFBNEIsQ0FBQyxFQUNsRCxPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxHQUFHLElBQUksRUFDMkI7SUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRO1FBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSztRQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQTtJQUNyQixNQUFNLFdBQVcsR0FBOEM7UUFDOUQsR0FBRyxPQUFPO1FBQ1YsS0FBSyxFQUFFLFlBQVk7S0FDbkIsQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUE7SUFDdEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxTQUFTLElBQUksTUFBTSxDQUFDLENBQUE7SUFDM0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtJQUMxQix1Q0FBdUM7SUFDdkMsTUFBTSxFQUFFLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3RCLE1BQU0sR0FBRyxHQUFHLEVBQUUsYUFBRixFQUFFLHVCQUFGLEVBQUUsQ0FBRSxJQUE0QyxDQUFBO0lBRTVELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUU5QixTQUFTLFlBQVk7UUFDcEIsSUFBRyxZQUFZLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQy9ELE9BQU07UUFDUCxDQUFDO1FBRUQsSUFBRyxrQkFBa0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTtRQUM3QixDQUFDO1FBRUQsSUFBRyxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDZCxrQ0FBa0M7a0JBQ2hDLG9DQUFvQyxDQUN0QyxDQUFBO1FBQ0YsQ0FBQztRQUVELE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDMUQsQ0FBQztBQUNGLENBQUM7QUFFTSxLQUFLLFVBQVUsZ0JBQWdCLENBQ3JDLE9BQWtELEVBQ2xELEtBQWEsRUFDYixPQUFnQjtJQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFBLHdCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFBO0lBQy9DLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzFELE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQ3RFLE9BQU8sZUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDckMsQ0FBQyJ9
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CreateClaimOnAttestorOpts, ProviderName } from 'src/types';
|
|
2
|
+
/**
|
|
3
|
+
* Create a claim on the attestor
|
|
4
|
+
*/
|
|
5
|
+
export declare function createClaimOnAttestor<N extends ProviderName>({ logger: _logger, ...opts }: CreateClaimOnAttestorOpts<N>): Promise<import("src/proto/api").ClaimTunnelResponse>;
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createClaimOnAttestor = createClaimOnAttestor;
|
|
4
|
+
const tls_1 = require("@reclaimprotocol/tls");
|
|
5
|
+
const utils_1 = require("ethers/lib/utils");
|
|
6
|
+
const make_rpc_tls_tunnel_1 = require("src/client/tunnels/make-rpc-tls-tunnel");
|
|
7
|
+
const attestor_pool_1 = require("src/client/utils/attestor-pool");
|
|
8
|
+
const config_1 = require("src/config");
|
|
9
|
+
const api_1 = require("src/proto/api");
|
|
10
|
+
const providers_1 = require("src/providers");
|
|
11
|
+
const utils_2 = require("src/utils");
|
|
12
|
+
const retries_1 = require("src/utils/retries");
|
|
13
|
+
const signatures_1 = require("src/utils/signatures");
|
|
14
|
+
const tls_2 = require("src/utils/tls");
|
|
15
|
+
/**
|
|
16
|
+
* Create a claim on the attestor
|
|
17
|
+
*/
|
|
18
|
+
function createClaimOnAttestor({ logger: _logger, ...opts }) {
|
|
19
|
+
const logger = _logger
|
|
20
|
+
// if the client has already been initialised
|
|
21
|
+
// and no logger is provided, use the client's logger
|
|
22
|
+
// otherwise default to the global logger
|
|
23
|
+
|| ('logger' in opts.client ? opts.client.logger : utils_2.logger);
|
|
24
|
+
return (0, retries_1.executeWithRetries)(attempt => (_createClaimOnAttestor({
|
|
25
|
+
...opts,
|
|
26
|
+
logger: attempt
|
|
27
|
+
? logger.child({ attempt })
|
|
28
|
+
: logger
|
|
29
|
+
})), { logger, shouldRetry });
|
|
30
|
+
}
|
|
31
|
+
function shouldRetry(err) {
|
|
32
|
+
if (err instanceof TypeError) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return err instanceof utils_2.AttestorError
|
|
36
|
+
&& err.code !== 'ERROR_INVALID_CLAIM'
|
|
37
|
+
&& err.code !== 'ERROR_BAD_REQUEST';
|
|
38
|
+
}
|
|
39
|
+
async function _createClaimOnAttestor({ name, params, secretParams, context, onStep, ownerPrivateKey, client: clientInit, logger = utils_2.logger, timestampS, updateProviderParams, ...zkOpts }) {
|
|
40
|
+
const provider = providers_1.providers[name];
|
|
41
|
+
const hostPort = (0, utils_2.getProviderValue)(params, provider.hostPort);
|
|
42
|
+
const geoLocation = (0, utils_2.getProviderValue)(params, provider.geoLocation);
|
|
43
|
+
const providerTlsOpts = (0, utils_2.getProviderValue)(params, provider.additionalClientOptions);
|
|
44
|
+
const tlsOpts = {
|
|
45
|
+
...(0, tls_2.getDefaultTlsOptions)(),
|
|
46
|
+
...providerTlsOpts,
|
|
47
|
+
};
|
|
48
|
+
let redactionMode = (0, utils_2.getProviderValue)(params, provider.writeRedactionMode);
|
|
49
|
+
const [host, port] = hostPort.split(':');
|
|
50
|
+
const resParser = (0, utils_2.makeHttpResponseParser)();
|
|
51
|
+
let client;
|
|
52
|
+
let lastMsgRevealed = false;
|
|
53
|
+
const revealMap = new Map();
|
|
54
|
+
onStep === null || onStep === void 0 ? void 0 : onStep({ name: 'connecting' });
|
|
55
|
+
let endedHttpRequest;
|
|
56
|
+
const createTunnelReq = {
|
|
57
|
+
host,
|
|
58
|
+
port: port ? +port : config_1.DEFAULT_HTTPS_PORT,
|
|
59
|
+
geoLocation,
|
|
60
|
+
id: (0, utils_2.generateTunnelId)()
|
|
61
|
+
};
|
|
62
|
+
const tunnel = await (0, make_rpc_tls_tunnel_1.makeRpcTlsTunnel)({
|
|
63
|
+
tlsOpts,
|
|
64
|
+
connect: (initMessages) => {
|
|
65
|
+
let created = false;
|
|
66
|
+
if ('metadata' in clientInit) {
|
|
67
|
+
client = clientInit;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
client = (0, attestor_pool_1.getAttestorClientFromPool)(clientInit.url, () => {
|
|
71
|
+
created = true;
|
|
72
|
+
return { initMessages, logger };
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (!created) {
|
|
76
|
+
client
|
|
77
|
+
.waitForInit()
|
|
78
|
+
.then(() => client.sendMessage(...initMessages))
|
|
79
|
+
.catch(err => {
|
|
80
|
+
logger.error({ err }, 'error in sending init msgs');
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return client;
|
|
84
|
+
},
|
|
85
|
+
logger,
|
|
86
|
+
request: createTunnelReq,
|
|
87
|
+
onMessage(data) {
|
|
88
|
+
logger.debug({ bytes: data.length }, 'recv data from server');
|
|
89
|
+
resParser.onChunk(data);
|
|
90
|
+
if (resParser.res.complete) {
|
|
91
|
+
logger === null || logger === void 0 ? void 0 : logger.debug('got complete HTTP response from server');
|
|
92
|
+
// wait a little bit to make sure the client has
|
|
93
|
+
// finished writing the response
|
|
94
|
+
setTimeout(() => {
|
|
95
|
+
endedHttpRequest === null || endedHttpRequest === void 0 ? void 0 : endedHttpRequest();
|
|
96
|
+
}, 100);
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
onClose(err) {
|
|
100
|
+
const level = err ? 'error' : 'debug';
|
|
101
|
+
logger === null || logger === void 0 ? void 0 : logger[level]({ err }, 'tls session ended');
|
|
102
|
+
endedHttpRequest === null || endedHttpRequest === void 0 ? void 0 : endedHttpRequest(err);
|
|
103
|
+
try {
|
|
104
|
+
resParser.streamEnded();
|
|
105
|
+
}
|
|
106
|
+
catch (_a) { }
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
const { version: tlsVersion, cipherSuite } = tunnel.tls.getMetadata();
|
|
110
|
+
if (tlsVersion === 'TLS1_2' && redactionMode !== 'zk') {
|
|
111
|
+
redactionMode = 'zk';
|
|
112
|
+
logger.info('TLS1.2 detected, defaulting to zk redaction mode');
|
|
113
|
+
}
|
|
114
|
+
const { redactions, data: requestStr } = provider.createRequest(
|
|
115
|
+
// @ts-ignore
|
|
116
|
+
secretParams, params);
|
|
117
|
+
const requestData = typeof requestStr === 'string'
|
|
118
|
+
? (0, tls_1.strToUint8Array)(requestStr)
|
|
119
|
+
: requestStr;
|
|
120
|
+
logger.debug({ redactions: redactions.length }, 'generated request');
|
|
121
|
+
const waitForAllData = new Promise((resolve, reject) => {
|
|
122
|
+
endedHttpRequest = err => (err ? reject(err) : resolve());
|
|
123
|
+
});
|
|
124
|
+
onStep === null || onStep === void 0 ? void 0 : onStep({ name: 'sending-request-data' });
|
|
125
|
+
try {
|
|
126
|
+
if (redactionMode === 'zk') {
|
|
127
|
+
await writeRedactedZk();
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
await writeRedactedWithKeyUpdate();
|
|
131
|
+
}
|
|
132
|
+
logger.info('wrote request to server');
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
// wait for complete stream end when the session is closed
|
|
136
|
+
// mid-write, as this means the server could not process
|
|
137
|
+
// our request due to some error. Hope the stream end
|
|
138
|
+
// error will be more descriptive
|
|
139
|
+
logger.error({ err }, 'session errored during write, waiting for stream end');
|
|
140
|
+
}
|
|
141
|
+
onStep === null || onStep === void 0 ? void 0 : onStep({ name: 'waiting-for-response' });
|
|
142
|
+
await waitForAllData;
|
|
143
|
+
await tunnel.close();
|
|
144
|
+
logger.info('got full response from server');
|
|
145
|
+
// update the response selections
|
|
146
|
+
if (updateProviderParams) {
|
|
147
|
+
const { params: updatedParms, secretParams: updatedSecretParms } = await updateProviderParams(tunnel.transcript, tlsVersion !== null && tlsVersion !== void 0 ? tlsVersion : 'TLS1_2');
|
|
148
|
+
params = { ...params, ...updatedParms };
|
|
149
|
+
secretParams = { ...secretParams, ...updatedSecretParms };
|
|
150
|
+
}
|
|
151
|
+
const signatureAlg = signatures_1.SIGNATURES[client.metadata.signatureType];
|
|
152
|
+
let serverIV;
|
|
153
|
+
let clientIV;
|
|
154
|
+
const serverBlock = getLastBlock('server');
|
|
155
|
+
if (serverBlock && serverBlock.message.type === 'ciphertext') {
|
|
156
|
+
serverIV = serverBlock.message.fixedIv;
|
|
157
|
+
}
|
|
158
|
+
const clientBlock = getLastBlock('client');
|
|
159
|
+
if (clientBlock && clientBlock.message.type === 'ciphertext') {
|
|
160
|
+
clientIV = clientBlock.message.fixedIv;
|
|
161
|
+
}
|
|
162
|
+
// now that we have the full transcript, we need
|
|
163
|
+
// to generate the ZK proofs & send them to the attestor
|
|
164
|
+
// to verify & sign our claim
|
|
165
|
+
const claimTunnelReq = api_1.ClaimTunnelRequest.create({
|
|
166
|
+
request: createTunnelReq,
|
|
167
|
+
data: {
|
|
168
|
+
provider: name,
|
|
169
|
+
parameters: (0, utils_2.canonicalStringify)(params),
|
|
170
|
+
context: (0, utils_2.canonicalStringify)(context),
|
|
171
|
+
timestampS: timestampS !== null && timestampS !== void 0 ? timestampS : (0, utils_2.unixTimestampSeconds)(),
|
|
172
|
+
owner: getAddress(),
|
|
173
|
+
},
|
|
174
|
+
transcript: await generateTranscript(),
|
|
175
|
+
zkEngine: zkOpts.zkEngine === 'gnark' ? api_1.ZKProofEngine.ZK_ENGINE_GNARK : api_1.ZKProofEngine.ZK_ENGINE_SNARKJS,
|
|
176
|
+
fixedServerIV: serverIV,
|
|
177
|
+
fixedClientIV: clientIV,
|
|
178
|
+
});
|
|
179
|
+
onStep === null || onStep === void 0 ? void 0 : onStep({ name: 'waiting-for-verification' });
|
|
180
|
+
const claimTunnelBytes = api_1.ClaimTunnelRequest
|
|
181
|
+
.encode(claimTunnelReq).finish();
|
|
182
|
+
const requestSignature = await signatureAlg
|
|
183
|
+
.sign(claimTunnelBytes, ownerPrivateKey);
|
|
184
|
+
claimTunnelReq.signatures = { requestSignature };
|
|
185
|
+
const result = await client.rpc('claimTunnel', claimTunnelReq);
|
|
186
|
+
logger.info({ success: !!result.claim }, 'recv claim response');
|
|
187
|
+
return result;
|
|
188
|
+
async function writeRedactedWithKeyUpdate() {
|
|
189
|
+
var _a;
|
|
190
|
+
let currentIndex = 0;
|
|
191
|
+
for (const section of redactions) {
|
|
192
|
+
const block = requestData
|
|
193
|
+
.slice(currentIndex, section.fromIndex);
|
|
194
|
+
if (block.length) {
|
|
195
|
+
await writeWithReveal(block, true);
|
|
196
|
+
}
|
|
197
|
+
const redacted = requestData
|
|
198
|
+
.slice(section.fromIndex, section.toIndex);
|
|
199
|
+
await writeWithReveal(redacted, false);
|
|
200
|
+
currentIndex = section.toIndex;
|
|
201
|
+
}
|
|
202
|
+
// write if redactions were there
|
|
203
|
+
const lastBlockStart = ((_a = redactions === null || redactions === void 0 ? void 0 : redactions[redactions.length - 1]) === null || _a === void 0 ? void 0 : _a.toIndex) || 0;
|
|
204
|
+
const block = requestData.slice(lastBlockStart);
|
|
205
|
+
if (block.length) {
|
|
206
|
+
await writeWithReveal(block, true);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
async function writeRedactedZk() {
|
|
210
|
+
await tunnel.tls.write(requestData);
|
|
211
|
+
setRevealOfLastSentBlock({
|
|
212
|
+
type: 'zk',
|
|
213
|
+
redactedPlaintext: (0, utils_2.redactSlices)(requestData, redactions)
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Write data to the tunnel, with the option to mark the packet
|
|
218
|
+
* as revealable to the attestor or not
|
|
219
|
+
*/
|
|
220
|
+
async function writeWithReveal(data, reveal) {
|
|
221
|
+
// if the reveal state has changed, update the traffic keys
|
|
222
|
+
// to not accidentally reveal a packet not meant to be revealed
|
|
223
|
+
// and vice versa
|
|
224
|
+
if (reveal !== lastMsgRevealed) {
|
|
225
|
+
await tunnel.tls.updateTrafficKeys();
|
|
226
|
+
}
|
|
227
|
+
await tunnel.write(data);
|
|
228
|
+
// now we mark the packet to be revealed to the attestor
|
|
229
|
+
setRevealOfLastSentBlock(reveal ? { type: 'complete' } : undefined);
|
|
230
|
+
lastMsgRevealed = reveal;
|
|
231
|
+
}
|
|
232
|
+
function setRevealOfLastSentBlock(reveal) {
|
|
233
|
+
const lastBlock = getLastBlock('client');
|
|
234
|
+
if (!lastBlock) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
setRevealOfMessage(lastBlock.message, reveal);
|
|
238
|
+
}
|
|
239
|
+
function getLastBlock(sender) {
|
|
240
|
+
// set the correct index for the server blocks
|
|
241
|
+
for (let i = tunnel.transcript.length - 1; i >= 0; i--) {
|
|
242
|
+
const block = tunnel.transcript[i];
|
|
243
|
+
if (block.sender === sender) {
|
|
244
|
+
return block;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Generate transcript with reveal data for the attestor to verify
|
|
250
|
+
*/
|
|
251
|
+
async function generateTranscript() {
|
|
252
|
+
addServerSideReveals();
|
|
253
|
+
const startMs = Date.now();
|
|
254
|
+
const revealedMessages = await (0, utils_2.preparePacketsForReveal)(tunnel.transcript, revealMap, {
|
|
255
|
+
logger,
|
|
256
|
+
cipherSuite: cipherSuite,
|
|
257
|
+
onZkProgress(done, total) {
|
|
258
|
+
const timeSinceStartMs = Date.now() - startMs;
|
|
259
|
+
const timePerBlockMs = timeSinceStartMs / done;
|
|
260
|
+
const timeLeftMs = timePerBlockMs * (total - done);
|
|
261
|
+
onStep === null || onStep === void 0 ? void 0 : onStep({
|
|
262
|
+
name: 'generating-zk-proofs',
|
|
263
|
+
proofsDone: done,
|
|
264
|
+
proofsTotal: total,
|
|
265
|
+
approxTimeLeftS: Math.round(timeLeftMs / 1000),
|
|
266
|
+
});
|
|
267
|
+
},
|
|
268
|
+
...zkOpts,
|
|
269
|
+
});
|
|
270
|
+
return revealedMessages;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Add reveals for server side blocks, using
|
|
274
|
+
* the provider's redaction function if available.
|
|
275
|
+
* Otherwise, opts to reveal all server side blocks.
|
|
276
|
+
*/
|
|
277
|
+
function addServerSideReveals() {
|
|
278
|
+
const allPackets = tunnel.transcript;
|
|
279
|
+
let serverPacketsToReveal = 'all';
|
|
280
|
+
const packets = [];
|
|
281
|
+
const serverBlocks = [];
|
|
282
|
+
for (const b of allPackets) {
|
|
283
|
+
if (b.message.type !== 'ciphertext'
|
|
284
|
+
|| !(0, utils_2.isApplicationData)(b.message, tlsVersion)) {
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
const plaintext = tlsVersion === 'TLS1_3'
|
|
288
|
+
? b.message.plaintext.slice(0, -1)
|
|
289
|
+
: b.message.plaintext;
|
|
290
|
+
packets.push({
|
|
291
|
+
message: plaintext,
|
|
292
|
+
sender: b.sender
|
|
293
|
+
});
|
|
294
|
+
if (b.sender === 'server') {
|
|
295
|
+
serverBlocks.push({
|
|
296
|
+
plaintext: plaintext,
|
|
297
|
+
message: b.message
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
provider.assertValidProviderReceipt(packets, {
|
|
302
|
+
...params,
|
|
303
|
+
secretParams: secretParams //provide secret params for proper request body validation
|
|
304
|
+
});
|
|
305
|
+
if (provider.getResponseRedactions) {
|
|
306
|
+
serverPacketsToReveal = (0, utils_2.getBlocksToReveal)(serverBlocks, total => provider.getResponseRedactions(total, params));
|
|
307
|
+
}
|
|
308
|
+
if (serverPacketsToReveal === 'all') {
|
|
309
|
+
// reveal all server side blocks
|
|
310
|
+
for (const { message, sender } of allPackets) {
|
|
311
|
+
if (sender === 'server') {
|
|
312
|
+
setRevealOfMessage(message, { type: 'complete' });
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
for (const { block, redactedPlaintext } of serverPacketsToReveal) {
|
|
318
|
+
setRevealOfMessage(block.message, {
|
|
319
|
+
type: 'zk',
|
|
320
|
+
redactedPlaintext
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
if (Array.isArray(serverPacketsToReveal)) {
|
|
324
|
+
const msgs = serverPacketsToReveal.map(m => m.redactedPlaintext);
|
|
325
|
+
const serverTranscript = utils_1.base64.encode((0, tls_1.concatenateUint8Arrays)(msgs));
|
|
326
|
+
logger.debug({ redactedResponse: serverTranscript });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// reveal all handshake blocks
|
|
330
|
+
// so the attestor can verify there was no
|
|
331
|
+
// hanky-panky
|
|
332
|
+
for (const p of allPackets) {
|
|
333
|
+
if (p.message.type !== 'ciphertext') {
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
// break the moment we hit the first
|
|
337
|
+
// application data packet
|
|
338
|
+
if ((0, utils_2.isApplicationData)(p.message, tlsVersion)) {
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
setRevealOfMessage(p.message, { type: 'complete' });
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
function setRevealOfMessage(message, reveal) {
|
|
345
|
+
if (reveal) {
|
|
346
|
+
revealMap.set(message, reveal);
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
revealMap.delete(message);
|
|
350
|
+
}
|
|
351
|
+
function getAddress() {
|
|
352
|
+
const { getAddress, getPublicKey, } = signatureAlg;
|
|
353
|
+
const pubKey = getPublicKey(ownerPrivateKey);
|
|
354
|
+
return getAddress(pubKey);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNsYWltLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jcmVhdGUtY2xhaW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQ0Esc0RBbUJDO0FBcERELDhDQUFnRztBQUNoRyw0Q0FBeUM7QUFDekMsZ0ZBQXlFO0FBQ3pFLGtFQUEwRTtBQUMxRSx1Q0FBK0M7QUFDL0MsdUNBQWlFO0FBQ2pFLDZDQUF5QztBQUV6QyxxQ0FZa0I7QUFDbEIsK0NBQXNEO0FBQ3RELHFEQUFpRDtBQUNqRCx1Q0FBb0Q7QUFPcEQ7O0dBRUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FDcEMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFnQztJQUUxRCxNQUFNLE1BQU0sR0FBRyxPQUFPO1FBQ3JCLDZDQUE2QztRQUM3QyxxREFBcUQ7UUFDckQseUNBQXlDO1dBQ3RDLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFNLENBQUMsQ0FBQTtJQUMzRCxPQUFPLElBQUEsNEJBQWtCLEVBQ3hCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FDVixzQkFBc0IsQ0FBSTtRQUN6QixHQUFHLElBQUk7UUFDUCxNQUFNLEVBQUUsT0FBTztZQUNkLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLE1BQU07S0FDVCxDQUFDLENBQ0YsRUFDRCxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FDdkIsQ0FBQTtBQUNGLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxHQUFVO0lBQzlCLElBQUcsR0FBRyxZQUFZLFNBQVMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sS0FBSyxDQUFBO0lBQ2IsQ0FBQztJQUVELE9BQU8sR0FBRyxZQUFZLHFCQUFhO1dBQy9CLEdB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
|
|
@@ -0,0 +1,20 @@
|
|
|
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("./create-claim"), exports);
|
|
18
|
+
__exportStar(require("./utils/attestor-pool"), exports);
|
|
19
|
+
__exportStar(require("./utils/client-socket"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBOEI7QUFDOUIsd0RBQXFDO0FBQ3JDLHdEQUFxQyJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CreateTunnelRequest } from 'src/proto/api';
|
|
2
|
+
import { IAttestorClient, MakeTunnelFn } from 'src/types';
|
|
3
|
+
export type TCPTunnelCreateOpts = {
|
|
4
|
+
/**
|
|
5
|
+
* The tunnel ID to communicate with.
|
|
6
|
+
*/
|
|
7
|
+
tunnelId: CreateTunnelRequest['id'];
|
|
8
|
+
client: IAttestorClient;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Makes a tunnel communication wrapper for a TCP tunnel.
|
|
12
|
+
*
|
|
13
|
+
* It listens for messages and disconnect events from the server,
|
|
14
|
+
* and appropriately calls the `onMessage` and `onClose` callbacks.
|
|
15
|
+
*/
|
|
16
|
+
export declare const makeRpcTcpTunnel: MakeTunnelFn<TCPTunnelCreateOpts>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeRpcTcpTunnel = void 0;
|
|
4
|
+
const utils_1 = require("src/utils");
|
|
5
|
+
/**
|
|
6
|
+
* Makes a tunnel communication wrapper for a TCP tunnel.
|
|
7
|
+
*
|
|
8
|
+
* It listens for messages and disconnect events from the server,
|
|
9
|
+
* and appropriately calls the `onMessage` and `onClose` callbacks.
|
|
10
|
+
*/
|
|
11
|
+
const makeRpcTcpTunnel = ({ tunnelId, client, onClose, onMessage, }) => {
|
|
12
|
+
let closed = false;
|
|
13
|
+
client.addEventListener('tunnel-message', onMessageListener);
|
|
14
|
+
client.addEventListener('tunnel-disconnect-event', onDisconnectListener);
|
|
15
|
+
client.addEventListener('connection-terminated', onConnectionTerminatedListener);
|
|
16
|
+
return {
|
|
17
|
+
write(message) {
|
|
18
|
+
return client.sendMessage({
|
|
19
|
+
tunnelMessage: { tunnelId, message }
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
async close(err) {
|
|
23
|
+
if (closed) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
onErrorRecv(err);
|
|
27
|
+
await client.rpc('disconnectTunnel', { id: tunnelId });
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
function onMessageListener({ data }) {
|
|
31
|
+
if (data.tunnelId !== tunnelId) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
onMessage === null || onMessage === void 0 ? void 0 : onMessage(data.message);
|
|
35
|
+
}
|
|
36
|
+
function onDisconnectListener({ data }) {
|
|
37
|
+
var _a;
|
|
38
|
+
if (data.tunnelId !== tunnelId) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
onErrorRecv(((_a = data.error) === null || _a === void 0 ? void 0 : _a.code)
|
|
42
|
+
? utils_1.AttestorError.fromProto(data.error)
|
|
43
|
+
: undefined);
|
|
44
|
+
}
|
|
45
|
+
function onConnectionTerminatedListener({ data }) {
|
|
46
|
+
onErrorRecv(data);
|
|
47
|
+
}
|
|
48
|
+
function onErrorRecv(err) {
|
|
49
|
+
var _a;
|
|
50
|
+
(_a = client.logger) === null || _a === void 0 ? void 0 : _a.debug({ tunnelId, err }, 'TCP tunnel closed');
|
|
51
|
+
client.removeEventListener('tunnel-message', onMessageListener);
|
|
52
|
+
client.removeEventListener('tunnel-disconnect-event', onDisconnectListener);
|
|
53
|
+
client.removeEventListener('connection-terminated', onConnectionTerminatedListener);
|
|
54
|
+
onClose === null || onClose === void 0 ? void 0 : onClose(err);
|
|
55
|
+
onClose = undefined;
|
|
56
|
+
closed = true;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
exports.makeRpcTcpTunnel = makeRpcTcpTunnel;
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1ycGMtdGNwLXR1bm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvdHVubmVscy9tYWtlLXJwYy10Y3AtdHVubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHFDQUF5QztBQVV6Qzs7Ozs7R0FLRztBQUNJLE1BQU0sZ0JBQWdCLEdBQXNDLENBQUMsRUFDbkUsUUFBUSxFQUNSLE1BQU0sRUFDTixPQUFPLEVBQ1AsU0FBUyxHQUNULEVBQUUsRUFBRTtJQUNKLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQTtJQUNsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUM1RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtJQUN4RSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsOEJBQThCLENBQUMsQ0FBQTtJQUVoRixPQUFPO1FBQ04sS0FBSyxDQUFDLE9BQU87WUFDWixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQ3pCLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7YUFDcEMsQ0FBQyxDQUFBO1FBQ0gsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRztZQUNkLElBQUcsTUFBTSxFQUFFLENBQUM7Z0JBQ1gsT0FBTTtZQUNQLENBQUM7WUFFRCxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDaEIsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDdkQsQ0FBQztLQUNELENBQUE7SUFFRCxTQUFTLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUE4QjtRQUM5RCxJQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsT0FBTTtRQUNQLENBQUM7UUFFRCxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFRCxTQUFTLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxFQUF1Qzs7UUFDMUUsSUFBRyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE9BQU07UUFDUCxDQUFDO1FBRUQsV0FBVyxDQUNWLENBQUEsTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxJQUFJO1lBQ2YsQ0FBQyxDQUFDLHFCQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDckMsQ0FBQyxDQUFDLFNBQVMsQ0FDWixDQUFBO0lBQ0YsQ0FBQztJQUVELFNBQVMsOEJBQThCLENBQUMsRUFBRSxJQUFJLEVBQXFDO1FBQ2xGLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNsQixDQUFDO0lBRUQsU0FBUyxXQUFXLENBQUMsR0FBc0I7O1FBQzFDLE1BQUEsTUFBTSxDQUFDLE1BQU0sMENBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUE7UUFFNUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDL0QsTUFBTSxDQUFDLG1CQUFtQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLENBQUE7UUFDM0UsTUFBTSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixFQUFFLDhCQUE4QixDQUFDLENBQUE7UUFDbkYsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ2QsT0FBTyxHQUFHLFNBQVMsQ0FBQTtRQUNuQixNQUFNLEdBQUcsSUFBSSxDQUFBO0lBQ2QsQ0FBQztBQUNGLENBQUMsQ0FBQTtBQTdEWSxRQUFBLGdCQUFnQixvQkE2RDVCIn0=
|