@fhevm/sdk 1.0.0-alpha.4 → 1.0.0-alpha.5
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/_cjs/core/_version.js +1 -1
- package/_cjs/core/actions/base/fetchEncryptedValues.js +18 -0
- package/_cjs/core/actions/base/fetchEncryptedValues.js.map +1 -0
- package/_cjs/core/actions/base/index.js +3 -1
- package/_cjs/core/actions/base/index.js.map +1 -1
- package/_cjs/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +1 -1
- package/_cjs/core/actions/chain/createKmsUserDecryptEip712.js.map +1 -1
- package/_cjs/core/actions/chain/index.js +5 -5
- package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js +2 -2
- package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
- package/_cjs/core/actions/chain/parseTransportKeyPair.js +8 -0
- package/_cjs/core/actions/chain/parseTransportKeyPair.js.map +1 -0
- package/_cjs/core/actions/chain/serializeTransportKeyPair.js +8 -0
- package/_cjs/core/actions/chain/serializeTransportKeyPair.js.map +1 -0
- package/_cjs/core/actions/decrypt/generateTransportKeyPair.js +8 -0
- package/_cjs/core/actions/decrypt/generateTransportKeyPair.js.map +1 -0
- package/_cjs/core/actions/decrypt/index.js +3 -3
- package/_cjs/core/actions/decrypt/index.js.map +1 -1
- package/_cjs/core/base/address.js.map +1 -1
- package/_cjs/core/base/fetch.js +2 -2
- package/_cjs/core/base/fetch.js.map +1 -1
- package/_cjs/core/base/sign.js +12 -6
- package/_cjs/core/base/sign.js.map +1 -1
- package/_cjs/core/base/wasm.js +1 -1
- package/_cjs/core/base/wasm.js.map +1 -1
- package/_cjs/core/clients/decorators/base.js +4 -4
- package/_cjs/core/clients/decorators/decrypt.js +2 -2
- package/_cjs/core/coprocessor/ZkProof-p.js +2 -1
- package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_cjs/core/handle/EncryptedValue.js +0 -4
- package/_cjs/core/handle/EncryptedValue.js.map +1 -1
- package/_cjs/core/handle/FheType.js.map +1 -1
- package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js +3 -3
- package/_cjs/core/kms/SignedDecryptionPermit-p.js +9 -9
- package/_cjs/core/kms/SignedDecryptionPermit-p.js.map +1 -1
- package/_cjs/core/kms/{TransportKeypair-p.js → TransportKeyPair-p.js} +48 -48
- package/_cjs/core/kms/{TransportKeypair-p.js.map → TransportKeyPair-p.js.map} +1 -1
- package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js +3 -3
- package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js.map +1 -1
- package/_cjs/core/kms/decryptValuesFromPairs.js +2 -2
- package/_cjs/core/kms/decryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/kms/index.js +0 -1
- package/_cjs/core/modules/decrypt/mock.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/init-p.js +3 -7
- package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/mock.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/index.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/init-p.js +18 -13
- package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/guards/RelayerErrorBody.js +27 -0
- package/_cjs/core/modules/relayer/module/guards/RelayerErrorBody.js.map +1 -0
- package/_cjs/core/types/index.js +4 -0
- package/_cjs/core/types/index.js.map +1 -1
- package/_cjs/core/utils-p/decrypt/assertPermitMatchesKeyPair.js +14 -0
- package/_cjs/core/utils-p/decrypt/{assertPermitMatchesKeypair.js.map → assertPermitMatchesKeyPair.js.map} +1 -1
- package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -1
- package/_esm/core/_version.js +1 -1
- package/_esm/core/actions/base/fetchEncryptedValues.js +16 -0
- package/_esm/core/actions/base/fetchEncryptedValues.js.map +1 -0
- package/_esm/core/actions/base/index.js +1 -0
- package/_esm/core/actions/base/index.js.map +1 -1
- package/_esm/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +1 -1
- package/_esm/core/actions/chain/createKmsUserDecryptEip712.js.map +1 -1
- package/_esm/core/actions/chain/index.js +2 -2
- package/_esm/core/actions/chain/parseSignedDecryptionPermit.js +3 -3
- package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
- package/_esm/core/actions/chain/parseTransportKeyPair.js +5 -0
- package/_esm/core/actions/chain/parseTransportKeyPair.js.map +1 -0
- package/_esm/core/actions/chain/serializeTransportKeyPair.js +5 -0
- package/_esm/core/actions/chain/{serializeTransportKeypair.js.map → serializeTransportKeyPair.js.map} +1 -1
- package/_esm/core/actions/decrypt/generateTransportKeyPair.js +6 -0
- package/_esm/core/actions/decrypt/{generateTransportKeypair.js.map → generateTransportKeyPair.js.map} +1 -1
- package/_esm/core/actions/decrypt/index.js +3 -1
- package/_esm/core/actions/decrypt/index.js.map +1 -1
- package/_esm/core/base/address.js.map +1 -1
- package/_esm/core/base/fetch.js +2 -2
- package/_esm/core/base/fetch.js.map +1 -1
- package/_esm/core/base/sign.js +15 -8
- package/_esm/core/base/sign.js.map +1 -1
- package/_esm/core/base/wasm.js +1 -1
- package/_esm/core/base/wasm.js.map +1 -1
- package/_esm/core/clients/decorators/base.js +4 -4
- package/_esm/core/clients/decorators/decrypt.js +2 -2
- package/_esm/core/coprocessor/ZkProof-p.js +3 -2
- package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_esm/core/handle/EncryptedValue.js +0 -3
- package/_esm/core/handle/EncryptedValue.js.map +1 -1
- package/_esm/core/handle/FheType.js +10 -17
- package/_esm/core/handle/FheType.js.map +1 -1
- package/_esm/core/host-contracts/canDecryptValuesFromPairs.js +3 -3
- package/_esm/core/kms/SignedDecryptionPermit-p.js +9 -9
- package/_esm/core/kms/SignedDecryptionPermit-p.js.map +1 -1
- package/_esm/core/kms/{TransportKeypair-p.js → TransportKeyPair-p.js} +55 -55
- package/_esm/core/kms/{TransportKeypair-p.js.map → TransportKeyPair-p.js.map} +1 -1
- package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js +4 -4
- package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js.map +1 -1
- package/_esm/core/kms/decryptValuesFromPairs.js +2 -2
- package/_esm/core/kms/decryptValuesFromPairs.js.map +1 -1
- package/_esm/core/modules/decrypt/mock.js.map +1 -1
- package/_esm/core/modules/decrypt/module/init-p.js +13 -11
- package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/encrypt/mock.js.map +1 -1
- package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/encrypt/module/index.js.map +1 -1
- package/_esm/core/modules/encrypt/module/init-p.js +34 -17
- package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/guards/RelayerErrorBody.js +24 -0
- package/_esm/core/modules/relayer/module/guards/RelayerErrorBody.js.map +1 -0
- package/_esm/core/types/index.js +1 -1
- package/_esm/core/types/index.js.map +1 -1
- package/_esm/core/utils-p/decrypt/assertPermitMatchesKeyPair.js +19 -0
- package/_esm/core/utils-p/decrypt/{assertPermitMatchesKeypair.js.map → assertPermitMatchesKeyPair.js.map} +1 -1
- package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -1
- package/_types/core/actions/base/fetchEncryptedValues.d.ts +16 -0
- package/_types/core/actions/base/fetchEncryptedValues.d.ts.map +1 -0
- package/_types/core/actions/base/index.d.ts +1 -0
- package/_types/core/actions/base/index.d.ts.map +1 -1
- package/_types/core/actions/chain/createKmsDelegatedUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/actions/chain/createKmsUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/actions/chain/index.d.ts +2 -2
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +4 -4
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
- package/_types/core/actions/chain/{parseTransportKeypair.d.ts → parseTransportKeyPair.d.ts} +5 -5
- package/_types/core/actions/chain/{parseTransportKeypair.d.ts.map → parseTransportKeyPair.d.ts.map} +1 -1
- package/_types/core/actions/chain/{serializeTransportKeypair.d.ts → serializeTransportKeyPair.d.ts} +6 -6
- package/_types/core/actions/chain/{serializeTransportKeypair.d.ts.map → serializeTransportKeyPair.d.ts.map} +1 -1
- package/_types/core/actions/decrypt/canDecryptValue.d.ts +4 -4
- package/_types/core/actions/decrypt/canDecryptValues.d.ts +2 -2
- package/_types/core/actions/decrypt/canDecryptValuesFromPairs.d.ts +2 -2
- package/_types/core/actions/decrypt/decryptKmsSignedcryptedShares.d.ts +2 -2
- package/_types/core/actions/decrypt/decryptValue.d.ts +2 -2
- package/_types/core/actions/decrypt/decryptValues.d.ts +2 -2
- package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts +2 -2
- package/_types/core/actions/decrypt/{generateTransportKeypair.d.ts → generateTransportKeyPair.d.ts} +4 -4
- package/_types/core/actions/decrypt/{generateTransportKeypair.d.ts.map → generateTransportKeyPair.d.ts.map} +1 -1
- package/_types/core/actions/decrypt/index.d.ts +3 -1
- package/_types/core/actions/decrypt/index.d.ts.map +1 -1
- package/_types/core/base/address.d.ts.map +1 -1
- package/_types/core/base/sign.d.ts.map +1 -1
- package/_types/core/clients/decorators/base.d.ts +6 -6
- package/_types/core/clients/decorators/base.d.ts.map +1 -1
- package/_types/core/clients/decorators/decrypt.d.ts +2 -2
- package/_types/core/coprocessor/ZkProof-p.d.ts +2 -1
- package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
- package/_types/core/handle/EncryptedValue.d.ts +0 -1
- package/_types/core/handle/EncryptedValue.d.ts.map +1 -1
- package/_types/core/handle/FheType.d.ts +10 -17
- package/_types/core/handle/FheType.d.ts.map +1 -1
- package/_types/core/host-contracts/canDecryptValuesFromPairs.d.ts +2 -2
- package/_types/core/kms/SignedDecryptionPermit-p.d.ts +6 -6
- package/_types/core/kms/{TransportKeypair-p.d.ts → TransportKeyPair-p.d.ts} +23 -23
- package/_types/core/kms/{TransportKeypair-p.d.ts.map → TransportKeyPair-p.d.ts.map} +1 -1
- package/_types/core/kms/decryptKmsSignedcryptedShares-p.d.ts +2 -2
- package/_types/core/kms/decryptValuesFromPairs.d.ts +3 -3
- package/_types/core/kms/index.d.ts +1 -1
- package/_types/core/kms/index.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/mock.d.ts +2 -2
- package/_types/core/modules/encrypt/mock.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/api-p.d.ts +2 -2
- package/_types/core/modules/encrypt/module/api-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/types.d.ts +2 -2
- package/_types/core/modules/encrypt/types.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/guards/RelayerErrorBody.d.ts +13 -0
- package/_types/core/modules/relayer/module/guards/RelayerErrorBody.d.ts.map +1 -0
- package/_types/core/types/index.d.ts +2 -0
- package/_types/core/types/index.d.ts.map +1 -1
- package/_types/core/utils-p/decrypt/assertPermitMatchesKeyPair.d.ts +12 -0
- package/_types/core/utils-p/decrypt/{assertPermitMatchesKeypair.d.ts.map → assertPermitMatchesKeyPair.d.ts.map} +1 -1
- package/core/_version.ts +1 -1
- package/core/actions/base/fetchEncryptedValues.ts +42 -0
- package/core/actions/base/index.ts +6 -0
- package/core/actions/chain/createKmsDelegatedUserDecryptEip712.ts +1 -2
- package/core/actions/chain/createKmsUserDecryptEip712.ts +1 -2
- package/core/actions/chain/index.ts +8 -8
- package/core/actions/chain/parseSignedDecryptionPermit.ts +6 -6
- package/core/actions/chain/{parseTransportKeypair.ts → parseTransportKeyPair.ts} +7 -7
- package/core/actions/chain/{serializeTransportKeypair.ts → serializeTransportKeyPair.ts} +10 -10
- package/core/actions/decrypt/canDecryptValue.ts +4 -4
- package/core/actions/decrypt/canDecryptValues.ts +2 -2
- package/core/actions/decrypt/canDecryptValuesFromPairs.ts +2 -2
- package/core/actions/decrypt/decryptKmsSignedcryptedShares.ts +2 -2
- package/core/actions/decrypt/decryptValue.ts +2 -2
- package/core/actions/decrypt/decryptValues.ts +2 -2
- package/core/actions/decrypt/decryptValuesFromPairs.ts +2 -2
- package/core/actions/decrypt/{generateTransportKeypair.ts → generateTransportKeyPair.ts} +7 -7
- package/core/actions/decrypt/index.ts +8 -4
- package/core/base/address.ts +2 -2
- package/core/base/fetch.ts +2 -2
- package/core/base/sign.ts +16 -8
- package/core/base/wasm.ts +1 -1
- package/core/clients/decorators/base.ts +18 -18
- package/core/clients/decorators/decrypt.ts +4 -4
- package/core/coprocessor/ZkProof-p.ts +6 -6
- package/core/handle/EncryptedValue.ts +0 -4
- package/core/handle/FheType.ts +10 -17
- package/core/host-contracts/canDecryptValuesFromPairs.ts +5 -5
- package/core/kms/SignedDecryptionPermit-p.ts +13 -13
- package/core/kms/{TransportKeypair-p.ts → TransportKeyPair-p.ts} +42 -42
- package/core/kms/decryptKmsSignedcryptedShares-p.ts +6 -6
- package/core/kms/decryptValuesFromPairs.ts +5 -5
- package/core/kms/index.ts +0 -1
- package/core/modules/decrypt/mock.ts +3 -3
- package/core/modules/decrypt/module/init-p.ts +13 -14
- package/core/modules/encrypt/mock.ts +4 -6
- package/core/modules/encrypt/module/api-p.ts +4 -6
- package/core/modules/encrypt/module/index.ts +2 -2
- package/core/modules/encrypt/module/init-p.ts +37 -21
- package/core/modules/encrypt/types.ts +2 -2
- package/core/modules/relayer/module/fetchPublicDecrypt.ts +2 -2
- package/core/modules/relayer/module/fetchUserDecrypt.ts +1 -2
- package/core/modules/relayer/module/guards/RelayerErrorBody.ts +33 -0
- package/core/types/index.ts +2 -0
- package/core/utils-p/decrypt/{assertPermitMatchesKeypair.ts → assertPermitMatchesKeyPair.ts} +9 -9
- package/core/utils-p/decrypt/verifyTkmsPublicKey.ts +1 -1
- package/package.json +3 -2
- package/_cjs/core/actions/chain/parseTransportKeypair.js +0 -8
- package/_cjs/core/actions/chain/parseTransportKeypair.js.map +0 -1
- package/_cjs/core/actions/chain/serializeTransportKeypair.js +0 -8
- package/_cjs/core/actions/chain/serializeTransportKeypair.js.map +0 -1
- package/_cjs/core/actions/decrypt/generateTransportKeypair.js +0 -8
- package/_cjs/core/actions/decrypt/generateTransportKeypair.js.map +0 -1
- package/_cjs/core/utils-p/decrypt/assertPermitMatchesKeypair.js +0 -14
- package/_esm/core/actions/chain/parseTransportKeypair.js +0 -5
- package/_esm/core/actions/chain/parseTransportKeypair.js.map +0 -1
- package/_esm/core/actions/chain/serializeTransportKeypair.js +0 -5
- package/_esm/core/actions/decrypt/generateTransportKeypair.js +0 -6
- package/_esm/core/utils-p/decrypt/assertPermitMatchesKeypair.js +0 -19
- package/_types/core/utils-p/decrypt/assertPermitMatchesKeypair.d.ts +0 -12
- package/tsconfig.json +0 -9
- package/vitest.config.ts +0 -17
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FhevmRuntime } from '../../../types/coreFhevmRuntime.js';
|
|
2
2
|
import type {
|
|
3
|
-
|
|
3
|
+
BuildWithProofPackedParameters,
|
|
4
4
|
DeserializeFheEncryptionCrsParameters,
|
|
5
5
|
DeserializeFheEncryptionPublicKeyParameters,
|
|
6
6
|
EncryptModuleFactory,
|
|
@@ -31,7 +31,7 @@ export const encryptModule: EncryptModuleFactory = (runtime: FhevmRuntime) => {
|
|
|
31
31
|
getTfheModuleInfo: () => getTfheModuleInfo(),
|
|
32
32
|
parseTFHEProvenCompactCiphertextList: (args: ParseTFHEProvenCompactCiphertextListParameters) =>
|
|
33
33
|
parseTFHEProvenCompactCiphertextList(runtime, args),
|
|
34
|
-
buildWithProofPacked: (args:
|
|
34
|
+
buildWithProofPacked: (args: BuildWithProofPackedParameters) => buildWithProofPacked(runtime, args),
|
|
35
35
|
serializeFheEncryptionKey: (args: SerializeFheEncryptionKeyParameters) =>
|
|
36
36
|
serializeFheEncryptionKey(runtime, args),
|
|
37
37
|
serializeFheEncryptionPublicKey: (args: SerializeFheEncryptionPublicKeyParameters) =>
|
|
@@ -63,16 +63,28 @@ type ResolvedTfheModuleConfig = {
|
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
let resolvedTfheModuleConfig: ResolvedTfheModuleConfig | undefined = undefined;
|
|
66
|
+
let resolvingTfheModuleConfigPromise: Promise<ResolvedTfheModuleConfig> | undefined;
|
|
66
67
|
|
|
67
68
|
/**
|
|
68
69
|
* @internal
|
|
69
70
|
* Returns the existing resolved config, or resolves it from the runtime config.
|
|
70
71
|
*/
|
|
71
72
|
async function _getOrResolveTfheModuleConfig(runtime: FhevmRuntime): Promise<ResolvedTfheModuleConfig> {
|
|
72
|
-
if (resolvedTfheModuleConfig !== undefined)
|
|
73
|
+
if (resolvedTfheModuleConfig !== undefined) {
|
|
74
|
+
return resolvedTfheModuleConfig;
|
|
75
|
+
}
|
|
73
76
|
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
resolvingTfheModuleConfigPromise ??= _resolveTfheModuleConfig(runtime.config)
|
|
78
|
+
.then((cfg) => {
|
|
79
|
+
resolvedTfheModuleConfig = cfg;
|
|
80
|
+
return cfg;
|
|
81
|
+
})
|
|
82
|
+
.catch((error: unknown) => {
|
|
83
|
+
resolvingTfheModuleConfigPromise = undefined;
|
|
84
|
+
throw error;
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
return resolvingTfheModuleConfigPromise;
|
|
76
88
|
}
|
|
77
89
|
|
|
78
90
|
/**
|
|
@@ -81,10 +93,6 @@ async function _getOrResolveTfheModuleConfig(runtime: FhevmRuntime): Promise<Res
|
|
|
81
93
|
* (thread count, worker URL, WASM URL). Must be called before WASM initialization.
|
|
82
94
|
*/
|
|
83
95
|
async function _resolveTfheModuleConfig(parameters: FhevmRuntimeConfig): Promise<ResolvedTfheModuleConfig> {
|
|
84
|
-
if (cachedTfheModulePromise !== undefined) {
|
|
85
|
-
throw new Error('Cannot configure module after initialization has started');
|
|
86
|
-
}
|
|
87
|
-
|
|
88
96
|
const { locateFile, singleThread: singleThreadConfig, numberOfThreads: numberOfThreadsConfig } = parameters;
|
|
89
97
|
|
|
90
98
|
let singleThread = false;
|
|
@@ -181,22 +189,30 @@ export async function initTfheModule(runtime: FhevmRuntime): Promise<void> {
|
|
|
181
189
|
|
|
182
190
|
ownerUid = runtime.uid;
|
|
183
191
|
|
|
184
|
-
|
|
185
|
-
|
|
192
|
+
// Cache the whole initialization promise before the first await. Several
|
|
193
|
+
// clients may call initTfheModule concurrently during startup; if the promise
|
|
194
|
+
// were assigned after resolving the config, each caller could enter
|
|
195
|
+
// _initTfheModule and try to start the global TFHE worker pool independently.
|
|
196
|
+
// The worker pool is process-wide and startWorkers() is intentionally
|
|
197
|
+
// one-shot, so every concurrent caller must await this same promise.
|
|
198
|
+
//
|
|
199
|
+
// Retry is not supported:
|
|
200
|
+
// -----------------------
|
|
201
|
+
// TFHE/WASM initialization and worker startup mutate
|
|
202
|
+
// lower-level module globals that cannot be reset reliably after a partial
|
|
203
|
+
// failure. Keep even a rejected promise cached so later callers observe the
|
|
204
|
+
// original initialization error instead of retrying against half-initialized
|
|
205
|
+
// state and producing secondary errors such as "Already started".
|
|
206
|
+
|
|
207
|
+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
|
208
|
+
if (cachedTfheModulePromise === undefined) {
|
|
209
|
+
cachedTfheModulePromise = (async () => {
|
|
210
|
+
// resolve is async
|
|
211
|
+
const cfg = await _getOrResolveTfheModuleConfig(runtime);
|
|
212
|
+
await _initTfheModule(cfg);
|
|
213
|
+
})();
|
|
186
214
|
}
|
|
187
215
|
|
|
188
|
-
// Use existing config if already set, otherwise resolve from runtime
|
|
189
|
-
const cfg = await _getOrResolveTfheModuleConfig(runtime);
|
|
190
|
-
|
|
191
|
-
cachedTfheModulePromise = _initTfheModule(cfg);
|
|
192
|
-
|
|
193
|
-
// This is purely theoretical. Retry is not yet possible since the `_initTfheModule`
|
|
194
|
-
// does not support retry (see tfhe lib internal global variables).
|
|
195
|
-
cachedTfheModulePromise.catch(() => {
|
|
196
|
-
// Clear cache on failure so retry is possible
|
|
197
|
-
cachedTfheModulePromise = undefined;
|
|
198
|
-
});
|
|
199
|
-
|
|
200
216
|
return cachedTfheModulePromise;
|
|
201
217
|
}
|
|
202
218
|
|
|
@@ -108,7 +108,7 @@ export type ParseTFHEProvenCompactCiphertextListModuleFunction = {
|
|
|
108
108
|
// 2. buildWithProofPacked
|
|
109
109
|
////////////////////////////////////////////////////////////////////////////////
|
|
110
110
|
|
|
111
|
-
export type
|
|
111
|
+
export type BuildWithProofPackedParameters = {
|
|
112
112
|
readonly fheEncryptionKey: FheEncryptionKeyWasm;
|
|
113
113
|
readonly typedValues: TypedValue[];
|
|
114
114
|
readonly metaData: Uint8Array;
|
|
@@ -121,7 +121,7 @@ export type BuildWithProofPackedReturnType = {
|
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
export type BuildWithProofPackedModuleFunction = {
|
|
124
|
-
buildWithProofPacked(parameters:
|
|
124
|
+
buildWithProofPacked(parameters: BuildWithProofPackedParameters): Promise<BuildWithProofPackedReturnType>;
|
|
125
125
|
};
|
|
126
126
|
|
|
127
127
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Bytes65Hex
|
|
1
|
+
import type { Bytes65Hex } from '../../../types/primitives.js';
|
|
2
2
|
import type { RelayerFetchPublicDecryptPayload } from '../../../types/relayer-p.js';
|
|
3
3
|
import type { FetchPublicDecryptResult } from '../../../types/relayer.js';
|
|
4
4
|
import type { FetchPublicDecryptParameters, FetchPublicDecryptReturnType, RelayerClientWithRuntime } from '../types.js';
|
|
@@ -33,7 +33,7 @@ export async function fetchPublicDecrypt(
|
|
|
33
33
|
const result = (await request.run()) as FetchPublicDecryptResult;
|
|
34
34
|
|
|
35
35
|
return {
|
|
36
|
-
orderedAbiEncodedClearValues: ensure0x(result.decryptedValue)
|
|
36
|
+
orderedAbiEncodedClearValues: ensure0x(result.decryptedValue),
|
|
37
37
|
kmsPublicDecryptEIP712Signatures: result.signatures.map(ensure0x) as Bytes65Hex[],
|
|
38
38
|
extraData: result.extraData,
|
|
39
39
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { KmsSigncryptedShare } from '../../../types/kms-p.js';
|
|
2
|
-
import type { Bytes65HexNo0x } from '../../../types/primitives.js';
|
|
3
2
|
import type { FetchUserDecryptPayload } from '../../../types/relayer-p.js';
|
|
4
3
|
import type { FetchUserDecryptResult } from '../../../types/relayer.js';
|
|
5
4
|
import type { FetchUserDecryptParameters, FetchUserDecryptReturnType, RelayerClientWithRuntime } from '../types.js';
|
|
@@ -38,7 +37,7 @@ export async function fetchUserDecrypt(
|
|
|
38
37
|
contractsChainId,
|
|
39
38
|
contractAddresses: payload.kmsDecryptEip712Message.contractAddresses,
|
|
40
39
|
userAddress: payload.kmsDecryptEip712Signer,
|
|
41
|
-
signature: remove0x(payload.kmsDecryptEip712Signature)
|
|
40
|
+
signature: remove0x(payload.kmsDecryptEip712Signature),
|
|
42
41
|
extraData: payload.kmsDecryptEip712Message.extraData,
|
|
43
42
|
publicKey: remove0x(payload.kmsDecryptEip712Message.publicKey),
|
|
44
43
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
type RelayerErrorBody = {
|
|
2
|
+
error: {
|
|
3
|
+
label: string;
|
|
4
|
+
message: string;
|
|
5
|
+
details?: ReadonlyArray<{ field: string; issue: string }>;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export function isRelayerErrorBody(bodyJson: Record<string, unknown>): bodyJson is RelayerErrorBody {
|
|
10
|
+
const error = bodyJson.error as Record<string, unknown> | undefined;
|
|
11
|
+
if (!error || typeof error !== 'object' || Array.isArray(error)) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (typeof error.label !== 'string' || typeof error.message !== 'string') {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
if (error.details !== undefined) {
|
|
18
|
+
if (!Array.isArray(error.details)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
for (const d of error.details) {
|
|
22
|
+
if (
|
|
23
|
+
d === undefined ||
|
|
24
|
+
typeof d !== 'object' ||
|
|
25
|
+
typeof (d as { field: unknown }).field !== 'string' ||
|
|
26
|
+
typeof (d as { issue: unknown }).issue !== 'string'
|
|
27
|
+
) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
package/core/types/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export type { TypedValue } from './primitives.js';
|
|
2
2
|
export type { EncryptedValue, EncryptedValueLike } from './encryptedTypes.js';
|
|
3
3
|
export type { KmsDecryptEip712Like } from './kms.js';
|
|
4
|
+
export type { FhevmEncryptClient, FhevmDecryptClient } from './fhevmClient.js';
|
|
5
|
+
export { asEncryptedValue, isEncryptedValue } from '../handle/EncryptedValue.js';
|
package/core/utils-p/decrypt/{assertPermitMatchesKeypair.ts → assertPermitMatchesKeyPair.ts}
RENAMED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TransportKeyPair } from '../../kms/TransportKeyPair-p.js';
|
|
2
2
|
import type { SignedDecryptionPermit } from '../../types/signedDecryptionPermit.js';
|
|
3
|
-
import {
|
|
3
|
+
import { assertIsTransportKeyPair } from '../../kms/TransportKeyPair-p.js';
|
|
4
4
|
import { assertIsSignedDecryptionPermit } from '../../kms/SignedDecryptionPermit-p.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Asserts that the permit's publicKey matches the
|
|
7
|
+
* Asserts that the permit's publicKey matches the key pair's publicKey.
|
|
8
8
|
*
|
|
9
9
|
* Both values are validated via `instanceof` before comparison.
|
|
10
10
|
*
|
|
11
11
|
* @throws {InvalidTypeError} If either value is not the expected type.
|
|
12
12
|
* @throws If the public keys do not match.
|
|
13
13
|
*/
|
|
14
|
-
export function
|
|
14
|
+
export function assertPermitMatchesKeyPair(
|
|
15
15
|
signedPermit: SignedDecryptionPermit,
|
|
16
|
-
|
|
16
|
+
transportKeyPair: TransportKeyPair,
|
|
17
17
|
): void {
|
|
18
18
|
assertIsSignedDecryptionPermit(signedPermit, {});
|
|
19
|
-
|
|
19
|
+
assertIsTransportKeyPair(transportKeyPair, {});
|
|
20
20
|
|
|
21
|
-
if (signedPermit.e2eTransportPublicKey.toLowerCase() !==
|
|
21
|
+
if (signedPermit.e2eTransportPublicKey.toLowerCase() !== transportKeyPair.publicKey.toLowerCase()) {
|
|
22
22
|
throw new Error(
|
|
23
|
-
"The permit's publicKey does not match the
|
|
24
|
-
'Ensure the permit was signed with the same
|
|
23
|
+
"The permit's publicKey does not match the E2eTransportKeyPair's publicKey. " +
|
|
24
|
+
'Ensure the permit was signed with the same key pair.',
|
|
25
25
|
);
|
|
26
26
|
}
|
|
27
27
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fhevm/sdk",
|
|
3
3
|
"description": "TypeScript Interface for FHEVM",
|
|
4
|
-
"version": "1.0.0-alpha.
|
|
4
|
+
"version": "1.0.0-alpha.5",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./_cjs/index.js",
|
|
7
7
|
"module": "./_esm/index.js",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"!**/*.test.ts",
|
|
14
14
|
"!**/*.template",
|
|
15
15
|
"!**/*.tsbuildinfo",
|
|
16
|
-
"!
|
|
16
|
+
"!vitest.config.ts",
|
|
17
|
+
"!tsconfig.json"
|
|
17
18
|
],
|
|
18
19
|
"exports": {
|
|
19
20
|
".": {
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseTransportKeypair = parseTransportKeypair;
|
|
4
|
-
const TransportKeypair_p_js_1 = require("../../kms/TransportKeypair-p.js");
|
|
5
|
-
async function parseTransportKeypair(fhevm, parameters) {
|
|
6
|
-
return (0, TransportKeypair_p_js_1.toTransportKeypair)(fhevm, parameters);
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=parseTransportKeypair.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseTransportKeypair.js","sourceRoot":"","sources":["../../../../core/actions/chain/parseTransportKeypair.ts"],"names":[],"mappings":";;AAcA,sDAKC;AAhBD,2EAA4F;AAWrF,KAAK,UAAU,qBAAqB,CACzC,KAA4D,EAC5D,UAA2C;IAE3C,OAAO,IAAA,0CAAkB,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serializeTransportKeypair = serializeTransportKeypair;
|
|
4
|
-
const TransportKeypair_p_js_1 = require("../../kms/TransportKeypair-p.js");
|
|
5
|
-
function serializeTransportKeypair(_fhevm, parameters) {
|
|
6
|
-
return (0, TransportKeypair_p_js_1.serializeTransportKeypair)(parameters.transportKeypair);
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=serializeTransportKeypair.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializeTransportKeypair.js","sourceRoot":"","sources":["../../../../core/actions/chain/serializeTransportKeypair.ts"],"names":[],"mappings":";;AAoBA,8DAKC;AArBD,2EAGyC;AAazC,SAAgB,yBAAyB,CACvC,MAA6D,EAC7D,UAA+C;IAE/C,OAAO,IAAA,iDAA0B,EAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateTransportKeypair = generateTransportKeypair;
|
|
4
|
-
const TransportKeypair_p_js_1 = require("../../kms/TransportKeypair-p.js");
|
|
5
|
-
async function generateTransportKeypair(fhevm) {
|
|
6
|
-
return await (0, TransportKeypair_p_js_1.generateTransportKeypair)(fhevm);
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=generateTransportKeypair.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateTransportKeypair.js","sourceRoot":"","sources":["../../../../core/actions/decrypt/generateTransportKeypair.ts"],"names":[],"mappings":";;AAYA,4DAIC;AAbD,2EAGyC;AAMlC,KAAK,UAAU,wBAAwB,CAC5C,KAAuE;IAEvE,OAAO,MAAM,IAAA,gDAAyB,EAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.assertPermitMatchesKeypair = assertPermitMatchesKeypair;
|
|
4
|
-
const TransportKeypair_p_js_1 = require("../../kms/TransportKeypair-p.js");
|
|
5
|
-
const SignedDecryptionPermit_p_js_1 = require("../../kms/SignedDecryptionPermit-p.js");
|
|
6
|
-
function assertPermitMatchesKeypair(signedPermit, transportKeypair) {
|
|
7
|
-
(0, SignedDecryptionPermit_p_js_1.assertIsSignedDecryptionPermit)(signedPermit, {});
|
|
8
|
-
(0, TransportKeypair_p_js_1.assertIsTransportKeypair)(transportKeypair, {});
|
|
9
|
-
if (signedPermit.e2eTransportPublicKey.toLowerCase() !== transportKeypair.publicKey.toLowerCase()) {
|
|
10
|
-
throw new Error("The permit's publicKey does not match the E2eTransportKeypair's publicKey. " +
|
|
11
|
-
'Ensure the permit was signed with the same keypair.');
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=assertPermitMatchesKeypair.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseTransportKeypair.js","sourceRoot":"","sources":["../../../../core/actions/chain/parseTransportKeypair.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAyB,MAAM,iCAAiC,CAAC;AAW5F,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA4D,EAC5D,UAA2C;IAE3C,OAAO,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { serializeTransportKeypair as serializeTransportKeypair_, } from '../../kms/TransportKeypair-p.js';
|
|
2
|
-
export function serializeTransportKeypair(_fhevm, parameters) {
|
|
3
|
-
return serializeTransportKeypair_(parameters.transportKeypair);
|
|
4
|
-
}
|
|
5
|
-
//# sourceMappingURL=serializeTransportKeypair.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { generateTransportKeypair as generateTransportKeypair_, } from '../../kms/TransportKeypair-p.js';
|
|
2
|
-
export async function generateTransportKeypair(fhevm) {
|
|
3
|
-
return await generateTransportKeypair_(fhevm);
|
|
4
|
-
}
|
|
5
|
-
////////////////////////////////////////////////////////////////////////////////
|
|
6
|
-
//# sourceMappingURL=generateTransportKeypair.js.map
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { assertIsTransportKeypair } from '../../kms/TransportKeypair-p.js';
|
|
2
|
-
import { assertIsSignedDecryptionPermit } from '../../kms/SignedDecryptionPermit-p.js';
|
|
3
|
-
/**
|
|
4
|
-
* Asserts that the permit's publicKey matches the keypair's publicKey.
|
|
5
|
-
*
|
|
6
|
-
* Both values are validated via `instanceof` before comparison.
|
|
7
|
-
*
|
|
8
|
-
* @throws {InvalidTypeError} If either value is not the expected type.
|
|
9
|
-
* @throws If the public keys do not match.
|
|
10
|
-
*/
|
|
11
|
-
export function assertPermitMatchesKeypair(signedPermit, transportKeypair) {
|
|
12
|
-
assertIsSignedDecryptionPermit(signedPermit, {});
|
|
13
|
-
assertIsTransportKeypair(transportKeypair, {});
|
|
14
|
-
if (signedPermit.e2eTransportPublicKey.toLowerCase() !== transportKeypair.publicKey.toLowerCase()) {
|
|
15
|
-
throw new Error("The permit's publicKey does not match the E2eTransportKeypair's publicKey. " +
|
|
16
|
-
'Ensure the permit was signed with the same keypair.');
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=assertPermitMatchesKeypair.js.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { TransportKeypair } from '../../kms/TransportKeypair-p.js';
|
|
2
|
-
import type { SignedDecryptionPermit } from '../../types/signedDecryptionPermit.js';
|
|
3
|
-
/**
|
|
4
|
-
* Asserts that the permit's publicKey matches the keypair's publicKey.
|
|
5
|
-
*
|
|
6
|
-
* Both values are validated via `instanceof` before comparison.
|
|
7
|
-
*
|
|
8
|
-
* @throws {InvalidTypeError} If either value is not the expected type.
|
|
9
|
-
* @throws If the public keys do not match.
|
|
10
|
-
*/
|
|
11
|
-
export declare function assertPermitMatchesKeypair(signedPermit: SignedDecryptionPermit, transportKeypair: TransportKeypair): void;
|
|
12
|
-
//# sourceMappingURL=assertPermitMatchesKeypair.d.ts.map
|
package/tsconfig.json
DELETED
package/vitest.config.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'vitest/config';
|
|
2
|
-
|
|
3
|
-
export default defineConfig({
|
|
4
|
-
test: {
|
|
5
|
-
include: ['src/**/*.test.ts'],
|
|
6
|
-
exclude: ['src/index.hello.test.ts'],
|
|
7
|
-
reporters: ['verbose'],
|
|
8
|
-
passWithNoTests: false,
|
|
9
|
-
typecheck: { enabled: true },
|
|
10
|
-
coverage: {
|
|
11
|
-
provider: 'v8',
|
|
12
|
-
reporter: ['text'],
|
|
13
|
-
//include: ['src/**/*.ts'],
|
|
14
|
-
//exclude: ['src/**/*.test.ts', 'src/**/*.test-d.ts', 'src/vitest.config.ts'],
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
});
|