@reclaimprotocol/attestor-core 5.0.1-beta.21 → 5.0.1-beta.22
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 +9 -9
- package/lib/avs/abis/avsDirectoryABI.js +340 -0
- package/lib/avs/abis/delegationABI.js +1 -0
- package/lib/avs/abis/registryABI.js +725 -0
- package/lib/avs/client/create-claim-on-avs.js +140 -0
- package/lib/avs/config.js +20 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1166 -0
- package/lib/avs/contracts/factories/index.js +4 -0
- package/lib/avs/contracts/index.js +2 -0
- package/lib/avs/utils/contracts.js +33 -0
- package/lib/avs/utils/register.js +79 -0
- package/lib/avs/utils/tasks.js +41 -0
- package/lib/client/create-claim.js +432 -0
- package/lib/client/index.js +3 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.js +51 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.js +131 -0
- package/lib/client/utils/attestor-pool.js +25 -0
- package/lib/client/utils/client-socket.js +97 -0
- package/lib/client/utils/message-handler.js +87 -0
- package/lib/config/index.js +44 -0
- package/lib/external-rpc/benchmark.js +69 -0
- package/lib/external-rpc/event-bus.js +14 -0
- package/lib/external-rpc/handle-incoming-msg.js +232 -0
- package/lib/external-rpc/index.js +3 -10399
- package/lib/external-rpc/jsc-polyfills/1.js +82 -0
- package/lib/external-rpc/jsc-polyfills/2.js +20 -0
- package/lib/external-rpc/jsc-polyfills/event.js +14 -0
- package/lib/external-rpc/jsc-polyfills/index.js +2 -0
- package/lib/external-rpc/jsc-polyfills/ws.js +81 -0
- package/lib/external-rpc/setup-browser.js +33 -0
- package/lib/external-rpc/setup-jsc.js +22 -0
- package/lib/external-rpc/types.js +1 -0
- package/lib/external-rpc/utils.js +100 -0
- package/lib/external-rpc/zk.js +63 -0
- package/lib/index.js +9 -8326
- package/lib/mechain/abis/governanceABI.js +458 -0
- package/lib/mechain/abis/taskABI.js +509 -0
- package/lib/mechain/client/create-claim-on-mechain.js +28 -0
- package/lib/mechain/client/index.js +1 -0
- package/lib/mechain/constants/index.js +3 -0
- package/lib/mechain/index.js +2 -0
- package/lib/proto/api.js +4363 -0
- package/lib/proto/tee-bundle.js +1316 -0
- package/lib/providers/http/index.js +653 -0
- package/lib/providers/http/patch-parse5-tree.js +32 -0
- package/lib/providers/http/utils.js +324 -0
- package/lib/providers/index.js +4 -0
- package/lib/server/create-server.js +103 -0
- package/lib/server/handlers/claimTeeBundle.js +252 -0
- package/lib/server/handlers/claimTunnel.js +73 -0
- package/lib/server/handlers/completeClaimOnChain.js +24 -0
- package/lib/server/handlers/createClaimOnChain.js +26 -0
- package/lib/server/handlers/createTaskOnMechain.js +47 -0
- package/lib/server/handlers/createTunnel.js +93 -0
- package/lib/server/handlers/disconnectTunnel.js +5 -0
- package/lib/server/handlers/fetchCertificateBytes.js +41 -0
- package/lib/server/handlers/index.js +22 -0
- package/lib/server/handlers/init.js +32 -0
- package/lib/server/handlers/toprf.js +16 -0
- package/lib/server/index.js +4 -0
- package/lib/server/socket.js +109 -0
- package/lib/server/tunnels/make-tcp-tunnel.js +177 -0
- package/lib/server/utils/apm.js +36 -0
- package/lib/server/utils/assert-valid-claim-request.js +325 -0
- package/lib/server/utils/config-env.js +4 -0
- package/lib/server/utils/dns.js +18 -0
- package/lib/server/utils/gcp-attestation.js +289 -0
- package/lib/server/utils/generics.d.ts +1 -1
- package/lib/server/utils/generics.js +51 -0
- package/lib/server/utils/iso.js +256 -0
- package/lib/server/utils/keep-alive.js +38 -0
- package/lib/server/utils/nitro-attestation.js +324 -0
- package/lib/server/utils/oprf-raw.js +54 -0
- package/lib/server/utils/process-handshake.js +215 -0
- package/lib/server/utils/proxy-session.js +6 -0
- package/lib/server/utils/tee-oprf-mpc-verification.js +90 -0
- package/lib/server/utils/tee-oprf-verification.js +174 -0
- package/lib/server/utils/tee-transcript-reconstruction.js +187 -0
- package/lib/server/utils/tee-verification.js +421 -0
- package/lib/server/utils/validation.js +38 -0
- package/lib/types/bgp.js +1 -0
- package/lib/types/claims.js +1 -0
- package/lib/types/client.js +1 -0
- package/lib/types/general.js +1 -0
- package/lib/types/handlers.js +1 -0
- package/lib/types/index.js +10 -0
- package/lib/types/providers.d.ts +3 -2
- package/lib/types/providers.gen.js +10 -0
- package/lib/types/providers.js +1 -0
- package/lib/types/rpc.js +1 -0
- package/lib/types/signatures.d.ts +1 -2
- package/lib/types/signatures.js +1 -0
- package/lib/types/tunnel.js +1 -0
- package/lib/types/zk.js +1 -0
- package/lib/utils/auth.js +59 -0
- package/lib/utils/b64-json.js +17 -0
- package/lib/utils/bgp-listener.js +119 -0
- package/lib/utils/claims.js +98 -0
- package/lib/utils/env.js +15 -0
- package/lib/utils/error.js +50 -0
- package/lib/utils/generics.js +317 -0
- package/lib/utils/http-parser.js +246 -0
- package/lib/utils/index.js +13 -0
- package/lib/utils/logger.js +91 -0
- package/lib/utils/prepare-packets.js +71 -0
- package/lib/utils/redactions.js +177 -0
- package/lib/utils/retries.js +24 -0
- package/lib/utils/signatures/eth.js +32 -0
- package/lib/utils/signatures/index.js +7 -0
- package/lib/utils/socket-base.js +92 -0
- package/lib/utils/tls.js +58 -0
- package/lib/utils/ws.js +22 -0
- package/lib/utils/zk.js +585 -0
- package/package.json +5 -3
- package/lib/scripts/check-avs-registration.d.ts +0 -1
- package/lib/scripts/fallbacks/crypto.d.ts +0 -1
- package/lib/scripts/fallbacks/empty.d.ts +0 -3
- package/lib/scripts/fallbacks/re2.d.ts +0 -1
- package/lib/scripts/fallbacks/snarkjs.d.ts +0 -1
- package/lib/scripts/fallbacks/stwo.d.ts +0 -6
- package/lib/scripts/generate-provider-types.d.ts +0 -5
- package/lib/scripts/generate-receipt.d.ts +0 -9
- package/lib/scripts/jsc-cli-rpc.d.ts +0 -1
- package/lib/scripts/register-avs-operator.d.ts +0 -1
- package/lib/scripts/start-server.d.ts +0 -1
- package/lib/scripts/update-avs-metadata.d.ts +0 -1
- package/lib/scripts/utils.d.ts +0 -1
- package/lib/scripts/whitelist-operator.d.ts +0 -1
- /package/lib/{scripts/build-browser.d.ts → avs/contracts/ReclaimServiceManager.js} +0 -0
- /package/lib/{scripts/build-jsc.d.ts → avs/contracts/common.js} +0 -0
- /package/lib/{scripts/build-lib.d.ts → avs/types/index.js} +0 -0
- /package/lib/{scripts/generate-toprf-keys.d.ts → mechain/types/index.js} +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { wsMessageHandler } from "../client/utils/message-handler.js";
|
|
2
|
+
import { RPCMessages } from "../proto/api.js";
|
|
3
|
+
import { AttestorError, makeRpcEvent, packRpcMessages } from "./index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Common AttestorSocket class used on the client & server side as the
|
|
6
|
+
* base for their respective socket implementations.
|
|
7
|
+
*/
|
|
8
|
+
export class AttestorSocket {
|
|
9
|
+
eventTarget = new EventTarget();
|
|
10
|
+
socket;
|
|
11
|
+
logger;
|
|
12
|
+
metadata;
|
|
13
|
+
isInitialised = false;
|
|
14
|
+
constructor(socket, metadata, logger) {
|
|
15
|
+
this.socket = socket;
|
|
16
|
+
this.metadata = metadata;
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
// @ts-expect-error - WebSocket type differs between browser and Node.js
|
|
19
|
+
socket.addEventListener('error', (event) => {
|
|
20
|
+
const witErr = AttestorError.fromError(event.error || new Error(event.message), 'ERROR_NETWORK_ERROR');
|
|
21
|
+
this.dispatchRPCEvent('connection-terminated', witErr);
|
|
22
|
+
});
|
|
23
|
+
socket.addEventListener('close', () => (this.dispatchRPCEvent('connection-terminated', new AttestorError('ERROR_NO_ERROR', 'connection closed'))));
|
|
24
|
+
// @ts-expect-error - WebSocket type differs between browser and Node.js
|
|
25
|
+
socket.addEventListener('message', async (event) => {
|
|
26
|
+
try {
|
|
27
|
+
await wsMessageHandler.call(this, event.data);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
this.logger.error({ err }, 'error processing message');
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
get isOpen() {
|
|
35
|
+
return this.socket.readyState === this.socket.OPEN;
|
|
36
|
+
}
|
|
37
|
+
get isClosed() {
|
|
38
|
+
return this.socket.readyState === this.socket.CLOSED
|
|
39
|
+
|| this.socket.readyState === this.socket.CLOSING;
|
|
40
|
+
}
|
|
41
|
+
async sendMessage(...msgs) {
|
|
42
|
+
if (this.isClosed) {
|
|
43
|
+
throw new AttestorError('ERROR_NETWORK_ERROR', 'Connection closed, cannot send message');
|
|
44
|
+
}
|
|
45
|
+
if (!this.isOpen) {
|
|
46
|
+
throw new AttestorError('ERROR_NETWORK_ERROR', 'Wait for connection to open before sending message');
|
|
47
|
+
}
|
|
48
|
+
const msg = packRpcMessages(...msgs);
|
|
49
|
+
const bytes = RPCMessages.encode(msg).finish();
|
|
50
|
+
this.logger.trace({ msg }, 'sending messages');
|
|
51
|
+
if ('sendPromise' in this.socket && this.socket.sendPromise) {
|
|
52
|
+
await this.socket.sendPromise(bytes);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.socket.send(bytes);
|
|
56
|
+
}
|
|
57
|
+
return msg;
|
|
58
|
+
}
|
|
59
|
+
dispatchRPCEvent(type, data) {
|
|
60
|
+
const event = makeRpcEvent(type, data);
|
|
61
|
+
this.eventTarget.dispatchEvent(event);
|
|
62
|
+
}
|
|
63
|
+
addEventListener(type, listener) {
|
|
64
|
+
this.eventTarget.addEventListener(type, listener);
|
|
65
|
+
}
|
|
66
|
+
removeEventListener(type, listener) {
|
|
67
|
+
this.eventTarget.removeEventListener(type, listener);
|
|
68
|
+
}
|
|
69
|
+
async terminateConnection(err) {
|
|
70
|
+
// connection already closed
|
|
71
|
+
if (this.isClosed) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const witErr = err
|
|
76
|
+
? AttestorError.fromError(err)
|
|
77
|
+
: new AttestorError('ERROR_NO_ERROR', '');
|
|
78
|
+
this.dispatchRPCEvent('connection-terminated', witErr);
|
|
79
|
+
if (this.isOpen) {
|
|
80
|
+
await this.sendMessage({
|
|
81
|
+
connectionTerminationAlert: witErr.toProto()
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
this.logger?.error({ err }, 'error terminating connection');
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
this.socket.close();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
package/lib/utils/tls.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { SUPPORTED_NAMED_CURVES } from '@reclaimprotocol/tls';
|
|
2
|
+
import { detectEnvironment } from "./env.js";
|
|
3
|
+
// we only support the following cipher suites
|
|
4
|
+
// for ZK proof generation
|
|
5
|
+
const ZK_CIPHER_SUITES = [
|
|
6
|
+
// chacha-20
|
|
7
|
+
'TLS_CHACHA20_POLY1305_SHA256',
|
|
8
|
+
'TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256',
|
|
9
|
+
'TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256',
|
|
10
|
+
// aes-256
|
|
11
|
+
'TLS_AES_256_GCM_SHA384',
|
|
12
|
+
'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
|
|
13
|
+
'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
|
|
14
|
+
// aes-128
|
|
15
|
+
'TLS_AES_128_GCM_SHA256',
|
|
16
|
+
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',
|
|
17
|
+
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
|
|
18
|
+
'TLS_RSA_WITH_AES_128_GCM_SHA256'
|
|
19
|
+
];
|
|
20
|
+
const NAMED_CURVE_LIST = detectEnvironment() === 'node'
|
|
21
|
+
? SUPPORTED_NAMED_CURVES
|
|
22
|
+
// X25519 is not supported in the browser
|
|
23
|
+
: SUPPORTED_NAMED_CURVES.filter(c => c !== 'X25519');
|
|
24
|
+
TLS_ADDITIONAL_ROOT_CA_LIST.push(`-----BEGIN CERTIFICATE-----
|
|
25
|
+
MIIEszCCA5ugAwIBAgIQCyWUIs7ZgSoVoE6ZUooO+jANBgkqhkiG9w0BAQsFADBh
|
|
26
|
+
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
|
27
|
+
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
|
|
28
|
+
MjAeFw0xNzExMDIxMjI0MzNaFw0yNzExMDIxMjI0MzNaMGAxCzAJBgNVBAYTAlVT
|
|
29
|
+
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
|
30
|
+
b20xHzAdBgNVBAMTFlJhcGlkU1NMIFRMUyBSU0EgQ0EgRzEwggEiMA0GCSqGSIb3
|
|
31
|
+
DQEBAQUAA4IBDwAwggEKAoIBAQC/uVklRBI1FuJdUEkFCuDL/I3aJQiaZ6aibRHj
|
|
32
|
+
ap/ap9zy1aYNrphe7YcaNwMoPsZvXDR+hNJOo9gbgOYVTPq8gXc84I75YKOHiVA4
|
|
33
|
+
NrJJQZ6p2sJQyqx60HkEIjzIN+1LQLfXTlpuznToOa1hyTD0yyitFyOYwURM+/CI
|
|
34
|
+
8FNFMpBhw22hpeAQkOOLmsqT5QZJYeik7qlvn8gfD+XdDnk3kkuuu0eG+vuyrSGr
|
|
35
|
+
5uX5LRhFWlv1zFQDch/EKmd163m6z/ycx/qLa9zyvILc7cQpb+k7TLra9WE17YPS
|
|
36
|
+
n9ANjG+ECo9PDW3N9lwhKQCNvw1gGoguyCQu7HE7BnW8eSSFAgMBAAGjggFmMIIB
|
|
37
|
+
YjAdBgNVHQ4EFgQUDNtsgkkPSmcKuBTuesRIUojrVjgwHwYDVR0jBBgwFoAUTiJU
|
|
38
|
+
IBiV5uNu5g/6+rkS7QYXjzkwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsG
|
|
39
|
+
AQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMDQGCCsGAQUFBwEB
|
|
40
|
+
BCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEIGA1Ud
|
|
41
|
+
HwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEds
|
|
42
|
+
b2JhbFJvb3RHMi5jcmwwYwYDVR0gBFwwWjA3BglghkgBhv1sAQEwKjAoBggrBgEF
|
|
43
|
+
BQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzALBglghkgBhv1sAQIw
|
|
44
|
+
CAYGZ4EMAQIBMAgGBmeBDAECAjANBgkqhkiG9w0BAQsFAAOCAQEAGUSlOb4K3Wtm
|
|
45
|
+
SlbmE50UYBHXM0SKXPqHMzk6XQUpCheF/4qU8aOhajsyRQFDV1ih/uPIg7YHRtFi
|
|
46
|
+
CTq4G+zb43X1T77nJgSOI9pq/TqCwtukZ7u9VLL3JAq3Wdy2moKLvvC8tVmRzkAe
|
|
47
|
+
0xQCkRKIjbBG80MSyDX/R4uYgj6ZiNT/Zg6GI6RofgqgpDdssLc0XIRQEotxIZcK
|
|
48
|
+
zP3pGJ9FCbMHmMLLyuBd+uCWvVcF2ogYAawufChS/PT61D9rqzPRS5I2uqa3tmIT
|
|
49
|
+
44JhJgWhBnFMb7AGQkvNq9KNS9dd3GWc17H/dXa1enoxzWjE0hBdFjxPhUb0W3wi
|
|
50
|
+
8o34/m8Fxw==
|
|
51
|
+
-----END CERTIFICATE-----` //RapidSSL TLS RSA CA G1
|
|
52
|
+
);
|
|
53
|
+
export function getDefaultTlsOptions() {
|
|
54
|
+
return {
|
|
55
|
+
cipherSuites: ZK_CIPHER_SUITES,
|
|
56
|
+
namedCurves: NAMED_CURVE_LIST,
|
|
57
|
+
};
|
|
58
|
+
}
|
package/lib/utils/ws.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function makeWebSocket(url) {
|
|
2
|
+
return new WebSocket(url);
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Adds the "sendPromise" fn to the given WebSocket instance,
|
|
6
|
+
* if not already present.
|
|
7
|
+
*/
|
|
8
|
+
export function promisifySend(ws) {
|
|
9
|
+
if (ws.sendPromise) {
|
|
10
|
+
return ws;
|
|
11
|
+
}
|
|
12
|
+
ws.sendPromise = (data) => (new Promise((resolve, reject) => {
|
|
13
|
+
ws.send(data, err => {
|
|
14
|
+
if (err) {
|
|
15
|
+
reject(err);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
resolve();
|
|
19
|
+
});
|
|
20
|
+
}));
|
|
21
|
+
return ws;
|
|
22
|
+
}
|