@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,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>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { Bytes65Hex, BytesHex, ChecksummedAddress } from '../../types/primitives.js';
|
|
2
|
+
import type { Prettify } from '../../types/utils.js';
|
|
3
|
+
import type { EthereumModule } from './types.js';
|
|
4
|
+
|
|
5
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
6
|
+
// mnemonicToAccount
|
|
7
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
8
|
+
|
|
9
|
+
export type MnemonicToAccountParameters = Readonly<{
|
|
10
|
+
mnemonic: string;
|
|
11
|
+
path: `m/44'/60'/${string}`;
|
|
12
|
+
}>;
|
|
13
|
+
|
|
14
|
+
export type MnemonicToAccountReturnType = { readonly privateKey: BytesHex; readonly address: ChecksummedAddress };
|
|
15
|
+
|
|
16
|
+
export type MnemonicToAccountModuleFunction = {
|
|
17
|
+
mnemonicToAccount(parameters: MnemonicToAccountParameters): MnemonicToAccountReturnType;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
21
|
+
// sign
|
|
22
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
23
|
+
|
|
24
|
+
export type SignParameters = Readonly<{
|
|
25
|
+
hash: BytesHex;
|
|
26
|
+
privateKey: BytesHex;
|
|
27
|
+
}>;
|
|
28
|
+
|
|
29
|
+
export type SignReturnType = Bytes65Hex;
|
|
30
|
+
|
|
31
|
+
export type SignModuleFunction = {
|
|
32
|
+
sign(parameters: SignParameters): Promise<SignReturnType>;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
36
|
+
// generatePrivateKey
|
|
37
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
38
|
+
|
|
39
|
+
export type GeneratePrivateKeyReturnType = BytesHex;
|
|
40
|
+
|
|
41
|
+
export type GeneratePrivateKeyModuleFunction = {
|
|
42
|
+
generatePrivateKey(): GeneratePrivateKeyReturnType;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
46
|
+
// getPublicKey
|
|
47
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
48
|
+
|
|
49
|
+
export type GetPublicKeyParameters = Readonly<{
|
|
50
|
+
privateKey: BytesHex;
|
|
51
|
+
}>;
|
|
52
|
+
|
|
53
|
+
export type GetPublicKeyReturnType = BytesHex;
|
|
54
|
+
|
|
55
|
+
export type GetPublicKeyModuleFunction = {
|
|
56
|
+
getPublicKey(parameters: GetPublicKeyParameters): GetPublicKeyReturnType;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
60
|
+
// recoverAddress
|
|
61
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
62
|
+
|
|
63
|
+
export type RecoverAddressParameters = Readonly<{
|
|
64
|
+
hash: BytesHex;
|
|
65
|
+
signature: Bytes65Hex;
|
|
66
|
+
}>;
|
|
67
|
+
|
|
68
|
+
export type RecoverAddressReturnType = ChecksummedAddress;
|
|
69
|
+
|
|
70
|
+
export type RecoverAddressModuleFunction = {
|
|
71
|
+
recoverAddress(parameters: RecoverAddressParameters): Promise<RecoverAddressReturnType>;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
75
|
+
// cleartextEthereumModule
|
|
76
|
+
////////////////////////////////////////////////////////////////////////////////
|
|
77
|
+
|
|
78
|
+
export type CleartextEthereumModule = EthereumModule &
|
|
79
|
+
Prettify<
|
|
80
|
+
MnemonicToAccountModuleFunction &
|
|
81
|
+
SignModuleFunction &
|
|
82
|
+
GeneratePrivateKeyModuleFunction &
|
|
83
|
+
GetPublicKeyModuleFunction &
|
|
84
|
+
RecoverAddressModuleFunction
|
|
85
|
+
>;
|
|
86
|
+
|
|
87
|
+
export type CleartextEthereumModuleFactory = () => {
|
|
88
|
+
readonly ethereum: CleartextEthereumModule;
|
|
89
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { Bytes65Hex, BytesHex, ChecksummedAddress } from '../../../types/primitives.js';
|
|
2
|
+
import type { CleartextEthereumModule } from '../../ethereum/types-ct.js';
|
|
3
|
+
import type {
|
|
4
|
+
FetchCoprocessorSignaturesParameters,
|
|
5
|
+
FetchCoprocessorSignaturesReturnType,
|
|
6
|
+
RelayerClientWithRuntime,
|
|
7
|
+
} from '../types.js';
|
|
8
|
+
import { asUint32BigInt, randomUniqueUints } from '../../../base/uint.js';
|
|
9
|
+
import { getTrustedClient } from '../../../runtime/CoreFhevm-p.js';
|
|
10
|
+
import { getCoprocessorSignersPrivateKeyMap } from './signers.js';
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
export type FetchCoprocessorSignaturesReturnType = {
|
|
14
|
+
readonly handles: readonly InputHandle[];
|
|
15
|
+
readonly coprocessorEip712Signatures: readonly Bytes65Hex[];
|
|
16
|
+
readonly extraData: BytesHex;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
*/
|
|
20
|
+
const inputProofAbi = [
|
|
21
|
+
{
|
|
22
|
+
type: 'function',
|
|
23
|
+
name: 'inputProof',
|
|
24
|
+
inputs: [
|
|
25
|
+
{
|
|
26
|
+
name: 'ctHandles',
|
|
27
|
+
type: 'bytes32[]',
|
|
28
|
+
internalType: 'bytes32[]',
|
|
29
|
+
},
|
|
30
|
+
{ name: 'userAddress', type: 'address', internalType: 'address' },
|
|
31
|
+
{
|
|
32
|
+
name: 'contractAddress',
|
|
33
|
+
type: 'address',
|
|
34
|
+
internalType: 'address',
|
|
35
|
+
},
|
|
36
|
+
{ name: 'extraData', type: 'bytes', internalType: 'bytes' },
|
|
37
|
+
],
|
|
38
|
+
outputs: [
|
|
39
|
+
{ name: 'digest', type: 'bytes32', internalType: 'bytes32' },
|
|
40
|
+
{ name: 'signers', type: 'address[]', internalType: 'address[]' },
|
|
41
|
+
{ name: 'threshold', type: 'uint256', internalType: 'uint256' },
|
|
42
|
+
],
|
|
43
|
+
stateMutability: 'view',
|
|
44
|
+
},
|
|
45
|
+
] as const;
|
|
46
|
+
|
|
47
|
+
export async function fetchCoprocessorSignatures(
|
|
48
|
+
relayerClient: RelayerClientWithRuntime,
|
|
49
|
+
parameters: FetchCoprocessorSignaturesParameters,
|
|
50
|
+
): Promise<FetchCoprocessorSignaturesReturnType> {
|
|
51
|
+
const cleartextEthereumModule = relayerClient.runtime.ethereum as CleartextEthereumModule;
|
|
52
|
+
const { payload } = parameters;
|
|
53
|
+
|
|
54
|
+
const trustedClient = getTrustedClient(relayerClient);
|
|
55
|
+
const res = (await relayerClient.runtime.ethereum.readContract(trustedClient, {
|
|
56
|
+
abi: inputProofAbi,
|
|
57
|
+
address: relayerClient.chain.fhevm.contracts.inputVerifier.address as ChecksummedAddress,
|
|
58
|
+
args: [
|
|
59
|
+
payload.zkProof.getInputHandles().map((h) => h.bytes32Hex),
|
|
60
|
+
payload.zkProof.userAddress,
|
|
61
|
+
payload.zkProof.contractAddress,
|
|
62
|
+
payload.zkProof.getExtraData(),
|
|
63
|
+
],
|
|
64
|
+
functionName: inputProofAbi[0].name,
|
|
65
|
+
})) as unknown[];
|
|
66
|
+
|
|
67
|
+
const digest = res[0] as BytesHex;
|
|
68
|
+
const signersAddress = res[1] as ChecksummedAddress[];
|
|
69
|
+
const threshold = asUint32BigInt(res[2]);
|
|
70
|
+
const signers = getCoprocessorSignersPrivateKeyMap(relayerClient);
|
|
71
|
+
|
|
72
|
+
const randomSignersAddress = randomUniqueUints(signersAddress.length, Number(threshold)).map(
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
74
|
+
(i) => signersAddress[i]!,
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
const coprocessorEip712Signatures: Bytes65Hex[] = [];
|
|
78
|
+
|
|
79
|
+
for (const signerAddress of randomSignersAddress) {
|
|
80
|
+
const privateKey = signers.get(signerAddress);
|
|
81
|
+
if (privateKey === undefined) {
|
|
82
|
+
throw new Error(`Unable to find KMS signer for address ${signerAddress}`);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const signature = await cleartextEthereumModule.sign({ hash: digest, privateKey });
|
|
86
|
+
coprocessorEip712Signatures.push(signature);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return Promise.resolve({
|
|
90
|
+
extraData: payload.zkProof.getExtraData(),
|
|
91
|
+
handles: payload.zkProof.getInputHandles(),
|
|
92
|
+
coprocessorEip712Signatures,
|
|
93
|
+
});
|
|
94
|
+
}
|