@fhevm/sdk 1.1.0-alpha.4 → 1.1.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/canDecryptPublicValue.js +1 -1
- package/_cjs/core/actions/base/canDecryptPublicValue.js.map +1 -1
- package/_cjs/core/actions/base/canDecryptPublicValues.js +1 -1
- package/_cjs/core/actions/base/canDecryptPublicValues.js.map +1 -1
- package/_cjs/core/actions/base/{fetchKmsSignedcryptedShares.js → fetchKmsSigncryptedShares.js} +5 -5
- package/_cjs/core/actions/base/fetchKmsSigncryptedShares.js.map +1 -0
- package/_cjs/core/actions/base/index.js +3 -3
- package/_cjs/core/actions/base/index.js.map +1 -1
- package/_cjs/core/actions/base/readKmsSignersContext.js +2 -1
- package/_cjs/core/actions/base/readKmsSignersContext.js.map +1 -1
- package/_cjs/core/actions/chain/parseTransportKeyPair.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js +13 -0
- package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +1 -0
- package/_cjs/core/actions/decrypt/decryptValue.js +3 -1
- package/_cjs/core/actions/decrypt/decryptValue.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValues.js +3 -1
- package/_cjs/core/actions/decrypt/decryptValues.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js +3 -1
- package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/actions/decrypt/generateTransportKeyPair.js +3 -1
- package/_cjs/core/actions/decrypt/generateTransportKeyPair.js.map +1 -1
- package/_cjs/core/actions/decrypt/index.js +3 -3
- package/_cjs/core/actions/decrypt/index.js.map +1 -1
- package/_cjs/core/actions/encrypt/encryptValue.js +3 -1
- package/_cjs/core/actions/encrypt/encryptValue.js.map +1 -1
- package/_cjs/core/actions/encrypt/encryptValues.js +3 -1
- package/_cjs/core/actions/encrypt/encryptValues.js.map +1 -1
- package/_cjs/core/actions/encrypt/generateZkProof.js +5 -1
- package/_cjs/core/actions/encrypt/generateZkProof.js.map +1 -1
- package/_cjs/core/actions/host/readFhevmExecutorContractData.js +7 -7
- package/_cjs/core/actions/host/readFhevmExecutorContractData.js.map +1 -1
- package/_cjs/core/actions/host/readInputVerifierContractData.js +1 -1
- package/_cjs/core/actions/host/readInputVerifierContractData.js.map +1 -1
- package/_cjs/core/actions/host/readKmsVerifierContractData.js +6 -5
- package/_cjs/core/actions/host/readKmsVerifierContractData.js.map +1 -1
- package/_cjs/core/actions/host/resolveFhevmConfig.js +7 -1
- package/_cjs/core/actions/host/resolveFhevmConfig.js.map +1 -1
- package/_cjs/core/base/object.js +23 -0
- package/_cjs/core/base/object.js.map +1 -1
- package/_cjs/core/base/semver.js +166 -0
- package/_cjs/core/base/semver.js.map +1 -0
- package/_cjs/core/base/uint.js +20 -3
- package/_cjs/core/base/uint.js.map +1 -1
- package/_cjs/core/chains/definitions/localTestnet.js +3 -0
- package/_cjs/core/chains/definitions/localTestnet.js.map +1 -1
- package/_cjs/core/chains/definitions/mainnet.js +1 -0
- package/_cjs/core/chains/definitions/mainnet.js.map +1 -1
- package/_cjs/core/chains/definitions/sepolia.js +1 -0
- package/_cjs/core/chains/definitions/sepolia.js.map +1 -1
- package/_cjs/core/clients/decorators/base.js +5 -0
- package/_cjs/core/clients/decorators/base.js.map +1 -1
- package/_cjs/core/clients/decorators/decrypt-p.js +13 -0
- package/_cjs/core/clients/decorators/decrypt-p.js.map +1 -0
- package/_cjs/core/clients/decorators/decrypt.js +4 -7
- package/_cjs/core/clients/decorators/decrypt.js.map +1 -1
- package/_cjs/core/clients/decorators/encrypt-p.js +5 -1
- package/_cjs/core/clients/decorators/encrypt-p.js.map +1 -1
- package/_cjs/core/clients/decorators/encrypt.js.map +1 -1
- package/_cjs/core/coprocessor/ZkProof-p.js +4 -2
- package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_cjs/core/coprocessor/ZkProofBuilder-p.js +2 -1
- package/_cjs/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
- package/_cjs/core/coprocessor/encrypt.js +1 -1
- package/_cjs/core/coprocessor/encrypt.js.map +1 -1
- package/_cjs/core/errors/RelayerResponseStatusError.js +3 -2
- package/_cjs/core/errors/RelayerResponseStatusError.js.map +1 -1
- package/_cjs/core/host-contracts/HostContractVersion-p.js +26 -4
- package/_cjs/core/host-contracts/HostContractVersion-p.js.map +1 -1
- package/_cjs/core/host-contracts/KmsSignersContext-p.js +23 -5
- package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_cjs/core/host-contracts/abi-fragments/fragments.js +21 -1
- package/_cjs/core/host-contracts/abi-fragments/fragments.js.map +1 -1
- package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js +1 -1
- package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/host-contracts/checkAllowedForDecryption.js +2 -2
- package/_cjs/core/host-contracts/checkAllowedForDecryption.js.map +1 -1
- package/_cjs/core/host-contracts/checkDelegation.js +8 -8
- package/_cjs/core/host-contracts/checkDelegation.js.map +1 -1
- package/_cjs/core/host-contracts/checkPersistAllowed.js +9 -9
- package/_cjs/core/host-contracts/checkPersistAllowed.js.map +1 -1
- package/_cjs/core/host-contracts/getAclAddress-p.js +1 -2
- package/_cjs/core/host-contracts/getAclAddress-p.js.map +1 -1
- package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +51 -0
- package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -0
- package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js +4 -5
- package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
- package/_cjs/core/host-contracts/getFhevmExecutorAddress-p.js +1 -1
- package/_cjs/core/host-contracts/getFhevmExecutorAddress-p.js.map +1 -1
- package/_cjs/core/host-contracts/getHandleVersion-p.js +1 -2
- package/_cjs/core/host-contracts/getHandleVersion-p.js.map +1 -1
- package/_cjs/core/host-contracts/getHcuLimitAddress-p.js +1 -2
- package/_cjs/core/host-contracts/getHcuLimitAddress-p.js.map +1 -1
- package/_cjs/core/host-contracts/getInputVerifierAddress-p.js +1 -2
- package/_cjs/core/host-contracts/getInputVerifierAddress-p.js.map +1 -1
- package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js +5 -7
- package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
- package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +4 -5
- package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
- package/_cjs/core/host-contracts/getSignersForKmsContext-p.js +3 -5
- package/_cjs/core/host-contracts/getSignersForKmsContext-p.js.map +1 -1
- package/_cjs/core/host-contracts/isAllowedForDecryption.js +4 -4
- package/_cjs/core/host-contracts/isAllowedForDecryption.js.map +1 -1
- package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +5 -5
- package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -1
- package/_cjs/core/host-contracts/isUserDecryptable.js +2 -2
- package/_cjs/core/host-contracts/isUserDecryptable.js.map +1 -1
- package/_cjs/core/host-contracts/persistAllowed.js +4 -4
- package/_cjs/core/host-contracts/persistAllowed.js.map +1 -1
- package/_cjs/core/host-contracts/readKmsSignersContext-p.js +74 -25
- package/_cjs/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
- package/_cjs/core/key/FheEncryptionKeyWasm-p.js +12 -4
- package/_cjs/core/key/FheEncryptionKeyWasm-p.js.map +1 -1
- package/_cjs/core/key/deserializeFheEncryptionKey.js +3 -0
- package/_cjs/core/key/deserializeFheEncryptionKey.js.map +1 -1
- package/_cjs/core/key/fetchFheEncryptionKey.js +1 -1
- package/_cjs/core/key/fetchFheEncryptionKey.js.map +1 -1
- package/_cjs/core/key/fetchFheEncryptionKeyBytes.js.map +1 -1
- package/_cjs/core/key/serializeFheEncryptionKey.js +4 -1
- package/_cjs/core/key/serializeFheEncryptionKey.js.map +1 -1
- package/_cjs/core/kms/KmsSigncryptedShares-p.js +9 -1
- package/_cjs/core/kms/KmsSigncryptedShares-p.js.map +1 -1
- package/_cjs/core/kms/SignedDecryptionPermit-p.js +5 -1
- package/_cjs/core/kms/SignedDecryptionPermit-p.js.map +1 -1
- package/_cjs/core/kms/TransportKeyPair-p.js +31 -7
- package/_cjs/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712.js +4 -0
- package/_cjs/core/kms/createKmsUserDecryptEip712.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712V2.js +97 -0
- package/_cjs/core/kms/createKmsUserDecryptEip712V2.js.map +1 -0
- package/_cjs/core/kms/{decryptKmsSignedcryptedShares-p.js → decryptKmsSigncryptedShares-p.js} +10 -3
- package/_cjs/core/kms/decryptKmsSigncryptedShares-p.js.map +1 -0
- package/_cjs/core/kms/decryptValuesFromPairs.js +4 -4
- package/_cjs/core/kms/decryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/kms/{fetchKmsSignedcryptedShares-p.js → fetchKmsSigncryptedShares-p.js} +10 -6
- package/_cjs/core/kms/fetchKmsSigncryptedShares-p.js.map +1 -0
- package/_cjs/core/kms/kmsExtraData.js +53 -10
- package/_cjs/core/kms/kmsExtraData.js.map +1 -1
- package/_cjs/core/kms/kmsUserDecryptEip712V2Types.js +25 -0
- package/_cjs/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -0
- package/_cjs/core/kms/publicDecrypt.js +5 -3
- package/_cjs/core/kms/publicDecrypt.js.map +1 -1
- package/_cjs/core/modules/decrypt/mock.js +1 -23
- package/_cjs/core/modules/decrypt/mock.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/api-p.js +51 -23
- package/_cjs/core/modules/decrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/index.js +5 -27
- package/_cjs/core/modules/decrypt/module/index.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/init-p.js +40 -19
- package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/mock.js +26 -8
- package/_cjs/core/modules/encrypt/mock.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/api-p.js +50 -21
- package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/index.js +3 -3
- package/_cjs/core/modules/encrypt/module/index.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/init-p.js +63 -24
- package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/RelayerAsyncRequest.js +28 -4
- package/_cjs/core/modules/relayer/module/RelayerAsyncRequest.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchFheEncryptionKeySource.js +5 -1
- package/_cjs/core/modules/relayer/module/fetchFheEncryptionKeySource.js.map +1 -1
- package/_cjs/core/modules/relayer/module/readErrorMessage.js +29 -0
- package/_cjs/core/modules/relayer/module/readErrorMessage.js.map +1 -0
- package/_cjs/core/runtime/CoreFhevm-p.js +171 -5
- package/_cjs/core/runtime/CoreFhevm-p.js.map +1 -1
- package/_cjs/core/runtime/HyperWasmSolver-p.js +187 -0
- package/_cjs/core/runtime/HyperWasmSolver-p.js.map +1 -0
- package/_cjs/core/runtime/ProtocolVersionResolver-p.js +270 -0
- package/_cjs/core/runtime/ProtocolVersionResolver-p.js.map +1 -0
- package/_cjs/core/runtime/initFhevmDecryptRuntime-p.js +1 -1
- package/_cjs/core/runtime/initFhevmDecryptRuntime-p.js.map +1 -1
- package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
- package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js.map +1 -1
- package/_cjs/core/runtime/initFhevmRuntime-p.js +4 -1
- package/_cjs/core/runtime/initFhevmRuntime-p.js.map +1 -1
- package/_cjs/core/runtime/resolveFhevmVersions-p.js +48 -0
- package/_cjs/core/runtime/resolveFhevmVersions-p.js.map +1 -0
- package/_cjs/core/runtimeConfig-p.js +10 -0
- package/_cjs/core/runtimeConfig-p.js.map +1 -1
- package/_cjs/core/types/{zkProofBuilder.js → moduleVersions.js} +1 -1
- package/_cjs/core/types/moduleVersions.js.map +1 -0
- package/_cjs/core/types/{fhevmUser.js → wasmAssets.js} +1 -1
- package/_cjs/core/types/wasmAssets.js.map +1 -0
- package/_cjs/core/types/{fhevmDecryptionKey.js → zkProofBuilder-p.js} +1 -1
- package/_cjs/core/types/zkProofBuilder-p.js.map +1 -0
- package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -0
- package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js.map +1 -1
- package/_cjs/ethers/internal/config.js +1 -18
- package/_cjs/ethers/internal/config.js.map +1 -1
- package/_cjs/viem/internal/config.js +1 -18
- package/_cjs/viem/internal/config.js.map +1 -1
- package/_cjs/wasm/tfhe/loadTfheLib.js.map +1 -1
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -0
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.js +6 -1
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.js.map +2 -2
- package/_cjs/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
- package/_cjs/wasm/tfhe/v1.6.1/tfhe.js +6 -1
- package/_cjs/wasm/tfhe/v1.6.1/tfhe.js.map +2 -2
- package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
- package/_cjs/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
- package/_cjs/wasm/tkms/v0.13.10/kms_lib.js +6 -1
- package/_cjs/wasm/tkms/v0.13.10/kms_lib.js.map +2 -2
- package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
- package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.js +6 -1
- package/_cjs/wasm/tkms/v0.13.20-0/kms_lib.js.map +2 -2
- package/_cjs/wasm/wasmBaseUrl.js +23 -7
- package/_cjs/wasm/wasmBaseUrl.js.map +2 -2
- package/_esm/core/_version.js +1 -1
- package/_esm/core/actions/base/canDecryptPublicValue.js +1 -1
- package/_esm/core/actions/base/canDecryptPublicValue.js.map +1 -1
- package/_esm/core/actions/base/canDecryptPublicValues.js +1 -1
- package/_esm/core/actions/base/canDecryptPublicValues.js.map +1 -1
- package/_esm/core/actions/base/{fetchKmsSignedcryptedShares.js → fetchKmsSigncryptedShares.js} +4 -4
- package/_esm/core/actions/base/fetchKmsSigncryptedShares.js.map +1 -0
- package/_esm/core/actions/base/index.js +1 -1
- package/_esm/core/actions/base/index.js.map +1 -1
- package/_esm/core/actions/base/readKmsSignersContext.js +2 -1
- package/_esm/core/actions/base/readKmsSignersContext.js.map +1 -1
- package/_esm/core/actions/chain/parseTransportKeyPair.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js +11 -0
- package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +1 -0
- package/_esm/core/actions/decrypt/decryptValue.js +3 -1
- package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValues.js +3 -1
- package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +3 -1
- package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
- package/_esm/core/actions/decrypt/generateTransportKeyPair.js +3 -1
- package/_esm/core/actions/decrypt/generateTransportKeyPair.js.map +1 -1
- package/_esm/core/actions/decrypt/index.js +1 -1
- package/_esm/core/actions/decrypt/index.js.map +1 -1
- package/_esm/core/actions/encrypt/encryptValue.js +3 -1
- package/_esm/core/actions/encrypt/encryptValue.js.map +1 -1
- package/_esm/core/actions/encrypt/encryptValues.js +3 -1
- package/_esm/core/actions/encrypt/encryptValues.js.map +1 -1
- package/_esm/core/actions/encrypt/generateZkProof.js +5 -1
- package/_esm/core/actions/encrypt/generateZkProof.js.map +1 -1
- package/_esm/core/actions/host/readFhevmExecutorContractData.js +8 -8
- package/_esm/core/actions/host/readFhevmExecutorContractData.js.map +1 -1
- package/_esm/core/actions/host/readInputVerifierContractData.js +2 -2
- package/_esm/core/actions/host/readInputVerifierContractData.js.map +1 -1
- package/_esm/core/actions/host/readKmsVerifierContractData.js +7 -6
- package/_esm/core/actions/host/readKmsVerifierContractData.js.map +1 -1
- package/_esm/core/actions/host/resolveFhevmConfig.js +7 -1
- package/_esm/core/actions/host/resolveFhevmConfig.js.map +1 -1
- package/_esm/core/base/object.js +28 -0
- package/_esm/core/base/object.js.map +1 -1
- package/_esm/core/base/semver.js +164 -0
- package/_esm/core/base/semver.js.map +1 -0
- package/_esm/core/base/uint.js +23 -2
- package/_esm/core/base/uint.js.map +1 -1
- package/_esm/core/chains/definitions/localTestnet.js +3 -0
- package/_esm/core/chains/definitions/localTestnet.js.map +1 -1
- package/_esm/core/chains/definitions/mainnet.js +1 -0
- package/_esm/core/chains/definitions/mainnet.js.map +1 -1
- package/_esm/core/chains/definitions/sepolia.js +1 -0
- package/_esm/core/chains/definitions/sepolia.js.map +1 -1
- package/_esm/core/clients/decorators/base.js +6 -1
- package/_esm/core/clients/decorators/base.js.map +1 -1
- package/_esm/core/clients/decorators/decrypt-p.js +11 -0
- package/_esm/core/clients/decorators/decrypt-p.js.map +1 -0
- package/_esm/core/clients/decorators/decrypt.js +3 -7
- package/_esm/core/clients/decorators/decrypt.js.map +1 -1
- package/_esm/core/clients/decorators/encrypt-p.js +6 -2
- package/_esm/core/clients/decorators/encrypt-p.js.map +1 -1
- package/_esm/core/clients/decorators/encrypt.js.map +1 -1
- package/_esm/core/coprocessor/ZkProof-p.js +4 -2
- package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_esm/core/coprocessor/ZkProofBuilder-p.js +2 -1
- package/_esm/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
- package/_esm/core/coprocessor/encrypt.js +1 -1
- package/_esm/core/coprocessor/encrypt.js.map +1 -1
- package/_esm/core/errors/RelayerResponseStatusError.js +7 -2
- package/_esm/core/errors/RelayerResponseStatusError.js.map +1 -1
- package/_esm/core/host-contracts/HostContractVersion-p.js +34 -3
- package/_esm/core/host-contracts/HostContractVersion-p.js.map +1 -1
- package/_esm/core/host-contracts/KmsSignersContext-p.js +24 -6
- package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_esm/core/host-contracts/abi-fragments/fragments.js +24 -0
- package/_esm/core/host-contracts/abi-fragments/fragments.js.map +1 -1
- package/_esm/core/host-contracts/canDecryptValuesFromPairs.js +1 -1
- package/_esm/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
- package/_esm/core/host-contracts/checkAllowedForDecryption.js +2 -2
- package/_esm/core/host-contracts/checkAllowedForDecryption.js.map +1 -1
- package/_esm/core/host-contracts/checkDelegation.js +8 -8
- package/_esm/core/host-contracts/checkDelegation.js.map +1 -1
- package/_esm/core/host-contracts/checkPersistAllowed.js +9 -9
- package/_esm/core/host-contracts/checkPersistAllowed.js.map +1 -1
- package/_esm/core/host-contracts/getAclAddress-p.js +1 -2
- package/_esm/core/host-contracts/getAclAddress-p.js.map +1 -1
- package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +63 -0
- package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -0
- package/_esm/core/host-contracts/getCurrentKmsContextId-p.js +6 -7
- package/_esm/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
- package/_esm/core/host-contracts/getFhevmExecutorAddress-p.js +1 -1
- package/_esm/core/host-contracts/getFhevmExecutorAddress-p.js.map +1 -1
- package/_esm/core/host-contracts/getHandleVersion-p.js +1 -2
- package/_esm/core/host-contracts/getHandleVersion-p.js.map +1 -1
- package/_esm/core/host-contracts/getHcuLimitAddress-p.js +1 -2
- package/_esm/core/host-contracts/getHcuLimitAddress-p.js.map +1 -1
- package/_esm/core/host-contracts/getInputVerifierAddress-p.js +1 -2
- package/_esm/core/host-contracts/getInputVerifierAddress-p.js.map +1 -1
- package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js +6 -8
- package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
- package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +5 -6
- package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
- package/_esm/core/host-contracts/getSignersForKmsContext-p.js +5 -7
- package/_esm/core/host-contracts/getSignersForKmsContext-p.js.map +1 -1
- package/_esm/core/host-contracts/isAllowedForDecryption.js +4 -4
- package/_esm/core/host-contracts/isAllowedForDecryption.js.map +1 -1
- package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +5 -5
- package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -1
- package/_esm/core/host-contracts/isUserDecryptable.js +2 -2
- package/_esm/core/host-contracts/isUserDecryptable.js.map +1 -1
- package/_esm/core/host-contracts/persistAllowed.js +4 -4
- package/_esm/core/host-contracts/persistAllowed.js.map +1 -1
- package/_esm/core/host-contracts/readKmsSignersContext-p.js +89 -29
- package/_esm/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
- package/_esm/core/key/FheEncryptionKeyWasm-p.js +12 -4
- package/_esm/core/key/FheEncryptionKeyWasm-p.js.map +1 -1
- package/_esm/core/key/deserializeFheEncryptionKey.js +3 -0
- package/_esm/core/key/deserializeFheEncryptionKey.js.map +1 -1
- package/_esm/core/key/fetchFheEncryptionKey.js +1 -1
- package/_esm/core/key/fetchFheEncryptionKey.js.map +1 -1
- package/_esm/core/key/fetchFheEncryptionKeyBytes.js.map +1 -1
- package/_esm/core/key/serializeFheEncryptionKey.js +4 -1
- package/_esm/core/key/serializeFheEncryptionKey.js.map +1 -1
- package/_esm/core/kms/KmsSigncryptedShares-p.js +9 -1
- package/_esm/core/kms/KmsSigncryptedShares-p.js.map +1 -1
- package/_esm/core/kms/SignedDecryptionPermit-p.js +5 -1
- package/_esm/core/kms/SignedDecryptionPermit-p.js.map +1 -1
- package/_esm/core/kms/TransportKeyPair-p.js +32 -7
- package/_esm/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712.js +4 -0
- package/_esm/core/kms/createKmsUserDecryptEip712.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712V2.js +98 -0
- package/_esm/core/kms/createKmsUserDecryptEip712V2.js.map +1 -0
- package/_esm/core/kms/{decryptKmsSignedcryptedShares-p.js → decryptKmsSigncryptedShares-p.js} +9 -2
- package/_esm/core/kms/decryptKmsSigncryptedShares-p.js.map +1 -0
- package/_esm/core/kms/decryptValuesFromPairs.js +4 -4
- package/_esm/core/kms/decryptValuesFromPairs.js.map +1 -1
- package/_esm/core/kms/{fetchKmsSignedcryptedShares-p.js → fetchKmsSigncryptedShares-p.js} +12 -6
- package/_esm/core/kms/fetchKmsSigncryptedShares-p.js.map +1 -0
- package/_esm/core/kms/kmsExtraData.js +70 -12
- package/_esm/core/kms/kmsExtraData.js.map +1 -1
- package/_esm/core/kms/kmsUserDecryptEip712V2Types.js +28 -0
- package/_esm/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -0
- package/_esm/core/kms/publicDecrypt.js +5 -3
- package/_esm/core/kms/publicDecrypt.js.map +1 -1
- package/_esm/core/modules/decrypt/mock.js +0 -24
- package/_esm/core/modules/decrypt/mock.js.map +1 -1
- package/_esm/core/modules/decrypt/module/api-p.js +51 -23
- package/_esm/core/modules/decrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/decrypt/module/index.js +31 -25
- package/_esm/core/modules/decrypt/module/index.js.map +1 -1
- package/_esm/core/modules/decrypt/module/init-p.js +41 -19
- package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/encrypt/mock.js +26 -9
- package/_esm/core/modules/encrypt/mock.js.map +1 -1
- package/_esm/core/modules/encrypt/module/api-p.js +50 -21
- package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/encrypt/module/index.js +3 -3
- package/_esm/core/modules/encrypt/module/index.js.map +1 -1
- package/_esm/core/modules/encrypt/module/init-p.js +69 -29
- package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +2 -2
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +2 -2
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/RelayerAsyncRequest.js +57 -4
- package/_esm/core/modules/relayer/module/RelayerAsyncRequest.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchFheEncryptionKeySource.js +8 -1
- package/_esm/core/modules/relayer/module/fetchFheEncryptionKeySource.js.map +1 -1
- package/_esm/core/modules/relayer/module/readErrorMessage.js +52 -0
- package/_esm/core/modules/relayer/module/readErrorMessage.js.map +1 -0
- package/_esm/core/runtime/CoreFhevm-p.js +167 -5
- package/_esm/core/runtime/CoreFhevm-p.js.map +1 -1
- package/_esm/core/runtime/HyperWasmSolver-p.js +268 -0
- package/_esm/core/runtime/HyperWasmSolver-p.js.map +1 -0
- package/_esm/core/runtime/ProtocolVersionResolver-p.js +326 -0
- package/_esm/core/runtime/ProtocolVersionResolver-p.js.map +1 -0
- package/_esm/core/runtime/initFhevmDecryptRuntime-p.js +1 -1
- package/_esm/core/runtime/initFhevmDecryptRuntime-p.js.map +1 -1
- package/_esm/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
- package/_esm/core/runtime/initFhevmEncryptRuntime-p.js.map +1 -1
- package/_esm/core/runtime/initFhevmRuntime-p.js +4 -1
- package/_esm/core/runtime/initFhevmRuntime-p.js.map +1 -1
- package/_esm/core/runtime/resolveFhevmVersions-p.js +62 -0
- package/_esm/core/runtime/resolveFhevmVersions-p.js.map +1 -0
- package/_esm/core/runtimeConfig-p.js +9 -0
- package/_esm/core/runtimeConfig-p.js.map +1 -1
- package/_esm/core/types/moduleVersions.js +2 -0
- package/_esm/core/types/moduleVersions.js.map +1 -0
- package/_esm/core/types/wasmAssets.js +2 -0
- package/_esm/core/types/wasmAssets.js.map +1 -0
- package/_esm/core/types/zkProofBuilder-p.js +2 -0
- package/_esm/core/types/zkProofBuilder-p.js.map +1 -0
- package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -0
- package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js.map +1 -1
- package/_esm/ethers/internal/config.js +1 -18
- package/_esm/ethers/internal/config.js.map +1 -1
- package/_esm/viem/internal/config.js +1 -18
- package/_esm/viem/internal/config.js.map +1 -1
- package/_esm/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -0
- package/_esm/wasm/tfhe/v1.5.3/tfhe.js +8 -0
- package/_esm/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
- package/_esm/wasm/tfhe/v1.6.1/tfhe.js +8 -0
- package/_esm/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
- package/_esm/wasm/tkms/v0.13.10/kms_lib.js +8 -0
- package/_esm/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
- package/_esm/wasm/tkms/v0.13.20-0/kms_lib.js +8 -0
- package/_esm/wasm/wasmBaseUrl.js +69 -4
- package/_types/core/actions/base/{fetchKmsSignedcryptedShares.d.ts → fetchKmsSigncryptedShares.d.ts} +7 -7
- package/_types/core/actions/base/fetchKmsSigncryptedShares.d.ts.map +1 -0
- package/_types/core/actions/base/index.d.ts +1 -1
- package/_types/core/actions/base/index.d.ts.map +1 -1
- package/_types/core/actions/base/readKmsSignersContext.d.ts.map +1 -1
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +2 -2
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
- package/_types/core/actions/chain/parseTransportKeyPair.d.ts +1 -1
- package/_types/core/actions/chain/parseTransportKeyPair.d.ts.map +1 -1
- package/_types/core/actions/decrypt/{decryptKmsSignedcryptedShares.d.ts → decryptKmsSigncryptedShares.d.ts} +4 -4
- package/_types/core/actions/decrypt/decryptKmsSigncryptedShares.d.ts.map +1 -0
- package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
- package/_types/core/actions/decrypt/generateTransportKeyPair.d.ts +2 -2
- package/_types/core/actions/decrypt/generateTransportKeyPair.d.ts.map +1 -1
- package/_types/core/actions/decrypt/index.d.ts +1 -1
- package/_types/core/actions/decrypt/index.d.ts.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/actions/host/readKmsVerifierContractData.d.ts +1 -0
- package/_types/core/actions/host/readKmsVerifierContractData.d.ts.map +1 -1
- package/_types/core/actions/host/resolveFhevmConfig.d.ts +2 -0
- package/_types/core/actions/host/resolveFhevmConfig.d.ts.map +1 -1
- package/_types/core/base/object.d.ts +7 -0
- package/_types/core/base/object.d.ts.map +1 -1
- package/_types/core/base/semver.d.ts +39 -0
- package/_types/core/base/semver.d.ts.map +1 -0
- package/_types/core/base/uint.d.ts +13 -2
- package/_types/core/base/uint.d.ts.map +1 -1
- package/_types/core/chains/definitions/localTestnet.d.ts +3 -0
- package/_types/core/chains/definitions/localTestnet.d.ts.map +1 -1
- package/_types/core/chains/definitions/mainnet.d.ts +1 -0
- package/_types/core/chains/definitions/mainnet.d.ts.map +1 -1
- package/_types/core/chains/definitions/sepolia.d.ts.map +1 -1
- package/_types/core/clients/decorators/base.d.ts.map +1 -1
- package/_types/core/clients/decorators/decrypt-p.d.ts +4 -0
- package/_types/core/clients/decorators/decrypt-p.d.ts.map +1 -0
- package/_types/core/clients/decorators/decrypt.d.ts +4 -2
- package/_types/core/clients/decorators/decrypt.d.ts.map +1 -1
- package/_types/core/clients/decorators/encrypt-p.d.ts +2 -3
- package/_types/core/clients/decorators/encrypt-p.d.ts.map +1 -1
- package/_types/core/clients/decorators/encrypt.d.ts +4 -2
- package/_types/core/clients/decorators/encrypt.d.ts.map +1 -1
- package/_types/core/coprocessor/ZkProof-p.d.ts +9 -2
- package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
- package/_types/core/coprocessor/ZkProofBuilder-p.d.ts +3 -1
- package/_types/core/coprocessor/ZkProofBuilder-p.d.ts.map +1 -1
- package/_types/core/coprocessor/encrypt.d.ts +2 -0
- package/_types/core/coprocessor/encrypt.d.ts.map +1 -1
- package/_types/core/errors/RelayerResponseStatusError.d.ts +7 -1
- package/_types/core/errors/RelayerResponseStatusError.d.ts.map +1 -1
- package/_types/core/host-contracts/HostContractVersion-p.d.ts +18 -1
- package/_types/core/host-contracts/HostContractVersion-p.d.ts.map +1 -1
- package/_types/core/host-contracts/KmsSignersContext-p.d.ts +2 -1
- package/_types/core/host-contracts/KmsSignersContext-p.d.ts.map +1 -1
- package/_types/core/host-contracts/abi-fragments/fragments.d.ts +5 -0
- package/_types/core/host-contracts/abi-fragments/fragments.d.ts.map +1 -1
- package/_types/core/host-contracts/checkAllowedForDecryption.d.ts +1 -1
- package/_types/core/host-contracts/checkAllowedForDecryption.d.ts.map +1 -1
- package/_types/core/host-contracts/checkDelegation.d.ts +1 -1
- package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -1
- package/_types/core/host-contracts/checkPersistAllowed.d.ts +1 -1
- package/_types/core/host-contracts/checkPersistAllowed.d.ts.map +1 -1
- package/_types/core/host-contracts/getAclAddress-p.d.ts +1 -1
- package/_types/core/host-contracts/getAclAddress-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getCurrentKmsContextAndEpoch-p.d.ts +30 -0
- package/_types/core/host-contracts/getCurrentKmsContextAndEpoch-p.d.ts.map +1 -0
- package/_types/core/host-contracts/getCurrentKmsContextId-p.d.ts +1 -1
- package/_types/core/host-contracts/getCurrentKmsContextId-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getFhevmExecutorAddress-p.d.ts +1 -1
- package/_types/core/host-contracts/getFhevmExecutorAddress-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getHandleVersion-p.d.ts +1 -1
- package/_types/core/host-contracts/getHandleVersion-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getHcuLimitAddress-p.d.ts +1 -1
- package/_types/core/host-contracts/getHcuLimitAddress-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getInputVerifierAddress-p.d.ts +1 -1
- package/_types/core/host-contracts/getInputVerifierAddress-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThreshold-p.d.ts +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThreshold-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts +1 -1
- package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts.map +1 -1
- package/_types/core/host-contracts/getSignersForKmsContext-p.d.ts +2 -2
- package/_types/core/host-contracts/getSignersForKmsContext-p.d.ts.map +1 -1
- package/_types/core/host-contracts/isAllowedForDecryption.d.ts +1 -1
- package/_types/core/host-contracts/isAllowedForDecryption.d.ts.map +1 -1
- package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts +1 -1
- package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts.map +1 -1
- package/_types/core/host-contracts/isUserDecryptable.d.ts +1 -1
- package/_types/core/host-contracts/isUserDecryptable.d.ts.map +1 -1
- package/_types/core/host-contracts/persistAllowed.d.ts +1 -1
- package/_types/core/host-contracts/persistAllowed.d.ts.map +1 -1
- package/_types/core/host-contracts/readKmsSignersContext-p.d.ts +25 -7
- package/_types/core/host-contracts/readKmsSignersContext-p.d.ts.map +1 -1
- package/_types/core/key/FheEncryptionKeyWasm-p.d.ts +3 -1
- package/_types/core/key/FheEncryptionKeyWasm-p.d.ts.map +1 -1
- package/_types/core/key/deserializeFheEncryptionKey.d.ts +2 -0
- package/_types/core/key/deserializeFheEncryptionKey.d.ts.map +1 -1
- package/_types/core/key/fetchFheEncryptionKey.d.ts +3 -1
- package/_types/core/key/fetchFheEncryptionKey.d.ts.map +1 -1
- package/_types/core/key/fetchFheEncryptionKeyBytes.d.ts.map +1 -1
- package/_types/core/key/serializeFheEncryptionKey.d.ts.map +1 -1
- package/_types/core/kms/KmsSigncryptedShares-p.d.ts.map +1 -1
- package/_types/core/kms/SignedDecryptionPermit-p.d.ts.map +1 -1
- package/_types/core/kms/TransportKeyPair-p.d.ts +9 -0
- package/_types/core/kms/TransportKeyPair-p.d.ts.map +1 -1
- package/_types/core/kms/createKmsUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts +15 -0
- package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts.map +1 -0
- package/_types/core/kms/{decryptKmsSignedcryptedShares-p.d.ts → decryptKmsSigncryptedShares-p.d.ts} +4 -2
- package/_types/core/kms/decryptKmsSigncryptedShares-p.d.ts.map +1 -0
- package/_types/core/kms/decryptValuesFromPairs.d.ts +2 -0
- package/_types/core/kms/decryptValuesFromPairs.d.ts.map +1 -1
- package/_types/core/kms/{fetchKmsSignedcryptedShares-p.d.ts → fetchKmsSigncryptedShares-p.d.ts} +2 -2
- package/_types/core/kms/fetchKmsSigncryptedShares-p.d.ts.map +1 -0
- package/_types/core/kms/kmsExtraData.d.ts +9 -2
- package/_types/core/kms/kmsExtraData.d.ts.map +1 -1
- package/_types/core/kms/kmsUserDecryptEip712V2Types.d.ts +3 -0
- package/_types/core/kms/kmsUserDecryptEip712V2Types.d.ts.map +1 -0
- package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
- package/_types/core/modules/decrypt/mock.d.ts +1 -2
- package/_types/core/modules/decrypt/mock.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/api-p.d.ts +2 -2
- package/_types/core/modules/decrypt/module/api-p.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/index.d.ts +1 -2
- package/_types/core/modules/decrypt/module/index.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/init-p.d.ts +3 -3
- package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/decrypt/types.d.ts +33 -34
- package/_types/core/modules/decrypt/types.d.ts.map +1 -1
- package/_types/core/modules/encrypt/mock.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/api-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/index.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/init-p.d.ts +11 -4
- package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/types.d.ts +31 -2
- package/_types/core/modules/encrypt/types.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/RelayerAsyncRequest.d.ts +18 -0
- package/_types/core/modules/relayer/module/RelayerAsyncRequest.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchFheEncryptionKeySource.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/readErrorMessage.d.ts +26 -0
- package/_types/core/modules/relayer/module/readErrorMessage.d.ts.map +1 -0
- package/_types/core/runtime/CoreFhevm-p.d.ts +15 -4
- package/_types/core/runtime/CoreFhevm-p.d.ts.map +1 -1
- package/_types/core/runtime/HyperWasmSolver-p.d.ts +71 -0
- package/_types/core/runtime/HyperWasmSolver-p.d.ts.map +1 -0
- package/_types/core/runtime/ProtocolVersionResolver-p.d.ts +29 -0
- package/_types/core/runtime/ProtocolVersionResolver-p.d.ts.map +1 -0
- package/_types/core/runtime/initFhevmRuntime-p.d.ts.map +1 -1
- package/_types/core/runtime/resolveFhevmVersions-p.d.ts +21 -0
- package/_types/core/runtime/resolveFhevmVersions-p.d.ts.map +1 -0
- package/_types/core/runtimeConfig-p.d.ts +3 -2
- package/_types/core/runtimeConfig-p.d.ts.map +1 -1
- package/_types/core/types/auth.d.ts +12 -1
- package/_types/core/types/auth.d.ts.map +1 -1
- package/_types/core/types/coreFhevmClient.d.ts +72 -2
- package/_types/core/types/coreFhevmClient.d.ts.map +1 -1
- package/_types/core/types/coreFhevmRuntime.d.ts +3 -9
- package/_types/core/types/coreFhevmRuntime.d.ts.map +1 -1
- package/_types/core/types/fheEncryptionKey.d.ts +2 -0
- package/_types/core/types/fheEncryptionKey.d.ts.map +1 -1
- package/_types/core/types/fhevmChain.d.ts +3 -0
- package/_types/core/types/fhevmChain.d.ts.map +1 -1
- package/_types/core/types/hostContract.d.ts +1 -0
- package/_types/core/types/hostContract.d.ts.map +1 -1
- package/_types/core/types/index.d.ts +1 -1
- package/_types/core/types/index.d.ts.map +1 -1
- package/_types/core/types/kms-p.d.ts +2 -0
- package/_types/core/types/kms-p.d.ts.map +1 -1
- package/_types/core/types/kms.d.ts +71 -21
- package/_types/core/types/kms.d.ts.map +1 -1
- package/_types/core/types/kmsSignersContext.d.ts +8 -0
- package/_types/core/types/kmsSignersContext.d.ts.map +1 -1
- package/_types/core/types/logger.d.ts +1 -0
- package/_types/core/types/logger.d.ts.map +1 -1
- package/_types/core/types/moduleVersions.d.ts +25 -0
- package/_types/core/types/moduleVersions.d.ts.map +1 -0
- package/_types/core/types/tkms-p.d.ts +2 -0
- package/_types/core/types/tkms-p.d.ts.map +1 -1
- package/_types/core/types/wasmAssets.d.ts +2 -0
- package/_types/core/types/wasmAssets.d.ts.map +1 -0
- package/_types/core/types/{zkProofBuilder.d.ts → zkProofBuilder-p.d.ts} +8 -3
- package/_types/core/types/zkProofBuilder-p.d.ts.map +1 -0
- package/_types/core/utils-p/decrypt/verifyTkmsPublicKey.d.ts +2 -0
- package/_types/core/utils-p/decrypt/verifyTkmsPublicKey.d.ts.map +1 -1
- package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts +2 -2
- package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -1
- package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts +2 -2
- package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -1
- package/_types/ethers/clients/createFhevmDecryptClient.d.ts +2 -2
- package/_types/ethers/clients/createFhevmDecryptClient.d.ts.map +1 -1
- package/_types/ethers/clients/createFhevmEncryptClient.d.ts +2 -2
- package/_types/ethers/clients/createFhevmEncryptClient.d.ts.map +1 -1
- package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts +2 -2
- package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -1
- package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts +2 -2
- package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -1
- package/_types/viem/clients/createFhevmDecryptClient.d.ts +2 -2
- package/_types/viem/clients/createFhevmDecryptClient.d.ts.map +1 -1
- package/_types/viem/clients/createFhevmEncryptClient.d.ts +2 -2
- package/_types/viem/clients/createFhevmEncryptClient.d.ts.map +1 -1
- package/_types/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -0
- package/_types/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
- package/_types/wasm/tfheModuleVersion-p.d.ts +1 -1
- package/_types/wasm/tfheModuleVersion-p.d.ts.map +1 -1
- package/_types/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
- package/_types/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
- package/_types/wasm/tkmsModuleVersion-p.d.ts +1 -1
- package/_types/wasm/tkmsModuleVersion-p.d.ts.map +1 -1
- package/core/_version.ts +1 -1
- package/core/actions/base/canDecryptPublicValue.ts +1 -1
- package/core/actions/base/canDecryptPublicValues.ts +1 -1
- package/core/actions/base/{fetchKmsSignedcryptedShares.ts → fetchKmsSigncryptedShares.ts} +16 -16
- package/core/actions/base/index.ts +5 -5
- package/core/actions/base/readKmsSignersContext.ts +2 -1
- package/core/actions/chain/parseSignedDecryptionPermit.ts +2 -2
- package/core/actions/chain/parseTransportKeyPair.ts +2 -1
- package/core/actions/decrypt/{decryptKmsSignedcryptedShares.ts → decryptKmsSigncryptedShares.ts} +12 -9
- package/core/actions/decrypt/decryptValue.ts +4 -1
- package/core/actions/decrypt/decryptValues.ts +4 -1
- package/core/actions/decrypt/decryptValuesFromPairs.ts +4 -1
- package/core/actions/decrypt/generateTransportKeyPair.ts +5 -3
- package/core/actions/decrypt/index.ts +4 -4
- package/core/actions/encrypt/encryptValue.ts +4 -1
- package/core/actions/encrypt/encryptValues.ts +4 -1
- package/core/actions/encrypt/generateZkProof.ts +9 -1
- package/core/actions/host/readFhevmExecutorContractData.ts +8 -8
- package/core/actions/host/readInputVerifierContractData.ts +2 -2
- package/core/actions/host/readKmsVerifierContractData.ts +8 -6
- package/core/actions/host/resolveFhevmConfig.ts +10 -1
- package/core/base/object.ts +38 -0
- package/core/base/semver.ts +231 -0
- package/core/base/uint.ts +33 -4
- package/core/chains/definitions/localTestnet.ts +3 -0
- package/core/chains/definitions/mainnet.ts +1 -0
- package/core/chains/definitions/sepolia.ts +6 -6
- package/core/clients/decorators/base.ts +8 -1
- package/core/clients/decorators/decrypt-p.ts +18 -0
- package/core/clients/decorators/decrypt.ts +10 -15
- package/core/clients/decorators/encrypt-p.ts +12 -7
- package/core/clients/decorators/encrypt.ts +6 -4
- package/core/coprocessor/ZkProof-p.ts +17 -5
- package/core/coprocessor/ZkProofBuilder-p.ts +5 -2
- package/core/coprocessor/encrypt.ts +6 -1
- package/core/errors/RelayerResponseStatusError.ts +14 -2
- package/core/host-contracts/HostContractVersion-p.ts +60 -3
- package/core/host-contracts/KmsSignersContext-p.ts +36 -5
- package/core/host-contracts/abi-fragments/fragments.ts +28 -0
- package/core/host-contracts/canDecryptValuesFromPairs.ts +1 -1
- package/core/host-contracts/checkAllowedForDecryption.ts +3 -3
- package/core/host-contracts/checkDelegation.ts +9 -9
- package/core/host-contracts/checkPersistAllowed.ts +10 -10
- package/core/host-contracts/getAclAddress-p.ts +2 -3
- package/core/host-contracts/getCurrentKmsContextAndEpoch-p.ts +92 -0
- package/core/host-contracts/getCurrentKmsContextId-p.ts +8 -8
- package/core/host-contracts/getFhevmExecutorAddress-p.ts +2 -2
- package/core/host-contracts/getHandleVersion-p.ts +2 -3
- package/core/host-contracts/getHcuLimitAddress-p.ts +2 -3
- package/core/host-contracts/getInputVerifierAddress-p.ts +2 -3
- package/core/host-contracts/getKmsContextSignersAndThreshold-p.ts +7 -9
- package/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.ts +6 -7
- package/core/host-contracts/getSignersForKmsContext-p.ts +6 -8
- package/core/host-contracts/isAllowedForDecryption.ts +6 -6
- package/core/host-contracts/isHandleDelegatedForUserDecryption-p.ts +7 -7
- package/core/host-contracts/isUserDecryptable.ts +3 -3
- package/core/host-contracts/persistAllowed.ts +6 -6
- package/core/host-contracts/readKmsSignersContext-p.ts +131 -41
- package/core/key/FheEncryptionKeyWasm-p.ts +24 -3
- package/core/key/deserializeFheEncryptionKey.ts +8 -1
- package/core/key/fetchFheEncryptionKey.ts +8 -4
- package/core/key/fetchFheEncryptionKeyBytes.ts +4 -2
- package/core/key/serializeFheEncryptionKey.ts +8 -2
- package/core/kms/KmsSigncryptedShares-p.ts +11 -1
- package/core/kms/SignedDecryptionPermit-p.ts +6 -1
- package/core/kms/TransportKeyPair-p.ts +56 -10
- package/core/kms/createKmsUserDecryptEip712.ts +4 -0
- package/core/kms/createKmsUserDecryptEip712V2.ts +159 -0
- package/core/kms/{decryptKmsSignedcryptedShares-p.ts → decryptKmsSigncryptedShares-p.ts} +12 -2
- package/core/kms/decryptValuesFromPairs.ts +6 -4
- package/core/kms/{fetchKmsSignedcryptedShares-p.ts → fetchKmsSigncryptedShares-p.ts} +12 -5
- package/core/kms/kmsExtraData.ts +82 -13
- package/core/kms/kmsUserDecryptEip712V2Types.ts +31 -0
- package/core/kms/publicDecrypt.ts +5 -3
- package/core/modules/decrypt/mock.ts +0 -35
- package/core/modules/decrypt/module/api-p.ts +88 -17
- package/core/modules/decrypt/module/index.ts +37 -34
- package/core/modules/decrypt/module/init-p.ts +60 -28
- package/core/modules/decrypt/types.ts +37 -65
- package/core/modules/encrypt/mock.ts +34 -4
- package/core/modules/encrypt/module/api-p.ts +66 -15
- package/core/modules/encrypt/module/index.ts +5 -3
- package/core/modules/encrypt/module/init-p.ts +99 -40
- package/core/modules/encrypt/types.ts +34 -2
- package/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.ts +2 -2
- package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +2 -2
- package/core/modules/relayer/module/RelayerAsyncRequest.ts +60 -4
- package/core/modules/relayer/module/fetchFheEncryptionKeySource.ts +9 -1
- package/core/modules/relayer/module/readErrorMessage.ts +56 -0
- package/core/runtime/CoreFhevm-p.ts +247 -22
- package/core/runtime/HyperWasmSolver-p.ts +417 -0
- package/core/runtime/ProtocolVersionResolver-p.ts +463 -0
- package/core/runtime/initFhevmDecryptRuntime-p.ts +1 -1
- package/core/runtime/initFhevmEncryptRuntime-p.ts +1 -1
- package/core/runtime/initFhevmRuntime-p.ts +4 -1
- package/core/runtime/resolveFhevmVersions-p.ts +85 -0
- package/core/runtimeConfig-p.ts +17 -2
- package/core/types/auth.ts +12 -1
- package/core/types/coreFhevmClient.ts +89 -4
- package/core/types/coreFhevmRuntime.ts +3 -18
- package/core/types/fheEncryptionKey.ts +2 -0
- package/core/types/fhevmChain.ts +3 -0
- package/core/types/hostContract.ts +1 -0
- package/core/types/index.ts +1 -1
- package/core/types/kms-p.ts +2 -0
- package/core/types/kms.ts +48 -18
- package/core/types/kmsSignersContext.ts +8 -0
- package/core/types/logger.ts +1 -0
- package/core/types/moduleVersions.ts +35 -0
- package/core/types/tkms-p.ts +3 -0
- package/core/types/wasmAssets.ts +6 -0
- package/core/types/{zkProofBuilder.ts → zkProofBuilder-p.ts} +3 -2
- package/core/utils-p/decrypt/verifyTkmsPublicKey.ts +3 -1
- package/ethers/cleartext/createFhevmCleartextDecryptClient.ts +2 -2
- package/ethers/cleartext/createFhevmCleartextEncryptClient.ts +2 -2
- package/ethers/clients/createFhevmDecryptClient.ts +2 -2
- package/ethers/clients/createFhevmEncryptClient.ts +2 -2
- package/ethers/internal/config.ts +2 -30
- package/package.json +1 -1
- package/viem/cleartext/createFhevmCleartextDecryptClient.ts +2 -2
- package/viem/cleartext/createFhevmCleartextEncryptClient.ts +2 -2
- package/viem/clients/createFhevmDecryptClient.ts +2 -2
- package/viem/clients/createFhevmEncryptClient.ts +2 -2
- package/viem/internal/config.ts +2 -30
- package/wasm/tfhe/v1.5.3/tfhe.d.ts +4 -0
- package/wasm/tfhe/v1.5.3/tfhe.js +8 -0
- package/wasm/tfhe/v1.6.0-dev/tfhe.d.ts +4 -0
- package/wasm/tfhe/v1.6.0-dev/tfhe.js +8 -0
- package/wasm/tfhe/v1.6.1/tfhe.d.ts +4 -0
- package/wasm/tfhe/v1.6.1/tfhe.js +8 -0
- package/wasm/tfheModuleVersion-p.ts +1 -1
- package/wasm/tkms/v0.13.10/kms_lib.d.ts +4 -0
- package/wasm/tkms/v0.13.10/kms_lib.js +8 -0
- package/wasm/tkms/v0.13.20-0/kms_lib.d.ts +4 -0
- package/wasm/tkms/v0.13.20-0/kms_lib.js +8 -0
- package/wasm/tkmsModuleVersion-p.ts +1 -1
- package/wasm/wasmBaseUrl.js +69 -4
- package/_cjs/core/actions/base/fetchKmsSignedcryptedShares.js.map +0 -1
- package/_cjs/core/actions/decrypt/decryptKmsSignedcryptedShares.js +0 -11
- package/_cjs/core/actions/decrypt/decryptKmsSignedcryptedShares.js.map +0 -1
- package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js.map +0 -1
- package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js.map +0 -1
- package/_cjs/core/types/fhevmDecryptionKey.js.map +0 -1
- package/_cjs/core/types/fhevmUser.js.map +0 -1
- package/_cjs/core/types/zkProofBuilder.js.map +0 -1
- package/_esm/core/actions/base/fetchKmsSignedcryptedShares.js.map +0 -1
- package/_esm/core/actions/decrypt/decryptKmsSignedcryptedShares.js +0 -9
- package/_esm/core/actions/decrypt/decryptKmsSignedcryptedShares.js.map +0 -1
- package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js.map +0 -1
- package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js.map +0 -1
- package/_esm/core/types/fhevmDecryptionKey.js +0 -2
- package/_esm/core/types/fhevmDecryptionKey.js.map +0 -1
- package/_esm/core/types/fhevmUser.js +0 -2
- package/_esm/core/types/fhevmUser.js.map +0 -1
- package/_esm/core/types/zkProofBuilder.js +0 -2
- package/_esm/core/types/zkProofBuilder.js.map +0 -1
- package/_types/core/actions/base/fetchKmsSignedcryptedShares.d.ts.map +0 -1
- package/_types/core/actions/decrypt/decryptKmsSignedcryptedShares.d.ts.map +0 -1
- package/_types/core/kms/decryptKmsSignedcryptedShares-p.d.ts.map +0 -1
- package/_types/core/kms/fetchKmsSignedcryptedShares-p.d.ts.map +0 -1
- package/_types/core/types/fhevmDecryptionKey.d.ts +0 -4
- package/_types/core/types/fhevmDecryptionKey.d.ts.map +0 -1
- package/_types/core/types/fhevmUser.d.ts +0 -7
- package/_types/core/types/fhevmUser.d.ts.map +0 -1
- package/_types/core/types/zkProofBuilder.d.ts.map +0 -1
- package/core/types/fhevmDecryptionKey.ts +0 -8
- package/core/types/fhevmUser.ts +0 -7
|
@@ -2,6 +2,9 @@ import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
|
|
|
2
2
|
import type { FhevmRuntime, WithDecrypt } from '../types/coreFhevmRuntime.js';
|
|
3
3
|
import type { Bytes, BytesHex } from '../types/primitives.js';
|
|
4
4
|
import type { TkmsPrivateKey } from '../types/tkms-p.js';
|
|
5
|
+
import type { TkmsVersion } from '../../wasm/tkms/KmsLibApi.js';
|
|
6
|
+
import type { NativeClient, OptionalNativeClient } from '../types/coreFhevmClient.js';
|
|
7
|
+
import type { FhevmChain } from '../types/fhevmChain.js';
|
|
5
8
|
import { assertIsBytesOrBytesHex, bytesToHexLarge, hexToBytesFaster } from '../base/bytes.js';
|
|
6
9
|
import { InvalidTypeError } from '../base/errors/InvalidTypeError.js';
|
|
7
10
|
import { assertRecordNonNullableProperty } from '../base/record.js';
|
|
@@ -18,6 +21,7 @@ declare const TransportKeyPairBrand: unique symbol;
|
|
|
18
21
|
|
|
19
22
|
export type TransportKeyPair = {
|
|
20
23
|
readonly publicKey: BytesHex;
|
|
24
|
+
readonly tkmsVersion: TkmsVersion;
|
|
21
25
|
readonly [TransportKeyPairBrand]: true;
|
|
22
26
|
};
|
|
23
27
|
|
|
@@ -40,6 +44,7 @@ class TransportKeyPairImpl implements TransportKeyPair {
|
|
|
40
44
|
|
|
41
45
|
readonly #publicKeyBytesHex: BytesHex;
|
|
42
46
|
readonly #privateKeyBytes: Bytes;
|
|
47
|
+
readonly #tkmsVersion: TkmsVersion;
|
|
43
48
|
|
|
44
49
|
readonly #runtime: WeakRef<FhevmRuntime>;
|
|
45
50
|
#tkmsPrivateKey: TkmsPrivateKey | undefined;
|
|
@@ -51,6 +56,7 @@ class TransportKeyPairImpl implements TransportKeyPair {
|
|
|
51
56
|
readonly publicKeyBytesHex: BytesHex;
|
|
52
57
|
readonly privateKeyBytes: Bytes;
|
|
53
58
|
readonly tkmsPrivateKey?: TkmsPrivateKey | undefined;
|
|
59
|
+
readonly tkmsVersion: TkmsVersion;
|
|
54
60
|
},
|
|
55
61
|
) {
|
|
56
62
|
if (privateToken !== PRIVATE_TOKEN) {
|
|
@@ -60,12 +66,17 @@ class TransportKeyPairImpl implements TransportKeyPair {
|
|
|
60
66
|
this.#publicKeyBytesHex = parameters.publicKeyBytesHex;
|
|
61
67
|
this.#privateKeyBytes = parameters.privateKeyBytes;
|
|
62
68
|
this.#tkmsPrivateKey = parameters.tkmsPrivateKey;
|
|
69
|
+
this.#tkmsVersion = parameters.tkmsVersion;
|
|
63
70
|
}
|
|
64
71
|
|
|
65
72
|
public get publicKey(): BytesHex {
|
|
66
73
|
return this.#publicKeyBytesHex;
|
|
67
74
|
}
|
|
68
75
|
|
|
76
|
+
public get tkmsVersion(): TkmsVersion {
|
|
77
|
+
return this.#tkmsVersion;
|
|
78
|
+
}
|
|
79
|
+
|
|
69
80
|
/**
|
|
70
81
|
* Hidden method (Symbol key) that returns the deserialized TKMS private key.
|
|
71
82
|
* Lazily deserializes and verifies on first call.
|
|
@@ -94,11 +105,12 @@ class TransportKeyPairImpl implements TransportKeyPair {
|
|
|
94
105
|
|
|
95
106
|
this.#tkmsPrivateKey = await runtimeWithDecrypt.decrypt.deserializeTkmsPrivateKey({
|
|
96
107
|
tkmsPrivateKeyBytes: this.#privateKeyBytes,
|
|
108
|
+
tkmsVersion: this.#tkmsVersion,
|
|
97
109
|
});
|
|
98
110
|
|
|
99
111
|
// Verify the key is valid
|
|
100
112
|
await verifyTkmsPublicKey(
|
|
101
|
-
{ runtime: runtimeWithDecrypt },
|
|
113
|
+
{ runtime: runtimeWithDecrypt, tkmsVersion: this.#tkmsVersion },
|
|
102
114
|
{
|
|
103
115
|
tkmsPrivateKey: this.#tkmsPrivateKey,
|
|
104
116
|
tkmsPublicKeyBytesHex: this.#publicKeyBytesHex,
|
|
@@ -114,8 +126,9 @@ class TransportKeyPairImpl implements TransportKeyPair {
|
|
|
114
126
|
* Access is protected by the Symbol key (not exported) and the private token.
|
|
115
127
|
*/
|
|
116
128
|
[SerializeFn](privateToken: symbol): {
|
|
117
|
-
publicKey: BytesHex;
|
|
118
|
-
privateKey: BytesHex;
|
|
129
|
+
readonly publicKey: BytesHex;
|
|
130
|
+
readonly privateKey: BytesHex;
|
|
131
|
+
readonly tkmsVersion: TkmsVersion;
|
|
119
132
|
} {
|
|
120
133
|
if (privateToken !== PRIVATE_TOKEN) {
|
|
121
134
|
throw new Error('Unauthorized');
|
|
@@ -123,6 +136,7 @@ class TransportKeyPairImpl implements TransportKeyPair {
|
|
|
123
136
|
return {
|
|
124
137
|
publicKey: this.#publicKeyBytesHex,
|
|
125
138
|
privateKey: bytesToHexLarge(this.#privateKeyBytes, false /* no0x */),
|
|
139
|
+
tkmsVersion: this.#tkmsVersion,
|
|
126
140
|
};
|
|
127
141
|
}
|
|
128
142
|
|
|
@@ -130,8 +144,8 @@ class TransportKeyPairImpl implements TransportKeyPair {
|
|
|
130
144
|
* Prevents accidental private key exposure via `JSON.stringify`.
|
|
131
145
|
* Only the public key is included in the output.
|
|
132
146
|
*/
|
|
133
|
-
public toJSON(): { publicKey: string } {
|
|
134
|
-
return { publicKey: this.#publicKeyBytesHex };
|
|
147
|
+
public toJSON(): { publicKey: string; tkmsVersion: string } {
|
|
148
|
+
return { publicKey: this.#publicKeyBytesHex, tkmsVersion: this.#tkmsVersion };
|
|
135
149
|
}
|
|
136
150
|
}
|
|
137
151
|
|
|
@@ -167,16 +181,25 @@ export function assertIsTransportKeyPair(
|
|
|
167
181
|
////////////////////////////////////////////////////////////////////////////////
|
|
168
182
|
|
|
169
183
|
/** Generates a fresh {@link TransportKeyPair}. */
|
|
170
|
-
export async function generateTransportKeyPair(context: {
|
|
171
|
-
|
|
172
|
-
|
|
184
|
+
export async function generateTransportKeyPair(context: {
|
|
185
|
+
readonly runtime: WithDecrypt;
|
|
186
|
+
readonly chain: FhevmChain;
|
|
187
|
+
readonly client: NativeClient;
|
|
188
|
+
readonly tkmsVersion: TkmsVersion;
|
|
189
|
+
}): Promise<TransportKeyPair> {
|
|
190
|
+
const tkmsVersion = context.tkmsVersion;
|
|
191
|
+
|
|
192
|
+
const tkmsPrivateKey = await context.runtime.decrypt.generateTkmsPrivateKey({ tkmsVersion });
|
|
193
|
+
const tkmsPrivateKeyBytes = await context.runtime.decrypt.serializeTkmsPrivateKey({ tkmsPrivateKey, tkmsVersion });
|
|
173
194
|
const tkmsPublicKeyBytesHex = await context.runtime.decrypt.getTkmsPublicKeyHex({
|
|
174
195
|
tkmsPrivateKey,
|
|
196
|
+
tkmsVersion,
|
|
175
197
|
});
|
|
176
198
|
return new TransportKeyPairImpl(PRIVATE_TOKEN, context.runtime, {
|
|
177
199
|
privateKeyBytes: tkmsPrivateKeyBytes,
|
|
178
200
|
publicKeyBytesHex: tkmsPublicKeyBytesHex,
|
|
179
201
|
tkmsPrivateKey,
|
|
202
|
+
tkmsVersion,
|
|
180
203
|
});
|
|
181
204
|
}
|
|
182
205
|
|
|
@@ -190,7 +213,11 @@ export async function generateTransportKeyPair(context: { readonly runtime: With
|
|
|
190
213
|
* @throws {InvalidTypeError} If `value` is not a recognized key pair shape.
|
|
191
214
|
*/
|
|
192
215
|
export async function toTransportKeyPair(
|
|
193
|
-
context: {
|
|
216
|
+
context: {
|
|
217
|
+
readonly runtime: FhevmRuntime;
|
|
218
|
+
readonly chain: FhevmChain;
|
|
219
|
+
readonly client?: OptionalNativeClient;
|
|
220
|
+
},
|
|
194
221
|
value: unknown,
|
|
195
222
|
): Promise<TransportKeyPair> {
|
|
196
223
|
if (isTransportKeyPair(value)) {
|
|
@@ -210,9 +237,20 @@ export async function toTransportKeyPair(
|
|
|
210
237
|
expectedType: 'Bytes | BytesHex',
|
|
211
238
|
...options,
|
|
212
239
|
});
|
|
240
|
+
assertRecordNonNullableProperty(value, 'tkmsVersion', name, {
|
|
241
|
+
expectedType: 'string',
|
|
242
|
+
...options,
|
|
243
|
+
});
|
|
213
244
|
|
|
214
245
|
const rawPublicKey = value.publicKey;
|
|
215
246
|
const rawPrivateKey = value.privateKey;
|
|
247
|
+
const rawTkmsVersion = value.tkmsVersion;
|
|
248
|
+
|
|
249
|
+
// TODO: this is not correct. We must add a resolution function
|
|
250
|
+
let resolvedTkmsVersion: TkmsVersion = '0.13.20-0';
|
|
251
|
+
if (rawTkmsVersion === '0.13.10') {
|
|
252
|
+
resolvedTkmsVersion = rawTkmsVersion;
|
|
253
|
+
}
|
|
216
254
|
|
|
217
255
|
assertIsBytesOrBytesHex(rawPublicKey, { subject: `${name}.publicKey` });
|
|
218
256
|
assertIsBytesOrBytesHex(rawPrivateKey, { subject: `${name}.privateKey` });
|
|
@@ -236,14 +274,22 @@ export async function toTransportKeyPair(
|
|
|
236
274
|
if (runtimeWithDecrypt !== undefined) {
|
|
237
275
|
tkmsPrivateKey = await runtimeWithDecrypt.decrypt.deserializeTkmsPrivateKey({
|
|
238
276
|
tkmsPrivateKeyBytes,
|
|
277
|
+
tkmsVersion: resolvedTkmsVersion,
|
|
239
278
|
});
|
|
240
|
-
await verifyTkmsPublicKey(
|
|
279
|
+
await verifyTkmsPublicKey(
|
|
280
|
+
{ runtime: runtimeWithDecrypt, tkmsVersion: resolvedTkmsVersion },
|
|
281
|
+
{
|
|
282
|
+
tkmsPrivateKey,
|
|
283
|
+
tkmsPublicKeyBytesHex,
|
|
284
|
+
},
|
|
285
|
+
);
|
|
241
286
|
}
|
|
242
287
|
|
|
243
288
|
return new TransportKeyPairImpl(PRIVATE_TOKEN, context.runtime, {
|
|
244
289
|
privateKeyBytes: tkmsPrivateKeyBytes,
|
|
245
290
|
publicKeyBytesHex: tkmsPublicKeyBytesHex,
|
|
246
291
|
tkmsPrivateKey,
|
|
292
|
+
tkmsVersion: resolvedTkmsVersion,
|
|
247
293
|
});
|
|
248
294
|
}
|
|
249
295
|
|
|
@@ -15,6 +15,7 @@ import { assertRecordStringProperty, ensure0x } from '../base/string.js';
|
|
|
15
15
|
import { assertIsUint64, assertIsUintNumber } from '../base/uint.js';
|
|
16
16
|
import { assertIsKmsExtraData } from './kmsExtraData.js';
|
|
17
17
|
import { kmsUserDecryptEip712Types } from './kmsUserDecryptEip712Types.js';
|
|
18
|
+
import { isDeepEqual } from '../base/object.js';
|
|
18
19
|
|
|
19
20
|
////////////////////////////////////////////////////////////////////////////////
|
|
20
21
|
|
|
@@ -120,6 +121,9 @@ export function _assertIsKmsUserDecryptEip712Base(
|
|
|
120
121
|
assertIsKmsEip712Domain((value as Record<string, unknown>).domain, `${name}.domain`, options);
|
|
121
122
|
|
|
122
123
|
assertRecordNonNullableProperty(value, 'types', name, options);
|
|
124
|
+
if (!isDeepEqual(value.types, kmsUserDecryptEip712Types)) {
|
|
125
|
+
throw new Error('Unexpected KmsUserDecryptEip712Types');
|
|
126
|
+
}
|
|
123
127
|
|
|
124
128
|
assertRecordStringProperty(value, 'primaryType', name, {
|
|
125
129
|
expectedValue: primaryType,
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
|
|
2
|
+
import type { KmsUserDecryptEip712V2 } from '../types/kms.js';
|
|
3
|
+
import type { BytesHex } from '../types/primitives.js';
|
|
4
|
+
import type { KmsUserDecryptEip712V2Message } from '../types/kms.js';
|
|
5
|
+
import {
|
|
6
|
+
addressToChecksummedAddress,
|
|
7
|
+
assertIsAddress,
|
|
8
|
+
assertIsAddressArray,
|
|
9
|
+
assertRecordAddressProperty,
|
|
10
|
+
assertRecordChecksummedAddressArrayProperty,
|
|
11
|
+
} from '../base/address.js';
|
|
12
|
+
import { assertIsKmsEip712Domain, createKmsEip712Domain } from './createKmsEip712Domain.js';
|
|
13
|
+
import { asBytesHex, assertIsBytesHex, assertRecordBytesHexProperty, bytesToHexLarge } from '../base/bytes.js';
|
|
14
|
+
import { isDeepEqual } from '../base/object.js';
|
|
15
|
+
import { assertRecordNonNullableProperty } from '../base/record.js';
|
|
16
|
+
import { assertRecordStringProperty, ensure0x } from '../base/string.js';
|
|
17
|
+
import { assertIsUint256, assertIsUint64, assertIsUintString, MAX_UINT256 } from '../base/uint.js';
|
|
18
|
+
import { assertIsKmsExtraData } from './kmsExtraData.js';
|
|
19
|
+
import { kmsUserDecryptEip712V2Types } from './kmsUserDecryptEip712V2Types.js';
|
|
20
|
+
|
|
21
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
22
|
+
|
|
23
|
+
export type CreateKmsUserDecryptEip712V2Parameters = {
|
|
24
|
+
readonly verifyingContractAddressDecryption: string;
|
|
25
|
+
readonly chainId: number | bigint;
|
|
26
|
+
readonly userAddress: string;
|
|
27
|
+
readonly publicKey: string | Uint8Array;
|
|
28
|
+
readonly allowedContracts: readonly string[];
|
|
29
|
+
readonly startTimestamp: number | bigint;
|
|
30
|
+
readonly durationSeconds: number | bigint;
|
|
31
|
+
readonly extraData: string;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
35
|
+
// createKmsUserDecryptEip712V2 (RFC-016)
|
|
36
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
37
|
+
|
|
38
|
+
export function createKmsUserDecryptEip712V2(
|
|
39
|
+
parameters: CreateKmsUserDecryptEip712V2Parameters,
|
|
40
|
+
): KmsUserDecryptEip712V2 {
|
|
41
|
+
const {
|
|
42
|
+
verifyingContractAddressDecryption,
|
|
43
|
+
chainId,
|
|
44
|
+
userAddress,
|
|
45
|
+
publicKey,
|
|
46
|
+
allowedContracts,
|
|
47
|
+
startTimestamp,
|
|
48
|
+
durationSeconds,
|
|
49
|
+
extraData,
|
|
50
|
+
} = parameters;
|
|
51
|
+
const publicKeyBytesHex = _verifyPublicKeyArg(publicKey);
|
|
52
|
+
|
|
53
|
+
assertIsUint64(chainId, {});
|
|
54
|
+
assertIsAddress(verifyingContractAddressDecryption, {});
|
|
55
|
+
assertIsAddress(userAddress, {});
|
|
56
|
+
assertIsAddressArray(allowedContracts, {});
|
|
57
|
+
assertIsUint256(startTimestamp, {});
|
|
58
|
+
assertIsUint256(durationSeconds, {});
|
|
59
|
+
assertIsBytesHex(extraData, {});
|
|
60
|
+
assertIsKmsExtraData(extraData, {});
|
|
61
|
+
|
|
62
|
+
const checksummedUserAddress = addressToChecksummedAddress(userAddress);
|
|
63
|
+
const checksummedContractAddresses = allowedContracts.map(addressToChecksummedAddress);
|
|
64
|
+
|
|
65
|
+
const primaryType: KmsUserDecryptEip712V2['primaryType'] = 'UserDecryptRequestVerification';
|
|
66
|
+
|
|
67
|
+
const domain = createKmsEip712Domain({
|
|
68
|
+
chainId,
|
|
69
|
+
verifyingContractAddressDecryption,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const eip712 = {
|
|
73
|
+
domain,
|
|
74
|
+
types: kmsUserDecryptEip712V2Types,
|
|
75
|
+
primaryType,
|
|
76
|
+
message: {
|
|
77
|
+
userAddress: checksummedUserAddress,
|
|
78
|
+
publicKey: publicKeyBytesHex,
|
|
79
|
+
allowedContracts: checksummedContractAddresses,
|
|
80
|
+
startTimestamp: startTimestamp.toString(),
|
|
81
|
+
durationSeconds: durationSeconds.toString(),
|
|
82
|
+
extraData,
|
|
83
|
+
} satisfies KmsUserDecryptEip712V2Message,
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
Object.freeze(eip712);
|
|
87
|
+
Object.freeze(eip712.domain);
|
|
88
|
+
Object.freeze(eip712.types);
|
|
89
|
+
Object.freeze(eip712.types.EIP712Domain);
|
|
90
|
+
Object.freeze(eip712.types.UserDecryptRequestVerification);
|
|
91
|
+
Object.freeze(eip712.message);
|
|
92
|
+
Object.freeze(eip712.message.allowedContracts);
|
|
93
|
+
|
|
94
|
+
return eip712;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
98
|
+
|
|
99
|
+
export function assertIsKmsUserDecryptEip712V2(
|
|
100
|
+
value: unknown,
|
|
101
|
+
name: string,
|
|
102
|
+
options: ErrorMetadataParams,
|
|
103
|
+
): asserts value is KmsUserDecryptEip712V2 {
|
|
104
|
+
assertRecordNonNullableProperty(value, 'domain', name, options);
|
|
105
|
+
assertIsKmsEip712Domain((value as Record<string, unknown>).domain, `${name}.domain`, options);
|
|
106
|
+
|
|
107
|
+
assertRecordNonNullableProperty(value, 'types', name, options);
|
|
108
|
+
if (!isDeepEqual(value.types, kmsUserDecryptEip712V2Types)) {
|
|
109
|
+
throw new Error('Unexpected KmsUserDecryptEip712V2Types');
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
assertRecordStringProperty(value, 'primaryType', name, {
|
|
113
|
+
expectedValue: 'UserDecryptRequestVerification',
|
|
114
|
+
...options,
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
assertRecordNonNullableProperty(value, 'message', name, options);
|
|
118
|
+
const msg = (value as Record<string, unknown>).message as Record<string, unknown>;
|
|
119
|
+
_assertIsKmsUserDecryptEip712V2Message(msg, `${name}.message`, options);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function _assertIsKmsUserDecryptEip712V2Message(
|
|
123
|
+
msg: unknown,
|
|
124
|
+
msgName: string,
|
|
125
|
+
options: ErrorMetadataParams,
|
|
126
|
+
): asserts msg is KmsUserDecryptEip712V2Message {
|
|
127
|
+
type MessageType = KmsUserDecryptEip712V2['message'];
|
|
128
|
+
assertRecordAddressProperty(msg, 'userAddress' satisfies keyof MessageType, msgName, options);
|
|
129
|
+
assertRecordBytesHexProperty(msg, 'publicKey' satisfies keyof MessageType, msgName, options);
|
|
130
|
+
assertRecordChecksummedAddressArrayProperty(msg, 'allowedContracts' satisfies keyof MessageType, msgName, options);
|
|
131
|
+
assertRecordStringProperty(msg, 'startTimestamp' satisfies keyof MessageType, msgName, options);
|
|
132
|
+
assertRecordStringProperty(msg, 'durationSeconds' satisfies keyof MessageType, msgName, options);
|
|
133
|
+
assertRecordBytesHexProperty(msg, 'extraData' satisfies keyof MessageType, msgName, options);
|
|
134
|
+
assertIsKmsExtraData(msg.extraData, options);
|
|
135
|
+
assertIsUintString(msg.startTimestamp, { max: MAX_UINT256 });
|
|
136
|
+
assertIsUintString(msg.durationSeconds, { max: MAX_UINT256 });
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
140
|
+
|
|
141
|
+
function _verifyPublicKeyArg(value: unknown): BytesHex {
|
|
142
|
+
if (value === null || value === undefined) {
|
|
143
|
+
throw new Error(`Missing publicKey argument.`);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
let publicKeyBytesHex: BytesHex;
|
|
147
|
+
|
|
148
|
+
const pk = value;
|
|
149
|
+
|
|
150
|
+
if (typeof pk === 'string') {
|
|
151
|
+
publicKeyBytesHex = asBytesHex(ensure0x(pk));
|
|
152
|
+
} else if (pk instanceof Uint8Array) {
|
|
153
|
+
publicKeyBytesHex = bytesToHexLarge(pk);
|
|
154
|
+
} else {
|
|
155
|
+
throw new Error(`Invalid publicKey argument.`);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return publicKeyBytesHex;
|
|
159
|
+
}
|
|
@@ -2,14 +2,16 @@ import type { WithDecrypt } from '../types/coreFhevmRuntime.js';
|
|
|
2
2
|
import type { KmsSigncryptedShares } from '../types/kms.js';
|
|
3
3
|
import type { ClearValue } from '../types/encryptedTypes-p.js';
|
|
4
4
|
import type { TransportKeyPair } from './TransportKeyPair-p.js';
|
|
5
|
+
import type { TkmsVersion } from '../../wasm/tkms/KmsLibApi.js';
|
|
5
6
|
import { transportKeyPairToTkmsPrivateKey } from './TransportKeyPair-p.js';
|
|
6
7
|
|
|
7
8
|
////////////////////////////////////////////////////////////////////////////////
|
|
8
|
-
//
|
|
9
|
+
// decryptKmsSigncryptedShares (with privateKey)
|
|
9
10
|
////////////////////////////////////////////////////////////////////////////////
|
|
10
11
|
|
|
11
12
|
type Context = {
|
|
12
13
|
readonly runtime: WithDecrypt;
|
|
14
|
+
readonly tkmsVersion: TkmsVersion;
|
|
13
15
|
};
|
|
14
16
|
|
|
15
17
|
type Parameters = {
|
|
@@ -21,9 +23,16 @@ type ReturnType = readonly ClearValue[];
|
|
|
21
23
|
|
|
22
24
|
////////////////////////////////////////////////////////////////////////////////
|
|
23
25
|
|
|
24
|
-
export async function
|
|
26
|
+
export async function decryptKmsSigncryptedShares(context: Context, parameters: Parameters): Promise<ReturnType> {
|
|
25
27
|
const { transportKeyPair: transportKeyPair, kmsSigncryptedShares } = parameters;
|
|
26
28
|
|
|
29
|
+
if (context.tkmsVersion !== kmsSigncryptedShares.tkmsVersion) {
|
|
30
|
+
throw new Error('TkmsVersion mismatch');
|
|
31
|
+
}
|
|
32
|
+
if (context.tkmsVersion !== transportKeyPair.tkmsVersion) {
|
|
33
|
+
throw new Error('TkmsVersion mismatch');
|
|
34
|
+
}
|
|
35
|
+
|
|
27
36
|
// also validates `transportKeyPair`
|
|
28
37
|
const tkmsPrivateKey = await transportKeyPairToTkmsPrivateKey(context, transportKeyPair);
|
|
29
38
|
|
|
@@ -31,6 +40,7 @@ export async function decryptKmsSignedcryptedShares(context: Context, parameters
|
|
|
31
40
|
const orderedDecryptedHandles: readonly ClearValue[] = await context.runtime.decrypt.decryptAndReconstruct({
|
|
32
41
|
shares: kmsSigncryptedShares,
|
|
33
42
|
tkmsPrivateKey,
|
|
43
|
+
tkmsVersion: context.tkmsVersion,
|
|
34
44
|
});
|
|
35
45
|
|
|
36
46
|
return orderedDecryptedHandles;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
////////////////////////////////////////////////////////////////////////////////
|
|
2
2
|
|
|
3
|
+
import type { TkmsVersion } from '../../wasm/tkms/KmsLibApi.js';
|
|
3
4
|
import type { WithDecrypt } from '../types/coreFhevmRuntime.js';
|
|
4
5
|
import type { Handle } from '../types/encryptedTypes-p.js';
|
|
5
6
|
import type { FhevmChain } from '../types/fhevmChain.js';
|
|
@@ -8,8 +9,8 @@ import type { ChecksummedAddress, TypedValue } from '../types/primitives.js';
|
|
|
8
9
|
import type { RelayerDelegatedUserDecryptOptions, RelayerUserDecryptOptions } from '../types/relayer.js';
|
|
9
10
|
import type { SignedDelegatedDecryptionPermit, SignedSelfDecryptionPermit } from '../types/signedDecryptionPermit.js';
|
|
10
11
|
import type { TransportKeyPair } from './TransportKeyPair-p.js';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
12
|
+
import { decryptKmsSigncryptedShares } from './decryptKmsSigncryptedShares-p.js';
|
|
13
|
+
import { fetchKmsSigncryptedShares } from './fetchKmsSigncryptedShares-p.js';
|
|
13
14
|
|
|
14
15
|
////////////////////////////////////////////////////////////////////////////////
|
|
15
16
|
|
|
@@ -17,6 +18,7 @@ type Context = {
|
|
|
17
18
|
readonly chain: FhevmChain;
|
|
18
19
|
readonly runtime: WithDecrypt;
|
|
19
20
|
readonly client: NonNullable<object>;
|
|
21
|
+
readonly tkmsVersion: TkmsVersion;
|
|
20
22
|
readonly options: { readonly batchRpcCalls: boolean };
|
|
21
23
|
};
|
|
22
24
|
|
|
@@ -47,10 +49,10 @@ export type ReturnType = readonly TypedValue[];
|
|
|
47
49
|
export async function decryptValuesFromPairs(fhevm: Context, parameters: Parameters): Promise<ReturnType> {
|
|
48
50
|
const { transportKeyPair: transportKeyPair } = parameters;
|
|
49
51
|
|
|
50
|
-
const kmsSigncryptedShares: KmsSigncryptedShares = await
|
|
52
|
+
const kmsSigncryptedShares: KmsSigncryptedShares = await fetchKmsSigncryptedShares(fhevm, parameters);
|
|
51
53
|
|
|
52
54
|
// Using the `KmsSigncryptedShares` decrypt and reconstruct clear values
|
|
53
|
-
return
|
|
55
|
+
return decryptKmsSigncryptedShares(fhevm, {
|
|
54
56
|
kmsSigncryptedShares,
|
|
55
57
|
transportKeyPair: transportKeyPair,
|
|
56
58
|
});
|
|
@@ -16,6 +16,7 @@ import { checkPersistAllowed } from '../host-contracts/checkPersistAllowed.js';
|
|
|
16
16
|
import { assertExtraDataMatchesKmsSingersContext } from '../host-contracts/KmsSignersContext-p.js';
|
|
17
17
|
import { createKmsEip712Domain } from './createKmsEip712Domain.js';
|
|
18
18
|
import { checkDelegation } from '../host-contracts/checkDelegation.js';
|
|
19
|
+
import { resolveFhevmTkmsVersion } from '../runtime/resolveFhevmVersions-p.js';
|
|
19
20
|
|
|
20
21
|
/*
|
|
21
22
|
See: in KMS (eip712Domain)
|
|
@@ -64,12 +65,16 @@ type ReturnType = KmsSigncryptedShares;
|
|
|
64
65
|
const MAX_USER_DECRYPT_CONTRACT_ADDRESSES = 10;
|
|
65
66
|
|
|
66
67
|
////////////////////////////////////////////////////////////////////////////////
|
|
67
|
-
//
|
|
68
|
+
// fetchKmsSigncryptedShares
|
|
68
69
|
////////////////////////////////////////////////////////////////////////////////
|
|
69
70
|
|
|
70
|
-
export async function
|
|
71
|
+
export async function fetchKmsSigncryptedShares(context: Context, parameters: Parameters): Promise<ReturnType> {
|
|
71
72
|
const { signedPermit, options, pairs } = parameters;
|
|
72
73
|
|
|
74
|
+
// This helper must support base clients, where TKMS is not mandatory
|
|
75
|
+
// and tkmsVersion may not be initialized in the CoreFhevm instance yet.
|
|
76
|
+
const tkmsVersion = await resolveFhevmTkmsVersion(context);
|
|
77
|
+
|
|
73
78
|
// Check: every requested contractAddress is listed in the permit
|
|
74
79
|
assertPermitIncludesContractAddresses(
|
|
75
80
|
signedPermit,
|
|
@@ -121,14 +126,14 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
|
|
|
121
126
|
// 7. Check: ACL permissions (user is signer or delegatorAddress)
|
|
122
127
|
if (signedPermit.isDelegated) {
|
|
123
128
|
await checkDelegation(context, {
|
|
124
|
-
|
|
129
|
+
aclAddress: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
|
|
125
130
|
delegate: signerAddress,
|
|
126
131
|
delegator: encryptedDataOwnerAddress,
|
|
127
132
|
handleContractPairs,
|
|
128
133
|
});
|
|
129
134
|
} else {
|
|
130
135
|
await checkPersistAllowed(context, {
|
|
131
|
-
|
|
136
|
+
aclAddress: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
|
|
132
137
|
userAddress: encryptedDataOwnerAddress,
|
|
133
138
|
handleContractPairs,
|
|
134
139
|
});
|
|
@@ -152,7 +157,8 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
|
|
|
152
157
|
// though the context ID matches. Consider comparing the decoded `kmsContextId`
|
|
153
158
|
// instead of the raw `extraData` bytes.
|
|
154
159
|
const requestedKmsSignersContext: KmsSignersContext = await readKmsSignersContext(context, {
|
|
155
|
-
|
|
160
|
+
kmsVerifierAddress: context.chain.fhevm.contracts.kmsVerifier.address as ChecksummedAddress,
|
|
161
|
+
protocolConfigAddress: context.chain.fhevm.contracts.protocolConfig?.address as ChecksummedAddress | undefined,
|
|
156
162
|
});
|
|
157
163
|
|
|
158
164
|
assertExtraDataMatchesKmsSingersContext(
|
|
@@ -201,6 +207,7 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
|
|
|
201
207
|
eip712Signature: signature,
|
|
202
208
|
eip712SignerAddress: signerAddress,
|
|
203
209
|
handles,
|
|
210
|
+
tkmsVersion,
|
|
204
211
|
};
|
|
205
212
|
|
|
206
213
|
// 12. The returned KmsSigncryptedShares is guaranteed to be fully verified:
|
package/core/kms/kmsExtraData.ts
CHANGED
|
@@ -1,49 +1,115 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Bytes32Hex, BytesHex, Uint256BigInt, Uint8Number } from '../types/primitives.js';
|
|
2
2
|
import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
|
|
3
3
|
import { asUint256BigInt, asUint8Number } from '../base/uint.js';
|
|
4
4
|
import { asBytes32Hex, assertIsBytesHex } from '../base/bytes.js';
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
export const EXTRA_DATA_V0: Uint8Number = 0x00 as Uint8Number; // 0x00
|
|
7
|
+
export const EXTRA_DATA_V1: Uint8Number = 0x01 as Uint8Number; // 1 version byte + 32-byte big-endian context ID = 33 bytes
|
|
8
|
+
export const EXTRA_DATA_V2: Uint8Number = 0x02 as Uint8Number; // 1 version byte + 32-byte big-endian context ID + 32-byte big-endian epoch ID = 65 bytes
|
|
7
9
|
|
|
8
10
|
export function fromKmsExtraData(extraData: BytesHex): {
|
|
9
11
|
version: Uint8Number;
|
|
10
12
|
kmsContextId: Uint256BigInt;
|
|
13
|
+
kmsEpochId: Uint256BigInt;
|
|
11
14
|
} {
|
|
12
15
|
if ((extraData as string) === '0x00' || (extraData as string) === '0x') {
|
|
13
16
|
return {
|
|
14
|
-
version:
|
|
17
|
+
version: EXTRA_DATA_V0,
|
|
15
18
|
kmsContextId: 0n as Uint256BigInt,
|
|
19
|
+
kmsEpochId: 0n as Uint256BigInt,
|
|
16
20
|
};
|
|
17
21
|
}
|
|
18
22
|
|
|
23
|
+
if (extraData.length <= 4) {
|
|
24
|
+
throw new Error(`Unsupported extraData length ${extraData.length}: must be more than 4 bytes`);
|
|
25
|
+
}
|
|
26
|
+
|
|
19
27
|
// First byte = version (characters 2-3 after '0x')
|
|
20
|
-
const version = asUint8Number(
|
|
28
|
+
const version = asUint8Number(Number('0x' + extraData.slice(2, 4)));
|
|
21
29
|
|
|
22
30
|
if (version === EXTRA_DATA_V1) {
|
|
23
|
-
// 1 version byte + 32
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
// ExtraData v1 format: 1 version byte + 32-byte big-endian context ID = 33 bytes = 66 hex chars + 2 for '0x' = 68
|
|
32
|
+
// 0x01aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
33
|
+
// ↑ ↑ ↑
|
|
34
|
+
// 0 4 68
|
|
35
|
+
// 0 1 2 3 4 5 6
|
|
36
|
+
// 01234567890123456789012345678901234567890123456789012345678901234567
|
|
37
|
+
|
|
38
|
+
if (extraData.length != 68) {
|
|
39
|
+
throw new Error(`Invalid extraData length for v1: expected 68, got ${extraData.length}`);
|
|
26
40
|
}
|
|
27
41
|
// 32-byte contextId starts at byte 1 (hex chars 4..67)
|
|
28
42
|
const contextIdBytes32Hex: Bytes32Hex = asBytes32Hex(`0x${extraData.slice(4, 68)}`);
|
|
29
43
|
const kmsContextId = asUint256BigInt(BigInt(contextIdBytes32Hex));
|
|
30
|
-
return { version, kmsContextId };
|
|
44
|
+
return { version, kmsContextId, kmsEpochId: 0n as Uint256BigInt };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (version === EXTRA_DATA_V2) {
|
|
48
|
+
// ExtraData v2 format: 1 version byte + 32-byte big-endian context ID + 32-byte big-endian epoch ID = 65 bytes = 130 hex chars + 2 for '0x' = 132
|
|
49
|
+
// 0x01aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
|
|
50
|
+
// ↑ ↑ ↑ ↑
|
|
51
|
+
// 0 4 68 132
|
|
52
|
+
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3
|
|
53
|
+
// 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901
|
|
54
|
+
|
|
55
|
+
if (extraData.length != 132) {
|
|
56
|
+
throw new Error(`Invalid extraData length for v2: expected 132, got ${extraData.length}`);
|
|
57
|
+
}
|
|
58
|
+
// 32-byte contextId starts at byte 1 (hex chars 4..67)
|
|
59
|
+
const contextIdBytes32Hex: Bytes32Hex = asBytes32Hex(`0x${extraData.slice(4, 68)}`);
|
|
60
|
+
const kmsContextId = asUint256BigInt(BigInt(contextIdBytes32Hex));
|
|
61
|
+
|
|
62
|
+
// 32-byte epochId starts at byte 33 (hex chars 68..131)
|
|
63
|
+
const epochIdBytes32Hex: Bytes32Hex = asBytes32Hex(`0x${extraData.slice(68, 132)}`);
|
|
64
|
+
const kmsEpochId = asUint256BigInt(BigInt(epochIdBytes32Hex));
|
|
65
|
+
|
|
66
|
+
return { version, kmsContextId, kmsEpochId };
|
|
31
67
|
}
|
|
32
68
|
|
|
33
69
|
throw new Error(`Unsupported extraData version ${version}`);
|
|
34
70
|
}
|
|
35
71
|
|
|
36
72
|
/**
|
|
37
|
-
* Encodes a KMS context
|
|
38
|
-
*
|
|
73
|
+
* Encodes a KMS context into an extraData format.
|
|
74
|
+
* v0: `0x00`
|
|
75
|
+
* v1: `0x01` + 32-byte big-endian context ID.
|
|
76
|
+
* v2: `0x02` + 32-byte big-endian context ID + 32-byte big-endian epoch ID.
|
|
39
77
|
*/
|
|
40
78
|
export function toKmsExtraData(args: {
|
|
41
79
|
readonly version: Uint8Number;
|
|
42
80
|
readonly kmsContextId: Uint256BigInt;
|
|
81
|
+
readonly kmsEpochId: Uint256BigInt;
|
|
43
82
|
}): BytesHex {
|
|
44
83
|
const v = args.version.toString(16).padStart(2, '0');
|
|
45
|
-
|
|
46
|
-
|
|
84
|
+
|
|
85
|
+
switch (args.version) {
|
|
86
|
+
case EXTRA_DATA_V0: {
|
|
87
|
+
return `0x${v}` as BytesHex;
|
|
88
|
+
}
|
|
89
|
+
case EXTRA_DATA_V1: {
|
|
90
|
+
if (args.kmsContextId === 0n) {
|
|
91
|
+
throw new Error('kmsContextId cannot be 0 for v1 extraData');
|
|
92
|
+
}
|
|
93
|
+
if (args.kmsEpochId !== 0n) {
|
|
94
|
+
throw new Error('kmsEpochId must be 0 for v1 extraData');
|
|
95
|
+
}
|
|
96
|
+
const contextId = args.kmsContextId.toString(16).padStart(64, '0');
|
|
97
|
+
return `0x${v}${contextId}` as BytesHex;
|
|
98
|
+
}
|
|
99
|
+
case EXTRA_DATA_V2: {
|
|
100
|
+
if (args.kmsContextId === 0n) {
|
|
101
|
+
throw new Error('kmsContextId cannot be 0 for v2 extraData');
|
|
102
|
+
}
|
|
103
|
+
if (args.kmsEpochId === 0n) {
|
|
104
|
+
throw new Error('kmsEpochId cannot be 0 for v2 extraData');
|
|
105
|
+
}
|
|
106
|
+
const contextId = args.kmsContextId.toString(16).padStart(64, '0');
|
|
107
|
+
const epochId = args.kmsEpochId.toString(16).padStart(64, '0');
|
|
108
|
+
return `0x${v}${contextId}${epochId}` as BytesHex;
|
|
109
|
+
}
|
|
110
|
+
default:
|
|
111
|
+
throw new Error(`Unsupported extraData version ${args.version}`);
|
|
112
|
+
}
|
|
47
113
|
}
|
|
48
114
|
|
|
49
115
|
export function assertIsKmsExtraData(
|
|
@@ -53,6 +119,9 @@ export function assertIsKmsExtraData(
|
|
|
53
119
|
if (value === '0x00' || value === '0x') {
|
|
54
120
|
return;
|
|
55
121
|
}
|
|
56
|
-
|
|
122
|
+
|
|
123
|
+
assertIsBytesHex(value, options);
|
|
124
|
+
|
|
125
|
+
// Will valid extraData length too
|
|
57
126
|
fromKmsExtraData(value);
|
|
58
127
|
}
|