@reclaimprotocol/attestor-core 5.0.1-beta.7 → 5.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/browser/resources/attestor-browser.min.mjs +4512 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +1 -1
- package/lib/external-rpc/index.js +10399 -3
- package/lib/index.js +8323 -10
- package/lib/server/utils/proxy-session.d.ts +1 -1
- package/lib/types/general.d.ts +0 -1
- package/lib/utils/generics.d.ts +1 -6
- package/lib/utils/index.d.ts +0 -1
- package/package.json +8 -7
- 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 -1
- package/lib/browser/utils/tls-imports.js +0 -34
- 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 -1
- package/lib/utils/tls-imports.js +0 -34
- package/lib/utils/tls.js +0 -58
- package/lib/utils/ws.js +0 -22
- package/lib/utils/zk.js +0 -625
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { base64Encode } from "@bufbuild/protobuf/wire";
|
|
2
|
-
import { concatenateUint8Arrays } from "../utils/tls-imports.js";
|
|
3
|
-
const REDACTION_CHAR = "*";
|
|
4
|
-
const REDACTION_CHAR_CODE = REDACTION_CHAR.charCodeAt(0);
|
|
5
|
-
function isRedactionCongruent(redacted, original) {
|
|
6
|
-
for (let i = 0; i < redacted.length; i++) {
|
|
7
|
-
const element = redacted[i];
|
|
8
|
-
const areSame = element === original[i] || typeof element === "string" && element === REDACTION_CHAR || typeof element === "number" && element === REDACTION_CHAR_CODE;
|
|
9
|
-
if (!areSame) {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
function isFullyRedacted(redacted) {
|
|
16
|
-
for (const element of redacted) {
|
|
17
|
-
if (element !== REDACTION_CHAR && element !== REDACTION_CHAR_CODE) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
async function getBlocksToReveal(blocks, redact, performOprf) {
|
|
24
|
-
const slicesWithReveal = blocks.map((block) => ({
|
|
25
|
-
block,
|
|
26
|
-
// copy the plaintext to avoid mutating the original
|
|
27
|
-
redactedPlaintext: new Uint8Array(block.plaintext)
|
|
28
|
-
}));
|
|
29
|
-
const total = concatenateUint8Arrays(blocks.map((b) => b.plaintext));
|
|
30
|
-
const redactions = redact(total);
|
|
31
|
-
if (!redactions.length) {
|
|
32
|
-
return "all";
|
|
33
|
-
}
|
|
34
|
-
let blockIdx = 0;
|
|
35
|
-
let cursorInBlock = 0;
|
|
36
|
-
let cursor = 0;
|
|
37
|
-
for (const redaction of redactions) {
|
|
38
|
-
await redactBlocks(redaction);
|
|
39
|
-
}
|
|
40
|
-
return slicesWithReveal.filter((s) => !isFullyRedacted(s.redactedPlaintext));
|
|
41
|
-
async function redactBlocks(slice) {
|
|
42
|
-
while (cursor < slice.fromIndex) {
|
|
43
|
-
advance();
|
|
44
|
-
}
|
|
45
|
-
if (slice.hash === "oprf-raw") {
|
|
46
|
-
const startBlockIdx = blockIdx;
|
|
47
|
-
const startCursorInBlock = cursorInBlock;
|
|
48
|
-
const totalLength = slice.toIndex - slice.fromIndex;
|
|
49
|
-
const block = slicesWithReveal[blockIdx];
|
|
50
|
-
block.oprfRawMarkers ||= [];
|
|
51
|
-
block.oprfRawMarkers.push({
|
|
52
|
-
dataLocation: {
|
|
53
|
-
fromIndex: startCursorInBlock,
|
|
54
|
-
length: totalLength
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
let overshootLen = 0;
|
|
58
|
-
while (cursor < slice.toIndex) {
|
|
59
|
-
if (blockIdx !== startBlockIdx) {
|
|
60
|
-
overshootLen += 1;
|
|
61
|
-
}
|
|
62
|
-
advance();
|
|
63
|
-
}
|
|
64
|
-
if (overshootLen) {
|
|
65
|
-
slicesWithReveal[blockIdx].overshotOprfRawFromPrevBlock = { length: overshootLen };
|
|
66
|
-
}
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
if (slice.hash) {
|
|
70
|
-
const plaintext = total.slice(slice.fromIndex, slice.toIndex);
|
|
71
|
-
const { nullifier, responses, mask } = await performOprf(plaintext);
|
|
72
|
-
const toprf = {
|
|
73
|
-
nullifier,
|
|
74
|
-
responses,
|
|
75
|
-
dataLocation: {
|
|
76
|
-
fromIndex: cursorInBlock,
|
|
77
|
-
length: slice.toIndex - slice.fromIndex
|
|
78
|
-
},
|
|
79
|
-
mask,
|
|
80
|
-
plaintext
|
|
81
|
-
};
|
|
82
|
-
const startBlockIdx = blockIdx;
|
|
83
|
-
const block = slicesWithReveal[blockIdx];
|
|
84
|
-
block.toprfs ||= [];
|
|
85
|
-
block.toprfs.push(toprf);
|
|
86
|
-
const nullifierStr = binaryHashToStr(nullifier, toprf.dataLocation.length);
|
|
87
|
-
let i = 0;
|
|
88
|
-
let overshootLen = 0;
|
|
89
|
-
while (cursor < slice.toIndex) {
|
|
90
|
-
if (blockIdx !== startBlockIdx) {
|
|
91
|
-
overshootLen += 1;
|
|
92
|
-
}
|
|
93
|
-
slicesWithReveal[blockIdx].redactedPlaintext[cursorInBlock] = nullifierStr.charCodeAt(i);
|
|
94
|
-
advance();
|
|
95
|
-
i += 1;
|
|
96
|
-
}
|
|
97
|
-
if (overshootLen) {
|
|
98
|
-
slicesWithReveal[blockIdx].overshotToprfFromPrevBlock = { length: overshootLen };
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
while (cursor < slice.toIndex) {
|
|
102
|
-
slicesWithReveal[blockIdx].redactedPlaintext[cursorInBlock] = REDACTION_CHAR_CODE;
|
|
103
|
-
advance();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
function advance() {
|
|
107
|
-
cursor += 1;
|
|
108
|
-
cursorInBlock += 1;
|
|
109
|
-
if (cursorInBlock >= blocks[blockIdx].plaintext.length) {
|
|
110
|
-
blockIdx += 1;
|
|
111
|
-
cursorInBlock = 0;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
function redactSlices(total, slices) {
|
|
116
|
-
const redacted = new Uint8Array(total);
|
|
117
|
-
for (const slice of slices) {
|
|
118
|
-
for (let i = slice.fromIndex; i < slice.toIndex; i++) {
|
|
119
|
-
redacted[i] = REDACTION_CHAR_CODE;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return redacted;
|
|
123
|
-
}
|
|
124
|
-
function binaryHashToStr(hash, expLength) {
|
|
125
|
-
return base64Encode(hash).padEnd(expLength, "0").slice(0, expLength);
|
|
126
|
-
}
|
|
127
|
-
export {
|
|
128
|
-
REDACTION_CHAR,
|
|
129
|
-
REDACTION_CHAR_CODE,
|
|
130
|
-
binaryHashToStr,
|
|
131
|
-
getBlocksToReveal,
|
|
132
|
-
isFullyRedacted,
|
|
133
|
-
isRedactionCongruent,
|
|
134
|
-
redactSlices
|
|
135
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Logger } from '#src/types/index.ts';
|
|
2
|
-
type RetryLoopOptions = {
|
|
3
|
-
maxRetries?: number;
|
|
4
|
-
logger: Logger;
|
|
5
|
-
shouldRetry: (error: Error) => boolean;
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* Execute a function, and upon failure -- retry
|
|
9
|
-
* based on specified options.
|
|
10
|
-
*/
|
|
11
|
-
export declare function executeWithRetries<T>(code: (attempt: number) => Promise<T>, { maxRetries, shouldRetry, logger, }: RetryLoopOptions): Promise<T>;
|
|
12
|
-
export {};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
async function executeWithRetries(code, {
|
|
2
|
-
maxRetries = 3,
|
|
3
|
-
shouldRetry,
|
|
4
|
-
logger
|
|
5
|
-
}) {
|
|
6
|
-
let retries = 0;
|
|
7
|
-
while (retries < maxRetries) {
|
|
8
|
-
try {
|
|
9
|
-
const result = await code(retries);
|
|
10
|
-
return result;
|
|
11
|
-
} catch (err) {
|
|
12
|
-
retries += 1;
|
|
13
|
-
if (retries >= maxRetries) {
|
|
14
|
-
throw err;
|
|
15
|
-
}
|
|
16
|
-
if (!shouldRetry(err)) {
|
|
17
|
-
throw err;
|
|
18
|
-
}
|
|
19
|
-
logger.info({ err, retries }, "retrying failed operation");
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
throw new Error("retries exhausted");
|
|
23
|
-
}
|
|
24
|
-
export {
|
|
25
|
-
executeWithRetries
|
|
26
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { computeAddress, getBytes, hexlify, SigningKey, verifyMessage, Wallet } from "ethers";
|
|
2
|
-
const ETH_SIGNATURE_PROVIDER = {
|
|
3
|
-
getPublicKey(privateKey) {
|
|
4
|
-
const pub = SigningKey.computePublicKey(privateKey, true);
|
|
5
|
-
return getBytes(pub);
|
|
6
|
-
},
|
|
7
|
-
getAddress(publicKey) {
|
|
8
|
-
const pubKeyHex = typeof publicKey === "string" ? publicKey : hexlify(publicKey);
|
|
9
|
-
return computeAddress(pubKeyHex).toLowerCase();
|
|
10
|
-
},
|
|
11
|
-
async sign(data, privateKey) {
|
|
12
|
-
const wallet = getEthWallet(privateKey);
|
|
13
|
-
const signature = await wallet.signMessage(data);
|
|
14
|
-
return getBytes(signature);
|
|
15
|
-
},
|
|
16
|
-
async verify(data, signature, addressBytes) {
|
|
17
|
-
const address = typeof addressBytes === "string" ? addressBytes : hexlify(addressBytes);
|
|
18
|
-
const signatureHex = typeof signature === "string" ? signature : hexlify(signature);
|
|
19
|
-
const signerAddress = verifyMessage(data, signatureHex);
|
|
20
|
-
return signerAddress.toLowerCase() === address.toLowerCase();
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
function getEthWallet(privateKey) {
|
|
24
|
-
if (!privateKey) {
|
|
25
|
-
throw new Error("Private key missing");
|
|
26
|
-
}
|
|
27
|
-
return new Wallet(privateKey);
|
|
28
|
-
}
|
|
29
|
-
export {
|
|
30
|
-
ETH_SIGNATURE_PROVIDER
|
|
31
|
-
};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { ServiceSignatureType } from '#src/proto/api.ts';
|
|
2
|
-
import type { ServiceSignatureProvider } from '#src/types/index.ts';
|
|
3
|
-
export declare const SIGNATURES: { [key in ServiceSignatureType]: ServiceSignatureProvider; };
|
|
4
|
-
export declare const SelectedServiceSignatureType: 1;
|
|
5
|
-
export declare const SelectedServiceSignature: ServiceSignatureProvider;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ServiceSignatureType } from "../../proto/api.js";
|
|
2
|
-
import { ETH_SIGNATURE_PROVIDER } from "../../utils/signatures/eth.js";
|
|
3
|
-
const SIGNATURES = {
|
|
4
|
-
[ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH]: ETH_SIGNATURE_PROVIDER
|
|
5
|
-
};
|
|
6
|
-
const SelectedServiceSignatureType = ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH;
|
|
7
|
-
const SelectedServiceSignature = SIGNATURES[SelectedServiceSignatureType];
|
|
8
|
-
export {
|
|
9
|
-
SIGNATURES,
|
|
10
|
-
SelectedServiceSignature,
|
|
11
|
-
SelectedServiceSignatureType
|
|
12
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { WebSocket as WSWebSocket } from 'ws';
|
|
2
|
-
import type { InitRequest, RPCMessage } from '#src/proto/api.ts';
|
|
3
|
-
import { RPCMessages } from '#src/proto/api.ts';
|
|
4
|
-
import type { IAttestorSocket, Logger, RPCEvent, RPCEventMap } from '#src/types/index.ts';
|
|
5
|
-
/**
|
|
6
|
-
* Common AttestorSocket class used on the client & server side as the
|
|
7
|
-
* base for their respective socket implementations.
|
|
8
|
-
*/
|
|
9
|
-
export declare class AttestorSocket implements IAttestorSocket {
|
|
10
|
-
private eventTarget;
|
|
11
|
-
protected socket: WebSocket | WSWebSocket;
|
|
12
|
-
readonly logger: Logger;
|
|
13
|
-
readonly metadata: InitRequest;
|
|
14
|
-
isInitialised: boolean;
|
|
15
|
-
constructor(socket: WebSocket | WSWebSocket, metadata: InitRequest, logger: Logger);
|
|
16
|
-
get isOpen(): boolean;
|
|
17
|
-
get isClosed(): boolean;
|
|
18
|
-
sendMessage(...msgs: Partial<RPCMessage>[]): Promise<RPCMessages>;
|
|
19
|
-
dispatchRPCEvent<K extends keyof RPCEventMap>(type: K, data: RPCEventMap[K]): void;
|
|
20
|
-
addEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void;
|
|
21
|
-
removeEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void;
|
|
22
|
-
terminateConnection(err?: Error): Promise<void>;
|
|
23
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { wsMessageHandler } from "../client/utils/message-handler.js";
|
|
2
|
-
import { RPCMessages } from "../proto/api.js";
|
|
3
|
-
import { AttestorError, makeRpcEvent, packRpcMessages } from "../utils/index.js";
|
|
4
|
-
class AttestorSocket {
|
|
5
|
-
eventTarget = new EventTarget();
|
|
6
|
-
socket;
|
|
7
|
-
logger;
|
|
8
|
-
metadata;
|
|
9
|
-
isInitialised = false;
|
|
10
|
-
constructor(socket, metadata, logger) {
|
|
11
|
-
this.socket = socket;
|
|
12
|
-
this.metadata = metadata;
|
|
13
|
-
this.logger = logger;
|
|
14
|
-
socket.addEventListener("error", (event) => {
|
|
15
|
-
const witErr = AttestorError.fromError(
|
|
16
|
-
event.error || new Error(event.message),
|
|
17
|
-
"ERROR_NETWORK_ERROR"
|
|
18
|
-
);
|
|
19
|
-
this.dispatchRPCEvent("connection-terminated", witErr);
|
|
20
|
-
});
|
|
21
|
-
socket.addEventListener("close", () => this.dispatchRPCEvent(
|
|
22
|
-
"connection-terminated",
|
|
23
|
-
new AttestorError(
|
|
24
|
-
"ERROR_NO_ERROR",
|
|
25
|
-
"connection closed"
|
|
26
|
-
)
|
|
27
|
-
));
|
|
28
|
-
socket.addEventListener("message", async (event) => {
|
|
29
|
-
try {
|
|
30
|
-
await wsMessageHandler.call(this, event.data);
|
|
31
|
-
} catch (err) {
|
|
32
|
-
this.logger.error({ err }, "error processing message");
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
get isOpen() {
|
|
37
|
-
return this.socket.readyState === this.socket.OPEN;
|
|
38
|
-
}
|
|
39
|
-
get isClosed() {
|
|
40
|
-
return this.socket.readyState === this.socket.CLOSED || this.socket.readyState === this.socket.CLOSING;
|
|
41
|
-
}
|
|
42
|
-
async sendMessage(...msgs) {
|
|
43
|
-
if (this.isClosed) {
|
|
44
|
-
throw new AttestorError(
|
|
45
|
-
"ERROR_NETWORK_ERROR",
|
|
46
|
-
"Connection closed, cannot send message"
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
if (!this.isOpen) {
|
|
50
|
-
throw new AttestorError(
|
|
51
|
-
"ERROR_NETWORK_ERROR",
|
|
52
|
-
"Wait for connection to open before sending message"
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
const msg = packRpcMessages(...msgs);
|
|
56
|
-
const bytes = RPCMessages.encode(msg).finish();
|
|
57
|
-
this.logger.trace({ msg }, "sending messages");
|
|
58
|
-
if ("sendPromise" in this.socket && this.socket.sendPromise) {
|
|
59
|
-
await this.socket.sendPromise(bytes);
|
|
60
|
-
} else {
|
|
61
|
-
this.socket.send(bytes);
|
|
62
|
-
}
|
|
63
|
-
return msg;
|
|
64
|
-
}
|
|
65
|
-
dispatchRPCEvent(type, data) {
|
|
66
|
-
const event = makeRpcEvent(type, data);
|
|
67
|
-
this.eventTarget.dispatchEvent(event);
|
|
68
|
-
}
|
|
69
|
-
addEventListener(type, listener) {
|
|
70
|
-
this.eventTarget.addEventListener(type, listener);
|
|
71
|
-
}
|
|
72
|
-
removeEventListener(type, listener) {
|
|
73
|
-
this.eventTarget.removeEventListener(type, listener);
|
|
74
|
-
}
|
|
75
|
-
async terminateConnection(err) {
|
|
76
|
-
if (this.isClosed) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
try {
|
|
80
|
-
const witErr = err ? AttestorError.fromError(err) : new AttestorError("ERROR_NO_ERROR", "");
|
|
81
|
-
this.dispatchRPCEvent("connection-terminated", witErr);
|
|
82
|
-
if (this.isOpen) {
|
|
83
|
-
await this.sendMessage({
|
|
84
|
-
connectionTerminationAlert: witErr.toProto()
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
} catch (err2) {
|
|
88
|
-
this.logger?.error({ err: err2 }, "error terminating connection");
|
|
89
|
-
} finally {
|
|
90
|
-
this.socket.close();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
export {
|
|
95
|
-
AttestorSocket
|
|
96
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { areUint8ArraysEqual, asciiToUint8Array, concatenateUint8Arrays, crypto, decryptWrappedRecord, encryptWrappedRecord, generateIV, makeTLSClient, setCryptoImplementation, uint8ArrayToBinaryStr, uint8ArrayToDataView, CONTENT_TYPE_MAP, PACKET_TYPE, SUPPORTED_CIPHER_SUITE_MAP, SUPPORTED_NAMED_CURVES, } from '@reclaimprotocol/tls';
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
areUint8ArraysEqual,
|
|
3
|
-
asciiToUint8Array,
|
|
4
|
-
concatenateUint8Arrays,
|
|
5
|
-
crypto,
|
|
6
|
-
decryptWrappedRecord,
|
|
7
|
-
encryptWrappedRecord,
|
|
8
|
-
generateIV,
|
|
9
|
-
makeTLSClient,
|
|
10
|
-
setCryptoImplementation,
|
|
11
|
-
uint8ArrayToBinaryStr,
|
|
12
|
-
uint8ArrayToDataView,
|
|
13
|
-
CONTENT_TYPE_MAP,
|
|
14
|
-
PACKET_TYPE,
|
|
15
|
-
SUPPORTED_CIPHER_SUITE_MAP,
|
|
16
|
-
SUPPORTED_NAMED_CURVES
|
|
17
|
-
} from "@reclaimprotocol/tls";
|
|
18
|
-
export {
|
|
19
|
-
CONTENT_TYPE_MAP,
|
|
20
|
-
PACKET_TYPE,
|
|
21
|
-
SUPPORTED_CIPHER_SUITE_MAP,
|
|
22
|
-
SUPPORTED_NAMED_CURVES,
|
|
23
|
-
areUint8ArraysEqual,
|
|
24
|
-
asciiToUint8Array,
|
|
25
|
-
concatenateUint8Arrays,
|
|
26
|
-
crypto,
|
|
27
|
-
decryptWrappedRecord,
|
|
28
|
-
encryptWrappedRecord,
|
|
29
|
-
generateIV,
|
|
30
|
-
makeTLSClient,
|
|
31
|
-
setCryptoImplementation,
|
|
32
|
-
uint8ArrayToBinaryStr,
|
|
33
|
-
uint8ArrayToDataView
|
|
34
|
-
};
|
package/lib/browser/utils/tls.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { SUPPORTED_NAMED_CURVES } from "../utils/tls-imports.js";
|
|
2
|
-
import { detectEnvironment } from "../utils/env.js";
|
|
3
|
-
const ZK_CIPHER_SUITES = [
|
|
4
|
-
// chacha-20
|
|
5
|
-
"TLS_CHACHA20_POLY1305_SHA256",
|
|
6
|
-
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
7
|
-
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
8
|
-
// aes-256
|
|
9
|
-
"TLS_AES_256_GCM_SHA384",
|
|
10
|
-
"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
|
|
11
|
-
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
12
|
-
// aes-128
|
|
13
|
-
"TLS_AES_128_GCM_SHA256",
|
|
14
|
-
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
15
|
-
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
16
|
-
"TLS_RSA_WITH_AES_128_GCM_SHA256"
|
|
17
|
-
];
|
|
18
|
-
const NAMED_CURVE_LIST = detectEnvironment() === "node" ? SUPPORTED_NAMED_CURVES : SUPPORTED_NAMED_CURVES.filter((c) => c !== "X25519");
|
|
19
|
-
TLS_ADDITIONAL_ROOT_CA_LIST.push(
|
|
20
|
-
`-----BEGIN CERTIFICATE-----
|
|
21
|
-
MIIEszCCA5ugAwIBAgIQCyWUIs7ZgSoVoE6ZUooO+jANBgkqhkiG9w0BAQsFADBh
|
|
22
|
-
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
|
23
|
-
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
|
|
24
|
-
MjAeFw0xNzExMDIxMjI0MzNaFw0yNzExMDIxMjI0MzNaMGAxCzAJBgNVBAYTAlVT
|
|
25
|
-
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
|
26
|
-
b20xHzAdBgNVBAMTFlJhcGlkU1NMIFRMUyBSU0EgQ0EgRzEwggEiMA0GCSqGSIb3
|
|
27
|
-
DQEBAQUAA4IBDwAwggEKAoIBAQC/uVklRBI1FuJdUEkFCuDL/I3aJQiaZ6aibRHj
|
|
28
|
-
ap/ap9zy1aYNrphe7YcaNwMoPsZvXDR+hNJOo9gbgOYVTPq8gXc84I75YKOHiVA4
|
|
29
|
-
NrJJQZ6p2sJQyqx60HkEIjzIN+1LQLfXTlpuznToOa1hyTD0yyitFyOYwURM+/CI
|
|
30
|
-
8FNFMpBhw22hpeAQkOOLmsqT5QZJYeik7qlvn8gfD+XdDnk3kkuuu0eG+vuyrSGr
|
|
31
|
-
5uX5LRhFWlv1zFQDch/EKmd163m6z/ycx/qLa9zyvILc7cQpb+k7TLra9WE17YPS
|
|
32
|
-
n9ANjG+ECo9PDW3N9lwhKQCNvw1gGoguyCQu7HE7BnW8eSSFAgMBAAGjggFmMIIB
|
|
33
|
-
YjAdBgNVHQ4EFgQUDNtsgkkPSmcKuBTuesRIUojrVjgwHwYDVR0jBBgwFoAUTiJU
|
|
34
|
-
IBiV5uNu5g/6+rkS7QYXjzkwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsG
|
|
35
|
-
AQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMDQGCCsGAQUFBwEB
|
|
36
|
-
BCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEIGA1Ud
|
|
37
|
-
HwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEds
|
|
38
|
-
b2JhbFJvb3RHMi5jcmwwYwYDVR0gBFwwWjA3BglghkgBhv1sAQEwKjAoBggrBgEF
|
|
39
|
-
BQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzALBglghkgBhv1sAQIw
|
|
40
|
-
CAYGZ4EMAQIBMAgGBmeBDAECAjANBgkqhkiG9w0BAQsFAAOCAQEAGUSlOb4K3Wtm
|
|
41
|
-
SlbmE50UYBHXM0SKXPqHMzk6XQUpCheF/4qU8aOhajsyRQFDV1ih/uPIg7YHRtFi
|
|
42
|
-
CTq4G+zb43X1T77nJgSOI9pq/TqCwtukZ7u9VLL3JAq3Wdy2moKLvvC8tVmRzkAe
|
|
43
|
-
0xQCkRKIjbBG80MSyDX/R4uYgj6ZiNT/Zg6GI6RofgqgpDdssLc0XIRQEotxIZcK
|
|
44
|
-
zP3pGJ9FCbMHmMLLyuBd+uCWvVcF2ogYAawufChS/PT61D9rqzPRS5I2uqa3tmIT
|
|
45
|
-
44JhJgWhBnFMb7AGQkvNq9KNS9dd3GWc17H/dXa1enoxzWjE0hBdFjxPhUb0W3wi
|
|
46
|
-
8o34/m8Fxw==
|
|
47
|
-
-----END CERTIFICATE-----`
|
|
48
|
-
//RapidSSL TLS RSA CA G1
|
|
49
|
-
);
|
|
50
|
-
function getDefaultTlsOptions() {
|
|
51
|
-
return {
|
|
52
|
-
cipherSuites: ZK_CIPHER_SUITES,
|
|
53
|
-
namedCurves: NAMED_CURVE_LIST
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
export {
|
|
57
|
-
getDefaultTlsOptions
|
|
58
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { WebSocket as WSWebSocket } from 'ws';
|
|
2
|
-
export declare function makeWebSocket(url: string): WebSocket;
|
|
3
|
-
/**
|
|
4
|
-
* Adds the "sendPromise" fn to the given WebSocket instance,
|
|
5
|
-
* if not already present.
|
|
6
|
-
*/
|
|
7
|
-
export declare function promisifySend(ws: WSWebSocket): WSWebSocket;
|
package/lib/browser/utils/ws.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
function makeWebSocket(url) {
|
|
2
|
-
return new WebSocket(url);
|
|
3
|
-
}
|
|
4
|
-
function promisifySend(ws) {
|
|
5
|
-
if (ws.sendPromise) {
|
|
6
|
-
return ws;
|
|
7
|
-
}
|
|
8
|
-
ws.sendPromise = (data) => new Promise((resolve, reject) => {
|
|
9
|
-
ws.send(data, (err) => {
|
|
10
|
-
if (err) {
|
|
11
|
-
reject(err);
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
resolve();
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
return ws;
|
|
18
|
-
}
|
|
19
|
-
export {
|
|
20
|
-
makeWebSocket,
|
|
21
|
-
promisifySend
|
|
22
|
-
};
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import type { CipherSuite } from '@reclaimprotocol/tls';
|
|
2
|
-
import type { EncryptionAlgorithm, OPRFOperator, PrivateInput, PublicInput, ZKEngine, ZKOperator } from '@reclaimprotocol/zk-symmetric-crypto';
|
|
3
|
-
import type { MessageReveal_MessageRevealZk as ZKReveal, MessageReveal_TOPRFProof as TOPRFProof, MessageReveal_ZKProof as ZKProof } from '#src/proto/api.ts';
|
|
4
|
-
import { ZKProofEngine } from '#src/proto/api.ts';
|
|
5
|
-
import type { CompleteTLSPacket, Logger, OPRFOperators, PrepareZKProofsBaseOpts, TOPRFProofParams, ZKOperators, ZKRevealInfo } from '#src/types/index.ts';
|
|
6
|
-
type PrepareZKProofsOpts = {
|
|
7
|
-
logger?: Logger;
|
|
8
|
-
cipherSuite: CipherSuite;
|
|
9
|
-
} & PrepareZKProofsBaseOpts;
|
|
10
|
-
type ZKVerifyOpts = {
|
|
11
|
-
cipherSuite: CipherSuite;
|
|
12
|
-
ciphertext: Uint8Array;
|
|
13
|
-
zkReveal: ZKReveal;
|
|
14
|
-
iv: Uint8Array;
|
|
15
|
-
recordNumber: number;
|
|
16
|
-
toprfOvershotNullifier?: Uint8Array;
|
|
17
|
-
/**
|
|
18
|
-
* Get the ciphertext of the next packet.
|
|
19
|
-
* @param overshotNullifier The TOPRF nullifier that overshoots into
|
|
20
|
-
* the next packet. This should be passed into the verifyZkPacket function
|
|
21
|
-
* of the next packet.
|
|
22
|
-
*/
|
|
23
|
-
getNextPacket: (overshotNullifier: Uint8Array) => (Uint8Array | undefined);
|
|
24
|
-
logger?: Logger;
|
|
25
|
-
/** get ZK operator for specified algorithm */
|
|
26
|
-
zkOperators?: ZKOperators;
|
|
27
|
-
oprfOperators?: OPRFOperators;
|
|
28
|
-
zkEngine?: ZKEngine;
|
|
29
|
-
};
|
|
30
|
-
type ZKProofToGenerate = {
|
|
31
|
-
startIdx: number;
|
|
32
|
-
redactedPlaintext: Uint8Array;
|
|
33
|
-
privateInput: PrivateInput;
|
|
34
|
-
publicInput: PublicInput;
|
|
35
|
-
};
|
|
36
|
-
type TOPRFProofToGenerate = {
|
|
37
|
-
privateInput: PrivateInput;
|
|
38
|
-
publicInput: PublicInput;
|
|
39
|
-
toprf: TOPRFProofParams;
|
|
40
|
-
startIdx: number;
|
|
41
|
-
};
|
|
42
|
-
type ZKPacketToProve = {
|
|
43
|
-
onGeneratedProofs(proofs: ZKProof[], toprfs: TOPRFProof[]): void;
|
|
44
|
-
algorithm: EncryptionAlgorithm;
|
|
45
|
-
proofsToGenerate: ZKProofToGenerate[];
|
|
46
|
-
toprfsToGenerate: TOPRFProofToGenerate[];
|
|
47
|
-
iv: Uint8Array;
|
|
48
|
-
};
|
|
49
|
-
export declare function makeZkProofGenerator({ zkOperators, oprfOperators, logger, zkProofConcurrency, cipherSuite, zkEngine }: PrepareZKProofsOpts): Promise<{
|
|
50
|
-
/**
|
|
51
|
-
* Adds the given packet to the list of packets to
|
|
52
|
-
* generate ZK proofs for.
|
|
53
|
-
*
|
|
54
|
-
* Call `generateProofs()` to finally generate the proofs
|
|
55
|
-
*/
|
|
56
|
-
addPacketToProve(packet: CompleteTLSPacket, { redactedPlaintext, toprfs, overshotToprfFromPrevBlock }: ZKRevealInfo, onGeneratedProofs: ZKPacketToProve["onGeneratedProofs"], getNextPacket: () => CompleteTLSPacket | undefined): Promise<void>;
|
|
57
|
-
getTotalChunksToProve(): number;
|
|
58
|
-
generateProofs(onChunkDone?: () => void): Promise<void>;
|
|
59
|
-
}>;
|
|
60
|
-
/**
|
|
61
|
-
* Verify the given ZK proof
|
|
62
|
-
*/
|
|
63
|
-
export declare function verifyZkPacket({ cipherSuite, ciphertext, zkReveal, zkOperators, oprfOperators, logger, zkEngine, iv, recordNumber, toprfOvershotNullifier, getNextPacket }: ZKVerifyOpts): Promise<{
|
|
64
|
-
redactedPlaintext: Uint8Array<ArrayBuffer>;
|
|
65
|
-
oprfRawMarkers: import("#src/proto/api.ts").MessageReveal_OPRFRawMarker[];
|
|
66
|
-
}>;
|
|
67
|
-
export declare function makeDefaultZkOperator(algorithm: EncryptionAlgorithm, zkEngine: ZKEngine, logger: Logger): ZKOperator;
|
|
68
|
-
export declare function makeDefaultOPRFOperator(algorithm: EncryptionAlgorithm, zkEngine: ZKEngine, logger: Logger): OPRFOperator;
|
|
69
|
-
export declare function getEngineString(engine: ZKProofEngine): "snarkjs" | "gnark" | "stwo";
|
|
70
|
-
export declare function getEngineProto(engine: ZKEngine): 0 | 1 | 2;
|
|
71
|
-
export {};
|