@inco/js 0.9.0-devnet-test-10 → 0.10.0-devnet-2
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 +503 -47
- package/dist/cjs/advancedacl/session-key.d.ts +5 -5
- package/dist/cjs/advancedacl/session-key.js +33 -9
- package/dist/cjs/attestedcompute/attested-compute.d.ts +1 -2
- package/dist/cjs/attestedcompute/attested-compute.js +15 -7
- package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +5 -43
- package/dist/cjs/attesteddecrypt/attested-decrypt.js +33 -96
- package/dist/cjs/attestedreveal/attested-reveal.d.ts +21 -0
- package/dist/cjs/attestedreveal/attested-reveal.js +31 -0
- package/dist/cjs/attestedreveal/index.d.ts +2 -0
- package/dist/cjs/attestedreveal/index.js +21 -0
- package/dist/cjs/attestedreveal/types.d.ts +4 -0
- package/dist/cjs/attestedreveal/types.js +13 -0
- package/dist/cjs/binary.d.ts +82 -0
- package/dist/cjs/binary.js +87 -5
- package/dist/cjs/chain.d.ts +29 -4
- package/dist/cjs/chain.js +34 -6
- package/dist/cjs/eip712/eip712.d.ts +18 -0
- package/dist/cjs/eip712/eip712.js +51 -0
- package/dist/cjs/eip712/index.d.ts +1 -0
- package/dist/cjs/eip712/index.js +8 -0
- package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
- package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.js +94 -0
- package/dist/cjs/elistattesteddecrypt/index.d.ts +2 -0
- package/dist/cjs/elistattesteddecrypt/index.js +22 -0
- package/dist/cjs/elistattesteddecrypt/types.d.ts +31 -0
- package/dist/cjs/elistattesteddecrypt/types.js +16 -0
- package/dist/cjs/encryption/encryption.d.ts +115 -0
- package/dist/cjs/encryption/encryption.js +98 -7
- package/dist/cjs/encryption/index.d.ts +1 -1
- package/dist/cjs/encryption/index.js +17 -16
- package/dist/cjs/generated/abis/lightning.d.ts +1119 -107
- package/dist/cjs/generated/abis/lightning.js +762 -52
- package/dist/cjs/generated/abis/test-elist.d.ts +20 -2
- package/dist/cjs/generated/abis/test-elist.js +16 -3
- package/dist/cjs/generated/abis/verifier.d.ts +118 -15
- package/dist/cjs/generated/abis/verifier.js +71 -19
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +23 -37
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +36 -41
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
- package/dist/cjs/generated/es/inco/helioswrapper/v1/helioswrapper_pb.js +1 -1
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +16 -0
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +3 -3
- package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.js +1 -1
- package/dist/cjs/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +7 -0
- package/dist/cjs/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.js +3 -3
- package/dist/cjs/generated/lightning.d.ts +150 -0
- package/dist/cjs/generated/lightning.js +157 -1
- package/dist/cjs/generated/local-node.d.ts +9 -9
- package/dist/cjs/generated/local-node.js +37 -10
- package/dist/cjs/handle.d.ts +72 -0
- package/dist/cjs/handle.js +113 -9
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +11 -2
- package/dist/cjs/kms/client.d.ts +1 -1
- package/dist/cjs/kms/client.js +4 -3
- package/dist/cjs/kms/quorumClient.d.ts +18 -12
- package/dist/cjs/kms/quorumClient.js +212 -231
- package/dist/cjs/kms/quorumConsistency.d.ts +82 -0
- package/dist/cjs/kms/quorumConsistency.js +269 -0
- package/dist/cjs/kms/signatureVerification.d.ts +35 -0
- package/dist/cjs/kms/signatureVerification.js +88 -0
- package/dist/cjs/kms/thresholdPromises.d.ts +4 -3
- package/dist/cjs/kms/thresholdPromises.js +25 -15
- package/dist/cjs/lite/attested-compute.d.ts +2 -2
- package/dist/cjs/lite/attested-compute.js +2 -3
- package/dist/cjs/lite/attested-decrypt.d.ts +2 -2
- package/dist/cjs/lite/attested-decrypt.js +2 -3
- package/dist/cjs/lite/hadu.d.ts +1 -1
- package/dist/cjs/lite/hadu.js +3 -3
- package/dist/cjs/lite/index.d.ts +6 -2
- package/dist/cjs/lite/index.js +8 -14
- package/dist/cjs/lite/lightning.d.ts +96 -47
- package/dist/cjs/lite/lightning.js +221 -267
- package/dist/cjs/lite/types.d.ts +47 -0
- package/dist/cjs/lite/types.js +3 -0
- package/dist/cjs/lite/xwing.d.ts +33 -2
- package/dist/cjs/lite/xwing.js +62 -7
- package/dist/cjs/local/local-node.d.ts +18 -0
- package/dist/cjs/local/local-node.js +18 -3
- package/dist/cjs/reencryption/eip712.d.ts +27 -0
- package/dist/cjs/reencryption/eip712.js +20 -7
- package/dist/cjs/reencryption/types.d.ts +24 -0
- package/dist/cjs/retry.d.ts +14 -0
- package/dist/cjs/retry.js +58 -2
- package/dist/cjs/test/mocks.d.ts +6 -1
- package/dist/cjs/test/mocks.js +31 -6
- package/dist/cjs/viem.d.ts +361 -1
- package/dist/cjs/viem.js +14 -1
- package/dist/esm/advancedacl/session-key.d.ts +5 -5
- package/dist/esm/advancedacl/session-key.js +33 -9
- package/dist/esm/attestedcompute/attested-compute.d.ts +1 -2
- package/dist/esm/attestedcompute/attested-compute.js +13 -5
- package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +5 -43
- package/dist/esm/attesteddecrypt/attested-decrypt.js +34 -96
- package/dist/esm/attestedreveal/attested-reveal.d.ts +21 -0
- package/dist/esm/attestedreveal/attested-reveal.js +28 -0
- package/dist/esm/attestedreveal/index.d.ts +2 -0
- package/dist/esm/attestedreveal/index.js +3 -0
- package/dist/esm/attestedreveal/types.d.ts +4 -0
- package/dist/esm/attestedreveal/types.js +9 -0
- package/dist/esm/binary.d.ts +82 -0
- package/dist/esm/binary.js +87 -5
- package/dist/esm/chain.d.ts +29 -4
- package/dist/esm/chain.js +33 -5
- package/dist/esm/eip712/eip712.d.ts +18 -0
- package/dist/esm/eip712/eip712.js +46 -0
- package/dist/esm/eip712/index.d.ts +1 -0
- package/dist/esm/eip712/index.js +2 -0
- package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
- package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.js +89 -0
- package/dist/esm/elistattesteddecrypt/index.d.ts +2 -0
- package/dist/esm/elistattesteddecrypt/index.js +3 -0
- package/dist/esm/elistattesteddecrypt/types.d.ts +31 -0
- package/dist/esm/elistattesteddecrypt/types.js +12 -0
- package/dist/esm/encryption/encryption.d.ts +115 -0
- package/dist/esm/encryption/encryption.js +98 -7
- package/dist/esm/encryption/index.d.ts +1 -1
- package/dist/esm/encryption/index.js +2 -2
- package/dist/esm/generated/abis/lightning.d.ts +1119 -107
- package/dist/esm/generated/abis/lightning.js +761 -51
- package/dist/esm/generated/abis/test-elist.d.ts +20 -2
- package/dist/esm/generated/abis/test-elist.js +16 -3
- package/dist/esm/generated/abis/verifier.d.ts +118 -15
- package/dist/esm/generated/abis/verifier.js +71 -19
- package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +23 -37
- package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +35 -40
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
- package/dist/esm/generated/es/inco/helioswrapper/v1/helioswrapper_pb.js +1 -1
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +16 -0
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +3 -3
- package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.js +1 -1
- package/dist/esm/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +7 -0
- package/dist/esm/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.js +3 -3
- package/dist/esm/generated/lightning.d.ts +150 -0
- package/dist/esm/generated/lightning.js +157 -1
- package/dist/esm/generated/local-node.d.ts +9 -9
- package/dist/esm/generated/local-node.js +37 -10
- package/dist/esm/handle.d.ts +72 -0
- package/dist/esm/handle.js +110 -8
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/kms/client.d.ts +1 -1
- package/dist/esm/kms/client.js +3 -2
- package/dist/esm/kms/quorumClient.d.ts +18 -12
- package/dist/esm/kms/quorumClient.js +213 -232
- package/dist/esm/kms/quorumConsistency.d.ts +82 -0
- package/dist/esm/kms/quorumConsistency.js +260 -0
- package/dist/esm/kms/signatureVerification.d.ts +35 -0
- package/dist/esm/kms/signatureVerification.js +84 -0
- package/dist/esm/kms/thresholdPromises.d.ts +4 -3
- package/dist/esm/kms/thresholdPromises.js +25 -15
- package/dist/esm/lite/attested-compute.d.ts +2 -2
- package/dist/esm/lite/attested-compute.js +3 -3
- package/dist/esm/lite/attested-decrypt.d.ts +2 -2
- package/dist/esm/lite/attested-decrypt.js +3 -3
- package/dist/esm/lite/hadu.d.ts +1 -1
- package/dist/esm/lite/hadu.js +2 -2
- package/dist/esm/lite/index.d.ts +6 -2
- package/dist/esm/lite/index.js +5 -3
- package/dist/esm/lite/lightning.d.ts +96 -47
- package/dist/esm/lite/lightning.js +217 -263
- package/dist/esm/lite/types.d.ts +47 -0
- package/dist/esm/lite/types.js +2 -0
- package/dist/esm/lite/xwing.d.ts +33 -2
- package/dist/esm/lite/xwing.js +59 -7
- package/dist/esm/local/local-node.d.ts +18 -0
- package/dist/esm/local/local-node.js +18 -3
- package/dist/esm/reencryption/eip712.d.ts +27 -0
- package/dist/esm/reencryption/eip712.js +20 -7
- package/dist/esm/reencryption/types.d.ts +24 -0
- package/dist/esm/retry.d.ts +14 -0
- package/dist/esm/retry.js +56 -2
- package/dist/esm/test/mocks.d.ts +6 -1
- package/dist/esm/test/mocks.js +31 -8
- package/dist/esm/viem.d.ts +361 -1
- package/dist/esm/viem.js +15 -2
- package/dist/types/advancedacl/session-key.d.ts +5 -5
- package/dist/types/attestedcompute/attested-compute.d.ts +1 -2
- package/dist/types/attesteddecrypt/attested-decrypt.d.ts +5 -43
- package/dist/types/attestedreveal/attested-reveal.d.ts +21 -0
- package/dist/types/attestedreveal/index.d.ts +2 -0
- package/dist/types/attestedreveal/types.d.ts +4 -0
- package/dist/types/binary.d.ts +82 -0
- package/dist/types/chain.d.ts +29 -4
- package/dist/types/eip712/eip712.d.ts +18 -0
- package/dist/types/eip712/index.d.ts +1 -0
- package/dist/types/elistattesteddecrypt/elist-attested-decrypt.d.ts +49 -0
- package/dist/types/elistattesteddecrypt/index.d.ts +2 -0
- package/dist/types/elistattesteddecrypt/types.d.ts +31 -0
- package/dist/types/encryption/encryption.d.ts +115 -0
- package/dist/types/encryption/index.d.ts +1 -1
- package/dist/types/generated/abis/lightning.d.ts +1119 -107
- package/dist/types/generated/abis/test-elist.d.ts +20 -2
- package/dist/types/generated/abis/verifier.d.ts +118 -15
- package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +23 -37
- package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +16 -0
- package/dist/types/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +7 -0
- package/dist/types/generated/lightning.d.ts +150 -0
- package/dist/types/generated/local-node.d.ts +9 -9
- package/dist/types/handle.d.ts +72 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/kms/client.d.ts +1 -1
- package/dist/types/kms/quorumClient.d.ts +18 -12
- package/dist/types/kms/quorumConsistency.d.ts +82 -0
- package/dist/types/kms/signatureVerification.d.ts +35 -0
- package/dist/types/kms/thresholdPromises.d.ts +4 -3
- package/dist/types/lite/attested-compute.d.ts +2 -2
- package/dist/types/lite/attested-decrypt.d.ts +2 -2
- package/dist/types/lite/hadu.d.ts +1 -1
- package/dist/types/lite/index.d.ts +6 -2
- package/dist/types/lite/lightning.d.ts +96 -47
- package/dist/types/lite/types.d.ts +47 -0
- package/dist/types/lite/xwing.d.ts +33 -2
- package/dist/types/local/local-node.d.ts +18 -0
- package/dist/types/reencryption/eip712.d.ts +27 -0
- package/dist/types/reencryption/types.d.ts +24 -0
- package/dist/types/retry.d.ts +14 -0
- package/dist/types/test/mocks.d.ts +6 -1
- package/dist/types/viem.d.ts +361 -1
- package/package.json +19 -21
- package/dist/cjs/generated/abis/lightning-preview.d.ts +0 -1385
- package/dist/cjs/generated/abis/lightning-preview.js +0 -857
- package/dist/esm/generated/abis/lightning-preview.d.ts +0 -1385
- package/dist/esm/generated/abis/lightning-preview.js +0 -854
- package/dist/types/generated/abis/lightning-preview.d.ts +0 -1385
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { HexString } from '../binary.js';
|
|
2
|
+
import type { BackoffConfig } from '../retry.js';
|
|
3
|
+
import type { XwingKeypair } from './xwing.js';
|
|
4
|
+
/**
|
|
5
|
+
* Options for attested methods when no reencrypt keys are provided.
|
|
6
|
+
* The KMS generates an ephemeral keypair and returns plaintext.
|
|
7
|
+
*/
|
|
8
|
+
export type AttestedOptsEphemeral = {
|
|
9
|
+
reencryptPubKey?: never;
|
|
10
|
+
reencryptKeypair?: never;
|
|
11
|
+
backoffConfig?: Partial<BackoffConfig>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Options for attested methods when only a reencrypt public key is provided.
|
|
15
|
+
* The KMS encrypts the result under the provided key; caller receives ciphertext.
|
|
16
|
+
*/
|
|
17
|
+
export type AttestedOptsEncrypted = {
|
|
18
|
+
reencryptPubKey: Uint8Array;
|
|
19
|
+
reencryptKeypair?: never;
|
|
20
|
+
backoffConfig?: Partial<BackoffConfig>;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Options for attested methods when both a reencrypt key and keypair are provided.
|
|
24
|
+
* The KMS reencrypts under the public key; the SDK decrypts locally using the keypair.
|
|
25
|
+
*/
|
|
26
|
+
export type AttestedOptsDecrypted = {
|
|
27
|
+
reencryptPubKey: Uint8Array;
|
|
28
|
+
reencryptKeypair: XwingKeypair;
|
|
29
|
+
backoffConfig?: Partial<BackoffConfig>;
|
|
30
|
+
};
|
|
31
|
+
/** Union of all valid opts for attestedDecrypt / attestedCompute. */
|
|
32
|
+
export type AttestedOpts = AttestedOptsEphemeral | AttestedOptsEncrypted | AttestedOptsDecrypted;
|
|
33
|
+
/** Extends the base opts with voucher-specific fields for WithVoucher methods. */
|
|
34
|
+
export type AttestedWithVoucherOptsEphemeral = AttestedOptsEphemeral & {
|
|
35
|
+
requesterArgData?: HexString;
|
|
36
|
+
};
|
|
37
|
+
export type AttestedWithVoucherOptsEncrypted = AttestedOptsEncrypted & {
|
|
38
|
+
requesterArgData?: HexString;
|
|
39
|
+
};
|
|
40
|
+
export type AttestedWithVoucherOptsDecrypted = AttestedOptsDecrypted & {
|
|
41
|
+
requesterArgData?: HexString;
|
|
42
|
+
};
|
|
43
|
+
export type AttestedWithVoucherOpts = AttestedWithVoucherOptsEphemeral | AttestedWithVoucherOptsEncrypted | AttestedWithVoucherOptsDecrypted;
|
|
44
|
+
/** Options for attestedReveal. */
|
|
45
|
+
export type AttestedRevealOpts = {
|
|
46
|
+
backoffConfig?: Partial<BackoffConfig>;
|
|
47
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGl0ZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
package/dist/cjs/lite/xwing.d.ts
CHANGED
|
@@ -5,8 +5,33 @@ import { PubKeyEncodable } from '../reencryption/index.js';
|
|
|
5
5
|
* Combining ML-KEM-768 (1184 bytes) and X25519 (32 bytes).
|
|
6
6
|
*/
|
|
7
7
|
export declare const XWING_PUBLIC_KEY_SIZE: number;
|
|
8
|
+
/**
|
|
9
|
+
* WARNING: TEST KEY - DO NOT USE IN PRODUCTION
|
|
10
|
+
* This is a well-known test seed (all zeros) that provides NO security.
|
|
11
|
+
* Anyone can derive the private key from this seed and decrypt all data.
|
|
12
|
+
* Only use for local development and testing.
|
|
13
|
+
*/
|
|
8
14
|
export declare const TEST_NETWORK_SEED_KEY = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
15
|
+
/**
|
|
16
|
+
* WARNING: TEST KEY - DO NOT USE IN PRODUCTION
|
|
17
|
+
* This is the public key derived from TEST_NETWORK_SEED_KEY (all zeros).
|
|
18
|
+
* Data encrypted with this key can be decrypted by anyone who knows the seed.
|
|
19
|
+
* Only use for local development and testing.
|
|
20
|
+
*
|
|
21
|
+
* Generated from Go with seed of all zeros using HPKE layer: hpke.KEM_XWING.Scheme().DeriveKeyPair(seed)
|
|
22
|
+
* This matches the key used in covalidator's GetXwingPrivateKeyForTesting() via DeriveXwingPrivateKey
|
|
23
|
+
*/
|
|
9
24
|
export declare const TEST_NETWORK_XWING_PUBKEY = "0xca882388911c7c762aafc20debd63e845b3bed28c9d5262cdea7771fb31bd660a1ae7b395a9a7df3d12c7b118e8eda5057572c1ba05cd9b635edf33dabca4cac7291e0848f19c20e5beb850c3818f3543d49b3a5c729cb86a28fda539775d04feda112fe0c81d138aaf623aea7d507a4e826e890105db6065a44aba76a10d771c00d1b33f4ac51869806aae18eada68f19047024542d64a7aa1c91a5e1aa49d93613b5224b415bcc7aa166e4b55033438d20c641f9664fdb1689b53208181463e3d1325d46b30f07c5945b7e3fa1418bf833d975258461b294664eaf60795964924a280729c10a37fc6e967440bdd55d4ca53596286383481291152365303d44517cef369c00933b0b30368a230353e729c031075e8388673678a56b3ba84a165b28096ee9bd684483e1844258b451c365c41fa534152a3b64120041450128e960c7d6437d717ee266bdde7aaeec225ed93b958d188e97407349f1382976ca47d761ecc59a6f394487eb015c083abb490584677240eb47f838c838568a496119378b8bb81484610a50792b5d9c9939db188e7d0249d3cb918c436f111a2898849b286b0743a22c57464c709c5eaceac1ba493adca3328c0b14b5e38d3aea74e328b622b17e7181c35ad11c2103bdb7f2b209d93dcbc4ab61a06bc37139e6d2b7a06c5b7e9267bef3a8918a706f793271a5acc2574532da79e5a10cf074b998147a3c43586a411a513bba0d11cc19a36c83b19277f28022c88b120abfdba7076a8263e05336e3245aef7033eb3c762b5bbfa5791ac960398b649d5cbb652ddc6b2398143a0861ab3b410b696328879c099098adf819fbf7ac170030e86675e7f45c22ac9e1cf52c3102487bb0b91ab592afdc69c6e3a9b71876b86260b6c736b8291098f1130d3b763525cbad540ce2d042eacb6ed43b7bcba898f712c412f26066e09945f44ec7026c8ef959831abc10719d2017a12a41728b41c02371a5f5756ebc79406be708ea41bbd21563c874a0b791a3b4e4224a609967004f065c5ab4f3b4c61cb35df70573269da53179c3701fc5205f61974426f9b794c1b5826494b70842b6920c17752029369264dc8590b898b85c9d89a258e1f46c1b0490efd17c485cb51687cea272041e90b8e629521d3c5e3fa7518161bad7a159295b63cc6c0077897b53d47db8bc0ecb820f550705b65715a1a1094d04854f56acd26aa0baa10cb8447fad6211f53105796a42882328e6852e8de821c283b51eaab9bc95c4dc53615626049d63b1f9a457193805276b1905b0ab39353b5cf91fdd6023d4d816aef9cce4a3cfb3d12190172df221ae61d427563a098cc60e3dc9997ef54959180be5dc64a911157db6be3a01be2ee343caab33b8729abf0c50c674758c511291941fceac646232920907c2e88b9ec10211161729c797643a553a6ae5c4b7483c04e3263bd291e311c609071348b7c3310aa97d6b8318e0a4afe8399fa22f951049a9bb8860f7c69a333d3cc1aaf0129ab560713bf29eb3a01f9a276c78e54e3a3648b2447c80242b271b11406866389426d8b59796540d6b5702092ab21ee217c075cfc0c17ef826ce9ea29b9e61617457a5b1aaa23a58615dc53c59183beb36ea19498c21820b70ab47adeb678f1c52bf8768b3597b608ea1a8a15cd62e8a29bec4a1ac248ef9f02de0144bca06025f95a42bd6c8eaaaaaa2366328561d";
|
|
25
|
+
/**
|
|
26
|
+
* Check if a byte array matches the test seed key.
|
|
27
|
+
* Logs a warning if it does.
|
|
28
|
+
*/
|
|
29
|
+
export declare function warnIfTestSeed(seed: Uint8Array): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a byte array matches the test public key.
|
|
32
|
+
* Logs a warning if it does.
|
|
33
|
+
*/
|
|
34
|
+
export declare function warnIfTestPubKey(pubKeyBytes: Uint8Array): boolean;
|
|
10
35
|
/**
|
|
11
36
|
* X-Wing keypair interface.
|
|
12
37
|
* X-Wing is a post-quantum hybrid KEM combining ML-KEM-768 and X25519.
|
|
@@ -72,7 +97,7 @@ export type XwingDecryptorArgs = {
|
|
|
72
97
|
/**
|
|
73
98
|
* Encrypt using X-Wing HPKE (RFC 9180) with ChaCha20-Poly1305 AEAD.
|
|
74
99
|
*
|
|
75
|
-
* Output format: encappedKey (
|
|
100
|
+
* Output format: encappedKey (1120 bytes) || ciphertext (variable length)
|
|
76
101
|
*
|
|
77
102
|
* @param pubKeyA - Recipient's public key
|
|
78
103
|
* @param msg - Message to encrypt
|
|
@@ -84,7 +109,7 @@ export declare function encrypt(pubKeyA: CryptoKey, msg: Uint8Array, aad?: Uint8
|
|
|
84
109
|
/**
|
|
85
110
|
* Decrypt using X-Wing HPKE (RFC 9180) with ChaCha20-Poly1305 AEAD.
|
|
86
111
|
*
|
|
87
|
-
* Input format: encappedKey (
|
|
112
|
+
* Input format: encappedKey (1120 bytes) || ciphertext (variable length)
|
|
88
113
|
*
|
|
89
114
|
* @param privKeyA - Recipient's private key
|
|
90
115
|
* @param encryptedData - Encrypted data (encappedKey || ciphertext)
|
|
@@ -121,3 +146,9 @@ export declare function getXwingEncryptor({ pubKeyA, }: XwingEncryptorArgs): Enc
|
|
|
121
146
|
* @returns Decryptor function
|
|
122
147
|
*/
|
|
123
148
|
export declare function getXwingDecryptor({ privKeyA, }: XwingDecryptorArgs): Decryptor<XwingScheme>;
|
|
149
|
+
/**
|
|
150
|
+
* Returns true if the raw public key bytes match the public key encoded by the keypair.
|
|
151
|
+
* Used to catch caller mistakes before sending the keypair to the covalidator, where a
|
|
152
|
+
* mismatch would produce a cryptic signature error instead of a clear failure.
|
|
153
|
+
*/
|
|
154
|
+
export declare function reencryptPublicKeysMatch(reencryptPubKey: Uint8Array, reencryptKeypair: XwingKeypair): boolean;
|
package/dist/cjs/lite/xwing.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TEST_NETWORK_XWING_PUBKEY = exports.TEST_NETWORK_SEED_KEY = exports.XWING_PUBLIC_KEY_SIZE = void 0;
|
|
4
|
+
exports.warnIfTestSeed = warnIfTestSeed;
|
|
5
|
+
exports.warnIfTestPubKey = warnIfTestPubKey;
|
|
4
6
|
exports.deriveXwingKeypairFromSeed = deriveXwingKeypairFromSeed;
|
|
5
7
|
exports.generateXwingKeypair = generateXwingKeypair;
|
|
6
8
|
exports.decodeXwingPublicKey = decodeXwingPublicKey;
|
|
@@ -10,6 +12,7 @@ exports.encrypt = encrypt;
|
|
|
10
12
|
exports.decrypt = decrypt;
|
|
11
13
|
exports.getXwingEncryptor = getXwingEncryptor;
|
|
12
14
|
exports.getXwingDecryptor = getXwingDecryptor;
|
|
15
|
+
exports.reencryptPublicKeysMatch = reencryptPublicKeysMatch;
|
|
13
16
|
const chacha20poly1305_1 = require("@hpke/chacha20poly1305");
|
|
14
17
|
const core_1 = require("@hpke/core");
|
|
15
18
|
const hybridkem_x_wing_1 = require("@hpke/hybridkem-x-wing");
|
|
@@ -25,12 +28,49 @@ const xwingKem = new hybridkem_x_wing_1.XWing();
|
|
|
25
28
|
* Combining ML-KEM-768 (1184 bytes) and X25519 (32 bytes).
|
|
26
29
|
*/
|
|
27
30
|
exports.XWING_PUBLIC_KEY_SIZE = xwingKem.publicKeySize;
|
|
28
|
-
|
|
31
|
+
/**
|
|
32
|
+
* WARNING: TEST KEY - DO NOT USE IN PRODUCTION
|
|
33
|
+
* This is a well-known test seed (all zeros) that provides NO security.
|
|
34
|
+
* Anyone can derive the private key from this seed and decrypt all data.
|
|
35
|
+
* Only use for local development and testing.
|
|
36
|
+
*/
|
|
29
37
|
exports.TEST_NETWORK_SEED_KEY = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
const TEST_NETWORK_SEED_BYTES = (0, binary_js_1.bytesFromHexString)(exports.TEST_NETWORK_SEED_KEY);
|
|
39
|
+
/**
|
|
40
|
+
* WARNING: TEST KEY - DO NOT USE IN PRODUCTION
|
|
41
|
+
* This is the public key derived from TEST_NETWORK_SEED_KEY (all zeros).
|
|
42
|
+
* Data encrypted with this key can be decrypted by anyone who knows the seed.
|
|
43
|
+
* Only use for local development and testing.
|
|
44
|
+
*
|
|
45
|
+
* Generated from Go with seed of all zeros using HPKE layer: hpke.KEM_XWING.Scheme().DeriveKeyPair(seed)
|
|
46
|
+
* This matches the key used in covalidator's GetXwingPrivateKeyForTesting() via DeriveXwingPrivateKey
|
|
47
|
+
*/
|
|
33
48
|
exports.TEST_NETWORK_XWING_PUBKEY = '0xca882388911c7c762aafc20debd63e845b3bed28c9d5262cdea7771fb31bd660a1ae7b395a9a7df3d12c7b118e8eda5057572c1ba05cd9b635edf33dabca4cac7291e0848f19c20e5beb850c3818f3543d49b3a5c729cb86a28fda539775d04feda112fe0c81d138aaf623aea7d507a4e826e890105db6065a44aba76a10d771c00d1b33f4ac51869806aae18eada68f19047024542d64a7aa1c91a5e1aa49d93613b5224b415bcc7aa166e4b55033438d20c641f9664fdb1689b53208181463e3d1325d46b30f07c5945b7e3fa1418bf833d975258461b294664eaf60795964924a280729c10a37fc6e967440bdd55d4ca53596286383481291152365303d44517cef369c00933b0b30368a230353e729c031075e8388673678a56b3ba84a165b28096ee9bd684483e1844258b451c365c41fa534152a3b64120041450128e960c7d6437d717ee266bdde7aaeec225ed93b958d188e97407349f1382976ca47d761ecc59a6f394487eb015c083abb490584677240eb47f838c838568a496119378b8bb81484610a50792b5d9c9939db188e7d0249d3cb918c436f111a2898849b286b0743a22c57464c709c5eaceac1ba493adca3328c0b14b5e38d3aea74e328b622b17e7181c35ad11c2103bdb7f2b209d93dcbc4ab61a06bc37139e6d2b7a06c5b7e9267bef3a8918a706f793271a5acc2574532da79e5a10cf074b998147a3c43586a411a513bba0d11cc19a36c83b19277f28022c88b120abfdba7076a8263e05336e3245aef7033eb3c762b5bbfa5791ac960398b649d5cbb652ddc6b2398143a0861ab3b410b696328879c099098adf819fbf7ac170030e86675e7f45c22ac9e1cf52c3102487bb0b91ab592afdc69c6e3a9b71876b86260b6c736b8291098f1130d3b763525cbad540ce2d042eacb6ed43b7bcba898f712c412f26066e09945f44ec7026c8ef959831abc10719d2017a12a41728b41c02371a5f5756ebc79406be708ea41bbd21563c874a0b791a3b4e4224a609967004f065c5ab4f3b4c61cb35df70573269da53179c3701fc5205f61974426f9b794c1b5826494b70842b6920c17752029369264dc8590b898b85c9d89a258e1f46c1b0490efd17c485cb51687cea272041e90b8e629521d3c5e3fa7518161bad7a159295b63cc6c0077897b53d47db8bc0ecb820f550705b65715a1a1094d04854f56acd26aa0baa10cb8447fad6211f53105796a42882328e6852e8de821c283b51eaab9bc95c4dc53615626049d63b1f9a457193805276b1905b0ab39353b5cf91fdd6023d4d816aef9cce4a3cfb3d12190172df221ae61d427563a098cc60e3dc9997ef54959180be5dc64a911157db6be3a01be2ee343caab33b8729abf0c50c674758c511291941fceac646232920907c2e88b9ec10211161729c797643a553a6ae5c4b7483c04e3263bd291e311c609071348b7c3310aa97d6b8318e0a4afe8399fa22f951049a9bb8860f7c69a333d3cc1aaf0129ab560713bf29eb3a01f9a276c78e54e3a3648b2447c80242b271b11406866389426d8b59796540d6b5702092ab21ee217c075cfc0c17ef826ce9ea29b9e61617457a5b1aaa23a58615dc53c59183beb36ea19498c21820b70ab47adeb678f1c52bf8768b3597b608ea1a8a15cd62e8a29bec4a1ac248ef9f02de0144bca06025f95a42bd6c8eaaaaaa2366328561d';
|
|
49
|
+
const TEST_NETWORK_PUBKEY_BYTES = (0, binary_js_1.bytesFromHexString)(exports.TEST_NETWORK_XWING_PUBKEY);
|
|
50
|
+
/**
|
|
51
|
+
* Check if a byte array matches the test seed key.
|
|
52
|
+
* Logs a warning if it does.
|
|
53
|
+
*/
|
|
54
|
+
function warnIfTestSeed(seed) {
|
|
55
|
+
const isTestSeed = seed.every((byte, i) => byte === TEST_NETWORK_SEED_BYTES[i]);
|
|
56
|
+
if (isTestSeed) {
|
|
57
|
+
console.warn('WARNING: Using TEST_NETWORK_SEED_KEY. This key provides no security ' +
|
|
58
|
+
'and should only be used for local development and testing.');
|
|
59
|
+
}
|
|
60
|
+
return isTestSeed;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if a byte array matches the test public key.
|
|
64
|
+
* Logs a warning if it does.
|
|
65
|
+
*/
|
|
66
|
+
function warnIfTestPubKey(pubKeyBytes) {
|
|
67
|
+
const isTestPubKey = pubKeyBytes.every((byte, i) => byte === TEST_NETWORK_PUBKEY_BYTES[i]);
|
|
68
|
+
if (isTestPubKey) {
|
|
69
|
+
console.warn('WARNING: Using TEST_NETWORK_XWING_PUBKEY. Data encrypted with this key ' +
|
|
70
|
+
'can be decrypted by anyone. Only use for local development and testing.');
|
|
71
|
+
}
|
|
72
|
+
return isTestPubKey;
|
|
73
|
+
}
|
|
34
74
|
/**
|
|
35
75
|
* Create HPKE cipher suite with X-Wing KEM, HKDF-SHA256, and ChaCha20-Poly1305 AEAD.
|
|
36
76
|
* This configuration provides post-quantum security with hybrid classical/PQ encryption.
|
|
@@ -59,6 +99,7 @@ async function deriveXwingKeypairFromSeed(seed) {
|
|
|
59
99
|
if (seed.length !== 32) {
|
|
60
100
|
throw new Error(`Invalid X-Wing seed length: expected 32 bytes, got ${seed.length}`);
|
|
61
101
|
}
|
|
102
|
+
warnIfTestSeed(seed);
|
|
62
103
|
const suite = await createXwingSuite();
|
|
63
104
|
// Create a fresh ArrayBuffer copy to avoid SharedArrayBuffer issues
|
|
64
105
|
const seedCopy = new Uint8Array(seed);
|
|
@@ -102,6 +143,7 @@ async function decodeXwingPublicKey(pubKeyBytes) {
|
|
|
102
143
|
if (pubKeyBytes.length !== suite.kem.publicKeySize) {
|
|
103
144
|
throw new Error(`Invalid X-Wing public key length: expected ${exports.XWING_PUBLIC_KEY_SIZE} bytes, got ${pubKeyBytes.length}`);
|
|
104
145
|
}
|
|
146
|
+
warnIfTestPubKey(pubKeyBytes);
|
|
105
147
|
// Create a fresh ArrayBuffer copy to avoid SharedArrayBuffer issues
|
|
106
148
|
const pubKeyCopy = new Uint8Array(pubKeyBytes);
|
|
107
149
|
return await suite.kem.deserializePublicKey(pubKeyCopy.buffer);
|
|
@@ -129,7 +171,7 @@ async function encodeXwingPublicKey(publicKey) {
|
|
|
129
171
|
/**
|
|
130
172
|
* Encrypt using X-Wing HPKE (RFC 9180) with ChaCha20-Poly1305 AEAD.
|
|
131
173
|
*
|
|
132
|
-
* Output format: encappedKey (
|
|
174
|
+
* Output format: encappedKey (1120 bytes) || ciphertext (variable length)
|
|
133
175
|
*
|
|
134
176
|
* @param pubKeyA - Recipient's public key
|
|
135
177
|
* @param msg - Message to encrypt
|
|
@@ -139,6 +181,9 @@ async function encodeXwingPublicKey(publicKey) {
|
|
|
139
181
|
*/
|
|
140
182
|
async function encrypt(pubKeyA, msg, aad = new Uint8Array(0), info = new Uint8Array(0)) {
|
|
141
183
|
const suite = await createXwingSuite();
|
|
184
|
+
// Warn if using the insecure test public key
|
|
185
|
+
const pubKeyBytes = new Uint8Array(await suite.kem.serializePublicKey(pubKeyA));
|
|
186
|
+
warnIfTestPubKey(pubKeyBytes);
|
|
142
187
|
// Create fresh ArrayBuffer copies to avoid SharedArrayBuffer issues
|
|
143
188
|
const infoCopy = new Uint8Array(info);
|
|
144
189
|
const sender = await suite.createSenderContext({
|
|
@@ -158,7 +203,7 @@ async function encrypt(pubKeyA, msg, aad = new Uint8Array(0), info = new Uint8Ar
|
|
|
158
203
|
/**
|
|
159
204
|
* Decrypt using X-Wing HPKE (RFC 9180) with ChaCha20-Poly1305 AEAD.
|
|
160
205
|
*
|
|
161
|
-
* Input format: encappedKey (
|
|
206
|
+
* Input format: encappedKey (1120 bytes) || ciphertext (variable length)
|
|
162
207
|
*
|
|
163
208
|
* @param privKeyA - Recipient's private key
|
|
164
209
|
* @param encryptedData - Encrypted data (encappedKey || ciphertext)
|
|
@@ -272,4 +317,14 @@ function getXwingDecryptor({ privKeyA, }) {
|
|
|
272
317
|
return (0, encryption_js_1.bytesToPlaintext)(computable.value.value, encryption_js_1.encryptionSchemes.xwing, typ);
|
|
273
318
|
};
|
|
274
319
|
}
|
|
275
|
-
|
|
320
|
+
/**
|
|
321
|
+
* Returns true if the raw public key bytes match the public key encoded by the keypair.
|
|
322
|
+
* Used to catch caller mistakes before sending the keypair to the covalidator, where a
|
|
323
|
+
* mismatch would produce a cryptic signature error instead of a clear failure.
|
|
324
|
+
*/
|
|
325
|
+
function reencryptPublicKeysMatch(reencryptPubKey, reencryptKeypair) {
|
|
326
|
+
const keypairPubKey = reencryptKeypair.encodePublicKey();
|
|
327
|
+
return (keypairPubKey.length === reencryptPubKey.length &&
|
|
328
|
+
keypairPubKey.every((byte, i) => byte === reencryptPubKey[i]));
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHdpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGl0ZS94d2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE4REEsd0NBV0M7QUFNRCw0Q0FXQztBQXdDRCxnRUE0QkM7QUFPRCxvREFlQztBQVFELG9EQWdCQztBQVNELHNEQUlDO0FBUUQsb0RBS0M7QUE2QkQsMEJBa0NDO0FBYUQsMEJBb0NDO0FBZUQsOENBc0RDO0FBZUQsOENBNENDO0FBT0QsNERBU0M7QUF0ZUQsNkRBQTBEO0FBQzFELHFDQUFxRDtBQUNyRCw2REFBK0M7QUFDL0MsNENBQXlFO0FBQ3pFLCtEQWNxQztBQUNyQyw0Q0FBK0Q7QUFFL0QsNENBQXFDO0FBQ3JDLHVDQUFxRDtBQUVyRCx3Q0FBd0M7QUFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSx3QkFBSyxFQUFFLENBQUM7QUFFN0I7OztHQUdHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDO0FBRTVEOzs7OztHQUtHO0FBQ1UsUUFBQSxxQkFBcUIsR0FDaEMsb0VBQW9FLENBQUM7QUFFdkUsTUFBTSx1QkFBdUIsR0FBRyxJQUFBLDhCQUFrQixFQUFDLDZCQUFxQixDQUFDLENBQUM7QUFFMUU7Ozs7Ozs7O0dBUUc7QUFDVSxRQUFBLHlCQUF5QixHQUNwQyxvNEVBQW80RSxDQUFDO0FBRXY0RSxNQUFNLHlCQUF5QixHQUFHLElBQUEsOEJBQWtCLEVBQUMsaUNBQXlCLENBQUMsQ0FBQztBQUVoRjs7O0dBR0c7QUFDSCxTQUFnQixjQUFjLENBQUMsSUFBZ0I7SUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDM0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQ2pELENBQUM7SUFDRixJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLElBQUksQ0FDVixz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
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
+
/**
|
|
3
|
+
* Schema for the environment variables required to connect to a local Inco node.
|
|
4
|
+
*
|
|
5
|
+
* Includes executor/sender addresses, keys, covalidator settings, and optional
|
|
6
|
+
* remote compute-server overrides. Typically populated from a `.env` file.
|
|
7
|
+
*/
|
|
2
8
|
export declare const LocalNodeEnv: Schema.Struct<{
|
|
3
9
|
DEPLOYER_ADDRESS: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
|
|
4
10
|
STATE_DUMP: typeof Schema.String;
|
|
@@ -14,6 +20,18 @@ export declare const LocalNodeEnv: Schema.Struct<{
|
|
|
14
20
|
COVALIDATOR_HOST_CHAIN_ID: Schema.optional<typeof Schema.String>;
|
|
15
21
|
COVALIDATOR_URL: Schema.optional<typeof Schema.String>;
|
|
16
22
|
COVALIDATOR_HOST_CHAIN_RPC_URL: Schema.optional<typeof Schema.String>;
|
|
23
|
+
COVALIDATOR_COMPUTE_TYPE: Schema.optional<typeof Schema.String>;
|
|
24
|
+
COVALIDATOR_STORAGE_KEY: Schema.optional<Schema.TemplateLiteral<`0x${string}`>>;
|
|
17
25
|
}>;
|
|
26
|
+
/** Parsed local node environment configuration. */
|
|
18
27
|
export type LocalNodeEnv = typeof LocalNodeEnv.Type;
|
|
28
|
+
/**
|
|
29
|
+
* Parses a dotenv-formatted string or `Buffer` into a validated {@link LocalNodeEnv}.
|
|
30
|
+
*
|
|
31
|
+
* Falls back to `process.env` when no argument is provided.
|
|
32
|
+
*
|
|
33
|
+
* @param envFileOrObj - A dotenv-formatted string, `Buffer`, or `undefined` to use `process.env`.
|
|
34
|
+
* @returns A validated `LocalNodeEnv` object.
|
|
35
|
+
* @throws If required environment variables are missing or invalid.
|
|
36
|
+
*/
|
|
19
37
|
export declare function parseLocalEnv(envFileOrObj?: string | Buffer): LocalNodeEnv;
|
|
@@ -4,6 +4,12 @@ exports.LocalNodeEnv = void 0;
|
|
|
4
4
|
exports.parseLocalEnv = parseLocalEnv;
|
|
5
5
|
const effect_1 = require("effect");
|
|
6
6
|
const binary_js_1 = require("../binary.js");
|
|
7
|
+
/**
|
|
8
|
+
* Schema for the environment variables required to connect to a local Inco node.
|
|
9
|
+
*
|
|
10
|
+
* Includes executor/sender addresses, keys, covalidator settings, and optional
|
|
11
|
+
* remote compute-server overrides. Typically populated from a `.env` file.
|
|
12
|
+
*/
|
|
7
13
|
exports.LocalNodeEnv = effect_1.Schema.Struct({
|
|
8
14
|
DEPLOYER_ADDRESS: binary_js_1.Address,
|
|
9
15
|
STATE_DUMP: effect_1.Schema.String,
|
|
@@ -23,9 +29,18 @@ exports.LocalNodeEnv = effect_1.Schema.Struct({
|
|
|
23
29
|
COVALIDATOR_HOST_CHAIN_ID: effect_1.Schema.optional(effect_1.Schema.String),
|
|
24
30
|
COVALIDATOR_URL: effect_1.Schema.optional(effect_1.Schema.String),
|
|
25
31
|
COVALIDATOR_HOST_CHAIN_RPC_URL: effect_1.Schema.optional(effect_1.Schema.String),
|
|
32
|
+
COVALIDATOR_COMPUTE_TYPE: effect_1.Schema.optional(effect_1.Schema.String),
|
|
33
|
+
COVALIDATOR_STORAGE_KEY: effect_1.Schema.optional(binary_js_1.HexString),
|
|
26
34
|
});
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Parses a dotenv-formatted string or `Buffer` into a validated {@link LocalNodeEnv}.
|
|
37
|
+
*
|
|
38
|
+
* Falls back to `process.env` when no argument is provided.
|
|
39
|
+
*
|
|
40
|
+
* @param envFileOrObj - A dotenv-formatted string, `Buffer`, or `undefined` to use `process.env`.
|
|
41
|
+
* @returns A validated `LocalNodeEnv` object.
|
|
42
|
+
* @throws If required environment variables are missing or invalid.
|
|
43
|
+
*/
|
|
29
44
|
function parseLocalEnv(envFileOrObj) {
|
|
30
45
|
const envObj = envFileOrObj ? readEnv(envFileOrObj) : process.env;
|
|
31
46
|
return effect_1.Schema.decodeUnknownSync(exports.LocalNodeEnv)(envObj);
|
|
@@ -62,4 +77,4 @@ function parseEnv(envContent) {
|
|
|
62
77
|
}
|
|
63
78
|
return env;
|
|
64
79
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbC9sb2NhbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTRDQSxzQ0FHQztBQS9DRCxtQ0FBZ0M7QUFDaEMsNENBQWtEO0FBRWxEOzs7OztHQUtHO0FBQ1UsUUFBQSxZQUFZLEdBQUcsZUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxnQkFBZ0IsRUFBRSxtQkFBTztJQUN6QixVQUFVLEVBQUUsZUFBTSxDQUFDLE1BQU07SUFDekIsZ0JBQWdCLEVBQUUsbUJBQU87SUFDekIsb0NBQW9DO0lBQ3BDLGNBQWMsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFTLENBQUM7SUFDMUMsY0FBYyxFQUFFLG1CQUFPO0lBQ3ZCLGtCQUFrQixFQUFFLHFCQUFTO0lBQzdCLG9DQUFvQztJQUNwQyxxQkFBcUIsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFTLENBQUM7SUFDakQsTUFBTSxFQUFFLGVBQU0sQ0FBQyxNQUFNO0lBQ3JCLG9DQUFvQztJQUNwQywrQkFBK0IsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFTLENBQUM7SUFDM0Qsb0NBQW9DO0lBQ3BDLHNDQUFzQyxFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMscUJBQVMsQ0FBQztJQUNsRSw4QkFBOEIsRUFBRSxtQkFBTztJQUN2Qyx5QkFBeUIsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDekQsZUFBZSxFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMsZUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMvQyw4QkFBOEIsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUQsd0JBQXdCLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3hELHVCQUF1QixFQUFFLGVBQU0sQ0FB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
|
|
@@ -14,9 +14,36 @@ declare const baseEIP712: Schema.Struct<{
|
|
|
14
14
|
}>>>;
|
|
15
15
|
}>;
|
|
16
16
|
type BaseEIP712 = typeof baseEIP712.Type;
|
|
17
|
+
/**
|
|
18
|
+
* An EIP-712 typed data payload with a generic `message` field.
|
|
19
|
+
*
|
|
20
|
+
* Extends the base EIP-712 structure (domain, primaryType, types) with
|
|
21
|
+
* a strongly-typed `message` object for signing.
|
|
22
|
+
*
|
|
23
|
+
* @typeParam Message - The shape of the application-specific message to sign.
|
|
24
|
+
*/
|
|
17
25
|
export interface EIP712<Message extends object> extends BaseEIP712 {
|
|
18
26
|
message: Message;
|
|
19
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates an EIP-712 typed data payload for user signing.
|
|
30
|
+
*
|
|
31
|
+
* Used to verify the user controls the private key corresponding to the ephemeral
|
|
32
|
+
* public key embedded in the payload. The `message` keys must exactly match the
|
|
33
|
+
* `name` values in `primaryTypeFields`.
|
|
34
|
+
*
|
|
35
|
+
* @typeParam PrimaryType - The EIP-712 primary type name.
|
|
36
|
+
* @typeParam Message - The shape of the message to sign.
|
|
37
|
+
* @param params.chainId - The chain ID for the EIP-712 domain.
|
|
38
|
+
* @param params.primaryType - The primary type name (e.g. `"Reencrypt"`).
|
|
39
|
+
* @param params.primaryTypeFields - The field definitions for the primary type.
|
|
40
|
+
* @param params.message - The message object to sign (must match `primaryTypeFields`).
|
|
41
|
+
* @param params.verifyingContract - Optional verifying contract address for the domain.
|
|
42
|
+
* @param params.domainName - Human-readable name for the EIP-712 domain.
|
|
43
|
+
* @param params.domainVersion - Version string for the EIP-712 domain.
|
|
44
|
+
* @returns A complete {@link EIP712} payload ready for signing.
|
|
45
|
+
* @throws If message keys do not match `primaryTypeFields` names.
|
|
46
|
+
*/
|
|
20
47
|
export declare function createEIP712Payload<PrimaryType extends string, Message extends object>({ chainId, primaryType, primaryTypeFields, message, verifyingContract, domainName, domainVersion, }: {
|
|
21
48
|
chainId: bigint;
|
|
22
49
|
primaryType: PrimaryType;
|
|
@@ -23,12 +23,25 @@ const baseEIP712 = effect_1.Schema.Struct({
|
|
|
23
23
|
})),
|
|
24
24
|
}),
|
|
25
25
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Creates an EIP-712 typed data payload for user signing.
|
|
28
|
+
*
|
|
29
|
+
* Used to verify the user controls the private key corresponding to the ephemeral
|
|
30
|
+
* public key embedded in the payload. The `message` keys must exactly match the
|
|
31
|
+
* `name` values in `primaryTypeFields`.
|
|
32
|
+
*
|
|
33
|
+
* @typeParam PrimaryType - The EIP-712 primary type name.
|
|
34
|
+
* @typeParam Message - The shape of the message to sign.
|
|
35
|
+
* @param params.chainId - The chain ID for the EIP-712 domain.
|
|
36
|
+
* @param params.primaryType - The primary type name (e.g. `"Reencrypt"`).
|
|
37
|
+
* @param params.primaryTypeFields - The field definitions for the primary type.
|
|
38
|
+
* @param params.message - The message object to sign (must match `primaryTypeFields`).
|
|
39
|
+
* @param params.verifyingContract - Optional verifying contract address for the domain.
|
|
40
|
+
* @param params.domainName - Human-readable name for the EIP-712 domain.
|
|
41
|
+
* @param params.domainVersion - Version string for the EIP-712 domain.
|
|
42
|
+
* @returns A complete {@link EIP712} payload ready for signing.
|
|
43
|
+
* @throws If message keys do not match `primaryTypeFields` names.
|
|
44
|
+
*/
|
|
32
45
|
function createEIP712Payload({ chainId, primaryType, primaryTypeFields, message, verifyingContract, domainName, domainVersion, }) {
|
|
33
46
|
const types = {
|
|
34
47
|
// This refers to the domain the contract is hosted on.
|
|
@@ -74,4 +87,4 @@ function createEIP712Payload({ chainId, primaryType, primaryTypeFields, message,
|
|
|
74
87
|
};
|
|
75
88
|
return msgParams;
|
|
76
89
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwNzEyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlZW5jcnlwdGlvbi9laXA3MTIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0REEsa0RBcUVDO0FBaklELG1DQUFnQztBQUVoQyw0Q0FBeUM7QUFFekMseUVBQXlFO0FBQ3pFLCtDQUErQztBQUMvQyxNQUFNLFVBQVUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQy9CLE1BQU0sRUFBRSxlQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3BCLE9BQU8sRUFBRSxlQUFNLENBQUMsTUFBTTtRQUN0QixJQUFJLEVBQUUsZUFBTSxDQUFDLE1BQU07UUFDbkIsT0FBTyxFQUFFLGVBQU0sQ0FBQyxNQUFNO1FBQ3RCLGlCQUFpQixFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMscUJBQVMsQ0FBQztRQUM3QywyRUFBMkU7UUFDM0Usc0JBQXNCO0tBQ3ZCLENBQUM7SUFDRixXQUFXLEVBQUUsZUFBTSxDQUFDLE1BQU07SUFDMUIsS0FBSyxFQUFFLGVBQU0sQ0FBQyxNQUFNLENBQUM7UUFDbkIsR0FBRyxFQUFFLGVBQU0sQ0FBQyxNQUFNO1FBQ2xCLEtBQUssRUFBRSxlQUFNLENBQUMsS0FBSyxDQUNqQixlQUFNLENBQUMsTUFBTSxDQUFDO1lBQ1osSUFBSSxFQUFFLGVBQU0sQ0FBQyxNQUFNO1lBQ25CLElBQUksRUFBRSxlQUFNLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQ0g7S0FDRixDQUFDO0NBQ0gsQ0FBQyxDQUFDO0FBZ0JIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxTQUFnQixtQkFBbUIsQ0FHakMsRUFDQSxPQUFPLEVBQ1AsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixhQUFhLEdBU2Q7SUFDQyxNQUFNLEtBQUssR0FBRztRQUNaLHVEQUF1RDtRQUN2RCxZQUFZLEVBQUU7WUFDWixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNuQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtTQUNyQztRQUNELHdCQUF3QjtRQUN4QixDQUFDLFdBQVcsQ0FBQyxFQUFFLGlCQUFpQjtLQUNqQyxDQUFDO0lBRUYsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNFLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZUFBZSxHQUFHLHVDQUF1QyxDQUMxRCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRztRQUNoQixLQUFLO1FBQ0wsNkZBQTZGO1FBQzdGLGdHQUFnRztRQUNoRyxzQkFBc0I7UUFDdEIseURBQXlEO1FBQ3pELFdBQVc7UUFDWCxNQUFNLEVBQUU7WUFDTix5RUFBeUU7WUFDekUsSUFBSSxFQUFFLFVBQVU7WUFDaEIsc0NBQXNDO1lBQ3RDLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLG1EQUFtRDtZQUNuRCxPQUFPO1lBQ1AsaUJBQWlCO1NBQ2xCO1FBQ0QsT0FBTztLQUNSLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIn0=
|
|
@@ -4,18 +4,42 @@ import { CiphertextOf, EncryptionScheme, PlaintextOf, SupportedFheType } from '.
|
|
|
4
4
|
import { Handle } from '../handle.js';
|
|
5
5
|
import type { XwingKeypair } from '../lite/xwing.js';
|
|
6
6
|
import type { BackoffConfig } from '../retry.js';
|
|
7
|
+
/**
|
|
8
|
+
* The core reencryption function type. Takes a handle (and optional ciphertext) and returns
|
|
9
|
+
* the decrypted plaintext. Supports retry configuration for handles that are not yet available.
|
|
10
|
+
*
|
|
11
|
+
* @typeParam S - The encryption scheme (e.g. X-Wing).
|
|
12
|
+
*/
|
|
7
13
|
export type Reencryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: ReencryptFnArgs<S, T>, backoffConfig?: Partial<BackoffConfig>) => Promise<PlaintextOf<S, T>>;
|
|
14
|
+
/** Arguments required to construct a {@link Reencryptor}. */
|
|
8
15
|
export interface ReencryptorArgs {
|
|
9
16
|
chainId: bigint;
|
|
10
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Arguments for a single reencryption call.
|
|
20
|
+
*
|
|
21
|
+
* @typeParam S - The encryption scheme.
|
|
22
|
+
* @typeParam T - The ENCRYPTION type of the ciphertext.
|
|
23
|
+
*/
|
|
11
24
|
export type ReencryptFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
|
|
12
25
|
handle: Handle;
|
|
26
|
+
/**
|
|
27
|
+
* Optional ciphertext hint. If provided, the reencrypt endpoint may use it directly
|
|
28
|
+
* instead of fetching from the covalidators.
|
|
29
|
+
*/
|
|
13
30
|
ciphertext?: CiphertextOf<S, T>;
|
|
14
31
|
};
|
|
32
|
+
/** Union of supported ephemeral keypair types for reencryption (currently X-Wing only). */
|
|
15
33
|
export type SupportedEphemeralKeypairs = XwingKeypair;
|
|
34
|
+
/** An object whose public key can be serialized to a `Uint8Array`. */
|
|
16
35
|
export interface PubKeyEncodable {
|
|
17
36
|
encodePublicKey(): Uint8Array;
|
|
18
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* A reencryption request to be sent to a reencrypt endpoint.
|
|
40
|
+
*
|
|
41
|
+
* @typeParam EKP - The type of ephemeral keypair used for the reencryption session.
|
|
42
|
+
*/
|
|
19
43
|
export interface ReencryptEndpointRequest<EKP extends SupportedEphemeralKeypairs> {
|
|
20
44
|
userAddress: Address;
|
|
21
45
|
handle: Handle;
|
package/dist/cjs/retry.d.ts
CHANGED
|
@@ -7,6 +7,20 @@ export type BackoffConfig = {
|
|
|
7
7
|
backoffFactor: number;
|
|
8
8
|
errHandler?: (error: Error, attempt: number) => 'stop' | 'continue';
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Checks if an error is safe to retry.
|
|
12
|
+
* Only transient errors matching the allowlist should return true.
|
|
13
|
+
* All other errors fail fast to avoid masking security-critical failures.
|
|
14
|
+
*
|
|
15
|
+
* @param error - The error to check
|
|
16
|
+
* @returns true if the error is transient and safe to retry, false otherwise
|
|
17
|
+
*/
|
|
18
|
+
export declare function isRetryableError(error: Error): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Default error handler that only retries known transient errors.
|
|
21
|
+
* Security-critical errors will fail fast.
|
|
22
|
+
*/
|
|
23
|
+
export declare function defaultRetryErrorHandler(error: Error): 'stop' | 'continue';
|
|
10
24
|
/**
|
|
11
25
|
* Helper function to implement exponential backoff retry logic.
|
|
12
26
|
* @param fn - The function to retry
|
package/dist/cjs/retry.js
CHANGED
|
@@ -1,6 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isRetryableError = isRetryableError;
|
|
4
|
+
exports.defaultRetryErrorHandler = defaultRetryErrorHandler;
|
|
3
5
|
exports.retryWithBackoff = retryWithBackoff;
|
|
6
|
+
/**
|
|
7
|
+
* Allowlist of transient error patterns that are safe to retry.
|
|
8
|
+
* Each pattern includes a substring to match (case-insensitive) and a description.
|
|
9
|
+
*
|
|
10
|
+
* SECURITY: Only add patterns here for genuinely transient errors.
|
|
11
|
+
* Do NOT add patterns that could mask security-critical errors like:
|
|
12
|
+
* - Authentication failures
|
|
13
|
+
* - Permission denied
|
|
14
|
+
* - Signature validation errors
|
|
15
|
+
* - Invalid input/format errors
|
|
16
|
+
*/
|
|
17
|
+
const RETRYABLE_ERROR_PATTERNS = [
|
|
18
|
+
// Explicit retry suggestions from the server
|
|
19
|
+
{
|
|
20
|
+
pattern: 'try again later',
|
|
21
|
+
description: 'Server explicitly suggests retry',
|
|
22
|
+
},
|
|
23
|
+
// Network/connectivity issues
|
|
24
|
+
{ pattern: 'timeout', description: 'Request timeout' },
|
|
25
|
+
{ pattern: 'etimedout', description: 'Connection timeout' },
|
|
26
|
+
{ pattern: 'econnreset', description: 'Connection reset' },
|
|
27
|
+
{ pattern: 'econnrefused', description: 'Connection refused' },
|
|
28
|
+
// Service availability
|
|
29
|
+
{ pattern: '503', description: 'Service unavailable (503)' },
|
|
30
|
+
{ pattern: 'service unavailable', description: 'Service unavailable' },
|
|
31
|
+
// Data propagation delays (eventual consistency)
|
|
32
|
+
{
|
|
33
|
+
pattern: 'ciphertext too short',
|
|
34
|
+
description: 'Ciphertext not yet propagated to covalidator',
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Checks if an error is safe to retry.
|
|
39
|
+
* Only transient errors matching the allowlist should return true.
|
|
40
|
+
* All other errors fail fast to avoid masking security-critical failures.
|
|
41
|
+
*
|
|
42
|
+
* @param error - The error to check
|
|
43
|
+
* @returns true if the error is transient and safe to retry, false otherwise
|
|
44
|
+
*/
|
|
45
|
+
function isRetryableError(error) {
|
|
46
|
+
const message = error.message?.toLowerCase() ?? '';
|
|
47
|
+
return RETRYABLE_ERROR_PATTERNS.some(({ pattern }) => message.includes(pattern));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Default error handler that only retries known transient errors.
|
|
51
|
+
* Security-critical errors will fail fast.
|
|
52
|
+
*/
|
|
53
|
+
function defaultRetryErrorHandler(error) {
|
|
54
|
+
if (isRetryableError(error)) {
|
|
55
|
+
console.warn(`Retrying after transient error: ${error.message}`);
|
|
56
|
+
return 'continue';
|
|
57
|
+
}
|
|
58
|
+
return 'stop';
|
|
59
|
+
}
|
|
4
60
|
/**
|
|
5
61
|
* Helper function to implement exponential backoff retry logic.
|
|
6
62
|
* @param fn - The function to retry
|
|
@@ -9,7 +65,7 @@ exports.retryWithBackoff = retryWithBackoff;
|
|
|
9
65
|
*/
|
|
10
66
|
async function retryWithBackoff(fn, {
|
|
11
67
|
// These default values will make it return an error after ~10s if the fn response is fast.
|
|
12
|
-
maxRetries = 5, baseDelayInMs = 1000, backoffFactor = 1.5, errHandler =
|
|
68
|
+
maxRetries = 5, baseDelayInMs = 1000, backoffFactor = 1.5, errHandler = defaultRetryErrorHandler, } = {}) {
|
|
13
69
|
let lastError;
|
|
14
70
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
15
71
|
try {
|
|
@@ -28,4 +84,4 @@ maxRetries = 5, baseDelayInMs = 1000, backoffFactor = 1.5, errHandler = () => 'c
|
|
|
28
84
|
}
|
|
29
85
|
throw lastError;
|
|
30
86
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3REEsNENBTUM7QUFNRCw0REFNQztBQVFELDRDQThCQztBQXRHRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSx3QkFBd0IsR0FHekI7SUFDSCw2Q0FBNkM7SUFDN0M7UUFDRSxPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFdBQVcsRUFBRSxrQ0FBa0M7S0FDaEQ7SUFFRCw4QkFBOEI7SUFDOUIsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRTtJQUN0RCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFO0lBQzNELEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUU7SUFDMUQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtJQUU5RCx1QkFBdUI7SUFDdkIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSwyQkFBMkIsRUFBRTtJQUM1RCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUU7SUFFdEUsaURBQWlEO0lBQ2pEO1FBQ0UsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixXQUFXLEVBQUUsOENBQThDO0tBQzVEO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFZO0lBQzNDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO0lBRW5ELE9BQU8sd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQ25ELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQzFCLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsS0FBWTtJQUNuRCxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDakUsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsRUFBb0IsRUFDcEI7QUFDRSwyRkFBMkY7QUFDM0YsVUFBVSxHQUFHLENBQUMsRUFDZCxhQUFhLEdBQUcsSUFBSSxFQUNwQixhQUFhLEdBQUcsR0FBRyxFQUNuQixVQUFVLEdBQUcsd0JBQXdCLE1BQ1gsRUFBRTtJQUU5QixJQUFJLFNBQTRCLENBQUM7SUFFakMsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQztZQUNILE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLFNBQVMsR0FBRyxLQUFjLENBQUM7WUFDM0IsSUFDRSxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxLQUFLLFVBQVU7Z0JBQzdDLE9BQU8sS0FBSyxVQUFVLEdBQUcsQ0FBQyxFQUMxQixDQUFDO2dCQUNELE1BQU07WUFDUixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQy9ELE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7WUFDOUYsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxTQUFTLENBQUM7QUFDbEIsQ0FBQyJ9
|
package/dist/cjs/test/mocks.d.ts
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import { Account, Chain, Transport, WalletClient } from 'viem';
|
|
1
|
+
import { Account, Chain, PublicClient, Transport, WalletClient } from 'viem';
|
|
2
2
|
import { vi } from 'vitest';
|
|
3
3
|
import { KmsClient } from '../kms/client.js';
|
|
4
4
|
import { KmsQuorumClient } from '../kms/quorumClient.js';
|
|
5
5
|
interface MinimalKmsClient {
|
|
6
6
|
attestedCompute: ReturnType<typeof vi.fn>;
|
|
7
7
|
attestedDecrypt: ReturnType<typeof vi.fn>;
|
|
8
|
+
attestedReveal: ReturnType<typeof vi.fn>;
|
|
9
|
+
eListAttestedDecrypt: ReturnType<typeof vi.fn>;
|
|
10
|
+
eListAttestedReveal: ReturnType<typeof vi.fn>;
|
|
8
11
|
key: ReturnType<typeof vi.fn>;
|
|
9
12
|
reencrypt: ReturnType<typeof vi.fn>;
|
|
10
13
|
}
|
|
11
14
|
export declare function createMockKmsClient(): MinimalKmsClient & KmsClient;
|
|
12
15
|
export declare function createMockQuorumClient(): KmsQuorumClient;
|
|
13
16
|
export declare function setupMockInQuorumClient(quorumClient: KmsQuorumClient, mockKmsClient: MinimalKmsClient & KmsClient): void;
|
|
17
|
+
export declare function createMockPublicClient(): PublicClient<Transport, Chain>;
|
|
14
18
|
export declare function createTestWalletClient(): WalletClient<Transport, Chain, Account>;
|
|
19
|
+
export declare function createFallbackWalletClient(): WalletClient<Transport, Chain, Account>;
|
|
15
20
|
export {};
|