@inco/js 0.6.1 → 0.6.9
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/dist/cjs/advancedacl/session-key.d.ts +8 -1
- package/dist/cjs/advancedacl/session-key.js +55 -21
- package/dist/cjs/attestedcompute/attested-compute.js +11 -4
- package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +38 -1
- package/dist/cjs/attesteddecrypt/attested-decrypt.js +49 -6
- package/dist/cjs/attesteddecrypt/types.d.ts +6 -1
- package/dist/cjs/attesteddecrypt/types.js +1 -1
- package/dist/cjs/attestedreveal/attested-reveal.js +9 -7
- package/dist/cjs/binary.d.ts +1 -0
- package/dist/cjs/binary.js +6 -2
- package/dist/cjs/encryption/encryption.d.ts +17 -22
- package/dist/cjs/encryption/encryption.js +34 -16
- package/dist/cjs/generated/abis/add-two.d.ts +1 -1
- package/dist/cjs/generated/abis/add-two.js +1 -1
- package/dist/cjs/generated/abis/lightning-preview.d.ts +48 -106
- package/dist/cjs/generated/abis/lightning-preview.js +33 -55
- package/dist/cjs/generated/abis/lightning.d.ts +55 -116
- package/dist/cjs/generated/abis/lightning.js +33 -66
- package/dist/cjs/generated/abis/verifier.d.ts +193 -84
- package/dist/cjs/generated/abis/verifier.js +151 -61
- package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.js +2 -2
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +261 -0
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +47 -0
- package/dist/cjs/generated/es/inco/fhe/v1/types_pb.js +2 -2
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +21 -26
- package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.js +2 -2
- package/dist/cjs/generated/lightning.d.ts +0 -32
- package/dist/cjs/generated/lightning.js +1 -33
- package/dist/cjs/generated/local-node.d.ts +1 -5
- package/dist/cjs/generated/local-node.js +2 -6
- package/dist/cjs/handle.d.ts +16 -0
- package/dist/cjs/handle.js +28 -3
- package/dist/cjs/lite/deployments.d.ts +20 -2
- package/dist/cjs/lite/deployments.js +1 -1
- package/dist/cjs/lite/ecies.d.ts +0 -2
- package/dist/cjs/lite/ecies.js +24 -13
- package/dist/cjs/lite/hadu.d.ts +3 -23
- package/dist/cjs/lite/hadu.js +26 -29
- package/dist/cjs/lite/index.d.ts +1 -1
- package/dist/cjs/lite/index.js +1 -1
- package/dist/cjs/lite/lightning.d.ts +24 -12
- package/dist/cjs/lite/lightning.js +62 -27
- package/dist/cjs/lite/reencrypt.d.ts +5 -7
- package/dist/cjs/lite/reencrypt.js +68 -58
- package/dist/cjs/test/mocks.d.ts +12 -0
- package/dist/cjs/test/mocks.js +27 -0
- package/dist/cjs/viem.d.ts +45 -48
- package/dist/esm/advancedacl/session-key.d.ts +8 -1
- package/dist/esm/advancedacl/session-key.js +58 -24
- package/dist/esm/attestedcompute/attested-compute.js +11 -4
- package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +38 -1
- package/dist/esm/attesteddecrypt/attested-decrypt.js +51 -8
- package/dist/esm/attesteddecrypt/types.d.ts +6 -1
- package/dist/esm/attesteddecrypt/types.js +1 -1
- package/dist/esm/attestedreveal/attested-reveal.js +9 -7
- package/dist/esm/binary.d.ts +1 -0
- package/dist/esm/binary.js +5 -2
- package/dist/esm/encryption/encryption.d.ts +17 -22
- package/dist/esm/encryption/encryption.js +30 -16
- package/dist/esm/generated/abis/add-two.d.ts +1 -1
- package/dist/esm/generated/abis/add-two.js +1 -1
- package/dist/esm/generated/abis/lightning-preview.d.ts +48 -106
- package/dist/esm/generated/abis/lightning-preview.js +33 -55
- package/dist/esm/generated/abis/lightning.d.ts +55 -116
- package/dist/esm/generated/abis/lightning.js +33 -66
- package/dist/esm/generated/abis/verifier.d.ts +193 -84
- package/dist/esm/generated/abis/verifier.js +151 -61
- package/dist/esm/generated/es/cosmos_proto/cosmos_pb.js +2 -2
- package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
- package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +258 -0
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +44 -0
- package/dist/esm/generated/es/inco/fhe/v1/types_pb.js +2 -2
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +20 -25
- package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.js +2 -2
- package/dist/esm/generated/lightning.d.ts +0 -32
- package/dist/esm/generated/lightning.js +1 -33
- package/dist/esm/generated/local-node.d.ts +1 -5
- package/dist/esm/generated/local-node.js +2 -6
- package/dist/esm/handle.d.ts +16 -0
- package/dist/esm/handle.js +27 -3
- package/dist/esm/lite/deployments.d.ts +20 -2
- package/dist/esm/lite/deployments.js +1 -1
- package/dist/esm/lite/ecies.d.ts +0 -2
- package/dist/esm/lite/ecies.js +26 -15
- package/dist/esm/lite/hadu.d.ts +3 -23
- package/dist/esm/lite/hadu.js +28 -30
- package/dist/esm/lite/index.d.ts +1 -1
- package/dist/esm/lite/index.js +1 -1
- package/dist/esm/lite/lightning.d.ts +24 -12
- package/dist/esm/lite/lightning.js +59 -24
- package/dist/esm/lite/reencrypt.d.ts +5 -7
- package/dist/esm/lite/reencrypt.js +67 -58
- package/dist/esm/test/mocks.d.ts +12 -0
- package/dist/esm/test/mocks.js +23 -0
- package/dist/esm/viem.d.ts +45 -48
- package/dist/types/advancedacl/session-key.d.ts +8 -1
- package/dist/types/attesteddecrypt/attested-decrypt.d.ts +38 -1
- package/dist/types/attesteddecrypt/types.d.ts +6 -1
- package/dist/types/binary.d.ts +1 -0
- package/dist/types/encryption/encryption.d.ts +17 -22
- package/dist/types/generated/abis/add-two.d.ts +1 -1
- package/dist/types/generated/abis/lightning-preview.d.ts +48 -106
- package/dist/types/generated/abis/lightning.d.ts +55 -116
- package/dist/types/generated/abis/verifier.d.ts +193 -84
- package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
- package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
- package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
- package/dist/types/generated/lightning.d.ts +0 -32
- package/dist/types/generated/local-node.d.ts +1 -5
- package/dist/types/handle.d.ts +16 -0
- package/dist/types/lite/deployments.d.ts +20 -2
- package/dist/types/lite/ecies.d.ts +0 -2
- package/dist/types/lite/hadu.d.ts +3 -23
- package/dist/types/lite/index.d.ts +1 -1
- package/dist/types/lite/lightning.d.ts +24 -12
- package/dist/types/lite/reencrypt.d.ts +5 -7
- package/dist/types/test/mocks.d.ts +12 -0
- package/dist/types/viem.d.ts +45 -48
- package/package.json +3 -1
|
@@ -3,8 +3,9 @@ import { HexString } from '../binary.js';
|
|
|
3
3
|
import { SupportedChainId } from '../chain.js';
|
|
4
4
|
import { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
|
|
5
5
|
import type { KmsClient } from '../kms/client.js';
|
|
6
|
+
import { Secp256k1Keypair } from '../lite/ecies.js';
|
|
6
7
|
import type { BackoffConfig } from '../retry.js';
|
|
7
|
-
import { DecryptionAttestation } from './types.js';
|
|
8
|
+
import { DecryptionAttestation, EncryptedDecryptionAttestation } from './types.js';
|
|
8
9
|
export declare const ATTESTED_DECRYPT_DOMAIN_NAME = "IncoAttestedDecrypt";
|
|
9
10
|
export declare const ATTESTED_DECRYPT_DOMAIN_VERSION = "0.1.0";
|
|
10
11
|
/**
|
|
@@ -24,6 +25,40 @@ export interface IncoLiteAttestedDecryptorArgs {
|
|
|
24
25
|
/** The chain ID to use */
|
|
25
26
|
chainId: SupportedChainId;
|
|
26
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Decrypt multiple handles in a single attested request.
|
|
30
|
+
* Returns an array of attestations aligned with the response ordering.
|
|
31
|
+
*
|
|
32
|
+
* @param args - The arguments for creating the attested decrypt function
|
|
33
|
+
* @returns A function that can decrypt handles and return an attestation
|
|
34
|
+
* @throws {AttestedDecryptError} If the creation fails
|
|
35
|
+
*/
|
|
36
|
+
export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, reencryptKeypair, kmsConnectRpcEndpointOrClient, }: {
|
|
37
|
+
handles: HexString[];
|
|
38
|
+
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
39
|
+
walletClient: WalletClient<Transport, Chain, Account>;
|
|
40
|
+
chainId: SupportedChainId;
|
|
41
|
+
reencryptPubKey: Uint8Array;
|
|
42
|
+
reencryptKeypair: Secp256k1Keypair;
|
|
43
|
+
kmsConnectRpcEndpointOrClient?: string | KmsClient;
|
|
44
|
+
}): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
45
|
+
/**
|
|
46
|
+
* Decrypt multiple handles in a single attested request.
|
|
47
|
+
* Returns an array of attestations aligned with the response ordering.
|
|
48
|
+
*
|
|
49
|
+
* @param args - The arguments for creating the attested decrypt function
|
|
50
|
+
* @returns A function that can decrypt handles and return an attestation
|
|
51
|
+
* @throws {AttestedDecryptError} If the creation fails
|
|
52
|
+
*/
|
|
53
|
+
export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, kmsConnectRpcEndpointOrClient, }: {
|
|
54
|
+
handles: HexString[];
|
|
55
|
+
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
56
|
+
walletClient: WalletClient<Transport, Chain, Account>;
|
|
57
|
+
chainId: SupportedChainId;
|
|
58
|
+
reencryptPubKey: Uint8Array;
|
|
59
|
+
reencryptKeypair?: never;
|
|
60
|
+
kmsConnectRpcEndpointOrClient?: string | KmsClient;
|
|
61
|
+
}): Promise<Array<EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
27
62
|
/**
|
|
28
63
|
* Decrypt multiple handles in a single attested request.
|
|
29
64
|
* Returns an array of attestations aligned with the response ordering.
|
|
@@ -37,5 +72,7 @@ export declare function attestedDecrypt({ handles, backoffConfig, walletClient,
|
|
|
37
72
|
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
38
73
|
walletClient: WalletClient<Transport, Chain, Account>;
|
|
39
74
|
chainId: SupportedChainId;
|
|
75
|
+
reencryptPubKey?: never;
|
|
76
|
+
reencryptKeypair?: never;
|
|
40
77
|
kmsConnectRpcEndpointOrClient?: string | KmsClient;
|
|
41
78
|
}): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { create } from '@bufbuild/protobuf';
|
|
2
|
-
import { hexToBytes } from 'viem';
|
|
2
|
+
import { bytesToHex, hexToBytes } from 'viem';
|
|
3
3
|
import { bytesToBigInt } from '../binary.js';
|
|
4
4
|
import { getSupportedChain } from '../chain.js';
|
|
5
5
|
import { bigintToPlaintext, encryptionSchemes, } from '../encryption/encryption.js';
|
|
@@ -7,9 +7,10 @@ import { AttestedDecryptRequestSchema, } from '../generated/es/inco/kms/lite/v1/
|
|
|
7
7
|
import { HandleWithProofSchema, } from '../generated/es/inco/kms/lite/v1/types_pb.js';
|
|
8
8
|
import { getHandleType } from '../handle.js';
|
|
9
9
|
import { defaultCovalidatorGrpc, getKmsClient } from '../kms/client.js';
|
|
10
|
+
import { decryptGrpcDecryptResponse } from '../lite/reencrypt.js';
|
|
10
11
|
import { createEIP712Payload } from '../reencryption/eip712.js';
|
|
11
12
|
import { retryWithBackoff } from '../retry.js';
|
|
12
|
-
import { AttestedDecryptError } from './types.js';
|
|
13
|
+
import { AttestedDecryptError, } from './types.js';
|
|
13
14
|
export const ATTESTED_DECRYPT_DOMAIN_NAME = 'IncoAttestedDecrypt';
|
|
14
15
|
export const ATTESTED_DECRYPT_DOMAIN_VERSION = '0.1.0';
|
|
15
16
|
/**
|
|
@@ -30,7 +31,7 @@ export function validateHandle(handle) {
|
|
|
30
31
|
* @returns A function that can decrypt handles and return an attestation
|
|
31
32
|
* @throws {AttestedDecryptError} If the creation fails
|
|
32
33
|
*/
|
|
33
|
-
export async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, kmsConnectRpcEndpointOrClient, }) {
|
|
34
|
+
export async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, reencryptKeypair, kmsConnectRpcEndpointOrClient, }) {
|
|
34
35
|
try {
|
|
35
36
|
handles.forEach(validateHandle);
|
|
36
37
|
const kmsClient = getKmsClient(kmsConnectRpcEndpointOrClient ||
|
|
@@ -39,9 +40,13 @@ export async function attestedDecrypt({ handles, backoffConfig, walletClient, ch
|
|
|
39
40
|
const eip712Payload = createEIP712Payload({
|
|
40
41
|
chainId: BigInt(chainId),
|
|
41
42
|
primaryType: 'AttestedDecryptRequest',
|
|
42
|
-
primaryTypeFields: [
|
|
43
|
+
primaryTypeFields: [
|
|
44
|
+
{ name: 'handles', type: 'bytes32[]' },
|
|
45
|
+
{ name: 'publicKey', type: 'bytes' },
|
|
46
|
+
],
|
|
43
47
|
message: {
|
|
44
48
|
handles: handles,
|
|
49
|
+
publicKey: bytesToHex(reencryptPubKey ? reencryptPubKey : new Uint8Array()),
|
|
45
50
|
},
|
|
46
51
|
domainName: ATTESTED_DECRYPT_DOMAIN_NAME,
|
|
47
52
|
domainVersion: ATTESTED_DECRYPT_DOMAIN_VERSION,
|
|
@@ -63,21 +68,59 @@ export async function attestedDecrypt({ handles, backoffConfig, walletClient, ch
|
|
|
63
68
|
userAddress: walletClient.account.address,
|
|
64
69
|
handlesWithProofs: handlesWithProofs,
|
|
65
70
|
eip712Signature: hexToBytes(eip712Signature),
|
|
71
|
+
reencryptPubKey: reencryptPubKey ? reencryptPubKey : new Uint8Array(),
|
|
66
72
|
});
|
|
67
|
-
|
|
73
|
+
var response = await retryWithBackoff(async () => {
|
|
68
74
|
return await kmsClient.attestedDecrypt(attestedDecryptRequest);
|
|
69
75
|
}, backoffConfig);
|
|
70
76
|
if (!response.decryptionAttestations ||
|
|
71
77
|
response.decryptionAttestations.length === 0) {
|
|
72
78
|
throw new AttestedDecryptError('No decryption attestations in response');
|
|
73
79
|
}
|
|
80
|
+
// If reencryptPubKey is provided without a keypair, we return EncryptedDecryptionAttestation
|
|
81
|
+
if (reencryptPubKey !== undefined) {
|
|
82
|
+
if (reencryptKeypair) {
|
|
83
|
+
response = await decryptGrpcDecryptResponse(response, reencryptKeypair);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return response.decryptionAttestations.map((att) => {
|
|
87
|
+
if (att.value === undefined) {
|
|
88
|
+
throw new AttestedDecryptError('No reencryption in attestation');
|
|
89
|
+
}
|
|
90
|
+
if (att.value.case !== 'reencryption') {
|
|
91
|
+
throw new Error(`Unexpected attestation type: ${att.value.case}, expected 'reencryption'`);
|
|
92
|
+
}
|
|
93
|
+
const reencryption = att.value.value;
|
|
94
|
+
const fheType = reencryption.userCiphertext?.fheType;
|
|
95
|
+
const ct = reencryption.userCiphertext?.ciphertext;
|
|
96
|
+
if (ct == undefined) {
|
|
97
|
+
throw new Error('No ciphertext in reencryption');
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
handle: att.handle,
|
|
101
|
+
encryptedPlaintext: {
|
|
102
|
+
ciphertext: {
|
|
103
|
+
value: bytesToHex(ct),
|
|
104
|
+
scheme: 1, //EciesScheme
|
|
105
|
+
type: fheType,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
covalidatorSignature: att.signature,
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
74
113
|
const results = response.decryptionAttestations.map((att) => {
|
|
75
|
-
if (att.
|
|
114
|
+
if (att.value === undefined) {
|
|
76
115
|
throw new AttestedDecryptError('No plaintext in attestation');
|
|
77
116
|
}
|
|
117
|
+
if (att.value.case !== 'plaintext') {
|
|
118
|
+
throw new Error(`Unexpected attestation type: ${att.value.case}, expected 'plaintext'`);
|
|
119
|
+
}
|
|
120
|
+
const plaintext = att.value.value;
|
|
78
121
|
const h = att.handle;
|
|
79
122
|
const handleType = getHandleType(h);
|
|
80
|
-
const bigIntValue = bytesToBigInt(
|
|
123
|
+
const bigIntValue = bytesToBigInt(plaintext.value);
|
|
81
124
|
return {
|
|
82
125
|
handle: h,
|
|
83
126
|
plaintext: bigintToPlaintext(encryptionSchemes.ecies, handleType, bigIntValue),
|
|
@@ -93,4 +136,4 @@ export async function attestedDecrypt({ handles, backoffConfig, walletClient, ch
|
|
|
93
136
|
throw new AttestedDecryptError('Failed to decrypt handles', error);
|
|
94
137
|
}
|
|
95
138
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGRlY3J5cHQvYXR0ZXN0ZWQtZGVjcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBYSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsaUJBQWlCLEdBR2xCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUVMLDRCQUE0QixHQUc3QixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFDTCxxQkFBcUIsR0FFdEIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUNMLG9CQUFvQixHQUdyQixNQUFNLFlBQVksQ0FBQztBQUVwQixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxxQkFBcUIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFFdkQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBaUI7SUFDOUMsSUFBSSxDQUFDLE1BQU0s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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HexString } from '../binary.js';
|
|
2
|
-
import { EncryptionScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
|
|
2
|
+
import { EncryptionScheme, EncryptResultOf, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
|
|
3
3
|
import type { BackoffConfig } from '../retry.js';
|
|
4
4
|
/**
|
|
5
5
|
* Custom error class for attested decrypt operations.
|
|
@@ -13,6 +13,11 @@ export type DecryptionAttestation<S extends EncryptionScheme, T extends Supporte
|
|
|
13
13
|
plaintext: PlaintextOf<S, T>;
|
|
14
14
|
covalidatorSignature: Uint8Array;
|
|
15
15
|
};
|
|
16
|
+
export type EncryptedDecryptionAttestation<S extends EncryptionScheme, T extends SupportedFheType> = {
|
|
17
|
+
handle: HexString;
|
|
18
|
+
encryptedPlaintext: EncryptResultOf<S, T>;
|
|
19
|
+
covalidatorSignature: Uint8Array;
|
|
20
|
+
};
|
|
16
21
|
export type AttestedDecryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: AttestedDecryptFnArgs<S, T>) => Promise<DecryptionAttestation<S, T>>;
|
|
17
22
|
export type AttestedDecryptFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
|
|
18
23
|
/** The handle to decrypt */
|
|
@@ -9,4 +9,4 @@ export class AttestedDecryptError extends Error {
|
|
|
9
9
|
this.name = 'AttestedDecryptError';
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXR0ZXN0ZWRkZWNyeXB0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLEtBQUs7SUFHM0I7SUFGbEIsWUFDRSxPQUFlLEVBQ0MsS0FBZTtRQUUvQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFGQyxVQUFLLEdBQUwsS0FBSyxDQUFVO1FBRy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { create } from '@bufbuild/protobuf';
|
|
1
2
|
import { bytesToBigInt } from '../binary.js';
|
|
2
3
|
import { getSupportedChain } from '../chain.js';
|
|
3
4
|
import { bigintToPlaintext, encryptionSchemes, } from '../encryption/encryption.js';
|
|
5
|
+
import { AttestedRevealRequestSchema, } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
|
|
4
6
|
import { getHandleType } from '../handle.js';
|
|
5
7
|
import { defaultCovalidatorGrpc, getKmsClient } from '../kms/client.js';
|
|
6
8
|
import { retryWithBackoff } from '../retry.js';
|
|
@@ -29,10 +31,9 @@ export async function attestedReveal({ handles, backoffConfig, chainId, kmsConne
|
|
|
29
31
|
handles.forEach(validateHandle);
|
|
30
32
|
const kmsClient = getKmsClient(kmsConnectRpcEndpointOrClient ||
|
|
31
33
|
defaultCovalidatorGrpc(getSupportedChain(chainId)));
|
|
32
|
-
const attestedRevealRequest = {
|
|
33
|
-
$typeName: 'inco.kms.lite.v1.AttestedRevealRequest',
|
|
34
|
+
const attestedRevealRequest = create(AttestedRevealRequestSchema, {
|
|
34
35
|
handles: handles,
|
|
35
|
-
};
|
|
36
|
+
});
|
|
36
37
|
const response = await retryWithBackoff(async () => {
|
|
37
38
|
return await kmsClient.attestedReveal(attestedRevealRequest);
|
|
38
39
|
}, backoffConfig);
|
|
@@ -40,12 +41,13 @@ export async function attestedReveal({ handles, backoffConfig, chainId, kmsConne
|
|
|
40
41
|
throw new AttestedRevealError(`Expected ${handles.length} decryption attestations in response, got ${response.decryptionAttestations.length}`);
|
|
41
42
|
}
|
|
42
43
|
const results = response.decryptionAttestations.map((att) => {
|
|
43
|
-
if (att.
|
|
44
|
-
throw new AttestedRevealError('No
|
|
44
|
+
if (att.value === undefined) {
|
|
45
|
+
throw new AttestedRevealError('No value in attestation');
|
|
45
46
|
}
|
|
47
|
+
const plaintext = att.value.value;
|
|
46
48
|
const h = att.handle;
|
|
47
49
|
const handleType = getHandleType(h);
|
|
48
|
-
const bigIntValue = bytesToBigInt(
|
|
50
|
+
const bigIntValue = bytesToBigInt(plaintext.value);
|
|
49
51
|
return {
|
|
50
52
|
handle: h,
|
|
51
53
|
plaintext: bigintToPlaintext(encryptionSchemes.ecies, handleType, bigIntValue),
|
|
@@ -61,4 +63,4 @@ export async function attestedReveal({ handles, backoffConfig, chainId, kmsConne
|
|
|
61
63
|
throw new AttestedRevealError('Failed to reveal handles', error);
|
|
62
64
|
}
|
|
63
65
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtcmV2ZWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0dGVzdGVkcmV2ZWFsL2F0dGVzdGVkLXJldmVhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBYSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsaUJBQWlCLEdBRWxCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUVMLDJCQUEyQixHQUU1QixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7Ozs7R0FJRztBQUNILFNBQVMsY0FBYyxDQUFDLE1BQWM7SUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzdELE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0Isb0VBQW9FLENBQ3JFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsRUFDbkMsT0FBTyxFQUNQLGFBQWEsRUFDYixPQUFPLEVBQ1AsNkJBQTZCLEdBTTlCO0lBQ0MsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQzVCLDZCQUE2QjtZQUMzQixzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRCxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBMEIsTUFBTSxDQUN6RCwyQkFBMkIsRUFDM0I7WUFDRSxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUNGLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2pELE9BQU8sTUFBTSxTQUFTLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0QsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWxCLElBQUksUUFBUSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUQsTUFBTSxJQUFJLG1CQUFtQixDQUMzQixZQUFZLE9BQU8sQ0FBQyxNQUFNLDZDQUE2QyxRQUFRLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLENBQ2hILENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQ1gsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzFDLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBa0IsQ0FBQztZQUMvQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBbUIsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2dCQUNULFNBQVMsRUFBRSxpQkFBaUIsQ0FDMUIsaUJBQWlCLENBQUMsS0FBSyxFQUN2QixVQUE4QixFQUM5QixXQUFXLENBQ1o7Z0JBQ0Qsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLFNBQVM7YUFDcEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sSUFBSSxtQkFBbUIsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDO0FBQ0gsQ0FBQyJ9
|
package/dist/esm/binary.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export type HexString = typeof HexString.Type;
|
|
|
5
5
|
export type BytesIsh = string | Uint8Array;
|
|
6
6
|
export declare function bytesToBigInt(byteArray: Uint8Array): bigint;
|
|
7
7
|
export declare function bufferToBigInt(buffer: Buffer): bigint;
|
|
8
|
+
export declare function bigintToBytes(value: bigint): Buffer;
|
|
8
9
|
export declare function bigintToBytes32(value: bigint): Bytes32;
|
|
9
10
|
export declare function padLeft(bs: Uint8Array, n: number): Buffer;
|
|
10
11
|
export declare function bytes32ToBigint(bs: BytesIsh): bigint;
|
package/dist/esm/binary.js
CHANGED
|
@@ -11,11 +11,14 @@ export function bytesToBigInt(byteArray) {
|
|
|
11
11
|
export function bufferToBigInt(buffer) {
|
|
12
12
|
return bytesToBigInt(Uint8Array.from(buffer));
|
|
13
13
|
}
|
|
14
|
+
export function bigintToBytes(value) {
|
|
15
|
+
return Buffer.from(value.toString(16).padStart(64, '0'), 'hex');
|
|
16
|
+
}
|
|
14
17
|
// Convert a bigint to a 32-byte array, left-padded if necessary. Note: it is
|
|
15
18
|
// caller's responsibility to ensure that the bigint is not too large to fit in
|
|
16
19
|
// 32 bytes, or else the result will be truncated.
|
|
17
20
|
export function bigintToBytes32(value) {
|
|
18
|
-
return parse(Bytes32,
|
|
21
|
+
return parse(Bytes32, bigintToBytes(value).toString('hex'));
|
|
19
22
|
}
|
|
20
23
|
export function padLeft(bs, n) {
|
|
21
24
|
if (bs.length > n) {
|
|
@@ -67,4 +70,4 @@ export function parseAddress(address) {
|
|
|
67
70
|
export function parseHex(hex) {
|
|
68
71
|
return parse(HexString, hex);
|
|
69
72
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM3QyxPQUFPLEVBQU8sS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQU1yRSxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQXFCO0lBQ2pELCtHQUErRztJQUMvRyxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU07UUFDdkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWM7SUFDM0MsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQWE7SUFDekMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSxrREFBa0Q7QUFDbEQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFhO0lBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsRUFBYyxFQUFFLENBQVM7SUFDL0MsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsRUFBWTtJQUMxQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxTQUFpQjtJQUNsRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDM0QsS0FBSyxDQUNOLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFhO0lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsRUFBYztJQUN2QyxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFRLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksVUFBVSxDQUFDLENBQzlDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQ3RDLFNBQVMsRUFDVDtJQUNFLE1BQU0sRUFBRSxJQUFJO0lBQ1osTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPO0lBQzNCLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ1osQ0FBQyxZQUFZLFVBQVU7UUFDckIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FDYixLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNkLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQzVELENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBVyxDQUFDLENBQUM7Q0FDNUMsQ0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQ3BDLE1BQU0sQ0FBQyxNQUFNLENBQ1gsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxNQUFNLEtBQUssRUFBRTtJQUNmLHNFQUFzRSxDQUFDLENBQUMsTUFBTSxtQkFBbUIsQ0FDcEcsRUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUN4QixDQUFDO0FBRUYsTUFBTSxVQUFVLFNBQVMsQ0FBQyxDQUFXO0lBQ25DLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBTUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQ1gsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxNQUFNLEtBQUssRUFBRTtJQUNmLGdFQUFnRSxDQUFDLEVBQUUsQ0FDdEUsRUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUN4QixDQUFDO0FBRUYsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFlO0lBQzFDLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXO0lBQ2xDLE9BQU8sS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDIn0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
+
import { ByteArray, Hex } from 'viem';
|
|
2
3
|
import { Bytes32 } from '../binary.js';
|
|
3
|
-
import { InputContext } from '../handle.js';
|
|
4
4
|
export type Encryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedFheType>(plaintext: PlaintextWithContextOf<S, T>) => Promise<EncryptResultOf<S, T>>;
|
|
5
|
-
export type Decryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedFheType>(ciphertext: CiphertextOf<S, T
|
|
5
|
+
export type Decryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedFheType>(ciphertext: CiphertextOf<S, T>) => Promise<PlaintextOf<S, T>>;
|
|
6
6
|
export declare const supportedFheTypes: {
|
|
7
7
|
readonly euint64: 5;
|
|
8
8
|
readonly euint160: 7;
|
|
@@ -14,40 +14,29 @@ export type SupportedFheTypeName = typeof SupportedFheTypeName.Type;
|
|
|
14
14
|
export declare const SupportedFheType: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
15
15
|
export type SupportedFheType = typeof SupportedFheType.Type;
|
|
16
16
|
export declare const encryptionSchemes: {
|
|
17
|
-
readonly tfhe: 0;
|
|
18
17
|
readonly ecies: 1;
|
|
19
|
-
readonly cryptobox: 2;
|
|
20
18
|
};
|
|
21
19
|
export declare function getEncryptionSchemeName(scheme: number): string;
|
|
22
20
|
export type EncryptionSchemes = typeof encryptionSchemes;
|
|
23
21
|
export type EciesScheme = EncryptionSchemes['ecies'];
|
|
24
|
-
export
|
|
25
|
-
export type CryptoboxScheme = EncryptionSchemes['cryptobox'];
|
|
26
|
-
export declare const EncryptionScheme: Schema.Literal<[0, 1, 2]>;
|
|
22
|
+
export declare const EncryptionScheme: Schema.Literal<[1]>;
|
|
27
23
|
export type EncryptionScheme = typeof EncryptionScheme.Type;
|
|
28
24
|
type DistType<P, S extends EncryptionScheme, T extends SupportedFheType> = P extends any ? P & {
|
|
29
25
|
scheme: S;
|
|
30
26
|
type: T;
|
|
31
27
|
} : never;
|
|
32
|
-
export declare const ciphertextEnvelopes: {
|
|
33
|
-
readonly none: 0;
|
|
34
|
-
readonly hadu: 1;
|
|
35
|
-
};
|
|
36
|
-
export declare const CiphertextEnvelope: Schema.SchemaClass<0 | 1, 0 | 1, never>;
|
|
37
28
|
export declare const Ciphertext: Schema.Struct<{
|
|
38
|
-
scheme: Schema.Literal<[
|
|
29
|
+
scheme: Schema.Literal<[1]>;
|
|
39
30
|
type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
40
31
|
value: Schema.TemplateLiteral<`0x${string}`>;
|
|
41
|
-
envelope: Schema.optional<Schema.SchemaClass<0 | 1, 0 | 1, never>>;
|
|
42
32
|
}>;
|
|
43
33
|
export type Ciphertext = typeof Ciphertext.Type;
|
|
44
34
|
export type CiphertextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Ciphertext, S, T>;
|
|
45
35
|
export declare const CiphertextWithContext: Schema.Struct<{
|
|
46
36
|
ciphertext: Schema.Struct<{
|
|
47
|
-
scheme: Schema.Literal<[
|
|
37
|
+
scheme: Schema.Literal<[1]>;
|
|
48
38
|
type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
49
39
|
value: Schema.TemplateLiteral<`0x${string}`>;
|
|
50
|
-
envelope: Schema.optional<Schema.SchemaClass<0 | 1, 0 | 1, never>>;
|
|
51
40
|
}>;
|
|
52
41
|
context: Schema.Struct<{
|
|
53
42
|
hostChainId: typeof Schema.BigInt;
|
|
@@ -62,10 +51,9 @@ export type CiphertextWithContextOf<S extends EncryptionScheme, T extends Suppor
|
|
|
62
51
|
};
|
|
63
52
|
export declare const EncryptResult: Schema.Struct<{
|
|
64
53
|
ciphertext: Schema.Struct<{
|
|
65
|
-
scheme: Schema.Literal<[
|
|
54
|
+
scheme: Schema.Literal<[1]>;
|
|
66
55
|
type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
67
56
|
value: Schema.TemplateLiteral<`0x${string}`>;
|
|
68
|
-
envelope: Schema.optional<Schema.SchemaClass<0 | 1, 0 | 1, never>>;
|
|
69
57
|
}>;
|
|
70
58
|
context: Schema.Struct<{
|
|
71
59
|
hostChainId: typeof Schema.BigInt;
|
|
@@ -81,11 +69,11 @@ export type EncryptResultOf<S extends EncryptionScheme, T extends SupportedFheTy
|
|
|
81
69
|
ciphertext: CiphertextOf<S, T>;
|
|
82
70
|
};
|
|
83
71
|
export declare const Plaintext: Schema.Union<[Schema.Struct<{
|
|
84
|
-
scheme: Schema.Literal<[
|
|
72
|
+
scheme: Schema.Literal<[1]>;
|
|
85
73
|
type: Schema.Literal<[5, 7, 8]>;
|
|
86
74
|
value: typeof Schema.BigInt;
|
|
87
75
|
}>, Schema.Struct<{
|
|
88
|
-
scheme: Schema.Literal<[
|
|
76
|
+
scheme: Schema.Literal<[1]>;
|
|
89
77
|
type: Schema.Literal<[0]>;
|
|
90
78
|
value: typeof Schema.Boolean;
|
|
91
79
|
}>]>;
|
|
@@ -93,11 +81,11 @@ export type Plaintext = typeof Plaintext.Type;
|
|
|
93
81
|
export type PlaintextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Plaintext, S, T>;
|
|
94
82
|
export declare const PlaintextWithContext: Schema.Struct<{
|
|
95
83
|
plaintext: Schema.Union<[Schema.Struct<{
|
|
96
|
-
scheme: Schema.Literal<[
|
|
84
|
+
scheme: Schema.Literal<[1]>;
|
|
97
85
|
type: Schema.Literal<[5, 7, 8]>;
|
|
98
86
|
value: typeof Schema.BigInt;
|
|
99
87
|
}>, Schema.Struct<{
|
|
100
|
-
scheme: Schema.Literal<[
|
|
88
|
+
scheme: Schema.Literal<[1]>;
|
|
101
89
|
type: Schema.Literal<[0]>;
|
|
102
90
|
value: typeof Schema.Boolean;
|
|
103
91
|
}>]>;
|
|
@@ -113,7 +101,14 @@ export type PlaintextWithContextOf<S extends EncryptionScheme, T extends Support
|
|
|
113
101
|
plaintext: PlaintextOf<S, T>;
|
|
114
102
|
};
|
|
115
103
|
export declare function bigintToPlaintext<S extends EncryptionScheme, T extends SupportedFheType>(scheme: S, type: T, bigPt: bigint): PlaintextOf<S, T>;
|
|
104
|
+
export declare function decodeCiphertextInput(input: ByteArray | Hex): {
|
|
105
|
+
handle: Hex;
|
|
106
|
+
ciphertext: Hex;
|
|
107
|
+
};
|
|
108
|
+
export declare function encodeCiphertextInput(handle: Hex, ciphertext: Hex): Hex;
|
|
116
109
|
export declare function plaintextToBigint(plaintext: Plaintext): bigint;
|
|
117
110
|
export declare function plaintextToBytes32(plaintext: Plaintext): Bytes32;
|
|
111
|
+
export declare function plaintextToBytes(plaintext: Plaintext): Buffer;
|
|
118
112
|
export declare function bytes32ToPlaintext(plaintext: Bytes32, scheme: EncryptionScheme, type: SupportedFheType): Plaintext;
|
|
113
|
+
export declare function bytesToPlaintext(plaintext: Uint8Array, scheme: EncryptionScheme, type: SupportedFheType): Plaintext;
|
|
119
114
|
export {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
-
import {
|
|
2
|
+
import { decodeAbiParameters, encodeAbiParameters, } from 'viem';
|
|
3
|
+
import { bigintToBytes, bigintToBytes32, Bytes32, bytesToBigInt, HexString, } from '../binary.js';
|
|
3
4
|
import { handleTypes, InputContext } from '../handle.js';
|
|
5
|
+
// TODO: review need of euint64 and euint160 as supported encrypted data type cause Lib.sol only supports euint256 and ebool
|
|
4
6
|
export const supportedFheTypes = {
|
|
5
7
|
euint64: handleTypes.euint64,
|
|
6
8
|
euint160: handleTypes.euint160,
|
|
@@ -12,33 +14,21 @@ export const SupportedFheTypeName = Schema.Literal(...supportedFheTypeNames);
|
|
|
12
14
|
// TODO: extend to all types
|
|
13
15
|
export const SupportedFheType = Schema.Literal(...Object.values(supportedFheTypes));
|
|
14
16
|
export const encryptionSchemes = {
|
|
15
|
-
tfhe: 0,
|
|
16
17
|
ecies: 1,
|
|
17
|
-
cryptobox: 2,
|
|
18
18
|
};
|
|
19
19
|
export function getEncryptionSchemeName(scheme) {
|
|
20
20
|
switch (scheme) {
|
|
21
|
-
case encryptionSchemes.tfhe:
|
|
22
|
-
return 'TFHE';
|
|
23
21
|
case encryptionSchemes.ecies:
|
|
24
22
|
return 'ECIES';
|
|
25
|
-
case encryptionSchemes.cryptobox:
|
|
26
|
-
return 'NACLCryptoBox';
|
|
27
23
|
default:
|
|
28
24
|
throw new Error(`Unknown encryption scheme: ${scheme}`);
|
|
29
25
|
}
|
|
30
26
|
}
|
|
31
|
-
export const EncryptionScheme = Schema.Literal(encryptionSchemes.
|
|
32
|
-
export const ciphertextEnvelopes = {
|
|
33
|
-
none: 0,
|
|
34
|
-
hadu: 1,
|
|
35
|
-
};
|
|
36
|
-
export const CiphertextEnvelope = Schema.Literal(...Object.values(ciphertextEnvelopes));
|
|
27
|
+
export const EncryptionScheme = Schema.Literal(encryptionSchemes.ecies);
|
|
37
28
|
export const Ciphertext = Schema.Struct({
|
|
38
29
|
scheme: EncryptionScheme,
|
|
39
30
|
type: SupportedFheType,
|
|
40
31
|
value: HexString,
|
|
41
|
-
envelope: Schema.optional(CiphertextEnvelope),
|
|
42
32
|
});
|
|
43
33
|
export const CiphertextWithContext = Schema.Struct({
|
|
44
34
|
ciphertext: Ciphertext,
|
|
@@ -79,8 +69,26 @@ export function bigintToPlaintext(scheme, type, bigPt) {
|
|
|
79
69
|
type,
|
|
80
70
|
value: bigPt !== 0n,
|
|
81
71
|
};
|
|
72
|
+
default:
|
|
73
|
+
console.warn(`bigintToPlaintext: Unsupported Encryption Scheme type ${type}`);
|
|
82
74
|
}
|
|
83
|
-
throw new Error(`Unsupported
|
|
75
|
+
throw new Error(`Unsupported Encryption Scheme type: ${type}`);
|
|
76
|
+
}
|
|
77
|
+
// This defines the schema we use for input encoding compatible with abi.decode
|
|
78
|
+
// on chain:
|
|
79
|
+
// (bytes32 externalHandle, bytes memory ciphertext) = abi.decode(input, (bytes32, bytes));
|
|
80
|
+
// It does not refer to an actual contract or Solidity type's ABI
|
|
81
|
+
// We consider this location the source of truth for the encoding
|
|
82
|
+
const ciphertextInputAbi = [
|
|
83
|
+
{ name: 'handle', type: 'bytes32' },
|
|
84
|
+
{ name: 'ciphertext', type: 'bytes' },
|
|
85
|
+
];
|
|
86
|
+
export function decodeCiphertextInput(input) {
|
|
87
|
+
const [handle, ciphertext] = decodeAbiParameters(ciphertextInputAbi, input);
|
|
88
|
+
return { handle, ciphertext };
|
|
89
|
+
}
|
|
90
|
+
export function encodeCiphertextInput(handle, ciphertext) {
|
|
91
|
+
return encodeAbiParameters(ciphertextInputAbi, [handle, ciphertext]);
|
|
84
92
|
}
|
|
85
93
|
export function plaintextToBigint(plaintext) {
|
|
86
94
|
switch (plaintext.type) {
|
|
@@ -95,7 +103,13 @@ export function plaintextToBigint(plaintext) {
|
|
|
95
103
|
export function plaintextToBytes32(plaintext) {
|
|
96
104
|
return bigintToBytes32(plaintextToBigint(plaintext));
|
|
97
105
|
}
|
|
106
|
+
export function plaintextToBytes(plaintext) {
|
|
107
|
+
return bigintToBytes(plaintextToBigint(plaintext));
|
|
108
|
+
}
|
|
98
109
|
export function bytes32ToPlaintext(plaintext, scheme, type) {
|
|
99
110
|
return bigintToPlaintext(scheme, type, BigInt(plaintext));
|
|
100
111
|
}
|
|
101
|
-
|
|
112
|
+
export function bytesToPlaintext(plaintext, scheme, type) {
|
|
113
|
+
return bigintToPlaintext(scheme, type, BigInt(bytesToBigInt(plaintext)));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmNyeXB0aW9uL2VuY3J5cHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLG1CQUFtQixHQUVwQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxHQUNWLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBZ0J6RCw0SEFBNEg7QUFDNUgsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO0lBQzVCLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUTtJQUM5QixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVE7SUFDOUIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO0NBQ2hCLENBQUM7QUFFWCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3ZDLGlCQUFpQixDQUNvQixDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO0FBSTdFLDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUM1QyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FDcEMsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLEtBQUssRUFBRSxDQUFDO0NBQ0EsQ0FBQztBQUVYLE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxNQUFjO0lBQ3BELFFBQVEsTUFBTSxF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
|
|
@@ -44,7 +44,7 @@ export declare const addTwoAbi: readonly [{
|
|
|
44
44
|
readonly internalType: "bytes";
|
|
45
45
|
readonly type: "bytes";
|
|
46
46
|
}];
|
|
47
|
-
readonly name: "
|
|
47
|
+
readonly name: "addTwoEoa";
|
|
48
48
|
readonly outputs: readonly [{
|
|
49
49
|
readonly name: "result";
|
|
50
50
|
readonly internalType: "euint256";
|
|
@@ -31,7 +31,7 @@ export const addTwoAbi = [
|
|
|
31
31
|
{
|
|
32
32
|
type: 'function',
|
|
33
33
|
inputs: [{ name: 'uint256EInput', internalType: 'bytes', type: 'bytes' }],
|
|
34
|
-
name: '
|
|
34
|
+
name: 'addTwoEoa',
|
|
35
35
|
outputs: [
|
|
36
36
|
{ name: 'result', internalType: 'euint256', type: 'bytes32' },
|
|
37
37
|
{ name: 'resultRevealed', internalType: 'euint256', type: 'bytes32' },
|