@fhevm/sdk 1.0.0-alpha.1 → 1.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_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/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/kms/fetchKmsSignedcryptedShares-p.js +2 -3
- 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/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/kms/fetchKmsSignedcryptedShares-p.js +2 -3
- 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 +3 -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/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/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/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 +5 -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/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/kms/fetchKmsSignedcryptedShares-p.ts +16 -24
- 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/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
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
2
1
|
import type { Fhevm, FhevmBase, FhevmExtension, OptionalNativeClient } from '../../types/coreFhevmClient.js';
|
|
3
2
|
import type { FhevmRuntime, WithDecrypt } from '../../types/coreFhevmRuntime.js';
|
|
4
3
|
import type { FhevmChain } from '../../types/fhevmChain.js';
|
|
@@ -8,38 +7,29 @@ import { asFhevmClientWith, assertIsFhevmClientWith } from '../../runtime/CoreFh
|
|
|
8
7
|
import { generateTransportKeypair } from '../../kms/TransportKeypair-p.js';
|
|
9
8
|
import {
|
|
10
9
|
decryptValue,
|
|
11
|
-
type
|
|
12
|
-
type DecryptDelegatedValueParameters,
|
|
10
|
+
type DecryptValueParameters,
|
|
13
11
|
type DecryptValueReturnType,
|
|
14
12
|
} from '../../actions/decrypt/decryptValue.js';
|
|
15
13
|
import {
|
|
16
14
|
decryptValues,
|
|
17
|
-
type
|
|
18
|
-
type DecryptSelfValuesParameters,
|
|
15
|
+
type DecryptValuesParameters,
|
|
19
16
|
type DecryptValuesReturnType,
|
|
20
17
|
} from '../../actions/decrypt/decryptValues.js';
|
|
21
18
|
import {
|
|
22
19
|
decryptValuesFromPairs,
|
|
23
|
-
type
|
|
24
|
-
type DecryptDelegatedValuesFromPairsParameters,
|
|
20
|
+
type DecryptValuesFromPairsParameters,
|
|
25
21
|
type DecryptValuesFromPairsReturnType,
|
|
26
22
|
} from '../../actions/decrypt/decryptValuesFromPairs.js';
|
|
27
23
|
|
|
28
24
|
////////////////////////////////////////////////////////////////////////////////
|
|
29
25
|
|
|
30
26
|
export type DecryptActions = {
|
|
31
|
-
readonly decryptValue:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
(parameters: DecryptDelegatedValuesParameters): Promise<DecryptValuesReturnType>;
|
|
38
|
-
};
|
|
39
|
-
readonly decryptValuesFromPairs: {
|
|
40
|
-
(parameters: DecryptSelfValuesFromPairsParameters): Promise<DecryptValuesFromPairsReturnType>;
|
|
41
|
-
(parameters: DecryptDelegatedValuesFromPairsParameters): Promise<DecryptValuesFromPairsReturnType>;
|
|
42
|
-
};
|
|
27
|
+
readonly decryptValue: (parameters: DecryptValueParameters) => Promise<DecryptValueReturnType>;
|
|
28
|
+
readonly decryptValues: (parameters: DecryptValuesParameters) => Promise<DecryptValuesReturnType>;
|
|
29
|
+
|
|
30
|
+
readonly decryptValuesFromPairs: (
|
|
31
|
+
parameters: DecryptValuesFromPairsParameters,
|
|
32
|
+
) => Promise<DecryptValuesFromPairsReturnType>;
|
|
43
33
|
readonly generateTransportKeypair: () => Promise<GenerateTransportKeypairReturnType>;
|
|
44
34
|
};
|
|
45
35
|
|
|
@@ -49,15 +39,9 @@ function _decryptActions(fhevm: Fhevm<FhevmChain, WithDecrypt>): DecryptActions
|
|
|
49
39
|
// Preserve the original action overloads on the decorated client API.
|
|
50
40
|
// Runtime behavior is unchanged: this is a direct pass-through wrapper.
|
|
51
41
|
return {
|
|
52
|
-
decryptValue: (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
decryptValues(fhevm, parameters as DecryptSelfValuesParameters)) as DecryptActions['decryptValues'],
|
|
56
|
-
decryptValuesFromPairs: ((parameters) =>
|
|
57
|
-
decryptValuesFromPairs(
|
|
58
|
-
fhevm,
|
|
59
|
-
parameters as DecryptSelfValuesFromPairsParameters,
|
|
60
|
-
)) as DecryptActions['decryptValuesFromPairs'],
|
|
42
|
+
decryptValue: (parameters) => decryptValue(fhevm, parameters),
|
|
43
|
+
decryptValues: (parameters) => decryptValues(fhevm, parameters),
|
|
44
|
+
decryptValuesFromPairs: (parameters) => decryptValuesFromPairs(fhevm, parameters),
|
|
61
45
|
generateTransportKeypair: () => generateTransportKeypair(fhevm),
|
|
62
46
|
};
|
|
63
47
|
}
|
|
@@ -208,9 +208,9 @@ export function createInputProofFromInputHandles({
|
|
|
208
208
|
// Proof format :
|
|
209
209
|
// ==============
|
|
210
210
|
//
|
|
211
|
-
// <len(handles)><len(signatures)><concat(handles)><concat(signatures)>
|
|
211
|
+
// <len(handles)><len(signatures)><concat(handles)><concat(signatures)><extraData>
|
|
212
212
|
//
|
|
213
|
-
// size: Byte1 + Byte1 + len(handles)*Bytes32 + len(signatures)*Bytes65
|
|
213
|
+
// size: Byte1 + Byte1 + len(handles)*Bytes32 + len(signatures)*Bytes65 + BytesN(extraData)
|
|
214
214
|
//
|
|
215
215
|
|
|
216
216
|
let proof: string = '';
|
|
@@ -7,6 +7,7 @@ import type {
|
|
|
7
7
|
Uint64,
|
|
8
8
|
Bytes21Hex,
|
|
9
9
|
Uint8Number,
|
|
10
|
+
BytesHex,
|
|
10
11
|
} from '../types/primitives.js';
|
|
11
12
|
import type { ZkProofLike, ZkProof } from '../types/zkProof-p.js';
|
|
12
13
|
import type { ErrorMetadataParams } from '../base/errors/ErrorBase.js';
|
|
@@ -49,27 +50,32 @@ class ZkProofImpl implements ZkProof {
|
|
|
49
50
|
readonly #fheTypeIds: readonly FheTypeId[]; // Can be empty
|
|
50
51
|
#inputHandles: InputHandle[] | undefined;
|
|
51
52
|
|
|
53
|
+
// In theory, 'extraData' is not part of the ZkProof
|
|
54
|
+
readonly #extraData: BytesHex;
|
|
55
|
+
|
|
52
56
|
constructor(
|
|
53
57
|
privateToken: symbol,
|
|
54
|
-
|
|
58
|
+
parameters: {
|
|
55
59
|
readonly chainId: Uint64BigInt;
|
|
56
60
|
readonly aclContractAddress: ChecksummedAddress;
|
|
57
61
|
readonly contractAddress: ChecksummedAddress;
|
|
58
62
|
readonly userAddress: ChecksummedAddress;
|
|
59
63
|
readonly ciphertextWithZkProof: Bytes;
|
|
60
64
|
readonly encryptionBits: readonly EncryptionBits[];
|
|
65
|
+
readonly extraData: BytesHex;
|
|
61
66
|
},
|
|
62
67
|
) {
|
|
63
68
|
if (privateToken !== PRIVATE_TOKEN) {
|
|
64
69
|
throw new Error('Unauthorized');
|
|
65
70
|
}
|
|
66
|
-
this.#chainId =
|
|
67
|
-
this.#aclContractAddress =
|
|
68
|
-
this.#contractAddress =
|
|
69
|
-
this.#userAddress =
|
|
70
|
-
this.#ciphertextWithZkProof =
|
|
71
|
-
this.#encryptionBits = Object.freeze([...
|
|
71
|
+
this.#chainId = parameters.chainId;
|
|
72
|
+
this.#aclContractAddress = parameters.aclContractAddress;
|
|
73
|
+
this.#contractAddress = parameters.contractAddress;
|
|
74
|
+
this.#userAddress = parameters.userAddress;
|
|
75
|
+
this.#ciphertextWithZkProof = parameters.ciphertextWithZkProof;
|
|
76
|
+
this.#encryptionBits = Object.freeze([...parameters.encryptionBits]);
|
|
72
77
|
this.#fheTypeIds = Object.freeze(this.#encryptionBits.map(fheTypeIdFromEncryptionBits));
|
|
78
|
+
this.#extraData = parameters.extraData;
|
|
73
79
|
Object.freeze(this);
|
|
74
80
|
}
|
|
75
81
|
|
|
@@ -145,6 +151,10 @@ class ZkProofImpl implements ZkProof {
|
|
|
145
151
|
return this.#inputHandles;
|
|
146
152
|
}
|
|
147
153
|
|
|
154
|
+
public getExtraData(): BytesHex {
|
|
155
|
+
return this.#extraData;
|
|
156
|
+
}
|
|
157
|
+
|
|
148
158
|
//////////////////////////////////////////////////////////////////////////////
|
|
149
159
|
// JSON
|
|
150
160
|
//////////////////////////////////////////////////////////////////////////////
|
|
@@ -218,6 +228,7 @@ export function assertIsZkProof(
|
|
|
218
228
|
*/
|
|
219
229
|
export async function toZkProof(
|
|
220
230
|
zkProofLike: ZkProofLike,
|
|
231
|
+
extraData: BytesHex,
|
|
221
232
|
options?: {
|
|
222
233
|
readonly zkProofParser?: ParseTFHEProvenCompactCiphertextListModuleFunction;
|
|
223
234
|
readonly copy?: boolean;
|
|
@@ -265,8 +276,9 @@ export async function toZkProof(
|
|
|
265
276
|
aclContractAddress,
|
|
266
277
|
contractAddress,
|
|
267
278
|
userAddress,
|
|
268
|
-
ciphertextWithZkProof
|
|
279
|
+
ciphertextWithZkProof,
|
|
269
280
|
encryptionBits,
|
|
281
|
+
extraData,
|
|
270
282
|
});
|
|
271
283
|
}
|
|
272
284
|
|
|
@@ -440,7 +452,7 @@ async function _getOrParseEncryptionBits(
|
|
|
440
452
|
* assert_eq!(handle.len(), 32);
|
|
441
453
|
* ```
|
|
442
454
|
*
|
|
443
|
-
* @see https://github.com/zama-ai/fhevm/blob/
|
|
455
|
+
* @see https://github.com/zama-ai/fhevm/blob/322748569f0b5eb100b8cc1a58f691cfe88d17c4/coprocessor/fhevm-engine/zkproof-worker/src/verifier.rs#L538
|
|
444
456
|
* @internal
|
|
445
457
|
*/
|
|
446
458
|
function _computeInputHash21(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Bytes20, Bytes32, ChecksummedAddress, UintNumber } from '../types/primitives.js';
|
|
1
|
+
import type { Bytes20, Bytes32, BytesHex, ChecksummedAddress, UintNumber } from '../types/primitives.js';
|
|
2
2
|
import type { ZkProof } from '../types/zkProof-p.js';
|
|
3
3
|
import type { EncryptionBits, FheType } from '../types/fheType.js';
|
|
4
4
|
import type { ZkProofBuilder } from '../types/zkProofBuilder.js';
|
|
@@ -18,7 +18,7 @@ import type {
|
|
|
18
18
|
import { assert } from '../base/errors/InternalError.js';
|
|
19
19
|
import { isUint64, uint256ToBytes32 } from '../base/uint.js';
|
|
20
20
|
import { isAddress } from '../base/address.js';
|
|
21
|
-
import { hexToBytes20 } from '../base/bytes.js';
|
|
21
|
+
import { asBytesHex, hexToBytes20 } from '../base/bytes.js';
|
|
22
22
|
import { ZkProofError } from '../errors/ZkProofError.js';
|
|
23
23
|
import { createTypedValue, TypedValueArrayBuilder } from '../base/typedValue.js';
|
|
24
24
|
import { toZkProof } from './ZkProof-p.js';
|
|
@@ -142,9 +142,11 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
|
|
|
142
142
|
{
|
|
143
143
|
contractAddress,
|
|
144
144
|
userAddress,
|
|
145
|
+
extraData,
|
|
145
146
|
}: {
|
|
146
147
|
readonly contractAddress: string;
|
|
147
148
|
readonly userAddress: string;
|
|
149
|
+
readonly extraData: string;
|
|
148
150
|
},
|
|
149
151
|
): Promise<ZkProof> {
|
|
150
152
|
// Fetch the FheEncryptionKey (in wasm format) from the global cache.
|
|
@@ -211,11 +213,13 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
|
|
|
211
213
|
|
|
212
214
|
assert(metaData.length - chainIdBytes32.length === 60);
|
|
213
215
|
|
|
214
|
-
const ciphertextWithZKProofBytes:
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
216
|
+
const { ciphertextWithZKProofBytes, extraData: finalExtraData } =
|
|
217
|
+
await context.runtime.encrypt.buildWithProofPacked({
|
|
218
|
+
typedValues: [...this.#builder.build()],
|
|
219
|
+
fheEncryptionKey: fheEncryptionKeyWasm,
|
|
220
|
+
metaData,
|
|
221
|
+
extraData: asBytesHex(extraData),
|
|
222
|
+
});
|
|
219
223
|
|
|
220
224
|
return toZkProof(
|
|
221
225
|
{
|
|
@@ -226,6 +230,7 @@ class ZkProofBuilderImpl implements ZkProofBuilder {
|
|
|
226
230
|
ciphertextWithZkProof: ciphertextWithZKProofBytes,
|
|
227
231
|
encryptionBits: this.#bits,
|
|
228
232
|
},
|
|
233
|
+
finalExtraData,
|
|
229
234
|
{ copy: false }, // Take ownership
|
|
230
235
|
);
|
|
231
236
|
}
|
|
@@ -273,9 +278,10 @@ export async function createZkProof(
|
|
|
273
278
|
readonly values: readonly TypedValue[];
|
|
274
279
|
readonly contractAddress: ChecksummedAddress;
|
|
275
280
|
readonly userAddress: ChecksummedAddress;
|
|
281
|
+
readonly extraData: BytesHex;
|
|
276
282
|
},
|
|
277
283
|
): Promise<ZkProof> {
|
|
278
|
-
const { contractAddress, userAddress, values } = parameters;
|
|
284
|
+
const { contractAddress, userAddress, values, extraData } = parameters;
|
|
279
285
|
|
|
280
286
|
const builder = new ZkProofBuilderImpl(PRIVATE_TOKEN, {
|
|
281
287
|
ciphertextCapacity: TFHE_ZKPROOF_CIPHERTEXT_CAPACITY,
|
|
@@ -289,6 +295,7 @@ export async function createZkProof(
|
|
|
289
295
|
const zkProof = await builder.build(context, {
|
|
290
296
|
contractAddress,
|
|
291
297
|
userAddress,
|
|
298
|
+
extraData,
|
|
292
299
|
});
|
|
293
300
|
|
|
294
301
|
return zkProof;
|
|
@@ -3,7 +3,6 @@ import type { FhevmChain } from '../types/fhevmChain.js';
|
|
|
3
3
|
import type { BytesHex, ChecksummedAddress, TypedValue } from '../types/primitives.js';
|
|
4
4
|
import type { RelayerInputProofOptions } from '../types/relayer.js';
|
|
5
5
|
import type { InputHandle } from '../types/encryptedTypes-p.js';
|
|
6
|
-
import { asBytesHex } from '../base/bytes.js';
|
|
7
6
|
import { fetchVerifiedInputProof } from './fetchVerifiedInputProof.js';
|
|
8
7
|
import { createZkProof } from './ZkProofBuilder-p.js';
|
|
9
8
|
|
|
@@ -33,11 +32,10 @@ type ReturnType = {
|
|
|
33
32
|
export async function encrypt(context: Context, parameters: Parameters): Promise<ReturnType> {
|
|
34
33
|
const hardCodedExtraData = '0x00' as BytesHex;
|
|
35
34
|
|
|
36
|
-
const zkProof = await createZkProof(context, parameters);
|
|
35
|
+
const zkProof = await createZkProof(context, { ...parameters, extraData: hardCodedExtraData });
|
|
37
36
|
|
|
38
37
|
const inputProof = await fetchVerifiedInputProof(context, {
|
|
39
38
|
zkProof,
|
|
40
|
-
extraData: asBytesHex(hardCodedExtraData),
|
|
41
39
|
options: parameters.options,
|
|
42
40
|
});
|
|
43
41
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { RelayerInputProofOptions } from '../types/relayer.js';
|
|
2
2
|
import type { FhevmChain } from '../types/fhevmChain.js';
|
|
3
3
|
import type { VerifiedInputProof } from '../types/inputProof.js';
|
|
4
|
-
import type { BytesHex } from '../types/primitives.js';
|
|
5
4
|
import type { ZkProof } from '../types/zkProof-p.js';
|
|
6
5
|
import type { FhevmRuntime } from '../types/coreFhevmRuntime.js';
|
|
7
6
|
import type { InputHandle } from '../types/encryptedTypes-p.js';
|
|
@@ -22,7 +21,6 @@ type Context = {
|
|
|
22
21
|
|
|
23
22
|
type Parameters = {
|
|
24
23
|
readonly zkProof: ZkProof;
|
|
25
|
-
readonly extraData: BytesHex;
|
|
26
24
|
readonly options?: RelayerInputProofOptions | undefined;
|
|
27
25
|
};
|
|
28
26
|
|
|
@@ -31,7 +29,7 @@ type ReturnType = VerifiedInputProof;
|
|
|
31
29
|
////////////////////////////////////////////////////////////////////////////////
|
|
32
30
|
|
|
33
31
|
export async function fetchVerifiedInputProof(context: Context, parameters: Parameters): Promise<ReturnType> {
|
|
34
|
-
const { zkProof,
|
|
32
|
+
const { zkProof, options } = parameters;
|
|
35
33
|
|
|
36
34
|
assertIsZkProof(zkProof, {});
|
|
37
35
|
|
|
@@ -52,16 +50,12 @@ export async function fetchVerifiedInputProof(context: Context, parameters: Para
|
|
|
52
50
|
|
|
53
51
|
// 2. Request coprocessor signatures from the relayer for the given ZK proof
|
|
54
52
|
const { handles: coprocessorSignedHandles, coprocessorEip712Signatures: coprocessorSignatures } =
|
|
55
|
-
await context.runtime.relayer.fetchCoprocessorSignatures(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
payload: {
|
|
59
|
-
zkProof,
|
|
60
|
-
extraData,
|
|
61
|
-
},
|
|
62
|
-
options: relayerOptions,
|
|
53
|
+
await context.runtime.relayer.fetchCoprocessorSignatures(context, {
|
|
54
|
+
payload: {
|
|
55
|
+
zkProof,
|
|
63
56
|
},
|
|
64
|
-
|
|
57
|
+
options: relayerOptions,
|
|
58
|
+
});
|
|
65
59
|
|
|
66
60
|
// 3. Check that the handles and the one in the fetch result
|
|
67
61
|
// Note: this check is theoretically unnecessary
|
|
@@ -73,7 +67,7 @@ export async function fetchVerifiedInputProof(context: Context, parameters: Para
|
|
|
73
67
|
const inputProof = createInputProofFromInputHandles({
|
|
74
68
|
coprocessorEip712Signatures: coprocessorSignatures,
|
|
75
69
|
inputHandles,
|
|
76
|
-
extraData,
|
|
70
|
+
extraData: zkProof.getExtraData(),
|
|
77
71
|
signedHandleAccess: {
|
|
78
72
|
userAddress: zkProof.userAddress,
|
|
79
73
|
contractAddress: zkProof.contractAddress,
|
package/core/handle/FheType.ts
CHANGED
|
@@ -418,8 +418,7 @@ function _assertMinimumEncryptionBitWidth(bw: number): void {
|
|
|
418
418
|
);
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
-
export function
|
|
422
|
-
const bn = bytesToBigInt(bytes);
|
|
421
|
+
export function bigintToClearValueType<etype extends FheType>(fheType: etype, bn: bigint): ClearValueType<etype> {
|
|
423
422
|
// needed to type narrowing
|
|
424
423
|
const ft: FheType = fheType;
|
|
425
424
|
|
|
@@ -455,6 +454,10 @@ export function bytesToClearValueType<etype extends FheType>(fheType: etype, byt
|
|
|
455
454
|
}
|
|
456
455
|
}
|
|
457
456
|
|
|
457
|
+
export function bytesToClearValueType<etype extends FheType>(fheType: etype, bytes: Bytes): ClearValueType<etype> {
|
|
458
|
+
return bigintToClearValueType(fheType, bytesToBigInt(bytes));
|
|
459
|
+
}
|
|
460
|
+
|
|
458
461
|
/**
|
|
459
462
|
* Asserts that `value` is already the correct JS type for the given `fheTypeName`
|
|
460
463
|
* and returns it narrowed. No conversion is performed.
|
|
@@ -70,7 +70,7 @@ class KmsSignersContextImpl implements KmsSignersContext {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
public has(signer: string): boolean {
|
|
73
|
-
return this.#kmsSignersSet.has(signer);
|
|
73
|
+
return this.#kmsSignersSet.has(signer.toLowerCase());
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
public static [VERIFY_FUNC](instance: unknown, owner: FhevmRuntime): void {
|
|
@@ -157,36 +157,28 @@ export async function fetchKmsSignedcryptedShares(context: Context, parameters:
|
|
|
157
157
|
// Safe casts: the discriminated union on parameters guarantees
|
|
158
158
|
// that options type matches signedPermit type, but TS can't prove
|
|
159
159
|
// it after destructuring (nested discriminant limitation).
|
|
160
|
-
const relayerUrl = context.chain.fhevm.relayerUrl;
|
|
161
|
-
|
|
162
160
|
let shares: readonly KmsSigncryptedShare[];
|
|
163
161
|
|
|
164
162
|
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,
|
|
163
|
+
shares = await context.runtime.relayer.fetchDelegatedUserDecrypt(context, {
|
|
164
|
+
payload: {
|
|
165
|
+
handleContractPairs,
|
|
166
|
+
kmsDecryptEip712Signer: signerAddress,
|
|
167
|
+
kmsDecryptEip712Message: signedPermit.eip712.message,
|
|
168
|
+
kmsDecryptEip712Signature: signature,
|
|
175
169
|
},
|
|
176
|
-
|
|
170
|
+
options: relayerOptions as RelayerDelegatedUserDecryptOptions,
|
|
171
|
+
});
|
|
177
172
|
} 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,
|
|
173
|
+
shares = await context.runtime.relayer.fetchUserDecrypt(context, {
|
|
174
|
+
payload: {
|
|
175
|
+
handleContractPairs,
|
|
176
|
+
kmsDecryptEip712Signer: signerAddress,
|
|
177
|
+
kmsDecryptEip712Message: signedPermit.eip712.message,
|
|
178
|
+
kmsDecryptEip712Signature: signature,
|
|
188
179
|
},
|
|
189
|
-
|
|
180
|
+
options: relayerOptions as RelayerUserDecryptOptions,
|
|
181
|
+
});
|
|
190
182
|
}
|
|
191
183
|
|
|
192
184
|
// 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
|
//////////////////////////////////////////////////////////////////////////////
|