@fhevm/sdk 1.0.0-alpha.1 → 1.0.0-alpha.3
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/fetchVerifiedInputProof.js +1 -1
- package/_cjs/core/actions/base/fetchVerifiedInputProof.js.map +1 -1
- package/_cjs/core/actions/base/signDecryptionPermit.js.map +1 -1
- package/_cjs/core/actions/chain/index.js +5 -5
- package/_cjs/core/actions/chain/index.js.map +1 -1
- package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js +2 -3
- package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
- package/_cjs/core/actions/chain/parseTransportKeypair.js +1 -2
- package/_cjs/core/actions/chain/parseTransportKeypair.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValue.js +4 -1
- package/_cjs/core/actions/decrypt/decryptValue.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValues.js +4 -1
- package/_cjs/core/actions/decrypt/decryptValues.js.map +1 -1
- package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js +4 -1
- package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/actions/decrypt/index.js.map +1 -1
- package/_cjs/core/actions/host/getUserDecryptionDelegationExpirationDate.js +12 -14
- package/_cjs/core/actions/host/getUserDecryptionDelegationExpirationDate.js.map +1 -1
- package/_cjs/core/base/bytes.js +8 -0
- package/_cjs/core/base/bytes.js.map +1 -1
- package/_cjs/core/base/sign.js +50 -0
- package/_cjs/core/base/sign.js.map +1 -0
- package/_cjs/core/base/typedValue.js +17 -0
- package/_cjs/core/base/typedValue.js.map +1 -1
- package/_cjs/core/base/uint.js +29 -0
- package/_cjs/core/base/uint.js.map +1 -1
- package/_cjs/core/clients/decorators/decrypt.js +3 -3
- package/_cjs/core/clients/decorators/decrypt.js.map +1 -1
- package/_cjs/core/coprocessor/ZkProof-p.js +17 -11
- package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_cjs/core/coprocessor/ZkProofBuilder-p.js +6 -4
- package/_cjs/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
- package/_cjs/core/coprocessor/encrypt.js +1 -3
- package/_cjs/core/coprocessor/encrypt.js.map +1 -1
- package/_cjs/core/coprocessor/fetchVerifiedInputProof.js +3 -4
- package/_cjs/core/coprocessor/fetchVerifiedInputProof.js.map +1 -1
- package/_cjs/core/handle/FheType.js +5 -2
- package/_cjs/core/handle/FheType.js.map +1 -1
- package/_cjs/core/host-contracts/KmsSignersContext-p.js +1 -1
- package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_cjs/core/host-contracts/checkDelegation.js +74 -0
- package/_cjs/core/host-contracts/checkDelegation.js.map +1 -0
- package/_cjs/core/host-contracts/getUserDecryptionDelegationExpirationDate.js +21 -0
- package/_cjs/core/host-contracts/getUserDecryptionDelegationExpirationDate.js.map +1 -0
- package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +33 -0
- package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -0
- package/_cjs/core/host-contracts/persistAllowed.js +1 -1
- package/_cjs/core/host-contracts/persistAllowed.js.map +1 -1
- package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js +18 -8
- package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
- package/_cjs/core/kms/publicDecrypt.js +1 -4
- package/_cjs/core/kms/publicDecrypt.js.map +1 -1
- package/_cjs/core/modules/decrypt/mock.js +93 -10
- package/_cjs/core/modules/decrypt/mock.js.map +1 -1
- package/_cjs/core/modules/encrypt/mock.js +142 -12
- package/_cjs/core/modules/encrypt/mock.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/api-p.js +7 -2
- package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/ethereum/types-ct.js +3 -0
- package/_cjs/core/modules/ethereum/types-ct.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +68 -0
- package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +119 -0
- package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js +52 -0
- package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +117 -0
- package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/mock.js +40 -0
- package/_cjs/core/modules/relayer/cleartext/mock.js.map +1 -0
- package/_cjs/core/modules/relayer/cleartext/signers.js +34 -0
- package/_cjs/core/modules/relayer/cleartext/signers.js.map +1 -0
- package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js +2 -2
- package/_cjs/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js +1 -1
- package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/utils.js +16 -0
- package/_cjs/core/modules/relayer/utils.js.map +1 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextBaseClient.js +17 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextClient.js +11 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextClient.js.map +1 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextDecryptClient.js +10 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextEncryptClient.js +10 -0
- package/_cjs/ethers/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
- package/_cjs/ethers/cleartext/decorators/decrypt.js +9 -0
- package/_cjs/ethers/cleartext/decorators/decrypt.js.map +1 -0
- package/_cjs/ethers/cleartext/decorators/encrypt.js +9 -0
- package/_cjs/ethers/cleartext/decorators/encrypt.js.map +1 -0
- package/_cjs/ethers/cleartext/index.js +12 -0
- package/_cjs/ethers/cleartext/index.js.map +1 -0
- package/_cjs/ethers/clients/createFhevmBaseClient.js +2 -1
- package/_cjs/ethers/clients/createFhevmBaseClient.js.map +1 -1
- package/_cjs/ethers/clients/createFhevmClient.js +2 -2
- package/_cjs/ethers/clients/createFhevmClient.js.map +1 -1
- package/_cjs/ethers/clients/createFhevmDecryptClient.js +1 -1
- package/_cjs/ethers/clients/createFhevmDecryptClient.js.map +1 -1
- package/_cjs/ethers/clients/createFhevmEncryptClient.js +1 -1
- package/_cjs/ethers/clients/createFhevmEncryptClient.js.map +1 -1
- package/_cjs/{viem → ethers/clients}/decorators/decrypt.js +2 -2
- package/_cjs/ethers/clients/decorators/decrypt.js.map +1 -0
- package/_cjs/ethers/{decorators → clients/decorators}/encrypt.js +2 -2
- package/_cjs/ethers/clients/decorators/encrypt.js.map +1 -0
- package/_cjs/ethers/index.js +4 -3
- package/_cjs/ethers/index.js.map +1 -1
- package/_cjs/ethers/internal/config.js +32 -0
- package/_cjs/ethers/internal/config.js.map +1 -0
- package/_cjs/ethers/internal/ethereum-ct.js +42 -0
- package/_cjs/ethers/internal/ethereum-ct.js.map +1 -0
- package/_cjs/ethers/internal/ethers-p.js +0 -32
- package/_cjs/ethers/internal/ethers-p.js.map +1 -1
- package/_cjs/ethers/internal/runtime-ct.js +22 -0
- package/_cjs/ethers/internal/runtime-ct.js.map +1 -0
- package/_cjs/ethers/internal/runtime.js +22 -0
- package/_cjs/ethers/internal/runtime.js.map +1 -0
- package/_cjs/ethers/runtime/initFhevmDecryptRuntime.js +3 -2
- package/_cjs/ethers/runtime/initFhevmDecryptRuntime.js.map +1 -1
- package/_cjs/ethers/runtime/initFhevmEncryptRuntime.js +3 -2
- package/_cjs/ethers/runtime/initFhevmEncryptRuntime.js.map +1 -1
- package/_cjs/ethers/runtime/initFhevmRuntime.js +3 -2
- package/_cjs/ethers/runtime/initFhevmRuntime.js.map +1 -1
- package/_cjs/index.js +2 -0
- package/_cjs/index.js.map +1 -0
- package/_cjs/viem/cleartext/createFhevmCleartextBaseClient.js +17 -0
- package/_cjs/viem/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
- package/_cjs/viem/cleartext/createFhevmCleartextClient.js +11 -0
- package/_cjs/viem/cleartext/createFhevmCleartextClient.js.map +1 -0
- package/_cjs/viem/cleartext/createFhevmCleartextDecryptClient.js +10 -0
- package/_cjs/viem/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
- package/_cjs/viem/cleartext/createFhevmCleartextEncryptClient.js +10 -0
- package/_cjs/viem/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
- package/_cjs/viem/cleartext/decorators/decrypt.js +9 -0
- package/_cjs/viem/cleartext/decorators/decrypt.js.map +1 -0
- package/_cjs/viem/cleartext/decorators/encrypt.js +9 -0
- package/_cjs/viem/cleartext/decorators/encrypt.js.map +1 -0
- package/_cjs/viem/cleartext/index.js +12 -0
- package/_cjs/viem/cleartext/index.js.map +1 -0
- package/_cjs/viem/clients/createFhevmBaseClient.js +2 -1
- package/_cjs/viem/clients/createFhevmBaseClient.js.map +1 -1
- package/_cjs/viem/clients/createFhevmClient.js +2 -2
- package/_cjs/viem/clients/createFhevmClient.js.map +1 -1
- package/_cjs/viem/clients/createFhevmDecryptClient.js +1 -1
- package/_cjs/viem/clients/createFhevmDecryptClient.js.map +1 -1
- package/_cjs/viem/clients/createFhevmEncryptClient.js +1 -1
- package/_cjs/viem/clients/createFhevmEncryptClient.js.map +1 -1
- package/_cjs/{ethers → viem/clients}/decorators/decrypt.js +2 -2
- package/_cjs/viem/clients/decorators/decrypt.js.map +1 -0
- package/_cjs/viem/{decorators → clients/decorators}/encrypt.js +2 -2
- package/_cjs/viem/clients/decorators/encrypt.js.map +1 -0
- package/_cjs/viem/index.js +6 -5
- package/_cjs/viem/index.js.map +1 -1
- package/_cjs/viem/internal/config.js +32 -0
- package/_cjs/viem/internal/config.js.map +1 -0
- package/_cjs/viem/internal/ethereum-ct.js +42 -0
- package/_cjs/viem/internal/ethereum-ct.js.map +1 -0
- package/_cjs/viem/internal/runtime-ct.js +22 -0
- package/_cjs/viem/internal/runtime-ct.js.map +1 -0
- package/_cjs/viem/internal/runtime.js +22 -0
- package/_cjs/viem/internal/runtime.js.map +1 -0
- package/_cjs/viem/internal/viem-p.js +0 -32
- package/_cjs/viem/internal/viem-p.js.map +1 -1
- package/_cjs/viem/runtime/initFhevmDecryptRuntime.js +2 -1
- package/_cjs/viem/runtime/initFhevmDecryptRuntime.js.map +1 -1
- package/_cjs/viem/runtime/initFhevmEncryptRuntime.js +2 -1
- package/_cjs/viem/runtime/initFhevmEncryptRuntime.js.map +1 -1
- package/_cjs/viem/runtime/initFhevmRuntime.js +2 -1
- package/_cjs/viem/runtime/initFhevmRuntime.js.map +1 -1
- package/_cjs/wasm/tfhe/startWorkers.v1.5.3.js +279 -426
- package/_cjs/wasm/tfhe/startWorkers.v1.5.3.js.map +7 -0
- package/_cjs/wasm/tfhe/tfhe.v1.5.3.js +2779 -3032
- package/_cjs/wasm/tfhe/tfhe.v1.5.3.js.map +7 -0
- package/_cjs/wasm/tfhe/tfhe_bg.v1.5.3.wasm.base64.js +29 -1
- package/_cjs/wasm/tfhe/tfhe_bg.v1.5.3.wasm.base64.js.map +7 -0
- package/_cjs/wasm/tkms/kms_lib.v0.13.10.js +1793 -1985
- package/_cjs/wasm/tkms/kms_lib.v0.13.10.js.map +7 -0
- package/_cjs/wasm/tkms/kms_lib_bg.v0.13.10.wasm.base64.js +29 -3
- package/_cjs/wasm/tkms/kms_lib_bg.v0.13.10.wasm.base64.js.map +7 -0
- package/_cjs/wasm/wasmBaseUrl.js +36 -14
- package/_cjs/wasm/wasmBaseUrl.js.map +7 -0
- package/_esm/core/_version.js +1 -1
- package/_esm/core/actions/base/fetchVerifiedInputProof.js +1 -1
- package/_esm/core/actions/base/fetchVerifiedInputProof.js.map +1 -1
- package/_esm/core/actions/base/signDecryptionPermit.js.map +1 -1
- package/_esm/core/actions/chain/index.js +4 -4
- package/_esm/core/actions/chain/index.js.map +1 -1
- package/_esm/core/actions/chain/parseSignedDecryptionPermit.js +2 -3
- package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
- package/_esm/core/actions/chain/parseTransportKeypair.js +1 -3
- package/_esm/core/actions/chain/parseTransportKeypair.js.map +1 -1
- package/_esm/core/actions/chain/serializeTransportKeypair.js +0 -1
- package/_esm/core/actions/chain/serializeTransportKeypair.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValue.js +5 -1
- package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValues.js +5 -1
- package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
- package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +5 -1
- package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
- package/_esm/core/actions/decrypt/index.js +2 -2
- package/_esm/core/actions/decrypt/index.js.map +1 -1
- package/_esm/core/actions/host/getUserDecryptionDelegationExpirationDate.js +13 -14
- package/_esm/core/actions/host/getUserDecryptionDelegationExpirationDate.js.map +1 -1
- package/_esm/core/base/bytes.js +7 -0
- package/_esm/core/base/bytes.js.map +1 -1
- package/_esm/core/base/sign.js +58 -0
- package/_esm/core/base/sign.js.map +1 -0
- package/_esm/core/base/typedValue.js +16 -0
- package/_esm/core/base/typedValue.js.map +1 -1
- package/_esm/core/base/uint.js +30 -0
- package/_esm/core/base/uint.js.map +1 -1
- package/_esm/core/clients/decorators/decrypt.js +3 -3
- package/_esm/core/clients/decorators/decrypt.js.map +1 -1
- package/_esm/core/coprocessor/InputProof-p.js +2 -2
- package/_esm/core/coprocessor/InputProof-p.js.map +1 -1
- package/_esm/core/coprocessor/ZkProof-p.js +19 -12
- package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_esm/core/coprocessor/ZkProofBuilder-p.js +7 -5
- package/_esm/core/coprocessor/ZkProofBuilder-p.js.map +1 -1
- package/_esm/core/coprocessor/encrypt.js +1 -3
- package/_esm/core/coprocessor/encrypt.js.map +1 -1
- package/_esm/core/coprocessor/fetchVerifiedInputProof.js +3 -4
- package/_esm/core/coprocessor/fetchVerifiedInputProof.js.map +1 -1
- package/_esm/core/handle/FheType.js +4 -2
- package/_esm/core/handle/FheType.js.map +1 -1
- package/_esm/core/host-contracts/KmsSignersContext-p.js +1 -1
- package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
- package/_esm/core/host-contracts/checkDelegation.js +81 -0
- package/_esm/core/host-contracts/checkDelegation.js.map +1 -0
- package/_esm/core/host-contracts/getUserDecryptionDelegationExpirationDate.js +19 -0
- package/_esm/core/host-contracts/getUserDecryptionDelegationExpirationDate.js.map +1 -0
- package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +32 -0
- package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -0
- package/_esm/core/host-contracts/persistAllowed.js +1 -1
- package/_esm/core/host-contracts/persistAllowed.js.map +1 -1
- package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js +18 -8
- package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
- package/_esm/core/kms/publicDecrypt.js +1 -4
- package/_esm/core/kms/publicDecrypt.js.map +1 -1
- package/_esm/core/modules/decrypt/mock.js +96 -10
- package/_esm/core/modules/decrypt/mock.js.map +1 -1
- package/_esm/core/modules/encrypt/mock.js +151 -12
- package/_esm/core/modules/encrypt/mock.js.map +1 -1
- package/_esm/core/modules/encrypt/module/api-p.js +7 -2
- package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/ethereum/types-ct.js +2 -0
- package/_esm/core/modules/ethereum/types-ct.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +75 -0
- package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js +121 -0
- package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js +52 -0
- package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +119 -0
- package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/mock.js +39 -0
- package/_esm/core/modules/relayer/cleartext/mock.js.map +1 -0
- package/_esm/core/modules/relayer/cleartext/signers.js +34 -0
- package/_esm/core/modules/relayer/cleartext/signers.js.map +1 -0
- package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js +2 -2
- package/_esm/core/modules/relayer/module/fetchCoprocessorSignatures.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js +1 -1
- package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
- package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchUserDecrypt.js +1 -1
- package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/utils.js +13 -0
- package/_esm/core/modules/relayer/utils.js.map +1 -0
- package/_esm/ethers/cleartext/createFhevmCleartextBaseClient.js +15 -0
- package/_esm/ethers/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
- package/_esm/ethers/cleartext/createFhevmCleartextClient.js +9 -0
- package/_esm/ethers/cleartext/createFhevmCleartextClient.js.map +1 -0
- package/_esm/ethers/cleartext/createFhevmCleartextDecryptClient.js +8 -0
- package/_esm/ethers/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
- package/_esm/ethers/cleartext/createFhevmCleartextEncryptClient.js +8 -0
- package/_esm/ethers/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
- package/_esm/ethers/cleartext/decorators/decrypt.js +7 -0
- package/_esm/ethers/cleartext/decorators/decrypt.js.map +1 -0
- package/_esm/ethers/cleartext/decorators/encrypt.js +7 -0
- package/_esm/ethers/cleartext/decorators/encrypt.js.map +1 -0
- package/_esm/ethers/cleartext/index.js +5 -0
- package/_esm/ethers/cleartext/index.js.map +1 -0
- package/_esm/ethers/clients/createFhevmBaseClient.js +2 -1
- package/_esm/ethers/clients/createFhevmBaseClient.js.map +1 -1
- package/_esm/ethers/clients/createFhevmClient.js +2 -2
- package/_esm/ethers/clients/createFhevmClient.js.map +1 -1
- package/_esm/ethers/clients/createFhevmDecryptClient.js +1 -1
- package/_esm/ethers/clients/createFhevmDecryptClient.js.map +1 -1
- package/_esm/ethers/clients/createFhevmEncryptClient.js +1 -1
- package/_esm/ethers/clients/createFhevmEncryptClient.js.map +1 -1
- package/_esm/ethers/clients/decorators/decrypt.js +7 -0
- package/_esm/ethers/clients/decorators/decrypt.js.map +1 -0
- package/_esm/ethers/clients/decorators/encrypt.js +7 -0
- package/_esm/ethers/clients/decorators/encrypt.js.map +1 -0
- package/_esm/ethers/index.js +1 -1
- package/_esm/ethers/index.js.map +1 -1
- package/_esm/ethers/internal/config.js +38 -0
- package/_esm/ethers/internal/config.js.map +1 -0
- package/_esm/ethers/internal/ethereum-ct.js +39 -0
- package/_esm/ethers/internal/ethereum-ct.js.map +1 -0
- package/_esm/ethers/internal/ethers-p.js +0 -43
- package/_esm/ethers/internal/ethers-p.js.map +1 -1
- package/_esm/ethers/internal/runtime-ct.js +21 -0
- package/_esm/ethers/internal/runtime-ct.js.map +1 -0
- package/_esm/ethers/internal/runtime.js +21 -0
- package/_esm/ethers/internal/runtime.js.map +1 -0
- package/_esm/ethers/runtime/initFhevmDecryptRuntime.js +2 -1
- package/_esm/ethers/runtime/initFhevmDecryptRuntime.js.map +1 -1
- package/_esm/ethers/runtime/initFhevmEncryptRuntime.js +2 -1
- package/_esm/ethers/runtime/initFhevmEncryptRuntime.js.map +1 -1
- package/_esm/ethers/runtime/initFhevmRuntime.js +2 -1
- package/_esm/ethers/runtime/initFhevmRuntime.js.map +1 -1
- package/_esm/index.js +2 -0
- package/_esm/index.js.map +1 -0
- package/_esm/viem/cleartext/createFhevmCleartextBaseClient.js +15 -0
- package/_esm/viem/cleartext/createFhevmCleartextBaseClient.js.map +1 -0
- package/_esm/viem/cleartext/createFhevmCleartextClient.js +9 -0
- package/_esm/viem/cleartext/createFhevmCleartextClient.js.map +1 -0
- package/_esm/viem/cleartext/createFhevmCleartextDecryptClient.js +8 -0
- package/_esm/viem/cleartext/createFhevmCleartextDecryptClient.js.map +1 -0
- package/_esm/viem/cleartext/createFhevmCleartextEncryptClient.js +8 -0
- package/_esm/viem/cleartext/createFhevmCleartextEncryptClient.js.map +1 -0
- package/_esm/viem/cleartext/decorators/decrypt.js +7 -0
- package/_esm/viem/cleartext/decorators/decrypt.js.map +1 -0
- package/_esm/viem/cleartext/decorators/encrypt.js +7 -0
- package/_esm/viem/cleartext/decorators/encrypt.js.map +1 -0
- package/_esm/viem/cleartext/index.js +5 -0
- package/_esm/viem/cleartext/index.js.map +1 -0
- package/_esm/viem/clients/createFhevmBaseClient.js +2 -1
- package/_esm/viem/clients/createFhevmBaseClient.js.map +1 -1
- package/_esm/viem/clients/createFhevmClient.js +2 -2
- package/_esm/viem/clients/createFhevmClient.js.map +1 -1
- package/_esm/viem/clients/createFhevmDecryptClient.js +1 -1
- package/_esm/viem/clients/createFhevmDecryptClient.js.map +1 -1
- package/_esm/viem/clients/createFhevmEncryptClient.js +1 -2
- package/_esm/viem/clients/createFhevmEncryptClient.js.map +1 -1
- package/_esm/viem/clients/decorators/decrypt.js +7 -0
- package/_esm/viem/clients/decorators/decrypt.js.map +1 -0
- package/_esm/viem/clients/decorators/encrypt.js +7 -0
- package/_esm/viem/clients/decorators/encrypt.js.map +1 -0
- package/_esm/viem/index.js +2 -2
- package/_esm/viem/index.js.map +1 -1
- package/_esm/viem/internal/config.js +38 -0
- package/_esm/viem/internal/config.js.map +1 -0
- package/_esm/viem/internal/ethereum-ct.js +39 -0
- package/_esm/viem/internal/ethereum-ct.js.map +1 -0
- package/_esm/viem/internal/runtime-ct.js +21 -0
- package/_esm/viem/internal/runtime-ct.js.map +1 -0
- package/_esm/viem/internal/runtime.js +21 -0
- package/_esm/viem/internal/runtime.js.map +1 -0
- package/_esm/viem/internal/viem-p.js +0 -43
- package/_esm/viem/internal/viem-p.js.map +1 -1
- package/_esm/viem/runtime/initFhevmDecryptRuntime.js +2 -1
- package/_esm/viem/runtime/initFhevmDecryptRuntime.js.map +1 -1
- package/_esm/viem/runtime/initFhevmEncryptRuntime.js +2 -1
- package/_esm/viem/runtime/initFhevmEncryptRuntime.js.map +1 -1
- package/_esm/viem/runtime/initFhevmRuntime.js +2 -1
- package/_esm/viem/runtime/initFhevmRuntime.js.map +1 -1
- package/_types/core/actions/base/signDecryptionPermit.d.ts.map +1 -1
- package/_types/core/actions/chain/index.d.ts +4 -4
- package/_types/core/actions/chain/index.d.ts.map +1 -1
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +7 -2
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
- package/_types/core/actions/chain/parseTransportKeypair.d.ts +2 -2
- package/_types/core/actions/chain/parseTransportKeypair.d.ts.map +1 -1
- package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts +1 -1
- package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValue.d.ts +5 -13
- package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValues.d.ts +5 -13
- package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
- package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts +5 -13
- package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
- package/_types/core/actions/decrypt/index.d.ts +3 -3
- package/_types/core/actions/decrypt/index.d.ts.map +1 -1
- package/_types/core/actions/host/getUserDecryptionDelegationExpirationDate.d.ts +5 -2
- package/_types/core/actions/host/getUserDecryptionDelegationExpirationDate.d.ts.map +1 -1
- package/_types/core/base/bytes.d.ts +1 -0
- package/_types/core/base/bytes.d.ts.map +1 -1
- package/_types/core/base/sign.d.ts +10 -0
- package/_types/core/base/sign.d.ts.map +1 -0
- package/_types/core/base/typedValue.d.ts +2 -1
- package/_types/core/base/typedValue.d.ts.map +1 -1
- package/_types/core/base/uint.d.ts +3 -0
- package/_types/core/base/uint.d.ts.map +1 -1
- package/_types/core/clients/decorators/decrypt.d.ts +6 -15
- package/_types/core/clients/decorators/decrypt.d.ts.map +1 -1
- package/_types/core/coprocessor/ZkProof-p.d.ts +2 -2
- package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
- package/_types/core/coprocessor/ZkProofBuilder-p.d.ts +2 -1
- package/_types/core/coprocessor/ZkProofBuilder-p.d.ts.map +1 -1
- package/_types/core/coprocessor/encrypt.d.ts.map +1 -1
- package/_types/core/coprocessor/fetchVerifiedInputProof.d.ts +0 -2
- package/_types/core/coprocessor/fetchVerifiedInputProof.d.ts.map +1 -1
- package/_types/core/handle/FheType.d.ts +1 -0
- package/_types/core/handle/FheType.d.ts.map +1 -1
- package/_types/core/host-contracts/checkDelegation.d.ts +22 -0
- package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -0
- package/_types/core/host-contracts/getUserDecryptionDelegationExpirationDate.d.ts +19 -0
- package/_types/core/host-contracts/getUserDecryptionDelegationExpirationDate.d.ts.map +1 -0
- package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts +20 -0
- package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts.map +1 -0
- package/_types/core/kms/fetchKmsSignedcryptedShares-p.d.ts.map +1 -1
- package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
- package/_types/core/modules/decrypt/mock.d.ts +5 -5
- package/_types/core/modules/decrypt/mock.d.ts.map +1 -1
- package/_types/core/modules/encrypt/mock.d.ts +6 -6
- 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/types.d.ts +6 -2
- package/_types/core/modules/encrypt/types.d.ts.map +1 -1
- package/_types/core/modules/ethereum/types-ct.d.ts +46 -0
- package/_types/core/modules/ethereum/types-ct.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/mock.d.ts +3 -0
- package/_types/core/modules/relayer/cleartext/mock.d.ts.map +1 -0
- package/_types/core/modules/relayer/cleartext/signers.d.ts +7 -0
- package/_types/core/modules/relayer/cleartext/signers.d.ts.map +1 -0
- package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts +2 -2
- package/_types/core/modules/relayer/module/fetchCoprocessorSignatures.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts +2 -2
- package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts +2 -2
- package/_types/core/modules/relayer/module/fetchPublicDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts +2 -2
- package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/types.d.ts +14 -5
- package/_types/core/modules/relayer/types.d.ts.map +1 -1
- package/_types/core/modules/relayer/utils.d.ts +4 -0
- package/_types/core/modules/relayer/utils.d.ts.map +1 -0
- package/_types/core/types/index.d.ts +1 -0
- package/_types/core/types/index.d.ts.map +1 -1
- package/_types/core/types/kms.d.ts +21 -0
- package/_types/core/types/kms.d.ts.map +1 -1
- package/_types/core/types/zkProof-p.d.ts +2 -1
- package/_types/core/types/zkProof-p.d.ts.map +1 -1
- package/_types/ethers/cleartext/createFhevmCleartextBaseClient.d.ts +11 -0
- package/_types/ethers/cleartext/createFhevmCleartextBaseClient.d.ts.map +1 -0
- package/_types/ethers/cleartext/createFhevmCleartextClient.d.ts +11 -0
- package/_types/ethers/cleartext/createFhevmCleartextClient.d.ts.map +1 -0
- package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts +11 -0
- package/_types/ethers/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -0
- package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts +11 -0
- package/_types/ethers/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -0
- package/_types/ethers/cleartext/decorators/decrypt.d.ts +6 -0
- package/_types/ethers/cleartext/decorators/decrypt.d.ts.map +1 -0
- package/_types/ethers/cleartext/decorators/encrypt.d.ts +6 -0
- package/_types/ethers/cleartext/decorators/encrypt.d.ts.map +1 -0
- package/_types/ethers/cleartext/index.d.ts +5 -0
- package/_types/ethers/cleartext/index.d.ts.map +1 -0
- package/_types/ethers/clients/createFhevmBaseClient.d.ts.map +1 -1
- package/_types/ethers/clients/decorators/decrypt.d.ts +6 -0
- package/_types/ethers/clients/decorators/decrypt.d.ts.map +1 -0
- package/_types/ethers/clients/decorators/encrypt.d.ts +6 -0
- package/_types/ethers/clients/decorators/encrypt.d.ts.map +1 -0
- package/_types/ethers/index.d.ts +1 -1
- package/_types/ethers/index.d.ts.map +1 -1
- package/_types/ethers/internal/config.d.ts +15 -0
- package/_types/ethers/internal/config.d.ts.map +1 -0
- package/_types/ethers/internal/ethereum-ct.d.ts +3 -0
- package/_types/ethers/internal/ethereum-ct.d.ts.map +1 -0
- package/_types/ethers/internal/ethers-p.d.ts +1 -13
- package/_types/ethers/internal/ethers-p.d.ts.map +1 -1
- package/_types/ethers/internal/runtime-ct.d.ts +3 -0
- package/_types/ethers/internal/runtime-ct.d.ts.map +1 -0
- package/_types/ethers/internal/runtime.d.ts +3 -0
- package/_types/ethers/internal/runtime.d.ts.map +1 -0
- package/_types/ethers/runtime/initFhevmDecryptRuntime.d.ts.map +1 -1
- package/_types/ethers/runtime/initFhevmEncryptRuntime.d.ts.map +1 -1
- package/_types/ethers/runtime/initFhevmRuntime.d.ts.map +1 -1
- package/_types/index.d.ts +2 -0
- package/_types/index.d.ts.map +1 -0
- package/_types/viem/cleartext/createFhevmCleartextBaseClient.d.ts +11 -0
- package/_types/viem/cleartext/createFhevmCleartextBaseClient.d.ts.map +1 -0
- package/_types/viem/cleartext/createFhevmCleartextClient.d.ts +11 -0
- package/_types/viem/cleartext/createFhevmCleartextClient.d.ts.map +1 -0
- package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts +11 -0
- package/_types/viem/cleartext/createFhevmCleartextDecryptClient.d.ts.map +1 -0
- package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts +11 -0
- package/_types/viem/cleartext/createFhevmCleartextEncryptClient.d.ts.map +1 -0
- package/_types/viem/cleartext/decorators/decrypt.d.ts +6 -0
- package/_types/viem/cleartext/decorators/decrypt.d.ts.map +1 -0
- package/_types/viem/cleartext/decorators/encrypt.d.ts +6 -0
- package/_types/viem/cleartext/decorators/encrypt.d.ts.map +1 -0
- package/_types/viem/cleartext/index.d.ts +5 -0
- package/_types/viem/cleartext/index.d.ts.map +1 -0
- package/_types/viem/clients/createFhevmBaseClient.d.ts.map +1 -1
- package/_types/viem/clients/decorators/decrypt.d.ts +6 -0
- package/_types/viem/clients/decorators/decrypt.d.ts.map +1 -0
- package/_types/viem/clients/decorators/encrypt.d.ts +6 -0
- package/_types/viem/clients/decorators/encrypt.d.ts.map +1 -0
- package/_types/viem/index.d.ts +2 -2
- package/_types/viem/index.d.ts.map +1 -1
- package/_types/viem/internal/config.d.ts +15 -0
- package/_types/viem/internal/config.d.ts.map +1 -0
- package/_types/viem/internal/ethereum-ct.d.ts +3 -0
- package/_types/viem/internal/ethereum-ct.d.ts.map +1 -0
- package/_types/viem/internal/runtime-ct.d.ts +3 -0
- package/_types/viem/internal/runtime-ct.d.ts.map +1 -0
- package/_types/viem/internal/runtime.d.ts +3 -0
- package/_types/viem/internal/runtime.d.ts.map +1 -0
- package/_types/viem/internal/viem-p.d.ts +1 -13
- package/_types/viem/internal/viem-p.d.ts.map +1 -1
- package/_types/viem/runtime/initFhevmDecryptRuntime.d.ts.map +1 -1
- package/_types/viem/runtime/initFhevmEncryptRuntime.d.ts.map +1 -1
- package/_types/viem/runtime/initFhevmRuntime.d.ts.map +1 -1
- package/core/_version.ts +1 -1
- package/core/actions/base/fetchVerifiedInputProof.ts +1 -1
- package/core/actions/base/signDecryptionPermit.ts +2 -0
- package/core/actions/chain/index.ts +11 -11
- package/core/actions/chain/parseSignedDecryptionPermit.ts +9 -6
- package/core/actions/chain/parseTransportKeypair.ts +3 -7
- package/core/actions/chain/serializeTransportKeypair.ts +0 -2
- package/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.ts +1 -1
- package/core/actions/decrypt/decryptValue.ts +9 -28
- package/core/actions/decrypt/decryptValues.ts +9 -28
- package/core/actions/decrypt/decryptValuesFromPairs.ts +9 -28
- package/core/actions/decrypt/index.ts +3 -14
- package/core/actions/host/getUserDecryptionDelegationExpirationDate.ts +22 -18
- package/core/base/bytes.ts +8 -0
- package/core/base/sign.ts +75 -0
- package/core/base/typedValue.ts +18 -0
- package/core/base/uint.ts +32 -0
- package/core/clients/decorators/decrypt.ts +12 -28
- package/core/coprocessor/InputProof-p.ts +2 -2
- package/core/coprocessor/ZkProof-p.ts +21 -9
- package/core/coprocessor/ZkProofBuilder-p.ts +15 -8
- package/core/coprocessor/encrypt.ts +1 -3
- package/core/coprocessor/fetchVerifiedInputProof.ts +7 -13
- package/core/handle/FheType.ts +5 -2
- package/core/host-contracts/KmsSignersContext-p.ts +1 -1
- package/core/host-contracts/checkDelegation.ts +114 -0
- package/core/host-contracts/getUserDecryptionDelegationExpirationDate.ts +45 -0
- package/core/host-contracts/isHandleDelegatedForUserDecryption-p.ts +77 -0
- package/core/host-contracts/persistAllowed.ts +1 -1
- package/core/kms/fetchKmsSignedcryptedShares-p.ts +31 -29
- package/core/kms/publicDecrypt.ts +6 -12
- package/core/modules/decrypt/mock.ts +126 -13
- package/core/modules/encrypt/mock.ts +206 -12
- package/core/modules/encrypt/module/api-p.ts +7 -2
- package/core/modules/encrypt/types.ts +6 -2
- package/core/modules/ethereum/types-ct.ts +89 -0
- package/core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts +94 -0
- package/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.ts +147 -0
- package/core/modules/relayer/cleartext/fetchPublicDecrypt.ts +67 -0
- package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +141 -0
- package/core/modules/relayer/cleartext/mock.ts +54 -0
- package/core/modules/relayer/cleartext/signers.ts +52 -0
- package/core/modules/relayer/module/fetchCoprocessorSignatures.ts +4 -4
- package/core/modules/relayer/module/fetchDelegatedUserDecrypt.ts +3 -3
- package/core/modules/relayer/module/fetchPublicDecrypt.ts +3 -3
- package/core/modules/relayer/module/fetchUserDecrypt.ts +3 -3
- package/core/modules/relayer/types.ts +13 -5
- package/core/modules/relayer/utils.ts +17 -0
- package/core/types/index.ts +1 -0
- package/core/types/kms.ts +19 -0
- package/core/types/zkProof-p.ts +3 -1
- package/ethers/cleartext/createFhevmCleartextBaseClient.ts +25 -0
- package/ethers/cleartext/createFhevmCleartextClient.ts +20 -0
- package/ethers/cleartext/createFhevmCleartextDecryptClient.ts +18 -0
- package/ethers/cleartext/createFhevmCleartextEncryptClient.ts +19 -0
- package/ethers/cleartext/decorators/decrypt.ts +12 -0
- package/ethers/cleartext/decorators/encrypt.ts +12 -0
- package/ethers/cleartext/index.ts +4 -0
- package/ethers/cleartext/package.json +6 -0
- package/ethers/clients/createFhevmBaseClient.ts +2 -1
- package/ethers/clients/createFhevmClient.ts +2 -2
- package/ethers/clients/createFhevmDecryptClient.ts +1 -1
- package/ethers/clients/createFhevmEncryptClient.ts +1 -1
- package/ethers/clients/decorators/decrypt.ts +12 -0
- package/ethers/clients/decorators/encrypt.ts +12 -0
- package/ethers/index.ts +1 -1
- package/ethers/internal/config.ts +50 -0
- package/ethers/internal/ethereum-ct.ts +61 -0
- package/ethers/internal/ethers-p.ts +1 -56
- package/ethers/internal/runtime-ct.ts +28 -0
- package/ethers/internal/runtime.ts +28 -0
- package/ethers/runtime/initFhevmDecryptRuntime.ts +2 -1
- package/ethers/runtime/initFhevmEncryptRuntime.ts +2 -1
- package/ethers/runtime/initFhevmRuntime.ts +2 -1
- package/index.ts +0 -0
- package/package.json +14 -2
- package/viem/cleartext/createFhevmCleartextBaseClient.ts +28 -0
- package/viem/cleartext/createFhevmCleartextClient.ts +20 -0
- package/viem/cleartext/createFhevmCleartextDecryptClient.ts +21 -0
- package/viem/cleartext/createFhevmCleartextEncryptClient.ts +22 -0
- package/viem/cleartext/decorators/decrypt.ts +12 -0
- package/viem/cleartext/decorators/encrypt.ts +12 -0
- package/viem/cleartext/index.ts +4 -0
- package/viem/cleartext/package.json +6 -0
- package/viem/clients/createFhevmBaseClient.ts +2 -1
- package/viem/clients/createFhevmClient.ts +2 -2
- package/viem/clients/createFhevmDecryptClient.ts +1 -1
- package/viem/clients/createFhevmEncryptClient.ts +1 -3
- package/viem/clients/decorators/decrypt.ts +12 -0
- package/viem/clients/decorators/encrypt.ts +12 -0
- package/viem/index.ts +2 -2
- package/viem/internal/config.ts +50 -0
- package/viem/internal/ethereum-ct.ts +61 -0
- package/viem/internal/runtime-ct.ts +28 -0
- package/viem/internal/runtime.ts +28 -0
- package/viem/internal/viem-p.ts +1 -56
- package/viem/runtime/initFhevmDecryptRuntime.ts +2 -1
- package/viem/runtime/initFhevmEncryptRuntime.ts +2 -1
- package/viem/runtime/initFhevmRuntime.ts +2 -1
- package/_cjs/core/modules/relayer/mock.js +0 -29
- package/_cjs/core/modules/relayer/mock.js.map +0 -1
- package/_cjs/ethers/decorators/decrypt.js.map +0 -1
- package/_cjs/ethers/decorators/encrypt.js.map +0 -1
- package/_cjs/viem/decorators/decrypt.js.map +0 -1
- package/_cjs/viem/decorators/encrypt.js.map +0 -1
- package/_esm/core/modules/relayer/mock.js +0 -28
- package/_esm/core/modules/relayer/mock.js.map +0 -1
- package/_esm/ethers/decorators/decrypt.js +0 -7
- package/_esm/ethers/decorators/decrypt.js.map +0 -1
- package/_esm/ethers/decorators/encrypt.js +0 -7
- package/_esm/ethers/decorators/encrypt.js.map +0 -1
- package/_esm/viem/decorators/decrypt.js +0 -7
- package/_esm/viem/decorators/decrypt.js.map +0 -1
- package/_esm/viem/decorators/encrypt.js +0 -7
- package/_esm/viem/decorators/encrypt.js.map +0 -1
- package/_types/core/modules/relayer/mock.d.ts +0 -3
- package/_types/core/modules/relayer/mock.d.ts.map +0 -1
- package/_types/ethers/decorators/decrypt.d.ts +0 -6
- package/_types/ethers/decorators/decrypt.d.ts.map +0 -1
- package/_types/ethers/decorators/encrypt.d.ts +0 -6
- package/_types/ethers/decorators/encrypt.d.ts.map +0 -1
- package/_types/viem/decorators/decrypt.d.ts +0 -6
- package/_types/viem/decorators/decrypt.d.ts.map +0 -1
- package/_types/viem/decorators/encrypt.d.ts +0 -6
- package/_types/viem/decorators/encrypt.d.ts.map +0 -1
- package/core/modules/relayer/mock.ts +0 -47
- package/ethers/decorators/decrypt.ts +0 -12
- package/ethers/decorators/encrypt.ts +0 -12
- package/viem/decorators/decrypt.ts +0 -12
- package/viem/decorators/encrypt.ts +0 -12
|
@@ -15,6 +15,7 @@ import { assertKmsDecryptionBitLimit } from './utils.js';
|
|
|
15
15
|
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
|
+
import { checkDelegation } from '../host-contracts/checkDelegation.js';
|
|
18
19
|
|
|
19
20
|
/*
|
|
20
21
|
See: in KMS (eip712Domain)
|
|
@@ -118,11 +119,20 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
|
|
|
118
119
|
signedPermit.assertNotExpired();
|
|
119
120
|
|
|
120
121
|
// 7. Check: ACL permissions (user is signer or delegatorAddress)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
if (signedPermit.isDelegated) {
|
|
123
|
+
await checkDelegation(context, {
|
|
124
|
+
address: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
|
|
125
|
+
delegate: signerAddress,
|
|
126
|
+
delegator: encryptedDataOwnerAddress,
|
|
127
|
+
handleContractPairs,
|
|
128
|
+
});
|
|
129
|
+
} else {
|
|
130
|
+
await checkPersistAllowed(context, {
|
|
131
|
+
address: context.chain.fhevm.contracts.acl.address as ChecksummedAddress,
|
|
132
|
+
userAddress: encryptedDataOwnerAddress,
|
|
133
|
+
handleContractPairs,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
126
136
|
|
|
127
137
|
// 8. Verify the EIP712 signature
|
|
128
138
|
// Not required because a signedPermit is guaranteed to be verified.
|
|
@@ -157,36 +167,28 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
|
|
|
157
167
|
// Safe casts: the discriminated union on parameters guarantees
|
|
158
168
|
// that options type matches signedPermit type, but TS can't prove
|
|
159
169
|
// it after destructuring (nested discriminant limitation).
|
|
160
|
-
const relayerUrl = context.chain.fhevm.relayerUrl;
|
|
161
|
-
|
|
162
170
|
let shares: readonly KmsSigncryptedShare[];
|
|
163
171
|
|
|
164
172
|
if (signedPermit.isDelegated) {
|
|
165
|
-
shares = await context.runtime.relayer.fetchDelegatedUserDecrypt(
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
kmsDecryptEip712Message: signedPermit.eip712.message,
|
|
172
|
-
kmsDecryptEip712Signature: signature,
|
|
173
|
-
},
|
|
174
|
-
options: relayerOptions as RelayerDelegatedUserDecryptOptions,
|
|
173
|
+
shares = await context.runtime.relayer.fetchDelegatedUserDecrypt(context, {
|
|
174
|
+
payload: {
|
|
175
|
+
handleContractPairs,
|
|
176
|
+
kmsDecryptEip712Signer: signerAddress,
|
|
177
|
+
kmsDecryptEip712Message: signedPermit.eip712.message,
|
|
178
|
+
kmsDecryptEip712Signature: signature,
|
|
175
179
|
},
|
|
176
|
-
|
|
180
|
+
options: relayerOptions as RelayerDelegatedUserDecryptOptions,
|
|
181
|
+
});
|
|
177
182
|
} else {
|
|
178
|
-
shares = await context.runtime.relayer.fetchUserDecrypt(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
kmsDecryptEip712Message: signedPermit.eip712.message,
|
|
185
|
-
kmsDecryptEip712Signature: signature,
|
|
186
|
-
},
|
|
187
|
-
options: relayerOptions as RelayerUserDecryptOptions,
|
|
183
|
+
shares = await context.runtime.relayer.fetchUserDecrypt(context, {
|
|
184
|
+
payload: {
|
|
185
|
+
handleContractPairs,
|
|
186
|
+
kmsDecryptEip712Signer: signerAddress,
|
|
187
|
+
kmsDecryptEip712Message: signedPermit.eip712.message,
|
|
188
|
+
kmsDecryptEip712Signature: signature,
|
|
188
189
|
},
|
|
189
|
-
|
|
190
|
+
options: relayerOptions as RelayerUserDecryptOptions,
|
|
191
|
+
});
|
|
190
192
|
}
|
|
191
193
|
|
|
192
194
|
// 11. Build and verify the sealed validated `KmsSigncryptedShares` object
|
|
@@ -74,19 +74,13 @@ export async function publicDecrypt(context: Context, parameters: Parameters): P
|
|
|
74
74
|
orderedAbiEncodedClearValues,
|
|
75
75
|
kmsPublicDecryptEIP712Signatures,
|
|
76
76
|
extraData: relayerExtraData,
|
|
77
|
-
} = await context.runtime.relayer.fetchPublicDecrypt(
|
|
78
|
-
{
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
} = await context.runtime.relayer.fetchPublicDecrypt(context, {
|
|
78
|
+
payload: {
|
|
79
|
+
orderedHandles,
|
|
80
|
+
extraData: requestedExtraData,
|
|
81
81
|
},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
orderedHandles,
|
|
85
|
-
extraData: requestedExtraData,
|
|
86
|
-
},
|
|
87
|
-
options: relayerOptions,
|
|
88
|
-
},
|
|
89
|
-
);
|
|
82
|
+
options: relayerOptions,
|
|
83
|
+
});
|
|
90
84
|
|
|
91
85
|
// 6. Reconcile KMS signer context using 'loose' mode
|
|
92
86
|
const reconciledKmsSignersContext: KmsSignersContext = await reconcileKmsSignersContext(context, {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/require-await */
|
|
2
1
|
import type { FhevmRuntime } from '../../types/coreFhevmRuntime.js';
|
|
3
2
|
import type {
|
|
4
3
|
DecryptAndReconstructParameters,
|
|
@@ -16,24 +15,129 @@ import type {
|
|
|
16
15
|
DecryptModuleFactory,
|
|
17
16
|
UserDecryptModuleFactory,
|
|
18
17
|
} from './types.js';
|
|
18
|
+
import type { CleartextEthereumModule } from '../ethereum/types-ct.js';
|
|
19
|
+
import type { TkmsPrivateKey } from '../../types/tkms-p.js';
|
|
20
|
+
import type { BytesHex } from '../../types/primitives.js';
|
|
21
|
+
import type { KmsSigncryptedShare, KmsSigncryptedSharesMetadata } from '../../types/kms-p.js';
|
|
22
|
+
import type { ClearValue } from '../../types/encryptedTypes-p.js';
|
|
23
|
+
import { assertIsKmsExtraData } from '../../kms/kmsExtraData.js';
|
|
24
|
+
import { ensure0x, remove0x } from '../../base/string.js';
|
|
25
|
+
import { getMetadata, getShares } from '../../kms/KmsSigncryptedShares-p.js';
|
|
26
|
+
import { asBytesHex, bytesToHex, hexToBytes } from '../../base/bytes.js';
|
|
27
|
+
import { bigintToClearValueType } from '../../handle/FheType.js';
|
|
28
|
+
import { createClearValue } from '../../handle/ClearValue.js';
|
|
29
|
+
|
|
30
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
31
|
+
|
|
32
|
+
const PRIVATE_CLEARTEXT_TKMS_LIB_TOKEN = Symbol('CleartextTKMSLib.token');
|
|
33
|
+
|
|
34
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
35
|
+
|
|
36
|
+
function _xorUnmaskWithPublicKey(publicKey: BytesHex, maskedCleartexts: readonly bigint[]): bigint[] {
|
|
37
|
+
const hex = remove0x(publicKey);
|
|
38
|
+
if (hex.length < 64) {
|
|
39
|
+
throw new Error(`PublicKeyTooShort: publicKey has ${hex.length / 2} bytes, need >= 32`);
|
|
40
|
+
}
|
|
41
|
+
const mask = BigInt('0x' + hex.slice(0, 64));
|
|
42
|
+
return maskedCleartexts.map((c) => c ^ mask);
|
|
43
|
+
}
|
|
19
44
|
|
|
20
45
|
////////////////////////////////////////////////////////////////////////////////
|
|
21
46
|
// decryptAndReconstruct
|
|
22
47
|
////////////////////////////////////////////////////////////////////////////////
|
|
23
48
|
|
|
24
49
|
export async function decryptAndReconstruct(
|
|
25
|
-
|
|
26
|
-
|
|
50
|
+
runtime: FhevmRuntime,
|
|
51
|
+
parameters: DecryptAndReconstructParameters,
|
|
27
52
|
): Promise<DecryptAndReconstructReturnType> {
|
|
28
|
-
|
|
53
|
+
const cleartextEthereumModule = runtime.ethereum as CleartextEthereumModule;
|
|
54
|
+
const { tkmsPrivateKey, shares } = parameters;
|
|
55
|
+
|
|
56
|
+
const privateKeySecp256k1 = asBytesHex(tkmsPrivateKey as unknown);
|
|
57
|
+
const publicKeySecp256k1 = cleartextEthereumModule.getPublicKey({ privateKey: privateKeySecp256k1 });
|
|
58
|
+
|
|
59
|
+
const metadata: KmsSigncryptedSharesMetadata = getMetadata(shares);
|
|
60
|
+
const sharesArray: readonly KmsSigncryptedShare[] = getShares(shares);
|
|
61
|
+
|
|
62
|
+
const firstShare = sharesArray[0];
|
|
63
|
+
if (firstShare === undefined) {
|
|
64
|
+
throw new Error('Expected at least one signcrypted share.');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const firstExtraData = firstShare.extraData;
|
|
68
|
+
for (let i = 1; i < sharesArray.length; i++) {
|
|
69
|
+
const share = sharesArray[i];
|
|
70
|
+
if (share !== undefined && share.extraData !== firstExtraData) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
`Mismatched extraData across shares: share[0]="${firstExtraData}" vs share[${i}]="${share.extraData}".`,
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const extraData: BytesHex = ensure0x(firstExtraData);
|
|
78
|
+
assertIsKmsExtraData(extraData, {});
|
|
79
|
+
|
|
80
|
+
for (let i = 0; i < sharesArray.length; ++i) {
|
|
81
|
+
const s = sharesArray[i];
|
|
82
|
+
if (!s) {
|
|
83
|
+
throw new Error('Internal error');
|
|
84
|
+
}
|
|
85
|
+
const recoveredAddress = await cleartextEthereumModule.recoverAddress({
|
|
86
|
+
hash: ensure0x(s.payload),
|
|
87
|
+
signature: ensure0x(s.signature),
|
|
88
|
+
});
|
|
89
|
+
if (!metadata.kmsSignersContext.has(recoveredAddress)) {
|
|
90
|
+
throw new Error(
|
|
91
|
+
`Unknown KMS signer: recovered address ${recoveredAddress} from share[${i}] is not a registered KMS signer.`,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const decoded = cleartextEthereumModule.decode({
|
|
97
|
+
encodedData: ensure0x(firstShare.payload),
|
|
98
|
+
types: ['uint256[]', 'bytes'],
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
if (decoded.length !== 2) {
|
|
102
|
+
throw new Error('Invalid decrypted result.');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const maskedCleartexts = decoded[0] as bigint[];
|
|
106
|
+
const signedExtraData = decoded[1] as BytesHex;
|
|
107
|
+
|
|
108
|
+
const cleartexts: bigint[] = _xorUnmaskWithPublicKey(publicKeySecp256k1, maskedCleartexts);
|
|
109
|
+
|
|
110
|
+
if (extraData !== signedExtraData) {
|
|
111
|
+
throw new Error(
|
|
112
|
+
`extraData mismatch: share extraData="${extraData}" does not match the signed payload's extraData="${signedExtraData}".`,
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// 2. Build an unforgeable structure that contains the decrypted FhevmHandles
|
|
117
|
+
const orderedClearValues: readonly ClearValue[] = cleartexts.map((plaintext: bigint, idx: number) => {
|
|
118
|
+
const fhevmHandle = metadata.handles[idx];
|
|
119
|
+
if (fhevmHandle === undefined) {
|
|
120
|
+
throw new Error('Internal error');
|
|
121
|
+
}
|
|
122
|
+
return createClearValue({
|
|
123
|
+
value: bigintToClearValueType(fhevmHandle.fheType, plaintext),
|
|
124
|
+
handle: fhevmHandle,
|
|
125
|
+
originToken: PRIVATE_CLEARTEXT_TKMS_LIB_TOKEN, // origin token for authenticity assertion
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
Object.freeze(orderedClearValues);
|
|
129
|
+
|
|
130
|
+
return orderedClearValues;
|
|
29
131
|
}
|
|
30
132
|
|
|
31
133
|
//////////////////////////////////////////////////////////////////////////////
|
|
32
134
|
// generateTkmsPrivateKey
|
|
33
135
|
//////////////////////////////////////////////////////////////////////////////
|
|
34
136
|
|
|
35
|
-
export async function generateTkmsPrivateKey(
|
|
36
|
-
|
|
137
|
+
export async function generateTkmsPrivateKey(runtime: FhevmRuntime): Promise<GenerateTkmsPrivateKeyReturnType> {
|
|
138
|
+
const cleartextEthereumModule = runtime.ethereum as CleartextEthereumModule;
|
|
139
|
+
const privateKeySecp256k1 = cleartextEthereumModule.generatePrivateKey();
|
|
140
|
+
return Promise.resolve(privateKeySecp256k1 as unknown as TkmsPrivateKey);
|
|
37
141
|
}
|
|
38
142
|
|
|
39
143
|
//////////////////////////////////////////////////////////////////////////////
|
|
@@ -41,10 +145,14 @@ export async function generateTkmsPrivateKey(_runtime: FhevmRuntime): Promise<Ge
|
|
|
41
145
|
//////////////////////////////////////////////////////////////////////////////
|
|
42
146
|
|
|
43
147
|
export async function getTkmsPublicKeyHex(
|
|
44
|
-
|
|
45
|
-
|
|
148
|
+
runtime: FhevmRuntime,
|
|
149
|
+
parameters: GetTkmsPublicKeyHexParameters,
|
|
46
150
|
): Promise<GetTkmsPublicKeyHexReturnType> {
|
|
47
|
-
|
|
151
|
+
const { tkmsPrivateKey } = parameters;
|
|
152
|
+
const privateKeySecp256k1 = asBytesHex(tkmsPrivateKey as unknown);
|
|
153
|
+
const cleartextEthereumModule = runtime.ethereum as CleartextEthereumModule;
|
|
154
|
+
const publicKeySecp256k1 = cleartextEthereumModule.getPublicKey({ privateKey: privateKeySecp256k1 });
|
|
155
|
+
return Promise.resolve(publicKeySecp256k1);
|
|
48
156
|
}
|
|
49
157
|
|
|
50
158
|
//////////////////////////////////////////////////////////////////////////////
|
|
@@ -53,9 +161,12 @@ export async function getTkmsPublicKeyHex(
|
|
|
53
161
|
|
|
54
162
|
export async function serializeTkmsPrivateKey(
|
|
55
163
|
_runtime: FhevmRuntime,
|
|
56
|
-
|
|
164
|
+
parameters: SerializeTkmsPrivateKeyParameters,
|
|
57
165
|
): Promise<SerializeTkmsPrivateKeyReturnType> {
|
|
58
|
-
|
|
166
|
+
const { tkmsPrivateKey } = parameters;
|
|
167
|
+
const privateKeySecp256k1 = asBytesHex(tkmsPrivateKey as unknown);
|
|
168
|
+
const privateKeySecp256k1Bytes = hexToBytes(privateKeySecp256k1);
|
|
169
|
+
return Promise.resolve(privateKeySecp256k1Bytes);
|
|
59
170
|
}
|
|
60
171
|
|
|
61
172
|
//////////////////////////////////////////////////////////////////////////////
|
|
@@ -64,9 +175,11 @@ export async function serializeTkmsPrivateKey(
|
|
|
64
175
|
|
|
65
176
|
export async function deserializeTkmsPrivateKey(
|
|
66
177
|
_runtime: FhevmRuntime,
|
|
67
|
-
|
|
178
|
+
parameters: DeserializeTkmsPrivateKeyParameters,
|
|
68
179
|
): Promise<DeserializeTkmsPrivateKeyReturnType> {
|
|
69
|
-
|
|
180
|
+
const { tkmsPrivateKeyBytes } = parameters;
|
|
181
|
+
const privateKeySecp256k1 = bytesToHex(tkmsPrivateKeyBytes);
|
|
182
|
+
return Promise.resolve(privateKeySecp256k1 as unknown as TkmsPrivateKey);
|
|
70
183
|
}
|
|
71
184
|
|
|
72
185
|
//////////////////////////////////////////////////////////////////////////////
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/require-await */
|
|
2
|
+
import { concatBytes, hexToBytes32 } from '../../base/bytes.js';
|
|
3
|
+
import { remove0x } from '../../base/string.js';
|
|
4
|
+
import { typedValueToBytes32Hex } from '../../base/typedValue.js';
|
|
2
5
|
import type { FhevmRuntime } from '../../types/coreFhevmRuntime.js';
|
|
6
|
+
import type {
|
|
7
|
+
FheEncryptionCrs,
|
|
8
|
+
FheEncryptionCrsBrand,
|
|
9
|
+
FheEncryptionCrsBytes,
|
|
10
|
+
FheEncryptionKeyBytes,
|
|
11
|
+
FheEncryptionPublicKey,
|
|
12
|
+
FheEncryptionPublicKeyBrand,
|
|
13
|
+
FheEncryptionPublicKeyBytes,
|
|
14
|
+
} from '../../types/fheEncryptionKey.js';
|
|
15
|
+
import type { Bytes, BytesHex, UintNumber } from '../../types/primitives.js';
|
|
3
16
|
import type {
|
|
4
17
|
BuildWithProofPackedReturnTypeParameters,
|
|
5
18
|
BuildWithProofPackedReturnType,
|
|
@@ -18,6 +31,83 @@ import type {
|
|
|
18
31
|
DeserializeFheEncryptionCrsReturnType,
|
|
19
32
|
} from './types.js';
|
|
20
33
|
|
|
34
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
35
|
+
|
|
36
|
+
const GET_NATIVE_FUNC = Symbol('CleartextTFHELib.getNative');
|
|
37
|
+
const PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN = Symbol('CleartextTFHELib.token');
|
|
38
|
+
|
|
39
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
40
|
+
// TfheCompactPublicKeyImpl
|
|
41
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
42
|
+
|
|
43
|
+
class CleartextTfheCompactPublicKeyImpl implements FheEncryptionPublicKey {
|
|
44
|
+
declare readonly [FheEncryptionPublicKeyBrand]: never;
|
|
45
|
+
|
|
46
|
+
readonly #id: string;
|
|
47
|
+
readonly #tfheCompactPublicKeyWasmType: Bytes;
|
|
48
|
+
|
|
49
|
+
constructor(token: symbol, id: string, publicEncKeyMlKem512Wasm: Bytes) {
|
|
50
|
+
if (token !== PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN) {
|
|
51
|
+
throw new Error('Unauthorized');
|
|
52
|
+
}
|
|
53
|
+
this.#id = id;
|
|
54
|
+
this.#tfheCompactPublicKeyWasmType = publicEncKeyMlKem512Wasm;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public get id(): string {
|
|
58
|
+
return this.#id;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public static [GET_NATIVE_FUNC](key: unknown, token: symbol): Bytes {
|
|
62
|
+
if (token !== PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN) {
|
|
63
|
+
throw new Error('Unauthorized');
|
|
64
|
+
}
|
|
65
|
+
if (!(key instanceof CleartextTfheCompactPublicKeyImpl)) {
|
|
66
|
+
throw new Error('Unauthorized');
|
|
67
|
+
}
|
|
68
|
+
return key.#tfheCompactPublicKeyWasmType;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
73
|
+
// TfheCompactPkeCrsImpl
|
|
74
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
75
|
+
|
|
76
|
+
class CleartextTfheCompactPkeCrsImpl implements FheEncryptionCrs {
|
|
77
|
+
declare readonly [FheEncryptionCrsBrand]: never;
|
|
78
|
+
|
|
79
|
+
readonly #id: string;
|
|
80
|
+
readonly #capacity: UintNumber;
|
|
81
|
+
readonly #compactPublicKeyWasmType: Bytes;
|
|
82
|
+
|
|
83
|
+
constructor(token: symbol, id: string, capacity: UintNumber, compactPublicKeyWasmType: Bytes) {
|
|
84
|
+
if (token !== PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN) {
|
|
85
|
+
throw new Error('Unauthorized');
|
|
86
|
+
}
|
|
87
|
+
this.#id = id;
|
|
88
|
+
this.#capacity = capacity;
|
|
89
|
+
this.#compactPublicKeyWasmType = compactPublicKeyWasmType;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public get id(): string {
|
|
93
|
+
return this.#id;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public get capacity(): UintNumber {
|
|
97
|
+
return this.#capacity;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public static [GET_NATIVE_FUNC](key: unknown, token: symbol): Bytes {
|
|
101
|
+
if (token !== PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN) {
|
|
102
|
+
throw new Error('Unauthorized');
|
|
103
|
+
}
|
|
104
|
+
if (!(key instanceof CleartextTfheCompactPkeCrsImpl)) {
|
|
105
|
+
throw new Error('Unauthorized');
|
|
106
|
+
}
|
|
107
|
+
return key.#compactPublicKeyWasmType;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
21
111
|
////////////////////////////////////////////////////////////////////////////////
|
|
22
112
|
// parseTFHEProvenCompactCiphertextList
|
|
23
113
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -33,9 +123,36 @@ export async function parseTFHEProvenCompactCiphertextList(
|
|
|
33
123
|
////////////////////////////////////////////////////////////////////////////////
|
|
34
124
|
|
|
35
125
|
export async function buildWithProofPacked(
|
|
36
|
-
|
|
126
|
+
parameters: BuildWithProofPackedReturnTypeParameters,
|
|
37
127
|
): Promise<BuildWithProofPackedReturnType> {
|
|
38
|
-
|
|
128
|
+
const { fheEncryptionKey: publicEncryptionParams, metaData, typedValues, extraData } = parameters;
|
|
129
|
+
|
|
130
|
+
const tfheCompactPublicKeyImpl = publicEncryptionParams.publicKey;
|
|
131
|
+
const tfheCompactPkeCrsImpl = publicEncryptionParams.crs;
|
|
132
|
+
|
|
133
|
+
if (!(tfheCompactPublicKeyImpl instanceof CleartextTfheCompactPublicKeyImpl)) {
|
|
134
|
+
throw new Error('Invalid tfhePublicKey');
|
|
135
|
+
}
|
|
136
|
+
if (!(tfheCompactPkeCrsImpl instanceof CleartextTfheCompactPkeCrsImpl)) {
|
|
137
|
+
throw new Error('Invalid tfheCrs');
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const typedValuesBytes32HexNo0x = typedValues.map(typedValueToBytes32Hex).map(remove0x).join('');
|
|
141
|
+
const cleartextExtraData = `0x${typedValuesBytes32HexNo0x}${remove0x(extraData)}` as BytesHex;
|
|
142
|
+
|
|
143
|
+
// Per typedValue: random nonce (8 bytes) || metaData || value bytes (32).
|
|
144
|
+
const perValueBlobs = typedValues.map((tv) => {
|
|
145
|
+
const nonce = crypto.getRandomValues(new Uint8Array(new ArrayBuffer(8)));
|
|
146
|
+
const valueBytes = hexToBytes32(typedValueToBytes32Hex(tv));
|
|
147
|
+
return concatBytes(nonce, metaData, valueBytes);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const ciphertextWithZKProofBytes = concatBytes(...perValueBlobs);
|
|
151
|
+
|
|
152
|
+
return {
|
|
153
|
+
ciphertextWithZKProofBytes,
|
|
154
|
+
extraData: cleartextExtraData,
|
|
155
|
+
};
|
|
39
156
|
}
|
|
40
157
|
|
|
41
158
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -43,9 +160,40 @@ export async function buildWithProofPacked(
|
|
|
43
160
|
////////////////////////////////////////////////////////////////////////////////
|
|
44
161
|
|
|
45
162
|
export async function serializeFheEncryptionKey(
|
|
46
|
-
|
|
163
|
+
parameters: SerializeFheEncryptionKeyParameters,
|
|
47
164
|
): Promise<SerializeFheEncryptionKeyReturnType> {
|
|
48
|
-
|
|
165
|
+
const { fheEncryptionKey: publicEncryptionParams } = parameters;
|
|
166
|
+
|
|
167
|
+
const tfheCompactPublicKeyImpl = publicEncryptionParams.publicKey;
|
|
168
|
+
const tfheCompactPkeCrsImpl = publicEncryptionParams.crs;
|
|
169
|
+
|
|
170
|
+
if (!(tfheCompactPublicKeyImpl instanceof CleartextTfheCompactPublicKeyImpl)) {
|
|
171
|
+
throw new Error('Invalid tfhePublicKey');
|
|
172
|
+
}
|
|
173
|
+
if (!(tfheCompactPkeCrsImpl instanceof CleartextTfheCompactPkeCrsImpl)) {
|
|
174
|
+
throw new Error('Invalid tfheCrs');
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const tfhePublicKeyBytes: Bytes = CleartextTfheCompactPublicKeyImpl[GET_NATIVE_FUNC](
|
|
178
|
+
tfheCompactPublicKeyImpl,
|
|
179
|
+
PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
|
|
180
|
+
);
|
|
181
|
+
const tfheCrsBytes: Bytes = CleartextTfheCompactPkeCrsImpl[GET_NATIVE_FUNC](
|
|
182
|
+
tfheCompactPkeCrsImpl,
|
|
183
|
+
PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
|
|
184
|
+
);
|
|
185
|
+
|
|
186
|
+
return Object.freeze({
|
|
187
|
+
publicKeyBytes: Object.freeze({
|
|
188
|
+
id: publicEncryptionParams.publicKey.id,
|
|
189
|
+
bytes: tfhePublicKeyBytes,
|
|
190
|
+
}),
|
|
191
|
+
crsBytes: Object.freeze({
|
|
192
|
+
id: publicEncryptionParams.crs.id,
|
|
193
|
+
capacity: publicEncryptionParams.crs.capacity,
|
|
194
|
+
bytes: tfheCrsBytes,
|
|
195
|
+
}),
|
|
196
|
+
}) as FheEncryptionKeyBytes;
|
|
49
197
|
}
|
|
50
198
|
|
|
51
199
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -53,9 +201,25 @@ export async function serializeFheEncryptionKey(
|
|
|
53
201
|
////////////////////////////////////////////////////////////////////////////////
|
|
54
202
|
|
|
55
203
|
export async function serializeFheEncryptionPublicKey(
|
|
56
|
-
|
|
204
|
+
parameters: SerializeFheEncryptionPublicKeyParameters,
|
|
57
205
|
): Promise<SerializeFheEncryptionPublicKeyReturnType> {
|
|
58
|
-
|
|
206
|
+
const { publicKey: tfhePublicKey } = parameters;
|
|
207
|
+
|
|
208
|
+
const tfheCompactPublicKeyImpl = tfhePublicKey;
|
|
209
|
+
|
|
210
|
+
if (!(tfheCompactPublicKeyImpl instanceof CleartextTfheCompactPublicKeyImpl)) {
|
|
211
|
+
throw new Error('Invalid tfhePublicKey');
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const tfhePublicKeyBytes: Bytes = CleartextTfheCompactPublicKeyImpl[GET_NATIVE_FUNC](
|
|
215
|
+
tfheCompactPublicKeyImpl,
|
|
216
|
+
PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
|
|
217
|
+
);
|
|
218
|
+
|
|
219
|
+
return Object.freeze({
|
|
220
|
+
id: tfhePublicKey.id,
|
|
221
|
+
bytes: tfhePublicKeyBytes,
|
|
222
|
+
}) as FheEncryptionPublicKeyBytes;
|
|
59
223
|
}
|
|
60
224
|
|
|
61
225
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -63,9 +227,26 @@ export async function serializeFheEncryptionPublicKey(
|
|
|
63
227
|
////////////////////////////////////////////////////////////////////////////////
|
|
64
228
|
|
|
65
229
|
export async function serializeFheEncryptionCrs(
|
|
66
|
-
|
|
230
|
+
parameters: SerializeFheEncryptionCrsParameters,
|
|
67
231
|
): Promise<SerializeFheEncryptionCrsReturnType> {
|
|
68
|
-
|
|
232
|
+
const { crs: tfheCrs } = parameters;
|
|
233
|
+
|
|
234
|
+
const tfheCompactPkeCrsImpl = tfheCrs;
|
|
235
|
+
|
|
236
|
+
if (!(tfheCompactPkeCrsImpl instanceof CleartextTfheCompactPkeCrsImpl)) {
|
|
237
|
+
throw new Error('Invalid tfheCrs');
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
const tfheCrsBytes: Bytes = CleartextTfheCompactPkeCrsImpl[GET_NATIVE_FUNC](
|
|
241
|
+
tfheCompactPkeCrsImpl,
|
|
242
|
+
PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
|
|
243
|
+
);
|
|
244
|
+
|
|
245
|
+
return Object.freeze({
|
|
246
|
+
id: tfheCrs.id,
|
|
247
|
+
capacity: tfheCrs.capacity,
|
|
248
|
+
bytes: tfheCrsBytes,
|
|
249
|
+
}) as FheEncryptionCrsBytes;
|
|
69
250
|
}
|
|
70
251
|
|
|
71
252
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -73,9 +254,16 @@ export async function serializeFheEncryptionCrs(
|
|
|
73
254
|
////////////////////////////////////////////////////////////////////////////////
|
|
74
255
|
|
|
75
256
|
export async function deserializeFheEncryptionCrs(
|
|
76
|
-
|
|
257
|
+
parameters: DeserializeFheEncryptionCrsParameters,
|
|
77
258
|
): Promise<DeserializeFheEncryptionCrsReturnType> {
|
|
78
|
-
|
|
259
|
+
const { crsBytes: globalFheCrsBytes } = parameters;
|
|
260
|
+
|
|
261
|
+
return new CleartextTfheCompactPkeCrsImpl(
|
|
262
|
+
PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
|
|
263
|
+
globalFheCrsBytes.id,
|
|
264
|
+
globalFheCrsBytes.capacity,
|
|
265
|
+
globalFheCrsBytes.bytes,
|
|
266
|
+
);
|
|
79
267
|
}
|
|
80
268
|
|
|
81
269
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -83,9 +271,15 @@ export async function deserializeFheEncryptionCrs(
|
|
|
83
271
|
////////////////////////////////////////////////////////////////////////////////
|
|
84
272
|
|
|
85
273
|
export async function deserializeFheEncryptionPublicKey(
|
|
86
|
-
|
|
274
|
+
parameters: DeserializeFheEncryptionPublicKeyParameters,
|
|
87
275
|
): Promise<DeserializeFheEncryptionPublicKeyReturnType> {
|
|
88
|
-
|
|
276
|
+
const { publicKeyBytes: globalFhePublicKeyBytes } = parameters;
|
|
277
|
+
|
|
278
|
+
return new CleartextTfheCompactPublicKeyImpl(
|
|
279
|
+
PRIVATE_CLEARTEXT_TFHE_LIB_TOKEN,
|
|
280
|
+
globalFhePublicKeyBytes.id,
|
|
281
|
+
globalFhePublicKeyBytes.bytes,
|
|
282
|
+
);
|
|
89
283
|
}
|
|
90
284
|
|
|
91
285
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -40,6 +40,7 @@ import { encryptionBitsFromFheTypeId, isFheTypeId } from '../../../handle/FheTyp
|
|
|
40
40
|
import { EncryptionError } from '../../../errors/EncryptionError.js';
|
|
41
41
|
import { getErrorMessage } from '../../../base/errors/utils.js';
|
|
42
42
|
import { initTfheModule } from './init-p.js';
|
|
43
|
+
import { assertIsTypedValue } from '../../../base/typedValue.js';
|
|
43
44
|
|
|
44
45
|
////////////////////////////////////////////////////////////////////////////////
|
|
45
46
|
|
|
@@ -198,7 +199,7 @@ export async function buildWithProofPacked(
|
|
|
198
199
|
): Promise<BuildWithProofPackedReturnType> {
|
|
199
200
|
await initTfheModule(runtime);
|
|
200
201
|
|
|
201
|
-
const { fheEncryptionKey: publicEncryptionParams, metaData, typedValues } = parameters;
|
|
202
|
+
const { fheEncryptionKey: publicEncryptionParams, metaData, typedValues, extraData } = parameters;
|
|
202
203
|
|
|
203
204
|
const tfheCompactPublicKeyImpl = publicEncryptionParams.publicKey;
|
|
204
205
|
const tfheCompactPkeCrsImpl = publicEncryptionParams.crs;
|
|
@@ -228,6 +229,7 @@ export async function buildWithProofPacked(
|
|
|
228
229
|
fheCompactCiphertextListBuilderWasm = CompactCiphertextList.builder(tfheCompactPublicKeyWasm);
|
|
229
230
|
|
|
230
231
|
for (const typedValue of typedValues) {
|
|
232
|
+
assertIsTypedValue(typedValue, {});
|
|
231
233
|
switch (typedValue.type) {
|
|
232
234
|
case 'uint8':
|
|
233
235
|
fheCompactCiphertextListBuilderWasm.push_u8(typedValue.value);
|
|
@@ -264,7 +266,10 @@ export async function buildWithProofPacked(
|
|
|
264
266
|
|
|
265
267
|
ciphertextWithZKProofBytes = tfheProvenCompactCiphertextList.safe_serialize(SERIALIZED_SIZE_LIMIT_CIPHERTEXT);
|
|
266
268
|
|
|
267
|
-
return
|
|
269
|
+
return Object.freeze({
|
|
270
|
+
ciphertextWithZKProofBytes,
|
|
271
|
+
extraData,
|
|
272
|
+
});
|
|
268
273
|
} finally {
|
|
269
274
|
try {
|
|
270
275
|
if (tfheProvenCompactCiphertextList !== undefined) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TypedValue } from '../../types/primitives.js';
|
|
1
|
+
import type { BytesHex, TypedValue } from '../../types/primitives.js';
|
|
2
2
|
import type { EncryptionBits, FheTypeId } from '../../types/fheType.js';
|
|
3
3
|
import type {
|
|
4
4
|
FheEncryptionCrs,
|
|
@@ -112,9 +112,13 @@ export type BuildWithProofPackedReturnTypeParameters = {
|
|
|
112
112
|
readonly fheEncryptionKey: FheEncryptionKeyWasm;
|
|
113
113
|
readonly typedValues: TypedValue[];
|
|
114
114
|
readonly metaData: Uint8Array;
|
|
115
|
+
readonly extraData: BytesHex;
|
|
115
116
|
};
|
|
116
117
|
|
|
117
|
-
export type BuildWithProofPackedReturnType =
|
|
118
|
+
export type BuildWithProofPackedReturnType = {
|
|
119
|
+
readonly ciphertextWithZKProofBytes: Uint8Array;
|
|
120
|
+
readonly extraData: BytesHex;
|
|
121
|
+
};
|
|
118
122
|
|
|
119
123
|
export type BuildWithProofPackedModuleFunction = {
|
|
120
124
|
buildWithProofPacked(parameters: BuildWithProofPackedReturnTypeParameters): Promise<BuildWithProofPackedReturnType>;
|