@fhevm/sdk 1.1.0-alpha.7 → 1.1.0-alpha.8
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 +5 -5
- package/_cjs/core/_version.js +1 -1
- package/_cjs/core/actions/encrypt/encryptValue.js +2 -1
- package/_cjs/core/actions/encrypt/encryptValue.js.map +1 -1
- package/_cjs/core/actions/encrypt/encryptValues.js +2 -1
- package/_cjs/core/actions/encrypt/encryptValues.js.map +1 -1
- package/_cjs/core/actions/encrypt/generateZkProof.js +2 -1
- package/_cjs/core/actions/encrypt/generateZkProof.js.map +1 -1
- package/_cjs/core/actions/host/readKmsVerifierContractData.js +1 -1
- package/_cjs/core/actions/host/readKmsVerifierContractData.js.map +1 -1
- package/_cjs/core/base/cachedFetch.js +1 -1
- package/_cjs/core/base/cachedFetch.js.map +1 -1
- package/_cjs/core/handle/FheType.js +4 -0
- package/_cjs/core/handle/FheType.js.map +1 -1
- package/_cjs/core/host-contracts/HostContractVersion-p.js +4 -0
- package/_cjs/core/host-contracts/HostContractVersion-p.js.map +1 -1
- package/_cjs/core/host-contracts/KmsSignersContext-p.js +15 -25
- package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
- package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +7 -6
- package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
- package/_cjs/core/host-contracts/readKmsSignersContext-p.js +54 -66
- package/_cjs/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
- package/_cjs/core/kms/KmsSigncryptedShares-p.js +40 -4
- package/_cjs/core/kms/KmsSigncryptedShares-p.js.map +1 -1
- package/_cjs/core/kms/PublicDecryptionProof-p.js +4 -3
- package/_cjs/core/kms/PublicDecryptionProof-p.js.map +1 -1
- package/_cjs/core/kms/SignedDecryptionPermitV1-p.js +1 -14
- package/_cjs/core/kms/SignedDecryptionPermitV1-p.js.map +1 -1
- package/_cjs/core/kms/SignedDecryptionPermitV2-p.js +3 -15
- package/_cjs/core/kms/SignedDecryptionPermitV2-p.js.map +1 -1
- package/_cjs/core/kms/createKmsDelegatedUserDecryptEip712V1.js +3 -4
- package/_cjs/core/kms/createKmsDelegatedUserDecryptEip712V1.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712V1.js +6 -5
- package/_cjs/core/kms/createKmsUserDecryptEip712V1.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712V2.js +4 -5
- package/_cjs/core/kms/createKmsUserDecryptEip712V2.js.map +1 -1
- package/_cjs/core/kms/fetchKmsSigncryptedSharesV1-p.js +1 -1
- package/_cjs/core/kms/fetchKmsSigncryptedSharesV1-p.js.map +1 -1
- package/_cjs/core/kms/fetchKmsSigncryptedSharesV2-p.js +1 -1
- package/_cjs/core/kms/fetchKmsSigncryptedSharesV2-p.js.map +1 -1
- package/_cjs/core/kms/kmsExtraData-p.js +234 -0
- package/_cjs/core/kms/kmsExtraData-p.js.map +1 -0
- package/_cjs/core/kms/publicDecrypt.js +4 -4
- package/_cjs/core/kms/publicDecrypt.js.map +1 -1
- package/_cjs/core/kms/verifyKmsPublicDecryptEip712-p.js +5 -4
- package/_cjs/core/kms/verifyKmsPublicDecryptEip712-p.js.map +1 -1
- package/_cjs/core/modules/decrypt/mock.js +6 -6
- package/_cjs/core/modules/decrypt/mock.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/api-p.js +7 -7
- package/_cjs/core/modules/decrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +53 -3
- package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +67 -21
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js +61 -4
- package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +9 -108
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV1.js +163 -0
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV1.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV2.js +7 -0
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV2.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/forgeFhevmV1.js +83 -0
- package/_cjs/core/modules/relayer/cleartext/forgeFhevmV1.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/mock.js +2 -2
- package/_cjs/core/modules/relayer/cleartext/mock.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/signers.js +14 -0
- package/_cjs/core/modules/relayer/cleartext/signers.js.map +1 -1
- package/_cjs/ethers/internal/ethereum-ct.js +11 -0
- package/_cjs/ethers/internal/ethereum-ct.js.map +1 -1
- package/_cjs/ethers/internal/runtime-ct.js +9 -7
- package/_cjs/ethers/internal/runtime-ct.js.map +1 -1
- package/_cjs/viem/internal/ethereum-ct.js +8 -0
- package/_cjs/viem/internal/ethereum-ct.js.map +1 -1
- package/_cjs/viem/internal/runtime-ct.js +9 -7
- package/_cjs/viem/internal/runtime-ct.js.map +1 -1
- package/_cjs/wasm/tfhe/loadTfheLib.js.map +1 -1
- package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
- package/_esm/core/_version.js +1 -1
- package/_esm/core/actions/encrypt/encryptValue.js +2 -1
- package/_esm/core/actions/encrypt/encryptValue.js.map +1 -1
- package/_esm/core/actions/encrypt/encryptValues.js +2 -1
- package/_esm/core/actions/encrypt/encryptValues.js.map +1 -1
- package/_esm/core/actions/encrypt/generateZkProof.js +2 -1
- package/_esm/core/actions/encrypt/generateZkProof.js.map +1 -1
- package/_esm/core/actions/host/readKmsVerifierContractData.js +2 -2
- package/_esm/core/actions/host/readKmsVerifierContractData.js.map +1 -1
- package/_esm/core/base/cachedFetch.js +1 -1
- package/_esm/core/base/cachedFetch.js.map +1 -1
- package/_esm/core/handle/FheType.js +10 -0
- package/_esm/core/handle/FheType.js.map +1 -1
- package/_esm/core/host-contracts/HostContractVersion-p.js +6 -0
- package/_esm/core/host-contracts/HostContractVersion-p.js.map +1 -1
- package/_esm/core/host-contracts/KmsSignersContext-p.js +16 -25
- package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
- package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +6 -5
- package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
- package/_esm/core/host-contracts/readKmsSignersContext-p.js +132 -68
- package/_esm/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
- package/_esm/core/kms/KmsSigncryptedShares-p.js +70 -4
- package/_esm/core/kms/KmsSigncryptedShares-p.js.map +1 -1
- package/_esm/core/kms/PublicDecryptionProof-p.js +4 -3
- package/_esm/core/kms/PublicDecryptionProof-p.js.map +1 -1
- package/_esm/core/kms/SignedDecryptionPermitV1-p.js +2 -32
- package/_esm/core/kms/SignedDecryptionPermitV1-p.js.map +1 -1
- package/_esm/core/kms/SignedDecryptionPermitV2-p.js +4 -16
- package/_esm/core/kms/SignedDecryptionPermitV2-p.js.map +1 -1
- package/_esm/core/kms/createKmsDelegatedUserDecryptEip712V1.js +3 -4
- package/_esm/core/kms/createKmsDelegatedUserDecryptEip712V1.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712V1.js +7 -6
- package/_esm/core/kms/createKmsUserDecryptEip712V1.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712V2.js +4 -5
- package/_esm/core/kms/createKmsUserDecryptEip712V2.js.map +1 -1
- package/_esm/core/kms/fetchKmsSigncryptedSharesV1-p.js +26 -2
- package/_esm/core/kms/fetchKmsSigncryptedSharesV1-p.js.map +1 -1
- package/_esm/core/kms/fetchKmsSigncryptedSharesV2-p.js +2 -2
- package/_esm/core/kms/fetchKmsSigncryptedSharesV2-p.js.map +1 -1
- package/_esm/core/kms/kmsExtraData-p.js +298 -0
- package/_esm/core/kms/kmsExtraData-p.js.map +1 -0
- package/_esm/core/kms/publicDecrypt.js +5 -5
- package/_esm/core/kms/publicDecrypt.js.map +1 -1
- package/_esm/core/kms/verifyKmsPublicDecryptEip712-p.js +5 -4
- package/_esm/core/kms/verifyKmsPublicDecryptEip712-p.js.map +1 -1
- package/_esm/core/modules/decrypt/mock.js +6 -6
- package/_esm/core/modules/decrypt/mock.js.map +1 -1
- package/_esm/core/modules/decrypt/module/api-p.js +7 -7
- package/_esm/core/modules/decrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +69 -12
- package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +76 -22
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js +77 -4
- package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +13 -114
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV1.js +173 -0
- package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV1.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV2.js +6 -0
- package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV2.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/forgeFhevmV1.js +140 -0
- package/_esm/core/modules/relayer/cleartext/forgeFhevmV1.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/mock.js +1 -1
- package/_esm/core/modules/relayer/cleartext/mock.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/signers.js +26 -0
- package/_esm/core/modules/relayer/cleartext/signers.js.map +1 -1
- package/_esm/ethers/internal/ethereum-ct.js +12 -1
- package/_esm/ethers/internal/ethereum-ct.js.map +1 -1
- package/_esm/ethers/internal/runtime-ct.js +9 -7
- package/_esm/ethers/internal/runtime-ct.js.map +1 -1
- package/_esm/viem/internal/ethereum-ct.js +10 -2
- package/_esm/viem/internal/ethereum-ct.js.map +1 -1
- package/_esm/viem/internal/runtime-ct.js +9 -7
- package/_esm/viem/internal/runtime-ct.js.map +1 -1
- package/_types/core/actions/encrypt/encryptValue.d.ts.map +1 -1
- package/_types/core/actions/encrypt/encryptValues.d.ts.map +1 -1
- package/_types/core/actions/encrypt/generateZkProof.d.ts.map +1 -1
- package/_types/core/base/cachedFetch.d.ts.map +1 -1
- package/_types/core/handle/FheType.d.ts +8 -0
- package/_types/core/handle/FheType.d.ts.map +1 -1
- package/_types/core/host-contracts/HostContractVersion-p.d.ts +8 -0
- package/_types/core/host-contracts/HostContractVersion-p.d.ts.map +1 -1
- package/_types/core/host-contracts/KmsSignersContext-p.d.ts +3 -2
- package/_types/core/host-contracts/KmsSignersContext-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts +3 -2
- package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts.map +1 -1
- package/_types/core/host-contracts/readKmsSignersContext-p.d.ts +43 -26
- package/_types/core/host-contracts/readKmsSignersContext-p.d.ts.map +1 -1
- package/_types/core/kms/KmsSigncryptedShares-p.d.ts +18 -0
- package/_types/core/kms/KmsSigncryptedShares-p.d.ts.map +1 -1
- package/_types/core/kms/PublicDecryptionProof-p.d.ts.map +1 -1
- package/_types/core/kms/SignedDecryptionPermitV1-p.d.ts.map +1 -1
- package/_types/core/kms/SignedDecryptionPermitV2-p.d.ts.map +1 -1
- package/_types/core/kms/createKmsDelegatedUserDecryptEip712V1.d.ts +2 -1
- package/_types/core/kms/createKmsDelegatedUserDecryptEip712V1.d.ts.map +1 -1
- package/_types/core/kms/createKmsUserDecryptEip712V1.d.ts +2 -1
- package/_types/core/kms/createKmsUserDecryptEip712V1.d.ts.map +1 -1
- package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts +2 -1
- package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts.map +1 -1
- package/_types/core/kms/fetchKmsSigncryptedSharesV1-p.d.ts.map +1 -1
- package/_types/core/kms/kmsExtraData-p.d.ts +66 -0
- package/_types/core/kms/kmsExtraData-p.d.ts.map +1 -0
- package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
- package/_types/core/kms/verifyKmsPublicDecryptEip712-p.d.ts.map +1 -1
- package/_types/core/modules/ethereum/types-ct.d.ts +20 -2
- package/_types/core/modules/ethereum/types-ct.d.ts.map +1 -1
- package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts.map +1 -1
- package/_types/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.d.ts → fetchDelegatedUserDecryptV1.d.ts} +1 -1
- package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts +2 -2
- package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/cleartext/fetchUserDecryptV1.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchUserDecryptV1.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchUserDecryptV2.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchUserDecryptV2.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/forgeFhevmV1.d.ts +29 -0
- package/_types/core/modules/relayer/cleartext/forgeFhevmV1.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/signers.d.ts +1 -0
- package/_types/core/modules/relayer/cleartext/signers.d.ts.map +1 -1
- package/_types/core/types/kms-p.d.ts +7 -1
- package/_types/core/types/kms-p.d.ts.map +1 -1
- package/_types/ethers/internal/ethereum-ct.d.ts.map +1 -1
- package/_types/ethers/internal/runtime-ct.d.ts.map +1 -1
- package/_types/viem/internal/ethereum-ct.d.ts.map +1 -1
- package/_types/viem/internal/runtime-ct.d.ts.map +1 -1
- package/core/_version.ts +1 -1
- package/core/actions/encrypt/encryptValue.ts +4 -1
- package/core/actions/encrypt/encryptValues.ts +5 -1
- package/core/actions/encrypt/generateZkProof.ts +2 -1
- package/core/actions/host/readKmsVerifierContractData.ts +2 -2
- package/core/base/cachedFetch.ts +1 -1
- package/core/handle/FheType.ts +11 -0
- package/core/host-contracts/HostContractVersion-p.ts +12 -0
- package/core/host-contracts/KmsSignersContext-p.ts +29 -36
- package/core/host-contracts/getKmsContextSignersAndThreshold-p.ts +1 -0
- package/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.ts +10 -7
- package/core/host-contracts/readKmsSignersContext-p.ts +156 -115
- package/core/kms/KmsSigncryptedShares-p.ts +87 -4
- package/core/kms/PublicDecryptionProof-p.ts +6 -4
- package/core/kms/SignedDecryptionPermitV1-p.ts +5 -47
- package/core/kms/SignedDecryptionPermitV2-p.ts +8 -25
- package/core/kms/createKmsDelegatedUserDecryptEip712V1.ts +5 -5
- package/core/kms/createKmsUserDecryptEip712V1.ts +9 -7
- package/core/kms/createKmsUserDecryptEip712V2.ts +6 -6
- package/core/kms/fetchKmsSigncryptedSharesV1-p.ts +27 -15
- package/core/kms/fetchKmsSigncryptedSharesV2-p.ts +2 -2
- package/core/kms/kmsExtraData-p.ts +374 -0
- package/core/kms/publicDecrypt.ts +8 -7
- package/core/kms/verifyKmsPublicDecryptEip712-p.ts +7 -5
- package/core/modules/decrypt/mock.ts +6 -6
- package/core/modules/decrypt/module/api-p.ts +7 -7
- package/core/modules/ethereum/types-ct.ts +25 -2
- package/core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts +98 -15
- package/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.ts → fetchDelegatedUserDecryptV1.ts} +115 -27
- package/core/modules/relayer/cleartext/fetchPublicDecrypt.ts +112 -6
- package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +24 -132
- package/core/modules/relayer/cleartext/fetchUserDecryptV1.ts +229 -0
- package/core/modules/relayer/cleartext/fetchUserDecryptV2.ts +11 -0
- package/core/modules/relayer/cleartext/forgeFhevmV1.ts +185 -0
- package/core/modules/relayer/cleartext/mock.ts +1 -1
- package/core/modules/relayer/cleartext/signers.ts +35 -0
- package/core/types/kms-p.ts +16 -1
- package/ethers/internal/ethereum-ct.ts +15 -1
- package/ethers/internal/runtime-ct.ts +9 -7
- package/package.json +1 -1
- package/viem/internal/ethereum-ct.ts +14 -2
- package/viem/internal/runtime-ct.ts +9 -7
- package/_cjs/core/kms/kmsExtraData.js +0 -82
- package/_cjs/core/kms/kmsExtraData.js.map +0 -1
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +0 -1
- package/_esm/core/kms/kmsExtraData.js +0 -99
- package/_esm/core/kms/kmsExtraData.js.map +0 -1
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +0 -1
- package/_types/core/kms/kmsExtraData.d.ts +0 -25
- package/_types/core/kms/kmsExtraData.d.ts.map +0 -1
- package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts.map +0 -1
- package/core/kms/kmsExtraData.ts +0 -127
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HostContractVersion-p.js","sourceRoot":"","sources":["../../../core/host-contracts/HostContractVersion-p.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HostContractVersion-p.js","sourceRoot":"","sources":["../../../core/host-contracts/HostContractVersion-p.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ import { InvalidTypeError } from '../base/errors/InvalidTypeError.js';
|
|
|
14
14
|
import { addressToChecksummedAddress } from '../base/address.js';
|
|
15
15
|
import { DuplicateSignerError, ThresholdSignerError, UnknownSignerError } from '../errors/SignersError.js';
|
|
16
16
|
import { assertOwnedBy } from '../runtime/CoreFhevmRuntime-p.js';
|
|
17
|
-
import { assertIsKmsExtraData, EXTRA_DATA_V0, EXTRA_DATA_V1, EXTRA_DATA_V2, toKmsExtraData, } from '../kms/kmsExtraData.js';
|
|
18
17
|
import { assertIsNonEmptyString, ensure0x } from '../base/string.js';
|
|
18
|
+
import { assertIsKmsExtraDataBytesHex, createKmsExtraData, equalsKmsExtraData, fromKmsExtraDataBytesHex, isKmsExtraData, validateKmsExtraDataParams, } from '../kms/kmsExtraData-p.js';
|
|
19
19
|
////////////////////////////////////////////////////////////////////////////////
|
|
20
20
|
const PRIVATE_TOKEN = Symbol('KmsSignersContext.token');
|
|
21
21
|
const VERIFY_FUNC = Symbol('KmsSignersContext.verify');
|
|
@@ -86,6 +86,7 @@ Object.freeze(KmsSignersContextImpl);
|
|
|
86
86
|
////////////////////////////////////////////////////////////////////////////////
|
|
87
87
|
export function createKmsSignersContext(owner, parameters) {
|
|
88
88
|
const { kmsVerifierAddress: address, kmsContextId, kmsEpochId, kmsSigners, kmsSignerThreshold } = parameters;
|
|
89
|
+
validateKmsExtraDataParams({ kmsContextId: parameters.kmsContextId, kmsEpochId: parameters.kmsEpochId });
|
|
89
90
|
return new KmsSignersContextImpl(PRIVATE_TOKEN, owner, {
|
|
90
91
|
address: addressToChecksummedAddress(address),
|
|
91
92
|
kmsContextId,
|
|
@@ -97,26 +98,9 @@ export function createKmsSignersContext(owner, parameters) {
|
|
|
97
98
|
////////////////////////////////////////////////////////////////////////////////
|
|
98
99
|
export function kmsSignersContextToExtraData(kmsSignersContext) {
|
|
99
100
|
assertIsKmsSignersContext(kmsSignersContext, {});
|
|
100
|
-
|
|
101
|
-
return toKmsExtraData({
|
|
102
|
-
version: EXTRA_DATA_V0,
|
|
103
|
-
kmsContextId: 0n,
|
|
104
|
-
kmsEpochId: 0n,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
if (kmsSignersContext.epochId === 0n) {
|
|
108
|
-
return toKmsExtraData({
|
|
109
|
-
version: EXTRA_DATA_V1,
|
|
110
|
-
kmsContextId: kmsSignersContext.id,
|
|
111
|
-
kmsEpochId: 0n,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
return toKmsExtraData({
|
|
115
|
-
version: EXTRA_DATA_V2,
|
|
116
|
-
kmsContextId: kmsSignersContext.id,
|
|
117
|
-
kmsEpochId: kmsSignersContext.epochId,
|
|
118
|
-
});
|
|
101
|
+
return createKmsExtraData({ kmsContextId: kmsSignersContext.id, kmsEpochId: kmsSignersContext.epochId });
|
|
119
102
|
}
|
|
103
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
120
104
|
/**
|
|
121
105
|
* Asserts that the given `extraData` is a valid KMS extra data string and
|
|
122
106
|
* matches the `extraData` derived from the provided {@link KmsSignersContext}.
|
|
@@ -126,12 +110,19 @@ export function kmsSignersContextToExtraData(kmsSignersContext) {
|
|
|
126
110
|
*/
|
|
127
111
|
export function assertExtraDataMatchesKmsSingersContext(parameters, options) {
|
|
128
112
|
const { extraData, kmsSignersContext } = parameters;
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
113
|
+
let sanitizedExtraData;
|
|
114
|
+
if (isKmsExtraData(extraData)) {
|
|
115
|
+
sanitizedExtraData = extraData;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
assertIsNonEmptyString(extraData);
|
|
119
|
+
const sanitizedExtraDataBytesHex = ensure0x(extraData);
|
|
120
|
+
assertIsKmsExtraDataBytesHex(sanitizedExtraDataBytesHex, options);
|
|
121
|
+
sanitizedExtraData = fromKmsExtraDataBytesHex(sanitizedExtraDataBytesHex);
|
|
122
|
+
}
|
|
132
123
|
const expectedExtraData = kmsSignersContextToExtraData(kmsSignersContext);
|
|
133
|
-
if (sanitizedExtraData
|
|
134
|
-
throw new Error(`extraData "${
|
|
124
|
+
if (!equalsKmsExtraData(sanitizedExtraData, expectedExtraData)) {
|
|
125
|
+
throw new Error(`extraData "${sanitizedExtraData.toBytesHex()}" does not match KmsSignersContext extraData "${expectedExtraData.toBytesHex()}".`);
|
|
135
126
|
}
|
|
136
127
|
}
|
|
137
128
|
export function extraDataMatchesKmsSingersContext(parameters) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KmsSignersContext-p.js","sourceRoot":"","sources":["../../../core/host-contracts/KmsSignersContext-p.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"KmsSignersContext-p.js","sourceRoot":"","sources":["../../../core/host-contracts/KmsSignersContext-p.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getKmsContextSignersAndThreshold-p.js","sourceRoot":"","sources":["../../../core/host-contracts/getKmsContextSignersAndThreshold-p.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAmB5E,gFAAgF;AAEhF,MAAM,sCAAsC,GAAG,iBAAiB,CAAkC;IAChG,SAAS,EAAE,iCAAiC;IAC5C,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE;IAClH,8EAA8E;IAC9E,KAAK,EAAE,eAAe;CACvB,CAAC,CAAC;AAEH,gFAAgF;AAEhF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAgB,EAChB,UAAwE;IAExE,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7E,CAAC;AAED,gFAAgF;AAEhF,KAAK,UAAU,iCAAiC,CAAC,OAAgB,EAAE,UAAsB;IACvF,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC7G,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;
|
|
1
|
+
{"version":3,"file":"getKmsContextSignersAndThreshold-p.js","sourceRoot":"","sources":["../../../core/host-contracts/getKmsContextSignersAndThreshold-p.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { getHostContractVersion, isVersionStrictlyBefore } from './HostContractVersion-p.js';
|
|
2
2
|
import { createCachedFetch } from '../base/cachedFetch.js';
|
|
3
|
-
import { assertIsKmsExtraData, fromKmsExtraData } from '../kms/kmsExtraData.js';
|
|
4
3
|
import { assertIsChecksummedAddressArray } from '../base/address.js';
|
|
5
4
|
import { isUint8 } from '../base/uint.js';
|
|
6
5
|
import { getContextSignersAndThresholdFromExtraDataAbi } from './abi-fragments/fragments.js';
|
|
7
6
|
import { getTrustedClient } from '../runtime/CoreFhevm-p.js';
|
|
7
|
+
import { assertIsKmsExtraData } from '../kms/kmsExtraData-p.js';
|
|
8
8
|
////////////////////////////////////////////////////////////////////////////////
|
|
9
9
|
const cachedGetKmsContextSignersAndThresholdFromExtraData = createCachedFetch({
|
|
10
10
|
executeFn: _getKmsContextSignersAndThresholdFromExtraData,
|
|
11
11
|
cacheKeyFn: (context, params) => {
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
return `${context.runtime.uid.toLowerCase()}:${params.kmsVerifierAddress.toLowerCase()}:${
|
|
12
|
+
const kmsContextId = params.extraData.kmsContextId;
|
|
13
|
+
const kmsContextIdHex = kmsContextId.toString(16).padStart(64, '0');
|
|
14
|
+
return `${context.runtime.uid.toLowerCase()}:${params.kmsVerifierAddress.toLowerCase()}:${kmsContextIdHex}`;
|
|
15
15
|
},
|
|
16
16
|
// Permanent cache: signers and threshold are immutable per context ID.
|
|
17
17
|
});
|
|
@@ -42,10 +42,11 @@ async function _getKmsContextSignersAndThresholdFromExtraData(context, parameter
|
|
|
42
42
|
throw new Error('getContextSignersAndThresholdFromExtraData requires KMSVerifier >= v0.2.0');
|
|
43
43
|
}
|
|
44
44
|
const trustedClient = getTrustedClient(context);
|
|
45
|
+
const extraDataBytesHex = parameters.extraData.toBytesHex();
|
|
45
46
|
const res = await context.runtime.ethereum.readContract(trustedClient, {
|
|
46
47
|
address: parameters.kmsVerifierAddress,
|
|
47
48
|
abi: getContextSignersAndThresholdFromExtraDataAbi,
|
|
48
|
-
args: [
|
|
49
|
+
args: [extraDataBytesHex],
|
|
49
50
|
functionName: getContextSignersAndThresholdFromExtraDataAbi[0].name,
|
|
50
51
|
});
|
|
51
52
|
if (!Array.isArray(res) || res.length < 2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getKmsContextSignersAndThresholdFromExtraData-p.js","sourceRoot":"","sources":["../../../core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getKmsContextSignersAndThresholdFromExtraData-p.js","sourceRoot":"","sources":["../../../core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,53 @@
|
|
|
1
|
-
import { assertIsKmsSignersContext, createKmsSignersContext
|
|
1
|
+
import { assertIsKmsSignersContext, createKmsSignersContext } from './KmsSignersContext-p.js';
|
|
2
2
|
import { getCurrentKmsContextId } from './getCurrentKmsContextId-p.js';
|
|
3
3
|
import { getCurrentKmsContextAndEpoch } from './getCurrentKmsContextAndEpoch-p.js';
|
|
4
4
|
import { getHostContractVersion, isVersionStrictlyBefore } from './HostContractVersion-p.js';
|
|
5
|
-
import { assertIsKmsExtraData,
|
|
5
|
+
import { assertIsKmsExtraData, createKmsExtraData, createKmsExtraDataV1, createKmsExtraDataV2, equalsKmsExtraData, fromKmsExtraDataBytesHex, isKmsExtraDataCompatibleWithKmsVerifier, } from '../kms/kmsExtraData-p.js';
|
|
6
6
|
import { getKmsContextSignersAndThresholdFromExtraData } from './getKmsContextSignersAndThresholdFromExtraData-p.js';
|
|
7
7
|
import { getKmsSignersAndThreshold } from './getKmsContextSignersAndThreshold-p.js';
|
|
8
8
|
////////////////////////////////////////////////////////////////////////////////
|
|
9
|
-
export async function
|
|
9
|
+
export async function readCurrentKmsSignersContext(context, parameters) {
|
|
10
|
+
return _readKmsSignersContext(context, parameters);
|
|
11
|
+
}
|
|
12
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
13
|
+
/**
|
|
14
|
+
* Reads the {@link KmsSignersContext} for a caller-provided `extraData`.
|
|
15
|
+
*
|
|
16
|
+
* Accepts an `extraData` of any version (v0, v1, v2, …); the underlying resolver
|
|
17
|
+
* selects the right protocol path and verifies the version is compatible with
|
|
18
|
+
* the on-chain KMSVerifier, throwing if it is not.
|
|
19
|
+
*/
|
|
20
|
+
export async function readKmsSignersContextFromExtraData(context, parameters) {
|
|
21
|
+
assertIsKmsExtraData(parameters.extraData, {});
|
|
22
|
+
return _readKmsSignersContext(context, parameters);
|
|
23
|
+
}
|
|
24
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
25
|
+
async function _readKmsSignersContext(context, parameters) {
|
|
10
26
|
// TTL-cached
|
|
11
27
|
const kmsVerifierVersion = await getHostContractVersion(context, {
|
|
12
28
|
address: parameters.kmsVerifierAddress,
|
|
13
29
|
});
|
|
30
|
+
if (parameters.extraData !== undefined) {
|
|
31
|
+
if (!isKmsExtraDataCompatibleWithKmsVerifier(parameters.extraData, kmsVerifierVersion)) {
|
|
32
|
+
throw new Error(`KmsExtraData ${parameters.extraData.toBytesHex()} is not compatible with ${kmsVerifierVersion.contractName} ${kmsVerifierVersion.version}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
14
35
|
if (isVersionStrictlyBefore(kmsVerifierVersion, { major: 0, minor: 2 })) {
|
|
36
|
+
// extraData.version = 0 only
|
|
15
37
|
return _readKmsSignersContext_Protocol_11(context, parameters);
|
|
16
38
|
}
|
|
17
39
|
if (isVersionStrictlyBefore(kmsVerifierVersion, { major: 0, minor: 4 })) {
|
|
40
|
+
// extraData.version = 0 or 1 only
|
|
18
41
|
return _readKmsSignersContext_Protocol_12_13(context, parameters);
|
|
19
42
|
}
|
|
20
|
-
|
|
43
|
+
// any extraData.version
|
|
44
|
+
return _readKmsSignersContext_Protocol_14_or_higher(context, parameters);
|
|
21
45
|
}
|
|
22
46
|
////////////////////////////////////////////////////////////////////////////////
|
|
23
47
|
// Protocol v0.11.0 (KMSVerifier < v0.2.0) had no context ID support, so the only valid
|
|
24
48
|
// context ID is 0. Any other value is invalid and should throw.
|
|
25
49
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
26
50
|
async function _readKmsSignersContext_Protocol_11(context, parameters) {
|
|
27
|
-
if (parameters.kmsContextId !== undefined && parameters.kmsContextId !== 0n) {
|
|
28
|
-
throw new Error('Impossible on protocol v0.11.0');
|
|
29
|
-
}
|
|
30
51
|
// TTL-Cached
|
|
31
52
|
const c = await getKmsSignersAndThreshold(context, parameters);
|
|
32
53
|
const data = createKmsSignersContext(new WeakRef(context.runtime), {
|
|
@@ -42,102 +63,146 @@ async function _readKmsSignersContext_Protocol_11(context, parameters) {
|
|
|
42
63
|
// Protocol v0.12.0 / v0.13.0 (KMSVerifier = v0.2.0 / v0.3.0)
|
|
43
64
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
44
65
|
async function _readKmsSignersContext_Protocol_12_13(context, parameters) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
66
|
+
// On protocol v0.12/v0.13, the KMS signers and threshold are looked up by
|
|
67
|
+
// `extraData` (which encodes the KMS context id). The caller may pass one in;
|
|
68
|
+
// if not, we derive it from the chain's current KMS context id using the v1
|
|
69
|
+
// extraData encoding (version byte + context id, no epoch).
|
|
70
|
+
let extraData;
|
|
71
|
+
if (parameters.extraData === undefined) {
|
|
50
72
|
// TTL-Cached
|
|
51
|
-
kmsContextId = await getCurrentKmsContextId(context, parameters);
|
|
73
|
+
const kmsContextId = await getCurrentKmsContextId(context, parameters);
|
|
74
|
+
extraData = createKmsExtraDataV1({
|
|
75
|
+
kmsContextId,
|
|
76
|
+
});
|
|
52
77
|
}
|
|
53
78
|
else {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
kmsContextId = parameters.kmsContextId;
|
|
79
|
+
// v0 or v1
|
|
80
|
+
extraData = parameters.extraData;
|
|
58
81
|
}
|
|
59
|
-
const extraData = toKmsExtraData({
|
|
60
|
-
version: EXTRA_DATA_V1,
|
|
61
|
-
kmsContextId,
|
|
62
|
-
kmsEpochId: 0n,
|
|
63
|
-
});
|
|
64
82
|
// Permanent-Cached
|
|
65
|
-
|
|
83
|
+
// On protocol v0.12/v0.13, getKmsContextSignersAndThresholdFromExtraData
|
|
84
|
+
// supports extraData v0 and v1 only.
|
|
85
|
+
const { signers: kmsSigners, threshold: kmsSignerThreshold } = await getKmsContextSignersAndThresholdFromExtraData(context, {
|
|
66
86
|
...parameters,
|
|
67
87
|
extraData,
|
|
68
88
|
});
|
|
69
89
|
return createKmsSignersContext(new WeakRef(context.runtime), {
|
|
70
90
|
...parameters,
|
|
71
|
-
kmsContextId,
|
|
91
|
+
kmsContextId: extraData.kmsContextId,
|
|
72
92
|
kmsEpochId: 0n,
|
|
73
|
-
kmsSigners
|
|
74
|
-
kmsSignerThreshold
|
|
93
|
+
kmsSigners,
|
|
94
|
+
kmsSignerThreshold,
|
|
75
95
|
});
|
|
76
96
|
}
|
|
77
97
|
////////////////////////////////////////////////////////////////////////////////
|
|
78
98
|
// Protocol v0.14.0+ (KMSVerifier = v0.4.0+)
|
|
79
99
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
80
|
-
async function
|
|
100
|
+
async function _readKmsSignersContext_Protocol_14_or_higher(context, parameters) {
|
|
81
101
|
if (parameters.protocolConfigAddress === undefined) {
|
|
82
102
|
throw new Error('protocolConfigAddress is required on protocol v0.14.0+');
|
|
83
103
|
}
|
|
84
104
|
const protocolConfigAddress = parameters.protocolConfigAddress;
|
|
85
|
-
let
|
|
86
|
-
if (parameters.
|
|
87
|
-
// TTL-Cached
|
|
88
|
-
({ contextId: kmsContextId } = await getCurrentKmsContextAndEpoch(context, { protocolConfigAddress }));
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
if (parameters.kmsContextId === 0n) {
|
|
92
|
-
throw new Error('kmsContextId cannot be 0 on protocol v0.14.0+');
|
|
93
|
-
}
|
|
94
|
-
kmsContextId = parameters.kmsContextId;
|
|
95
|
-
}
|
|
96
|
-
let kmsEpochId;
|
|
97
|
-
if (parameters.kmsEpochId === undefined) {
|
|
105
|
+
let extraData;
|
|
106
|
+
if (parameters.extraData === undefined) {
|
|
98
107
|
// TTL-Cached
|
|
99
|
-
|
|
108
|
+
const { contextId, epochId } = await getCurrentKmsContextAndEpoch(context, { protocolConfigAddress });
|
|
109
|
+
extraData = createKmsExtraDataV2({
|
|
110
|
+
kmsContextId: contextId,
|
|
111
|
+
kmsEpochId: epochId,
|
|
112
|
+
});
|
|
100
113
|
}
|
|
101
114
|
else {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
kmsEpochId = parameters.kmsEpochId;
|
|
115
|
+
// any version: v0, v1, v2, ... vn
|
|
116
|
+
extraData = parameters.extraData;
|
|
106
117
|
}
|
|
107
|
-
const extraData = toKmsExtraData({
|
|
108
|
-
version: EXTRA_DATA_V2,
|
|
109
|
-
kmsContextId,
|
|
110
|
-
kmsEpochId,
|
|
111
|
-
});
|
|
112
118
|
// Permanent-Cached
|
|
113
|
-
|
|
119
|
+
// May revert if extraData.version is incompatible (see `getKmsContextSignersAndThresholdFromExtraData` comments)
|
|
120
|
+
const { signers: kmsSigners, threshold: kmsSignerThreshold } = await getKmsContextSignersAndThresholdFromExtraData(context, {
|
|
114
121
|
...parameters,
|
|
115
122
|
extraData,
|
|
116
123
|
});
|
|
117
124
|
return createKmsSignersContext(new WeakRef(context.runtime), {
|
|
118
125
|
...parameters,
|
|
119
|
-
kmsContextId,
|
|
120
|
-
kmsEpochId,
|
|
121
|
-
kmsSigners
|
|
122
|
-
kmsSignerThreshold
|
|
126
|
+
kmsContextId: extraData.kmsContextId,
|
|
127
|
+
kmsEpochId: extraData.kmsEpochId,
|
|
128
|
+
kmsSigners,
|
|
129
|
+
kmsSignerThreshold,
|
|
123
130
|
});
|
|
124
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Reconciles the KMS signers context used by the SDK with the one the relayer
|
|
134
|
+
* actually used when forwarding the decryption request to KMS nodes.
|
|
135
|
+
*
|
|
136
|
+
* The returned {@link KmsSignersContext} provides the signers and threshold
|
|
137
|
+
* needed to verify the KMS signcrypted shares and reconstruct the decrypted values.
|
|
138
|
+
*
|
|
139
|
+
* ### Assumptions
|
|
140
|
+
*
|
|
141
|
+
* - The relayer **cannot be trusted**.
|
|
142
|
+
* - On-chain data is the **source of truth**.
|
|
143
|
+
*
|
|
144
|
+
* ### Nomenclature
|
|
145
|
+
*
|
|
146
|
+
* - `requestedKmsExtraData` — `createKmsExtraData({ kmsContextId, kmsEpochId })`
|
|
147
|
+
* derived from `requestedKmsSignersContext`.
|
|
148
|
+
* - `relayerKmsExtraData` — `fromKmsExtraDataBytesHex(relayerKmsExtraDataBytesHex)`
|
|
149
|
+
* (its `.kmsContextId` / `.kmsEpochId`).
|
|
150
|
+
*
|
|
151
|
+
* ### Host-Contract Compatibility
|
|
152
|
+
*
|
|
153
|
+
* `extraData` is versioned independently from the host-contract package. The
|
|
154
|
+
* currently supported combinations are:
|
|
155
|
+
*
|
|
156
|
+
* - host-contracts v11 support `extraData` v0.
|
|
157
|
+
* - host-contracts v12 and v13 support `extraData` v0 and v1.
|
|
158
|
+
* - host-contracts v14 support `extraData` v0, v1, and v2.
|
|
159
|
+
*
|
|
160
|
+
* ### Resolution (checked in order, then by `mode`)
|
|
161
|
+
*
|
|
162
|
+
* 1. `relayerKmsExtraData` equals `requestedKmsExtraData` → return
|
|
163
|
+
* `requestedKmsSignersContext`. This is the **only** path that trusts cached
|
|
164
|
+
* data, and it applies in every mode.
|
|
165
|
+
* 2. Otherwise, in `'exact'` mode → **throw**. This mode never parses, refreshes,
|
|
166
|
+
* or reconciles differing `extraData`.
|
|
167
|
+
* 3. `extraData` serialization version mismatch → **throw** (`'strict'`/`'loose'`).
|
|
168
|
+
* The SDK and relayer must agree on the encoding format, even for the same context ID.
|
|
169
|
+
* 4. Versions match but context/epoch differ → force a **full on-chain refetch**
|
|
170
|
+
* (cached data is never reused, since a mismatch means on-chain state may have
|
|
171
|
+
* diverged: rotation, destruction, signer/epoch changes). The accept criterion
|
|
172
|
+
* then depends on `mode`:
|
|
173
|
+
* - `'strict'` → accept **only** if the relayer's context equals the *current*
|
|
174
|
+
* on-chain context (both `kmsContextId` and `kmsEpochId`); otherwise throw.
|
|
175
|
+
* - `'loose'` → accept **any** on-chain-valid context (non-destroyed, in range),
|
|
176
|
+
* current or not; throw only if destroyed / out of range.
|
|
177
|
+
*
|
|
178
|
+
* ### Modes
|
|
179
|
+
*
|
|
180
|
+
* - `'exact'` — Accept only step 1 (`extraData` equality). Rejects any
|
|
181
|
+
* relayer/context drift without parsing or on-chain recovery.
|
|
182
|
+
* - `'strict'` — Accept step 1, or a relayer context whose `kmsContextId` **and**
|
|
183
|
+
* `kmsEpochId` equal the current on-chain values. Rejects valid-but-not-current
|
|
184
|
+
* contexts. The epoch check is required because RFC 005 introduces same-context
|
|
185
|
+
* epoch rotations (new shares, same party set) — a stale epoch must be rejected
|
|
186
|
+
* even when the context ID matches.
|
|
187
|
+
* - `'loose'` — Accept any on-chain valid context (non-destroyed, in range),
|
|
188
|
+
* regardless of whether it is current. Covers context rotations in either direction.
|
|
189
|
+
*/
|
|
125
190
|
export async function reconcileKmsSignersContext(context, parameters) {
|
|
126
|
-
const { kmsVerifierAddress, protocolConfigAddress, requestedKmsSignersContext,
|
|
127
|
-
|
|
191
|
+
const { kmsVerifierAddress, protocolConfigAddress, requestedKmsSignersContext, relayerKmsExtraDataBytesHex, mode } = parameters;
|
|
192
|
+
const relayerKmsExtraData = fromKmsExtraDataBytesHex(relayerKmsExtraDataBytesHex);
|
|
128
193
|
assertIsKmsSignersContext(requestedKmsSignersContext, {});
|
|
129
|
-
const
|
|
194
|
+
const requestedKmsExtraData = createKmsExtraData({
|
|
195
|
+
kmsContextId: requestedKmsSignersContext.id,
|
|
196
|
+
kmsEpochId: requestedKmsSignersContext.epochId,
|
|
197
|
+
});
|
|
130
198
|
// 1. Exact match — the relayer used the same context as the SDK.
|
|
131
|
-
if (
|
|
199
|
+
if (equalsKmsExtraData(relayerKmsExtraData, requestedKmsExtraData)) {
|
|
132
200
|
return requestedKmsSignersContext;
|
|
133
201
|
}
|
|
134
202
|
if (mode === 'exact') {
|
|
135
|
-
throw new Error(`Exact reconciliation failed: relayer extraData ${
|
|
136
|
-
`does not match requested extraData ${
|
|
203
|
+
throw new Error(`Exact reconciliation failed: relayer extraData ${relayerKmsExtraData.toBytesHex()} ` +
|
|
204
|
+
`does not match requested extraData ${requestedKmsExtraData.toBytesHex()}.`);
|
|
137
205
|
}
|
|
138
|
-
// Bytes differ — extract and compare serialization versions.
|
|
139
|
-
const relayerKmsExtraData = fromKmsExtraData(relayerExtraData);
|
|
140
|
-
const requestedKmsExtraData = fromKmsExtraData(requestedExtraData);
|
|
141
206
|
// Reject if extraData serialization version differs.
|
|
142
207
|
if (relayerKmsExtraData.version !== requestedKmsExtraData.version) {
|
|
143
208
|
throw new Error(`ExtraData serialization version mismatch: SDK uses v${requestedKmsExtraData.version}, ` +
|
|
@@ -151,7 +216,7 @@ export async function reconcileKmsSignersContext(context, parameters) {
|
|
|
151
216
|
if (mode === 'strict') {
|
|
152
217
|
// `readKmsSignersContext` with `forceRefresh` fetches the current context.
|
|
153
218
|
// If `relayerKmsContextId` matches current, we're good.
|
|
154
|
-
const currentContext = await
|
|
219
|
+
const currentContext = await readCurrentKmsSignersContext(context, {
|
|
155
220
|
kmsVerifierAddress,
|
|
156
221
|
protocolConfigAddress,
|
|
157
222
|
forceRefresh: true,
|
|
@@ -165,12 +230,11 @@ export async function reconcileKmsSignersContext(context, parameters) {
|
|
|
165
230
|
// 3. Loose mode — accept any valid (non-destroyed, in-range) context.
|
|
166
231
|
// `readKmsSignersContext` with `forceRefresh` + specific `kmsContextId`/`kmsEpochId` will
|
|
167
232
|
// throw if the context is destroyed or out of range.
|
|
168
|
-
return
|
|
233
|
+
return readKmsSignersContextFromExtraData(context, {
|
|
169
234
|
kmsVerifierAddress,
|
|
170
235
|
protocolConfigAddress,
|
|
171
|
-
kmsContextId: relayerKmsContextId,
|
|
172
|
-
kmsEpochId: relayerKmsEpochId,
|
|
173
236
|
forceRefresh: true,
|
|
237
|
+
extraData: relayerKmsExtraData,
|
|
174
238
|
});
|
|
175
239
|
}
|
|
176
240
|
//# sourceMappingURL=readKmsSignersContext-p.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readKmsSignersContext-p.js","sourceRoot":"","sources":["../../../core/host-contracts/readKmsSignersContext-p.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"readKmsSignersContext-p.js","sourceRoot":"","sources":["../../../core/host-contracts/readKmsSignersContext-p.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,35 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
12
12
|
var _KmsSigncryptedSharesImpl_metadata, _KmsSigncryptedSharesImpl_shares;
|
|
13
13
|
import { assertIsKmsSignersContext } from '../host-contracts/KmsSignersContext-p.js';
|
|
14
14
|
import { ensure0x } from '../base/string.js';
|
|
15
|
-
import { assertIsKmsExtraData } from './kmsExtraData.js';
|
|
16
15
|
import { reconcileKmsSignersContext } from '../host-contracts/readKmsSignersContext-p.js';
|
|
16
|
+
import { recoverSigners } from '../utils-p/runtime/recoverSigners.js';
|
|
17
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
18
|
+
/**
|
|
19
|
+
* EIP-712 types for the KMS `UserDecryptResponseVerification` structure that each
|
|
20
|
+
* KMS node signs per response share (see gateway `Decryption.sol`).
|
|
21
|
+
*
|
|
22
|
+
* CRITICAL: field order and types are authoritative — they define the EIP-712
|
|
23
|
+
* type hash and must match the on-chain struct exactly.
|
|
24
|
+
*
|
|
25
|
+
* Note: `ctHandles` is declared `bytes32[]` to match `Decryption.sol` (the tkms
|
|
26
|
+
* WASM doc comments it as `uint256[]`; both encode the same 32 bytes, but the
|
|
27
|
+
* type string participates in the type hash — if verification unexpectedly
|
|
28
|
+
* fails, `uint256[]` is the first thing to try).
|
|
29
|
+
*/
|
|
30
|
+
const kmsUserDecryptResponseEip712Types = {
|
|
31
|
+
EIP712Domain: [
|
|
32
|
+
{ name: 'name', type: 'string' },
|
|
33
|
+
{ name: 'version', type: 'string' },
|
|
34
|
+
{ name: 'chainId', type: 'uint256' },
|
|
35
|
+
{ name: 'verifyingContract', type: 'address' },
|
|
36
|
+
],
|
|
37
|
+
UserDecryptResponseVerification: [
|
|
38
|
+
{ name: 'publicKey', type: 'bytes' },
|
|
39
|
+
{ name: 'ctHandles', type: 'bytes32[]' },
|
|
40
|
+
{ name: 'userDecryptedShare', type: 'bytes' },
|
|
41
|
+
{ name: 'extraData', type: 'bytes' },
|
|
42
|
+
],
|
|
43
|
+
};
|
|
17
44
|
////////////////////////////////////////////////////////////////////////////////
|
|
18
45
|
const PRIVATE_KMS_SIGNCRYPTED_SHARES_TOKEN = Symbol('KmsSigncryptedShares.token');
|
|
19
46
|
const GET_METADATA_FUNC = Symbol('KmsSigncryptedShares.getMetadata');
|
|
@@ -84,6 +111,46 @@ function assertUniformExtraData(shares) {
|
|
|
84
111
|
}
|
|
85
112
|
return firstExtraData;
|
|
86
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Helper:
|
|
116
|
+
* Verifies the EIP-712 signature of a single KMS signcrypted share.
|
|
117
|
+
*
|
|
118
|
+
* Rebuilds the `UserDecryptResponseVerification` payload the KMS node signed,
|
|
119
|
+
* recovers the signer, and asserts it belongs to the reconciled KMS signers
|
|
120
|
+
* context. This is an independent, JS-only check — the same verification is also
|
|
121
|
+
* performed inside the tkms WASM during reconstruction (`verify=true`), so this
|
|
122
|
+
* is primarily a test/defense-in-depth pass and is not required for correctness.
|
|
123
|
+
*
|
|
124
|
+
* @throws If the signer cannot be recovered, or is not a known KMS signer.
|
|
125
|
+
*/
|
|
126
|
+
export async function verifyKmsSigncryptedShare(context, parameters) {
|
|
127
|
+
const { share, metadata, transportPublicKey } = parameters;
|
|
128
|
+
// Rebuild the exact EIP-712 message each KMS node signs per response share
|
|
129
|
+
// (gateway Decryption.sol `UserDecryptResponseVerification`). `userDecryptedShare`
|
|
130
|
+
// is the serialized share bytes carried in `share.payload`.
|
|
131
|
+
const message = {
|
|
132
|
+
publicKey: transportPublicKey,
|
|
133
|
+
ctHandles: metadata.handles.map((h) => h.bytes32Hex),
|
|
134
|
+
userDecryptedShare: ensure0x(share.payload),
|
|
135
|
+
// v0 extraData is signed as '0x' (never '0x00').
|
|
136
|
+
extraData: share.extraData === '' || share.extraData === '00' ? '0x' : ensure0x(share.extraData),
|
|
137
|
+
};
|
|
138
|
+
// Recover the signer of this share. The KMS EIP-712 domain lives in `metadata`.
|
|
139
|
+
const [recoveredAddress] = await recoverSigners(context, {
|
|
140
|
+
domain: metadata.eip712Domain,
|
|
141
|
+
types: kmsUserDecryptResponseEip712Types,
|
|
142
|
+
primaryType: 'UserDecryptResponseVerification',
|
|
143
|
+
signatures: [ensure0x(share.signature)],
|
|
144
|
+
message,
|
|
145
|
+
});
|
|
146
|
+
if (recoveredAddress === undefined) {
|
|
147
|
+
throw new Error('Failed to recover signer from KMS signcrypted share signature.');
|
|
148
|
+
}
|
|
149
|
+
// The recovered signer must be one of the reconciled KMS signers (case-insensitive).
|
|
150
|
+
if (!metadata.kmsSignersContext.has(recoveredAddress)) {
|
|
151
|
+
throw new Error(`KMS signcrypted share signature was not signed by a known KMS signer (recovered ${recoveredAddress}).`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
87
154
|
/**
|
|
88
155
|
* Creates a validated {@link KmsSigncryptedShares} instance.
|
|
89
156
|
*
|
|
@@ -113,13 +180,12 @@ export async function createKmsSigncryptedShares(context, parameters) {
|
|
|
113
180
|
// Assert context first — extraData comparison depends on a valid KmsSignersContext.
|
|
114
181
|
assertIsKmsSignersContext(metadata.kmsSignersContext, {});
|
|
115
182
|
// Extract the common extraData from all shares and validate its format.
|
|
116
|
-
const
|
|
117
|
-
assertIsKmsExtraData(relayerExtraData, {});
|
|
183
|
+
const relayerKmsExtraDataBytesHex = ensure0x(assertUniformExtraData(shares));
|
|
118
184
|
// Reconcile KMS signer context using 'loose' mode.
|
|
119
185
|
const reconciledKmsSignersContext = await reconcileKmsSignersContext(context, {
|
|
120
186
|
kmsVerifierAddress: context.chain.fhevm.contracts.kmsVerifier.address,
|
|
121
187
|
protocolConfigAddress: context.chain.fhevm.contracts.protocolConfig?.address,
|
|
122
|
-
|
|
188
|
+
relayerKmsExtraDataBytesHex,
|
|
123
189
|
requestedKmsSignersContext: metadata.kmsSignersContext,
|
|
124
190
|
mode: 'loose',
|
|
125
191
|
});
|