@fhevm/sdk 1.0.0-alpha.3 → 1.0.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/core/_version.js +1 -1
- package/_cjs/core/actions/base/fetchEncryptedValues.js +18 -0
- package/_cjs/core/actions/base/fetchEncryptedValues.js.map +1 -0
- package/_cjs/core/actions/base/index.js +3 -1
- package/_cjs/core/actions/base/index.js.map +1 -1
- package/_cjs/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +1 -1
- package/_cjs/core/actions/chain/createKmsUserDecryptEip712.js.map +1 -1
- package/_cjs/core/actions/chain/index.js +5 -5
- package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js +2 -2
- package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
- package/_cjs/core/actions/chain/parseTransportKeyPair.js +8 -0
- package/_cjs/core/actions/chain/parseTransportKeyPair.js.map +1 -0
- package/_cjs/core/actions/chain/serializeTransportKeyPair.js +8 -0
- package/_cjs/core/actions/chain/serializeTransportKeyPair.js.map +1 -0
- package/_cjs/core/actions/decrypt/generateTransportKeyPair.js +8 -0
- package/_cjs/core/actions/decrypt/generateTransportKeyPair.js.map +1 -0
- package/_cjs/core/actions/decrypt/index.js +3 -3
- package/_cjs/core/actions/decrypt/index.js.map +1 -1
- package/_cjs/core/actions/encrypt/generateZkProof.js.map +1 -1
- package/_cjs/core/base/address.js.map +1 -1
- package/_cjs/core/base/fetch.js +2 -2
- package/_cjs/core/base/fetch.js.map +1 -1
- package/_cjs/core/base/index.js +0 -5
- package/_cjs/core/base/index.js.map +1 -1
- package/_cjs/core/base/sign.js +12 -6
- package/_cjs/core/base/sign.js.map +1 -1
- package/_cjs/core/base/typedValue.js +20 -6
- package/_cjs/core/base/typedValue.js.map +1 -1
- package/_cjs/core/base/uint.js +23 -0
- package/_cjs/core/base/uint.js.map +1 -1
- package/_cjs/core/base/wasm.js +1 -1
- package/_cjs/core/base/wasm.js.map +1 -1
- package/_cjs/core/clients/decorators/base.js +4 -4
- package/_cjs/core/clients/decorators/decrypt.js +2 -2
- package/_cjs/core/coprocessor/ZkProof-p.js +2 -1
- package/_cjs/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_cjs/core/handle/EncryptedValue.js +0 -4
- package/_cjs/core/handle/EncryptedValue.js.map +1 -1
- package/_cjs/core/handle/FheType.js.map +1 -1
- package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js +3 -3
- package/_cjs/core/host-contracts/checkDelegation.js +13 -0
- package/_cjs/core/host-contracts/checkDelegation.js.map +1 -1
- package/_cjs/core/host-contracts/constants.js +5 -0
- package/_cjs/core/host-contracts/constants.js.map +1 -0
- package/_cjs/core/kms/SignedDecryptionPermit-p.js +9 -9
- package/_cjs/core/kms/SignedDecryptionPermit-p.js.map +1 -1
- package/_cjs/core/kms/{TransportKeypair-p.js → TransportKeyPair-p.js} +48 -48
- package/_cjs/core/kms/{TransportKeypair-p.js.map → TransportKeyPair-p.js.map} +1 -1
- package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js +3 -3
- package/_cjs/core/kms/decryptKmsSignedcryptedShares-p.js.map +1 -1
- package/_cjs/core/kms/decryptValuesFromPairs.js +2 -2
- package/_cjs/core/kms/decryptValuesFromPairs.js.map +1 -1
- package/_cjs/core/kms/index.js +0 -1
- package/_cjs/core/modules/decrypt/mock.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/init-p.js +3 -7
- package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/mock.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/index.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/init-p.js +18 -13
- package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
- package/_cjs/core/modules/relayer/module/guards/RelayerErrorBody.js +27 -0
- package/_cjs/core/modules/relayer/module/guards/RelayerErrorBody.js.map +1 -0
- package/_cjs/core/types/index.js +4 -0
- package/_cjs/core/types/index.js.map +1 -1
- package/_cjs/core/utils-p/decrypt/assertPermitMatchesKeyPair.js +14 -0
- package/_cjs/core/utils-p/decrypt/{assertPermitMatchesKeypair.js.map → assertPermitMatchesKeyPair.js.map} +1 -1
- package/_cjs/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -1
- package/_esm/core/_version.js +1 -1
- package/_esm/core/actions/base/fetchEncryptedValues.js +16 -0
- package/_esm/core/actions/base/fetchEncryptedValues.js.map +1 -0
- package/_esm/core/actions/base/index.js +1 -0
- package/_esm/core/actions/base/index.js.map +1 -1
- package/_esm/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +1 -1
- package/_esm/core/actions/chain/createKmsUserDecryptEip712.js.map +1 -1
- package/_esm/core/actions/chain/index.js +2 -2
- package/_esm/core/actions/chain/parseSignedDecryptionPermit.js +3 -3
- package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
- package/_esm/core/actions/chain/parseTransportKeyPair.js +5 -0
- package/_esm/core/actions/chain/parseTransportKeyPair.js.map +1 -0
- package/_esm/core/actions/chain/serializeTransportKeyPair.js +5 -0
- package/_esm/core/actions/chain/{serializeTransportKeypair.js.map → serializeTransportKeyPair.js.map} +1 -1
- package/_esm/core/actions/decrypt/generateTransportKeyPair.js +6 -0
- package/_esm/core/actions/decrypt/{generateTransportKeypair.js.map → generateTransportKeyPair.js.map} +1 -1
- package/_esm/core/actions/decrypt/index.js +3 -1
- package/_esm/core/actions/decrypt/index.js.map +1 -1
- package/_esm/core/actions/encrypt/generateZkProof.js.map +1 -1
- package/_esm/core/base/address.js.map +1 -1
- package/_esm/core/base/fetch.js +2 -2
- package/_esm/core/base/fetch.js.map +1 -1
- package/_esm/core/base/index.js +1 -1
- package/_esm/core/base/index.js.map +1 -1
- package/_esm/core/base/sign.js +15 -8
- package/_esm/core/base/sign.js.map +1 -1
- package/_esm/core/base/typedValue.js +24 -7
- package/_esm/core/base/typedValue.js.map +1 -1
- package/_esm/core/base/uint.js +21 -0
- package/_esm/core/base/uint.js.map +1 -1
- package/_esm/core/base/wasm.js +1 -1
- package/_esm/core/base/wasm.js.map +1 -1
- package/_esm/core/clients/decorators/base.js +4 -4
- package/_esm/core/clients/decorators/decrypt.js +2 -2
- package/_esm/core/coprocessor/ZkProof-p.js +3 -2
- package/_esm/core/coprocessor/ZkProof-p.js.map +1 -1
- package/_esm/core/handle/EncryptedValue.js +0 -3
- package/_esm/core/handle/EncryptedValue.js.map +1 -1
- package/_esm/core/handle/FheType.js +10 -17
- package/_esm/core/handle/FheType.js.map +1 -1
- package/_esm/core/host-contracts/canDecryptValuesFromPairs.js +3 -3
- package/_esm/core/host-contracts/checkDelegation.js +19 -5
- package/_esm/core/host-contracts/checkDelegation.js.map +1 -1
- package/_esm/core/host-contracts/constants.js +2 -0
- package/_esm/core/host-contracts/constants.js.map +1 -0
- package/_esm/core/kms/SignedDecryptionPermit-p.js +9 -9
- package/_esm/core/kms/SignedDecryptionPermit-p.js.map +1 -1
- package/_esm/core/kms/{TransportKeypair-p.js → TransportKeyPair-p.js} +55 -55
- package/_esm/core/kms/{TransportKeypair-p.js.map → TransportKeyPair-p.js.map} +1 -1
- package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js +4 -4
- package/_esm/core/kms/decryptKmsSignedcryptedShares-p.js.map +1 -1
- package/_esm/core/kms/decryptValuesFromPairs.js +2 -2
- package/_esm/core/kms/decryptValuesFromPairs.js.map +1 -1
- package/_esm/core/modules/decrypt/mock.js.map +1 -1
- package/_esm/core/modules/decrypt/module/init-p.js +13 -11
- package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/encrypt/mock.js.map +1 -1
- package/_esm/core/modules/encrypt/module/api-p.js.map +1 -1
- package/_esm/core/modules/encrypt/module/index.js.map +1 -1
- package/_esm/core/modules/encrypt/module/init-p.js +34 -17
- package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
- package/_esm/core/modules/relayer/module/guards/RelayerErrorBody.js +24 -0
- package/_esm/core/modules/relayer/module/guards/RelayerErrorBody.js.map +1 -0
- package/_esm/core/types/index.js +1 -1
- package/_esm/core/types/index.js.map +1 -1
- package/_esm/core/utils-p/decrypt/assertPermitMatchesKeyPair.js +19 -0
- package/_esm/core/utils-p/decrypt/{assertPermitMatchesKeypair.js.map → assertPermitMatchesKeyPair.js.map} +1 -1
- package/_esm/core/utils-p/decrypt/verifyTkmsPublicKey.js +1 -1
- package/_types/core/actions/base/fetchEncryptedValues.d.ts +16 -0
- package/_types/core/actions/base/fetchEncryptedValues.d.ts.map +1 -0
- package/_types/core/actions/base/index.d.ts +1 -0
- package/_types/core/actions/base/index.d.ts.map +1 -1
- package/_types/core/actions/chain/createKmsDelegatedUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/actions/chain/createKmsUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/actions/chain/index.d.ts +2 -2
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +4 -4
- package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
- package/_types/core/actions/chain/{parseTransportKeypair.d.ts → parseTransportKeyPair.d.ts} +5 -5
- package/_types/core/actions/chain/{parseTransportKeypair.d.ts.map → parseTransportKeyPair.d.ts.map} +1 -1
- package/_types/core/actions/chain/{serializeTransportKeypair.d.ts → serializeTransportKeyPair.d.ts} +6 -6
- package/_types/core/actions/chain/{serializeTransportKeypair.d.ts.map → serializeTransportKeyPair.d.ts.map} +1 -1
- package/_types/core/actions/decrypt/canDecryptValue.d.ts +4 -4
- package/_types/core/actions/decrypt/canDecryptValues.d.ts +2 -2
- package/_types/core/actions/decrypt/canDecryptValuesFromPairs.d.ts +2 -2
- package/_types/core/actions/decrypt/decryptKmsSignedcryptedShares.d.ts +2 -2
- package/_types/core/actions/decrypt/decryptValue.d.ts +2 -2
- package/_types/core/actions/decrypt/decryptValues.d.ts +2 -2
- package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts +2 -2
- package/_types/core/actions/decrypt/{generateTransportKeypair.d.ts → generateTransportKeyPair.d.ts} +4 -4
- package/_types/core/actions/decrypt/{generateTransportKeypair.d.ts.map → generateTransportKeyPair.d.ts.map} +1 -1
- package/_types/core/actions/decrypt/index.d.ts +3 -1
- package/_types/core/actions/decrypt/index.d.ts.map +1 -1
- package/_types/core/actions/encrypt/encryptValue.d.ts +5 -2
- package/_types/core/actions/encrypt/encryptValue.d.ts.map +1 -1
- package/_types/core/actions/encrypt/encryptValues.d.ts +5 -2
- package/_types/core/actions/encrypt/encryptValues.d.ts.map +1 -1
- package/_types/core/actions/encrypt/generateZkProof.d.ts +4 -2
- package/_types/core/actions/encrypt/generateZkProof.d.ts.map +1 -1
- package/_types/core/base/address.d.ts.map +1 -1
- package/_types/core/base/errors/InvalidTypeError.d.ts +1 -1
- package/_types/core/base/errors/InvalidTypeError.d.ts.map +1 -1
- package/_types/core/base/index.d.ts +1 -1
- package/_types/core/base/index.d.ts.map +1 -1
- package/_types/core/base/sign.d.ts.map +1 -1
- package/_types/core/base/typedValue.d.ts +3 -13
- package/_types/core/base/typedValue.d.ts.map +1 -1
- package/_types/core/base/uint.d.ts +4 -0
- package/_types/core/base/uint.d.ts.map +1 -1
- package/_types/core/clients/decorators/base.d.ts +6 -6
- package/_types/core/clients/decorators/base.d.ts.map +1 -1
- package/_types/core/clients/decorators/decrypt.d.ts +2 -2
- package/_types/core/coprocessor/ZkProof-p.d.ts +2 -1
- package/_types/core/coprocessor/ZkProof-p.d.ts.map +1 -1
- package/_types/core/handle/EncryptedValue.d.ts +0 -1
- package/_types/core/handle/EncryptedValue.d.ts.map +1 -1
- package/_types/core/handle/FheType.d.ts +10 -17
- package/_types/core/handle/FheType.d.ts.map +1 -1
- package/_types/core/host-contracts/canDecryptValuesFromPairs.d.ts +2 -2
- package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -1
- package/_types/core/host-contracts/constants.d.ts +3 -0
- package/_types/core/host-contracts/constants.d.ts.map +1 -0
- package/_types/core/kms/SignedDecryptionPermit-p.d.ts +6 -6
- package/_types/core/kms/{TransportKeypair-p.d.ts → TransportKeyPair-p.d.ts} +23 -23
- package/_types/core/kms/{TransportKeypair-p.d.ts.map → TransportKeyPair-p.d.ts.map} +1 -1
- package/_types/core/kms/decryptKmsSignedcryptedShares-p.d.ts +2 -2
- package/_types/core/kms/decryptValuesFromPairs.d.ts +3 -3
- package/_types/core/kms/index.d.ts +1 -1
- package/_types/core/kms/index.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/mock.d.ts +2 -2
- package/_types/core/modules/encrypt/mock.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/api-p.d.ts +2 -2
- package/_types/core/modules/encrypt/module/api-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/types.d.ts +2 -2
- package/_types/core/modules/encrypt/types.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
- package/_types/core/modules/relayer/module/guards/RelayerErrorBody.d.ts +13 -0
- package/_types/core/modules/relayer/module/guards/RelayerErrorBody.d.ts.map +1 -0
- package/_types/core/types/index.d.ts +2 -0
- package/_types/core/types/index.d.ts.map +1 -1
- package/_types/core/types/primitives.d.ts +4 -0
- package/_types/core/types/primitives.d.ts.map +1 -1
- package/_types/core/utils-p/decrypt/assertPermitMatchesKeyPair.d.ts +12 -0
- package/_types/core/utils-p/decrypt/{assertPermitMatchesKeypair.d.ts.map → assertPermitMatchesKeyPair.d.ts.map} +1 -1
- package/core/_version.ts +1 -1
- package/core/actions/base/fetchEncryptedValues.ts +42 -0
- package/core/actions/base/index.ts +6 -0
- package/core/actions/chain/createKmsDelegatedUserDecryptEip712.ts +1 -2
- package/core/actions/chain/createKmsUserDecryptEip712.ts +1 -2
- package/core/actions/chain/index.ts +8 -8
- package/core/actions/chain/parseSignedDecryptionPermit.ts +6 -6
- package/core/actions/chain/{parseTransportKeypair.ts → parseTransportKeyPair.ts} +7 -7
- package/core/actions/chain/{serializeTransportKeypair.ts → serializeTransportKeyPair.ts} +10 -10
- package/core/actions/decrypt/canDecryptValue.ts +4 -4
- package/core/actions/decrypt/canDecryptValues.ts +2 -2
- package/core/actions/decrypt/canDecryptValuesFromPairs.ts +2 -2
- package/core/actions/decrypt/decryptKmsSignedcryptedShares.ts +2 -2
- package/core/actions/decrypt/decryptValue.ts +2 -2
- package/core/actions/decrypt/decryptValues.ts +2 -2
- package/core/actions/decrypt/decryptValuesFromPairs.ts +2 -2
- package/core/actions/decrypt/{generateTransportKeypair.ts → generateTransportKeyPair.ts} +7 -7
- package/core/actions/decrypt/index.ts +8 -4
- package/core/actions/encrypt/encryptValue.ts +2 -2
- package/core/actions/encrypt/encryptValues.ts +2 -2
- package/core/actions/encrypt/generateZkProof.ts +1 -2
- package/core/base/address.ts +2 -2
- package/core/base/errors/InvalidTypeError.ts +1 -1
- package/core/base/fetch.ts +2 -2
- package/core/base/index.ts +0 -1
- package/core/base/sign.ts +16 -8
- package/core/base/typedValue.ts +32 -25
- package/core/base/uint.ts +30 -0
- package/core/base/wasm.ts +1 -1
- package/core/clients/decorators/base.ts +18 -18
- package/core/clients/decorators/decrypt.ts +4 -4
- package/core/coprocessor/ZkProof-p.ts +6 -6
- package/core/handle/EncryptedValue.ts +0 -4
- package/core/handle/FheType.ts +10 -17
- package/core/host-contracts/canDecryptValuesFromPairs.ts +5 -5
- package/core/host-contracts/checkDelegation.ts +20 -5
- package/core/host-contracts/constants.ts +3 -0
- package/core/kms/SignedDecryptionPermit-p.ts +13 -13
- package/core/kms/{TransportKeypair-p.ts → TransportKeyPair-p.ts} +42 -42
- package/core/kms/decryptKmsSignedcryptedShares-p.ts +6 -6
- package/core/kms/decryptValuesFromPairs.ts +5 -5
- package/core/kms/index.ts +0 -1
- package/core/modules/decrypt/mock.ts +3 -3
- package/core/modules/decrypt/module/init-p.ts +13 -14
- package/core/modules/encrypt/mock.ts +4 -6
- package/core/modules/encrypt/module/api-p.ts +4 -6
- package/core/modules/encrypt/module/index.ts +2 -2
- package/core/modules/encrypt/module/init-p.ts +37 -21
- package/core/modules/encrypt/types.ts +2 -2
- package/core/modules/relayer/module/fetchPublicDecrypt.ts +2 -2
- package/core/modules/relayer/module/fetchUserDecrypt.ts +1 -2
- package/core/modules/relayer/module/guards/RelayerErrorBody.ts +33 -0
- package/core/types/index.ts +2 -0
- package/core/types/primitives.ts +4 -0
- package/core/utils-p/decrypt/{assertPermitMatchesKeypair.ts → assertPermitMatchesKeyPair.ts} +9 -9
- package/core/utils-p/decrypt/verifyTkmsPublicKey.ts +1 -1
- package/package.json +3 -2
- package/_cjs/core/actions/chain/parseTransportKeypair.js +0 -8
- package/_cjs/core/actions/chain/parseTransportKeypair.js.map +0 -1
- package/_cjs/core/actions/chain/serializeTransportKeypair.js +0 -8
- package/_cjs/core/actions/chain/serializeTransportKeypair.js.map +0 -1
- package/_cjs/core/actions/decrypt/generateTransportKeypair.js +0 -8
- package/_cjs/core/actions/decrypt/generateTransportKeypair.js.map +0 -1
- package/_cjs/core/utils-p/decrypt/assertPermitMatchesKeypair.js +0 -14
- package/_esm/core/actions/chain/parseTransportKeypair.js +0 -5
- package/_esm/core/actions/chain/parseTransportKeypair.js.map +0 -1
- package/_esm/core/actions/chain/serializeTransportKeypair.js +0 -5
- package/_esm/core/actions/decrypt/generateTransportKeypair.js +0 -6
- package/_esm/core/utils-p/decrypt/assertPermitMatchesKeypair.js +0 -19
- package/_types/core/utils-p/decrypt/assertPermitMatchesKeypair.d.ts +0 -12
- package/tsconfig.json +0 -9
|
@@ -2,18 +2,18 @@ import type { Fhevm, OptionalNativeClient } from '../../types/coreFhevmClient.js
|
|
|
2
2
|
import type { WithDecrypt } from '../../types/coreFhevmRuntime.js';
|
|
3
3
|
import type { FhevmChain } from '../../types/fhevmChain.js';
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
type
|
|
7
|
-
} from '../../kms/
|
|
5
|
+
generateTransportKeyPair as generateTransportKeyPair_,
|
|
6
|
+
type TransportKeyPair,
|
|
7
|
+
} from '../../kms/TransportKeyPair-p.js';
|
|
8
8
|
|
|
9
9
|
////////////////////////////////////////////////////////////////////////////////
|
|
10
10
|
|
|
11
|
-
export type
|
|
11
|
+
export type GenerateTransportKeyPairReturnType = TransportKeyPair;
|
|
12
12
|
|
|
13
|
-
export async function
|
|
13
|
+
export async function generateTransportKeyPair(
|
|
14
14
|
fhevm: Fhevm<FhevmChain | undefined, WithDecrypt, OptionalNativeClient>,
|
|
15
|
-
): Promise<
|
|
16
|
-
return await
|
|
15
|
+
): Promise<GenerateTransportKeyPairReturnType> {
|
|
16
|
+
return await generateTransportKeyPair_(fhevm);
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -4,10 +4,7 @@ export type {
|
|
|
4
4
|
RelayerDelegatedUserDecryptProgressArgs,
|
|
5
5
|
} from '../../types/relayer.js';
|
|
6
6
|
|
|
7
|
-
export {
|
|
8
|
-
type GenerateTransportKeypairReturnType as GenerateE2eTransportKeypairReturnType,
|
|
9
|
-
generateTransportKeypair as generateE2eTransportKeypair,
|
|
10
|
-
} from './generateTransportKeypair.js';
|
|
7
|
+
export { type GenerateTransportKeyPairReturnType, generateTransportKeyPair } from './generateTransportKeyPair.js';
|
|
11
8
|
|
|
12
9
|
export {
|
|
13
10
|
type DecryptValuesFromPairsParameters,
|
|
@@ -45,3 +42,10 @@ export {
|
|
|
45
42
|
type CanDecryptValueReturnType,
|
|
46
43
|
canDecryptValue,
|
|
47
44
|
} from './canDecryptValue.js';
|
|
45
|
+
|
|
46
|
+
export { type TransportKeyPair } from '../../kms/TransportKeyPair-p.js';
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
type SignDecryptionPermitParameters,
|
|
50
|
+
type SignDecryptionPermitReturnType,
|
|
51
|
+
} from '../base/signDecryptionPermit.js';
|
|
@@ -2,7 +2,7 @@ import type { RelayerInputProofOptions } from '../../types/relayer.js';
|
|
|
2
2
|
import type { Fhevm } from '../../types/coreFhevmClient.js';
|
|
3
3
|
import type { WithEncrypt } from '../../types/coreFhevmRuntime.js';
|
|
4
4
|
import type { FhevmChain } from '../../types/fhevmChain.js';
|
|
5
|
-
import type { BytesHex
|
|
5
|
+
import type { BytesHex } from '../../types/primitives.js';
|
|
6
6
|
import type { EncryptedValue } from '../../types/encryptedTypes.js';
|
|
7
7
|
import { addressToChecksummedAddress, assertIsAddress } from '../../base/address.js';
|
|
8
8
|
import { toArray } from '../../base/object.js';
|
|
@@ -12,7 +12,7 @@ import { encrypt as encrypt_ } from '../../coprocessor/encrypt.js';
|
|
|
12
12
|
////////////////////////////////////////////////////////////////////////////////
|
|
13
13
|
|
|
14
14
|
export type EncryptValueParameters = {
|
|
15
|
-
readonly value:
|
|
15
|
+
readonly value: { readonly type: string; readonly value: boolean | bigint | number | string };
|
|
16
16
|
readonly contractAddress: string;
|
|
17
17
|
readonly userAddress: string;
|
|
18
18
|
readonly options?: RelayerInputProofOptions | undefined;
|
|
@@ -2,7 +2,7 @@ import type { RelayerInputProofOptions } from '../../types/relayer.js';
|
|
|
2
2
|
import type { Fhevm } from '../../types/coreFhevmClient.js';
|
|
3
3
|
import type { WithEncrypt } from '../../types/coreFhevmRuntime.js';
|
|
4
4
|
import type { FhevmChain } from '../../types/fhevmChain.js';
|
|
5
|
-
import type { BytesHex
|
|
5
|
+
import type { BytesHex } from '../../types/primitives.js';
|
|
6
6
|
import type { EncryptedValue } from '../../types/encryptedTypes.js';
|
|
7
7
|
import { addressToChecksummedAddress, assertIsAddress } from '../../base/address.js';
|
|
8
8
|
import { createTypedValue } from '../../base/typedValue.js';
|
|
@@ -11,7 +11,7 @@ import { encrypt as encrypt_ } from '../../coprocessor/encrypt.js';
|
|
|
11
11
|
////////////////////////////////////////////////////////////////////////////////
|
|
12
12
|
|
|
13
13
|
export type EncryptValuesParameters = {
|
|
14
|
-
readonly values: readonly
|
|
14
|
+
readonly values: ReadonlyArray<{ readonly type: string; readonly value: boolean | bigint | number | string }>;
|
|
15
15
|
readonly contractAddress: string;
|
|
16
16
|
readonly userAddress: string;
|
|
17
17
|
readonly options?: RelayerInputProofOptions | undefined;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Fhevm } from '../../types/coreFhevmClient.js';
|
|
2
2
|
import type { WithEncrypt } from '../../types/coreFhevmRuntime.js';
|
|
3
3
|
import type { FhevmChain } from '../../types/fhevmChain.js';
|
|
4
|
-
import type { TypedValueLike } from '../../types/primitives.js';
|
|
5
4
|
import type { ZkProof } from '../../types/zkProof-p.js';
|
|
6
5
|
import { createTypedValue } from '../../base/typedValue.js';
|
|
7
6
|
import { createZkProofBuilder } from '../../coprocessor/ZkProofBuilder-p.js';
|
|
@@ -11,7 +10,7 @@ import { createZkProofBuilder } from '../../coprocessor/ZkProofBuilder-p.js';
|
|
|
11
10
|
export type GenerateZkProofParameters = {
|
|
12
11
|
readonly contractAddress: string;
|
|
13
12
|
readonly userAddress: string;
|
|
14
|
-
readonly values: readonly
|
|
13
|
+
readonly values: ReadonlyArray<{ readonly type: string; readonly value: boolean | bigint | number | string }>;
|
|
15
14
|
};
|
|
16
15
|
|
|
17
16
|
export type GenerateZkProofReturnType = ZkProof;
|
package/core/base/address.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Address, Bytes20,
|
|
1
|
+
import type { Address, Bytes20, ChecksummedAddress } from '../types/primitives.js';
|
|
2
2
|
import type {
|
|
3
3
|
RecordAddressPropertyType,
|
|
4
4
|
RecordChecksummedAddressArrayPropertyType,
|
|
@@ -117,7 +117,7 @@ export function isAddress(value: unknown): value is Address {
|
|
|
117
117
|
return false;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
const hexNo0x = remove0x(value)
|
|
120
|
+
const hexNo0x = remove0x(value);
|
|
121
121
|
const hexNo0xLowerCase = hexNo0x.toLowerCase();
|
|
122
122
|
|
|
123
123
|
if (hexNo0x === hexNo0xLowerCase) {
|
|
@@ -4,7 +4,7 @@ import { ErrorBase } from './ErrorBase.js';
|
|
|
4
4
|
////////////////////////////////////////////////////////////////////////////////
|
|
5
5
|
|
|
6
6
|
export type ExpectedTypeParams = {
|
|
7
|
-
expectedType: string | string[];
|
|
7
|
+
expectedType: string | readonly string[];
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
////////////////////////////////////////////////////////////////////////////////
|
package/core/base/fetch.ts
CHANGED
|
@@ -219,8 +219,8 @@ export async function fetchWithRetry(
|
|
|
219
219
|
): Promise<Response> {
|
|
220
220
|
let lastError: unknown;
|
|
221
221
|
|
|
222
|
-
const retries = args.retries ?? 3;
|
|
223
|
-
const retryDelayMs = args.retryDelayMs ?? 1000;
|
|
222
|
+
const retries = Math.max(0, Math.min(1000, args.retries ?? 3));
|
|
223
|
+
const retryDelayMs = Math.max(100, args.retryDelayMs ?? 1000);
|
|
224
224
|
const { url, init } = args;
|
|
225
225
|
|
|
226
226
|
for (let attempt = 0; attempt <= retries; attempt++) {
|
package/core/base/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { createTypedValue, createTypedValueArray } from './typedValue.js';
|
package/core/base/sign.ts
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import type { Address, Bytes65Hex, BytesHex, ChecksummedAddress } from '../types/primitives.js';
|
|
2
|
-
import { secp256k1 } from '@noble/curves/secp256k1';
|
|
2
|
+
import { secp256k1 } from '@noble/curves/secp256k1.js';
|
|
3
3
|
import { keccak_256 } from '@noble/hashes/sha3.js';
|
|
4
4
|
import { addressToChecksummedAddress } from './address.js';
|
|
5
|
-
import { bytesToHex } from './bytes.js';
|
|
5
|
+
import { bytesToHex, bytesToHexNo0x, hexToBytes } from './bytes.js';
|
|
6
6
|
|
|
7
7
|
export function sign({ hash, privateKey }: { readonly hash: BytesHex; readonly privateKey: BytesHex }): Bytes65Hex {
|
|
8
|
-
const sig = secp256k1.sign(hash
|
|
8
|
+
const sig = secp256k1.sign(hexToBytes(hash), hexToBytes(privateKey), {
|
|
9
|
+
prehash: false,
|
|
9
10
|
lowS: true,
|
|
10
11
|
extraEntropy: true,
|
|
12
|
+
format: 'recovered',
|
|
11
13
|
});
|
|
12
14
|
|
|
13
|
-
if (sig.
|
|
15
|
+
if (sig.length !== 65) {
|
|
16
|
+
throw new Error('Unexpected signature length');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// @noble/curves v2 'recovered' format: [recovery (1 byte)] || [r (32 bytes)] || [s (32 bytes)]
|
|
20
|
+
const recovery = sig[0];
|
|
21
|
+
if (recovery !== 0 && recovery !== 1) {
|
|
14
22
|
throw new Error('Unexpected signature recovery value');
|
|
15
23
|
}
|
|
16
24
|
|
|
17
|
-
const signatureHex = `0x${sig.
|
|
25
|
+
const signatureHex = `0x${bytesToHexNo0x(sig.subarray(1, 65))}${recovery === 0 ? '1b' : '1c'}` as BytesHex;
|
|
18
26
|
|
|
19
27
|
if (signatureHex.length !== 2 + 130) {
|
|
20
28
|
throw new Error('Unexpected signature length');
|
|
@@ -48,10 +56,10 @@ function _recoverPublicKey(parameters: { readonly hash: BytesHex; readonly signa
|
|
|
48
56
|
throw new Error(`Invalid v value: ${v}`);
|
|
49
57
|
}
|
|
50
58
|
|
|
51
|
-
const sig = secp256k1.Signature.
|
|
59
|
+
const sig = secp256k1.Signature.fromBytes(hexToBytes(compactHex), 'compact').addRecoveryBit(recoveryBit);
|
|
52
60
|
|
|
53
|
-
//
|
|
54
|
-
return sig.recoverPublicKey(hash
|
|
61
|
+
// toBytes(false) → uncompressed encoding: 0x04 || X (32) || Y (32) = 65 bytes.
|
|
62
|
+
return sig.recoverPublicKey(hexToBytes(hash)).toBytes(false);
|
|
55
63
|
}
|
|
56
64
|
|
|
57
65
|
function _keccak256(bytes: Uint8Array): Uint8Array {
|
package/core/base/typedValue.ts
CHANGED
|
@@ -3,8 +3,8 @@ import type {
|
|
|
3
3
|
AddressValueLike,
|
|
4
4
|
BoolValueLike,
|
|
5
5
|
Bytes32Hex,
|
|
6
|
+
RawTypedValue,
|
|
6
7
|
TypedValue,
|
|
7
|
-
TypedValueFrom,
|
|
8
8
|
TypedValueLike,
|
|
9
9
|
TypedValueOfBase,
|
|
10
10
|
Uint128ValueLike,
|
|
@@ -20,7 +20,7 @@ import type {
|
|
|
20
20
|
import { asAddress } from './address.js';
|
|
21
21
|
import { toBoolean } from './boolean.js';
|
|
22
22
|
import { InvalidTypeError } from './errors/InvalidTypeError.js';
|
|
23
|
-
import { asUintForType, normalizeUintForType } from './uint.js';
|
|
23
|
+
import { assertIsUintTypeName, asUintForType, normalizeUintForType } from './uint.js';
|
|
24
24
|
import { bigIntToBytesHex } from './bytes.js';
|
|
25
25
|
|
|
26
26
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -184,15 +184,13 @@ export function assertIsTypedValueArray(
|
|
|
184
184
|
* // Type: TypedValue<'address', ChecksummedAddress>
|
|
185
185
|
* ```
|
|
186
186
|
*/
|
|
187
|
-
export function createTypedValue
|
|
188
|
-
input
|
|
189
|
-
): TypedValue & { readonly type: InputType['type'] } {
|
|
190
|
-
if ((input as unknown) == null || typeof input !== 'object') {
|
|
187
|
+
export function createTypedValue(input: RawTypedValue): TypedValue {
|
|
188
|
+
if ((input as unknown) == null || typeof input !== 'object' || (input as unknown) === undefined) {
|
|
191
189
|
throw new InvalidTypeError(
|
|
192
190
|
{
|
|
193
191
|
subject: 'input',
|
|
194
192
|
type: typeof input,
|
|
195
|
-
expectedType: '
|
|
193
|
+
expectedType: '{ type, value }',
|
|
196
194
|
},
|
|
197
195
|
{},
|
|
198
196
|
);
|
|
@@ -205,27 +203,36 @@ export function createTypedValue<InputType extends TypedValueLike>(
|
|
|
205
203
|
const expectedType = input.type;
|
|
206
204
|
|
|
207
205
|
let validatedValue: ValueType;
|
|
206
|
+
let resolvedType: ValueTypeName;
|
|
208
207
|
|
|
209
208
|
if (expectedType === 'bool') {
|
|
209
|
+
resolvedType = 'bool';
|
|
210
210
|
validatedValue = toBoolean(input.value, {});
|
|
211
|
-
} else if (expectedType === 'address') {
|
|
212
|
-
|
|
211
|
+
} else if (expectedType === 'address' || expectedType === 'uint160') {
|
|
212
|
+
// uint160 and address share a 160-bit width; canonicalize uint160 → address.
|
|
213
|
+
resolvedType = 'address';
|
|
214
|
+
if (typeof input.value === 'string') {
|
|
215
|
+
validatedValue = asAddress(input.value);
|
|
216
|
+
} else {
|
|
217
|
+
const u = asUintForType(input.value, 'uint160', {});
|
|
218
|
+
validatedValue = asAddress(bigIntToBytesHex(BigInt(u), { byteLength: 20 }));
|
|
219
|
+
}
|
|
213
220
|
} else {
|
|
221
|
+
assertIsUintTypeName(expectedType, {});
|
|
222
|
+
if (expectedType === 'uint160') {
|
|
223
|
+
// Unreachable: handled by the address branch above. Re-checked here
|
|
224
|
+
// because `assertIsUintTypeName` widens the type back to include 'uint160'.
|
|
225
|
+
throw new InvalidTypeError({ subject: 'input.type', type: expectedType, expectedType: 'ValueTypeName' }, {});
|
|
226
|
+
}
|
|
227
|
+
resolvedType = expectedType;
|
|
214
228
|
validatedValue = normalizeUintForType(asUintForType(input.value, expectedType, {}), expectedType);
|
|
215
229
|
}
|
|
216
230
|
|
|
217
|
-
const v
|
|
231
|
+
const v = new TypedValueImpl(validatedValue, resolvedType);
|
|
218
232
|
Object.freeze(v);
|
|
219
|
-
return v as TypedValueFrom<InputType>;
|
|
220
|
-
}
|
|
221
233
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
* @internal
|
|
225
|
-
*/
|
|
226
|
-
type TypedValueArrayFrom<T extends readonly TypedValueLike[]> = {
|
|
227
|
-
[K in keyof T]: TypedValueFrom<T[K]>;
|
|
228
|
-
};
|
|
234
|
+
return v as TypedValue;
|
|
235
|
+
}
|
|
229
236
|
|
|
230
237
|
/**
|
|
231
238
|
* Creates an array of validated {@link TypedValueOf}s from a tuple of inputs.
|
|
@@ -239,8 +246,8 @@ type TypedValueArrayFrom<T extends readonly TypedValueLike[]> = {
|
|
|
239
246
|
* // b: BoolValue, n: Uint8Value
|
|
240
247
|
* ```
|
|
241
248
|
*/
|
|
242
|
-
export function createTypedValueArray
|
|
243
|
-
return inputs.map(createTypedValue)
|
|
249
|
+
export function createTypedValueArray(inputs: readonly RawTypedValue[]): TypedValue[] {
|
|
250
|
+
return inputs.map(createTypedValue);
|
|
244
251
|
}
|
|
245
252
|
|
|
246
253
|
/**
|
|
@@ -300,10 +307,10 @@ export class TypedValueArrayBuilder {
|
|
|
300
307
|
return this;
|
|
301
308
|
}
|
|
302
309
|
|
|
303
|
-
#push(typeName: ValueTypeName, value:
|
|
310
|
+
#push(typeName: ValueTypeName, value: TypedValueLike | RawTypedValue['value']): this {
|
|
304
311
|
if (isTypedValue(value, { type: typeName })) {
|
|
305
312
|
this.#arr.push(value);
|
|
306
|
-
} else if (typeof value === 'object'
|
|
313
|
+
} else if (typeof value === 'object') {
|
|
307
314
|
const tv = value as TypedValue;
|
|
308
315
|
if (tv.type !== typeName) {
|
|
309
316
|
throw new InvalidTypeError(
|
|
@@ -315,9 +322,9 @@ export class TypedValueArrayBuilder {
|
|
|
315
322
|
{},
|
|
316
323
|
);
|
|
317
324
|
}
|
|
318
|
-
this.#arr.push(createTypedValue({ type: typeName, value: tv.value }
|
|
325
|
+
this.#arr.push(createTypedValue({ type: typeName, value: tv.value }));
|
|
319
326
|
} else {
|
|
320
|
-
this.#arr.push(createTypedValue({ type: typeName, value }
|
|
327
|
+
this.#arr.push(createTypedValue({ type: typeName, value }));
|
|
321
328
|
}
|
|
322
329
|
return this;
|
|
323
330
|
}
|
package/core/base/uint.ts
CHANGED
|
@@ -444,6 +444,36 @@ export function normalizeUintForType<T extends UintTypeName>(value: Uint, typeNa
|
|
|
444
444
|
}
|
|
445
445
|
}
|
|
446
446
|
|
|
447
|
+
const UINT_TYPE_NAMES = [
|
|
448
|
+
'uint8',
|
|
449
|
+
'uint16',
|
|
450
|
+
'uint32',
|
|
451
|
+
'uint64',
|
|
452
|
+
'uint128',
|
|
453
|
+
'uint160',
|
|
454
|
+
'uint256',
|
|
455
|
+
] as const satisfies readonly UintTypeName[];
|
|
456
|
+
|
|
457
|
+
export function isUintTypeName(value: unknown): value is UintTypeName {
|
|
458
|
+
return typeof value === 'string' && (UINT_TYPE_NAMES as readonly string[]).includes(value);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
export function assertIsUintTypeName(
|
|
462
|
+
value: unknown,
|
|
463
|
+
options: { subject?: string } & ErrorMetadataParams = {},
|
|
464
|
+
): asserts value is UintTypeName {
|
|
465
|
+
if (!isUintTypeName(value)) {
|
|
466
|
+
throw new InvalidTypeError(
|
|
467
|
+
{
|
|
468
|
+
subject: options.subject,
|
|
469
|
+
type: typeof value,
|
|
470
|
+
expectedType: UINT_TYPE_NAMES,
|
|
471
|
+
},
|
|
472
|
+
options,
|
|
473
|
+
);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
447
477
|
////////////////////////////////////////////////////////////////////////////////
|
|
448
478
|
// asUintXX
|
|
449
479
|
////////////////////////////////////////////////////////////////////////////////
|
package/core/base/wasm.ts
CHANGED
|
@@ -52,7 +52,7 @@ export async function isomorphicCompileWasm(wasmUrl: URL): Promise<WebAssembly.M
|
|
|
52
52
|
// ArrayBufferLike (includes SharedArrayBuffer), making it incompatible with
|
|
53
53
|
// BufferSource. At runtime Buffer is always backed by ArrayBuffer, so the
|
|
54
54
|
// cast at WebAssembly.compile is safe and avoids copying.
|
|
55
|
-
bytes =
|
|
55
|
+
bytes = await readFile(fileURLToPath(wasmUrl));
|
|
56
56
|
} else {
|
|
57
57
|
// fetch wasm
|
|
58
58
|
const res = await fetch(wasmUrl);
|
|
@@ -5,9 +5,9 @@ import type {
|
|
|
5
5
|
SignedDelegatedDecryptionPermit,
|
|
6
6
|
} from '../../types/signedDecryptionPermit.js';
|
|
7
7
|
import type {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} from '../../actions/chain/
|
|
8
|
+
SerializeTransportKeyPairParameters,
|
|
9
|
+
SerializeTransportKeyPairReturnType,
|
|
10
|
+
} from '../../actions/chain/serializeTransportKeyPair.js';
|
|
11
11
|
import { assertIsFhevmBaseClient } from '../../runtime/CoreFhevm-p.js';
|
|
12
12
|
import {
|
|
13
13
|
signDecryptionPermit,
|
|
@@ -15,16 +15,16 @@ import {
|
|
|
15
15
|
type SignDelegatedDecryptionPermitParameters,
|
|
16
16
|
} from '../../actions/base/signDecryptionPermit.js';
|
|
17
17
|
import {
|
|
18
|
-
|
|
19
|
-
type
|
|
20
|
-
type
|
|
21
|
-
} from '../../actions/chain/
|
|
18
|
+
parseTransportKeyPair,
|
|
19
|
+
type ParseTransportKeyPairParameters,
|
|
20
|
+
type ParseTransportKeyPairReturnType,
|
|
21
|
+
} from '../../actions/chain/parseTransportKeyPair.js';
|
|
22
22
|
import {
|
|
23
23
|
fetchFheEncryptionKeyBytes,
|
|
24
24
|
type FetchFheEncryptionKeyBytesParameters,
|
|
25
25
|
type FetchFheEncryptionKeyBytesReturnType,
|
|
26
26
|
} from '../../actions/chain/fetchFheEncryptionKeyBytes.js';
|
|
27
|
-
import {
|
|
27
|
+
import { serializeTransportKeyPair } from '../../actions/chain/serializeTransportKeyPair.js';
|
|
28
28
|
import {
|
|
29
29
|
serializeSignedDecryptionPermit,
|
|
30
30
|
type SerializeSignedDecryptionPermitParameters,
|
|
@@ -147,14 +147,14 @@ export type BaseActions = {
|
|
|
147
147
|
*/
|
|
148
148
|
(parameters: SignDelegatedDecryptionPermitParameters): Promise<SignedDelegatedDecryptionPermit>;
|
|
149
149
|
};
|
|
150
|
-
/** Deserializes a previously serialized e2e transport
|
|
151
|
-
readonly
|
|
152
|
-
parameters:
|
|
153
|
-
) => Promise<
|
|
154
|
-
/** Serializes an e2e transport
|
|
155
|
-
readonly
|
|
156
|
-
parameters:
|
|
157
|
-
) =>
|
|
150
|
+
/** Deserializes a previously serialized e2e transport key pair back into a usable key pair. */
|
|
151
|
+
readonly parseTransportKeyPair: (
|
|
152
|
+
parameters: ParseTransportKeyPairParameters,
|
|
153
|
+
) => Promise<ParseTransportKeyPairReturnType>;
|
|
154
|
+
/** Serializes an e2e transport key pair to hex strings for storage. */
|
|
155
|
+
readonly serializeTransportKeyPair: (
|
|
156
|
+
parameters: SerializeTransportKeyPairParameters,
|
|
157
|
+
) => SerializeTransportKeyPairReturnType;
|
|
158
158
|
/** Serializes a signed decryption permit to a plain object for storage or transmission. */
|
|
159
159
|
readonly serializeSignedDecryptionPermit: (
|
|
160
160
|
parameters: SerializeSignedDecryptionPermitParameters,
|
|
@@ -183,8 +183,8 @@ function _baseActions(fhevm: Fhevm<FhevmChain>): BaseActions {
|
|
|
183
183
|
fhevm,
|
|
184
184
|
parameters as SignSelfDecryptionPermitParameters,
|
|
185
185
|
)) as BaseActions['signDecryptionPermit'],
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
parseTransportKeyPair: (parameters) => parseTransportKeyPair(fhevm, parameters),
|
|
187
|
+
serializeTransportKeyPair: (parameters) => serializeTransportKeyPair(fhevm, parameters),
|
|
188
188
|
serializeSignedDecryptionPermit: (parameters) => serializeSignedDecryptionPermit(fhevm, parameters),
|
|
189
189
|
parseSignedDecryptionPermit: (parameters) => parseSignedDecryptionPermit(fhevm, parameters),
|
|
190
190
|
fetchFheEncryptionKeyBytes: (parameters) => fetchFheEncryptionKeyBytes(fhevm, parameters),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Fhevm, FhevmBase, FhevmExtension, OptionalNativeClient } from '../../types/coreFhevmClient.js';
|
|
2
2
|
import type { FhevmRuntime, WithDecrypt } from '../../types/coreFhevmRuntime.js';
|
|
3
3
|
import type { FhevmChain } from '../../types/fhevmChain.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { GenerateTransportKeyPairReturnType } from '../../actions/decrypt/generateTransportKeyPair.js';
|
|
5
5
|
import type { DecryptModuleFactory } from '../../modules/decrypt/types.js';
|
|
6
6
|
import { asFhevmClientWith, assertIsFhevmClientWith } from '../../runtime/CoreFhevm-p.js';
|
|
7
|
-
import {
|
|
7
|
+
import { generateTransportKeyPair } from '../../kms/TransportKeyPair-p.js';
|
|
8
8
|
import {
|
|
9
9
|
decryptValue,
|
|
10
10
|
type DecryptValueParameters,
|
|
@@ -30,7 +30,7 @@ export type DecryptActions = {
|
|
|
30
30
|
readonly decryptValuesFromPairs: (
|
|
31
31
|
parameters: DecryptValuesFromPairsParameters,
|
|
32
32
|
) => Promise<DecryptValuesFromPairsReturnType>;
|
|
33
|
-
readonly
|
|
33
|
+
readonly generateTransportKeyPair: () => Promise<GenerateTransportKeyPairReturnType>;
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
////////////////////////////////////////////////////////////////////////////////
|
|
@@ -42,7 +42,7 @@ function _decryptActions(fhevm: Fhevm<FhevmChain, WithDecrypt>): DecryptActions
|
|
|
42
42
|
decryptValue: (parameters) => decryptValue(fhevm, parameters),
|
|
43
43
|
decryptValues: (parameters) => decryptValues(fhevm, parameters),
|
|
44
44
|
decryptValuesFromPairs: (parameters) => decryptValuesFromPairs(fhevm, parameters),
|
|
45
|
-
|
|
45
|
+
generateTransportKeyPair: () => generateTransportKeyPair(fhevm),
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -6,7 +6,6 @@ import type {
|
|
|
6
6
|
Bytes32,
|
|
7
7
|
Uint64,
|
|
8
8
|
Bytes21Hex,
|
|
9
|
-
Uint8Number,
|
|
10
9
|
BytesHex,
|
|
11
10
|
} from '../types/primitives.js';
|
|
12
11
|
import type { ZkProofLike, ZkProof } from '../types/zkProof-p.js';
|
|
@@ -23,7 +22,7 @@ import {
|
|
|
23
22
|
import { bytes32ToHex, bytesToHexLarge, concatBytes, hexToBytes32, toBytes } from '../base/bytes.js';
|
|
24
23
|
import { assertIsUint64, assertIsUint8, asUint64BigInt, uint64ToBytes32 } from '../base/uint.js';
|
|
25
24
|
import { ZkProofError } from '../errors/ZkProofError.js';
|
|
26
|
-
import { assertIsEncryptionBitsArray, fheTypeIdFromEncryptionBits } from '../handle/FheType.js';
|
|
25
|
+
import { asEncryptionBits, assertIsEncryptionBitsArray, fheTypeIdFromEncryptionBits } from '../handle/FheType.js';
|
|
27
26
|
import { buildHandle } from '../handle/FhevmHandle.js';
|
|
28
27
|
import { keccak_256 } from '@noble/hashes/sha3.js';
|
|
29
28
|
import { InvalidTypeError } from '../base/errors/InvalidTypeError.js';
|
|
@@ -74,7 +73,7 @@ class ZkProofImpl implements ZkProof {
|
|
|
74
73
|
this.#userAddress = parameters.userAddress;
|
|
75
74
|
this.#ciphertextWithZkProof = parameters.ciphertextWithZkProof;
|
|
76
75
|
this.#encryptionBits = Object.freeze([...parameters.encryptionBits]);
|
|
77
|
-
this.#fheTypeIds = Object.freeze(this.#encryptionBits.map(fheTypeIdFromEncryptionBits));
|
|
76
|
+
this.#fheTypeIds = Object.freeze(this.#encryptionBits.map((w) => fheTypeIdFromEncryptionBits(asEncryptionBits(w))));
|
|
78
77
|
this.#extraData = parameters.extraData;
|
|
79
78
|
Object.freeze(this);
|
|
80
79
|
}
|
|
@@ -105,7 +104,7 @@ class ZkProofImpl implements ZkProof {
|
|
|
105
104
|
|
|
106
105
|
/** The ciphertext with Zk proof (guaranteed non-empty). Returns a copy. */
|
|
107
106
|
public get ciphertextWithZkProof(): Bytes {
|
|
108
|
-
return new Uint8Array(this.#ciphertextWithZkProof)
|
|
107
|
+
return new Uint8Array(this.#ciphertextWithZkProof);
|
|
109
108
|
}
|
|
110
109
|
|
|
111
110
|
/** The encryption bit sizes for each encrypted value in the proof. */
|
|
@@ -197,7 +196,7 @@ export function isZkProof(value: unknown): value is ZkProof {
|
|
|
197
196
|
|
|
198
197
|
export function assertIsZkProof(
|
|
199
198
|
value: unknown,
|
|
200
|
-
options: { subject?: string } & ErrorMetadataParams,
|
|
199
|
+
options: { readonly subject?: string; readonly metaMessages?: string[] | undefined } & ErrorMetadataParams,
|
|
201
200
|
): asserts value is ZkProof {
|
|
202
201
|
if (!isZkProof(value)) {
|
|
203
202
|
throw new InvalidTypeError(
|
|
@@ -205,6 +204,7 @@ export function assertIsZkProof(
|
|
|
205
204
|
subject: options.subject,
|
|
206
205
|
type: typeof value,
|
|
207
206
|
expectedType: 'ZkProof',
|
|
207
|
+
metaMessages: options.metaMessages,
|
|
208
208
|
},
|
|
209
209
|
options,
|
|
210
210
|
);
|
|
@@ -379,7 +379,7 @@ function _zkProofToInputHandles(
|
|
|
379
379
|
chainId: args.chainId,
|
|
380
380
|
fheTypeId,
|
|
381
381
|
...(options?.version !== undefined ? { version: options.version } : {}),
|
|
382
|
-
index: i
|
|
382
|
+
index: i,
|
|
383
383
|
}),
|
|
384
384
|
);
|
|
385
385
|
}
|
|
@@ -23,7 +23,3 @@ export function asEncryptedValue(value: unknown): EncryptedValue {
|
|
|
23
23
|
assertIsEncryptedValue(value);
|
|
24
24
|
return value;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
export function toEncryptedValue(value: unknown): EncryptedValue {
|
|
28
|
-
return toFhevmHandle(value).bytes32Hex as unknown as EncryptedValue;
|
|
29
|
-
}
|
package/core/handle/FheType.ts
CHANGED
|
@@ -316,8 +316,6 @@ export function assertIsEncryptionBitsArray(
|
|
|
316
316
|
|
|
317
317
|
/**
|
|
318
318
|
* Converts an encryption bit width to its corresponding FheTypeId.
|
|
319
|
-
* Accepts loose `number` input; validates internally via `isEncryptionBits`.
|
|
320
|
-
* @throws A {@link FheTypeError} If bitwidth is not a valid encryption bit width.
|
|
321
319
|
* @example fheTypeIdFromEncryptionBits(8) // 2 (euint8)
|
|
322
320
|
*/
|
|
323
321
|
export function fheTypeIdFromEncryptionBits(bitwidth: EncryptionBits): FheTypeId {
|
|
@@ -326,8 +324,6 @@ export function fheTypeIdFromEncryptionBits(bitwidth: EncryptionBits): FheTypeId
|
|
|
326
324
|
|
|
327
325
|
/**
|
|
328
326
|
* Converts an FheType to its corresponding FheTypeId.
|
|
329
|
-
* Accepts loose `string` input; validates internally via `isFheType`.
|
|
330
|
-
* @throws A {@link FheTypeError} If name is not a valid FheType.
|
|
331
327
|
* @example fheTypeIdFromName('euint8') // 2
|
|
332
328
|
*/
|
|
333
329
|
export function fheTypeIdFromName(name: FheType): FheTypeId {
|
|
@@ -336,7 +332,6 @@ export function fheTypeIdFromName(name: FheType): FheTypeId {
|
|
|
336
332
|
|
|
337
333
|
/**
|
|
338
334
|
* Converts an FheTypeId to its corresponding FheType.
|
|
339
|
-
* @throws A {@link FheTypeError} If id is not a valid FheTypeId.
|
|
340
335
|
* @example fheTypeNameFromId(2) // 'euint8'
|
|
341
336
|
*/
|
|
342
337
|
export function fheTypeNameFromId(typeId: FheTypeId): FheType {
|
|
@@ -353,7 +348,7 @@ export function fheTypeNameFromTypeName(typeName: ValueTypeName): FheType {
|
|
|
353
348
|
|
|
354
349
|
/**
|
|
355
350
|
* Converts a FheType to its corresponding TypeName.
|
|
356
|
-
* @example
|
|
351
|
+
* @example typeNameFromFheTypeName('euint8') // 'uint8'
|
|
357
352
|
*/
|
|
358
353
|
export function typeNameFromFheTypeName(fheType: FheType): ValueTypeName {
|
|
359
354
|
return fheType.substring(1) as ValueTypeName;
|
|
@@ -365,7 +360,6 @@ export function typeNameFromFheTypeName(fheType: FheType): ValueTypeName {
|
|
|
365
360
|
|
|
366
361
|
/**
|
|
367
362
|
* Returns the Solidity primitive type name for an FheTypeId.
|
|
368
|
-
* Accepts loose `number` input; validates internally via `isFheTypeId`.
|
|
369
363
|
* @example solidityPrimitiveTypeNameFromFheTypeId(0) // 'bool'
|
|
370
364
|
* @example solidityPrimitiveTypeNameFromFheTypeId(7) // 'address'
|
|
371
365
|
* @example solidityPrimitiveTypeNameFromFheTypeId(2) // 'uint256'
|
|
@@ -398,9 +392,9 @@ export function encryptionBitsFromFheTypeId(typeId: FheTypeId): EncryptionBits {
|
|
|
398
392
|
* Returns the encryption bit width for an FheType name.
|
|
399
393
|
* @param name - The FHE type name (e.g., 'ebool', 'euint32', 'eaddress')
|
|
400
394
|
* @returns The encryption bit width (always \>= 2)
|
|
401
|
-
* @example
|
|
402
|
-
* @example
|
|
403
|
-
* @example
|
|
395
|
+
* @example encryptionBitsFromFheType('ebool') // 2
|
|
396
|
+
* @example encryptionBitsFromFheType('euint32') // 32
|
|
397
|
+
* @example encryptionBitsFromFheType('eaddress') // 160
|
|
404
398
|
*/
|
|
405
399
|
export function encryptionBitsFromFheType(name: FheType): EncryptionBits {
|
|
406
400
|
const bw = FheTypeIdToEncryptionBits[FheTypeNameToId[name]];
|
|
@@ -463,11 +457,11 @@ export function bytesToClearValueType<etype extends FheType>(fheType: etype, byt
|
|
|
463
457
|
* and returns it narrowed. No conversion is performed.
|
|
464
458
|
*
|
|
465
459
|
* - `ebool` → `boolean`
|
|
466
|
-
* - `eaddress` → `string` (
|
|
460
|
+
* - `eaddress` → `string` (validated address)
|
|
467
461
|
* - `euint8/16/32` → `number`
|
|
468
462
|
* - `euint64/128/256` → `bigint`
|
|
469
463
|
*
|
|
470
|
-
* @throws If `value` is not the expected JS type
|
|
464
|
+
* @throws If `value` is not the expected JS type.
|
|
471
465
|
*/
|
|
472
466
|
export function asClearValueType<etype extends FheType>(
|
|
473
467
|
fheTypeName: etype,
|
|
@@ -504,14 +498,13 @@ export function asClearValueType<etype extends FheType>(
|
|
|
504
498
|
|
|
505
499
|
/**
|
|
506
500
|
* Converts `value` to the correct JS type for the given `fheTypeName`.
|
|
507
|
-
* Accepts any uint-like input (number, bigint, string) and coerces it.
|
|
508
501
|
*
|
|
509
|
-
* - `ebool` → `boolean`
|
|
502
|
+
* - `ebool` → `boolean` (value must already be a `boolean`; no coercion)
|
|
510
503
|
* - `eaddress` → `string` (validated address)
|
|
511
|
-
* - `euint8/16/32` → coerced to `number` via `Number()`
|
|
512
|
-
* - `euint64/128/256` → coerced to `bigint` via `BigInt()`
|
|
504
|
+
* - `euint8/16/32` → coerced to `number` via `Number()` (accepts `number` or `bigint`)
|
|
505
|
+
* - `euint64/128/256` → coerced to `bigint` via `BigInt()` (accepts `number` or `bigint`)
|
|
513
506
|
*
|
|
514
|
-
* @throws If `value`
|
|
507
|
+
* @throws If `value` is not the expected JS type or cannot be coerced.
|
|
515
508
|
*/
|
|
516
509
|
export function toClearValueType<etype extends FheType>(
|
|
517
510
|
fheTypeName: etype,
|