@inco/js 0.6.8 → 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.
Files changed (88) hide show
  1. package/dist/cjs/advancedacl/session-key.d.ts +8 -1
  2. package/dist/cjs/advancedacl/session-key.js +55 -21
  3. package/dist/cjs/attestedcompute/attested-compute.js +11 -4
  4. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +38 -1
  5. package/dist/cjs/attesteddecrypt/attested-decrypt.js +49 -6
  6. package/dist/cjs/attesteddecrypt/types.d.ts +6 -1
  7. package/dist/cjs/attesteddecrypt/types.js +1 -1
  8. package/dist/cjs/attestedreveal/attested-reveal.js +9 -7
  9. package/dist/cjs/encryption/encryption.d.ts +8 -10
  10. package/dist/cjs/encryption/encryption.js +6 -6
  11. package/dist/cjs/generated/abis/add-two.d.ts +1 -1
  12. package/dist/cjs/generated/abis/add-two.js +1 -1
  13. package/dist/cjs/generated/abis/lightning-preview.d.ts +40 -0
  14. package/dist/cjs/generated/abis/lightning-preview.js +29 -1
  15. package/dist/cjs/generated/abis/lightning.d.ts +1 -1
  16. package/dist/cjs/generated/abis/lightning.js +1 -1
  17. package/dist/cjs/generated/abis/verifier.d.ts +126 -67
  18. package/dist/cjs/generated/abis/verifier.js +108 -54
  19. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
  20. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +20 -25
  21. package/dist/cjs/generated/lightning.d.ts +0 -32
  22. package/dist/cjs/generated/lightning.js +1 -33
  23. package/dist/cjs/generated/local-node.d.ts +1 -5
  24. package/dist/cjs/generated/local-node.js +2 -6
  25. package/dist/cjs/lite/deployments.d.ts +20 -2
  26. package/dist/cjs/lite/deployments.js +1 -1
  27. package/dist/cjs/lite/index.d.ts +1 -1
  28. package/dist/cjs/lite/index.js +1 -1
  29. package/dist/cjs/lite/lightning.d.ts +24 -12
  30. package/dist/cjs/lite/lightning.js +62 -26
  31. package/dist/cjs/lite/reencrypt.d.ts +5 -7
  32. package/dist/cjs/lite/reencrypt.js +68 -58
  33. package/dist/cjs/test/mocks.d.ts +12 -0
  34. package/dist/cjs/test/mocks.js +27 -0
  35. package/dist/cjs/viem.d.ts +1 -1
  36. package/dist/esm/advancedacl/session-key.d.ts +8 -1
  37. package/dist/esm/advancedacl/session-key.js +58 -24
  38. package/dist/esm/attestedcompute/attested-compute.js +11 -4
  39. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +38 -1
  40. package/dist/esm/attesteddecrypt/attested-decrypt.js +51 -8
  41. package/dist/esm/attesteddecrypt/types.d.ts +6 -1
  42. package/dist/esm/attesteddecrypt/types.js +1 -1
  43. package/dist/esm/attestedreveal/attested-reveal.js +9 -7
  44. package/dist/esm/encryption/encryption.d.ts +8 -10
  45. package/dist/esm/encryption/encryption.js +6 -6
  46. package/dist/esm/generated/abis/add-two.d.ts +1 -1
  47. package/dist/esm/generated/abis/add-two.js +1 -1
  48. package/dist/esm/generated/abis/lightning-preview.d.ts +40 -0
  49. package/dist/esm/generated/abis/lightning-preview.js +29 -1
  50. package/dist/esm/generated/abis/lightning.d.ts +1 -1
  51. package/dist/esm/generated/abis/lightning.js +1 -1
  52. package/dist/esm/generated/abis/verifier.d.ts +126 -67
  53. package/dist/esm/generated/abis/verifier.js +108 -54
  54. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
  55. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +19 -24
  56. package/dist/esm/generated/lightning.d.ts +0 -32
  57. package/dist/esm/generated/lightning.js +1 -33
  58. package/dist/esm/generated/local-node.d.ts +1 -5
  59. package/dist/esm/generated/local-node.js +2 -6
  60. package/dist/esm/lite/deployments.d.ts +20 -2
  61. package/dist/esm/lite/deployments.js +1 -1
  62. package/dist/esm/lite/index.d.ts +1 -1
  63. package/dist/esm/lite/index.js +1 -1
  64. package/dist/esm/lite/lightning.d.ts +24 -12
  65. package/dist/esm/lite/lightning.js +59 -23
  66. package/dist/esm/lite/reencrypt.d.ts +5 -7
  67. package/dist/esm/lite/reencrypt.js +67 -58
  68. package/dist/esm/test/mocks.d.ts +12 -0
  69. package/dist/esm/test/mocks.js +23 -0
  70. package/dist/esm/viem.d.ts +1 -1
  71. package/dist/types/advancedacl/session-key.d.ts +8 -1
  72. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +38 -1
  73. package/dist/types/attesteddecrypt/types.d.ts +6 -1
  74. package/dist/types/encryption/encryption.d.ts +8 -10
  75. package/dist/types/generated/abis/add-two.d.ts +1 -1
  76. package/dist/types/generated/abis/lightning-preview.d.ts +40 -0
  77. package/dist/types/generated/abis/lightning.d.ts +1 -1
  78. package/dist/types/generated/abis/verifier.d.ts +126 -67
  79. package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
  80. package/dist/types/generated/lightning.d.ts +0 -32
  81. package/dist/types/generated/local-node.d.ts +1 -5
  82. package/dist/types/lite/deployments.d.ts +20 -2
  83. package/dist/types/lite/index.d.ts +1 -1
  84. package/dist/types/lite/lightning.d.ts +24 -12
  85. package/dist/types/lite/reencrypt.d.ts +5 -7
  86. package/dist/types/test/mocks.d.ts +12 -0
  87. package/dist/types/viem.d.ts +1 -1
  88. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import { create } from '@bufbuild/protobuf';
2
- import { encodeAbiParameters, getContract, hexToBytes, toFunctionSelector, } from 'viem';
2
+ import { bytesToHex, encodeAbiParameters, getContract, hexToBytes, toFunctionSelector, } from 'viem';
3
3
  import { privateKeyToAccount } from 'viem/accounts';
4
4
  import { AttestedDecryptError, } from '../attesteddecrypt/index.js';
5
5
  import { getSupportedChain } from '../chain.js';
@@ -8,11 +8,12 @@ import { abiHelperAbi, advancedAccessControlAbi, } from '../generated/abis/light
8
8
  import { incoLightningAbi, sessionVerifierAbi, } from '../generated/abis/lightning.js';
9
9
  import { incoVerifierAbi } from '../generated/abis/verifier.js';
10
10
  import { bigintToBytes32, bytesToBigInt, getHandleType, } from '../index.js';
11
- import { ATTESTED_COMPUTE_DOMAIN_NAME, ATTESTED_COMPUTE_DOMAIN_VERSION, ATTESTED_DECRYPT_DOMAIN_NAME, ATTESTED_DECRYPT_DOMAIN_VERSION, decryptGrpcResponse, defaultCovalidatorGrpc, getKmsClient, reencryptEIP712, } from '../lite/index.js';
11
+ import { ATTESTED_COMPUTE_DOMAIN_NAME, ATTESTED_COMPUTE_DOMAIN_VERSION, ATTESTED_DECRYPT_DOMAIN_NAME, ATTESTED_DECRYPT_DOMAIN_VERSION, decryptGrpcResponse, defaultCovalidatorGrpc, getKmsClient, } from '../lite/index.js';
12
12
  import { createEIP712Payload, } from '../reencryption/index.js';
13
13
  import { retryWithBackoff } from '../retry.js';
14
- import { AttestedComputeRequestSchema, AttestedDecryptRequestSchema, ReencryptRequestSchema, } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
14
+ import { AttestedComputeRequestSchema, AttestedDecryptRequestSchema, } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
15
15
  import { AllowanceProofSchema, AllowanceVoucherSchema, HandleWithProofSchema, IncoLiteAdvancedACLProofSchema, } from '../generated/es/inco/kms/lite/v1/types_pb.js';
16
+ import { decryptGrpcDecryptResponse } from '../lite/reencrypt.js';
16
17
  // Given a sharer's wallet client, an incoLite contract address, and a
17
18
  // (verifyingContract, callFunction, sharerArgData) tuple, this function
18
19
  // creates an AllowanceVoucher.
@@ -76,23 +77,40 @@ export async function grantSessionKey({ chainId, incoLiteAddress, sessionVerifie
76
77
  voucherSignature,
77
78
  };
78
79
  }
79
- // The sessionKeyReencryptor function is a reencryptor that uses a session key
80
- // to reencrypt data.
80
+ /**
81
+ * The sessionKeyReencryptor function is a reencryptor that uses a session key
82
+ * to reencrypt data.
83
+ *
84
+ */
81
85
  export async function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }) {
82
86
  const kmsClient = getKmsClient(kmsConnectRpcEndpointOrClient ||
83
87
  defaultCovalidatorGrpc(getSupportedChain(chainId)));
84
88
  const requesterAccount = privateKeyToAccount(`0x${ephemeralKeypair.kp.getPrivate('hex')}`);
85
89
  const ephemeralPubKey = ephemeralKeypair.encodePublicKey();
86
- // Sign the EIP712 attesting that the requester has access to the private key
87
- // corresponding to the ephemeral public key.
88
- const eip712Payload = reencryptEIP712(chainId, ephemeralPubKey);
89
- // Since the account is an ephemeral keypair stored in memory (not in Metamask),
90
- // this step will NOT prompt the user with a pop-up.
91
- const eip712Signature = await requesterAccount.signTypedData(eip712Payload);
92
90
  return async function reencrypt({ handle, }) {
93
- const reencryptRequest = create(ReencryptRequestSchema, {
91
+ const handles = [handle];
92
+ // Sign the EIP712 attesting that the requester has access to the private key
93
+ // corresponding to the ephemeral public key.
94
+ const eip712Payload = createEIP712Payload({
95
+ chainId,
96
+ primaryType: 'AttestedDecryptRequest',
97
+ primaryTypeFields: [
98
+ { name: 'handles', type: 'bytes32[]' },
99
+ { name: 'publicKey', type: 'bytes' },
100
+ ],
101
+ message: {
102
+ handles: handles,
103
+ publicKey: bytesToHex(ephemeralPubKey),
104
+ },
105
+ domainName: ATTESTED_DECRYPT_DOMAIN_NAME,
106
+ domainVersion: ATTESTED_DECRYPT_DOMAIN_VERSION,
107
+ });
108
+ // Since the account is an ephemeral keypair stored in memory (not in Metamask),
109
+ // this step will NOT prompt the user with a pop-up.
110
+ const eip712Signature = await requesterAccount.signTypedData(eip712Payload);
111
+ const reencryptRequest = create(AttestedDecryptRequestSchema, {
94
112
  userAddress: requesterAccount.address,
95
- ephemeralPubKey,
113
+ reencryptPubKey: ephemeralPubKey,
96
114
  eip712Signature: hexToBytes(eip712Signature),
97
115
  handlesWithProofs: [
98
116
  create(HandleWithProofSchema, {
@@ -118,7 +136,7 @@ export async function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrCl
118
136
  }),
119
137
  ],
120
138
  });
121
- const response = await kmsClient.reencrypt(reencryptRequest);
139
+ const response = await kmsClient.attestedDecrypt(reencryptRequest);
122
140
  return decryptGrpcResponse(response, ephemeralKeypair, handle);
123
141
  };
124
142
  }
@@ -189,10 +207,14 @@ export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, b
189
207
  throw new Error('Failed to get decryption attestation from attested compute');
190
208
  }
191
209
  const decryptionAttestation = response.decryptionAttestation;
192
- if (decryptionAttestation.plaintext === undefined) {
193
- throw new Error('No plaintext in compute response');
210
+ if (decryptionAttestation.value === undefined) {
211
+ throw new Error('No value in compute response');
212
+ }
213
+ if (decryptionAttestation.value.case !== 'plaintext') {
214
+ throw new Error(`Unexpected attestation type: ${decryptionAttestation.value.case}, expected 'plaintext'`);
194
215
  }
195
- const bigIntValue = bytesToBigInt(decryptionAttestation.plaintext);
216
+ const plaintext = decryptionAttestation.value.value;
217
+ const bigIntValue = bytesToBigInt(plaintext.value);
196
218
  return {
197
219
  handle: decryptionAttestation.handle,
198
220
  plaintext: bigintToPlaintext(encryptionSchemes.ecies, getHandleType(lhsHandle), bigIntValue),
@@ -201,7 +223,7 @@ export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, b
201
223
  }
202
224
  // The sessionKeyAttestedDecrypt function is a decryptor that uses a session key
203
225
  // to decrypt data.
204
- export async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, }) {
226
+ export async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, reencryptPubKey, reencryptKeypair, }) {
205
227
  const kmsClient = getKmsClient(kmsConnectRpcEndpointOrClient ||
206
228
  defaultCovalidatorGrpc(getSupportedChain(chainId)));
207
229
  const requesterAccount = privateKeyToAccount(`0x${ephemeralKeypair.kp.getPrivate('hex')}`);
@@ -210,9 +232,13 @@ export async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpoint
210
232
  const eip712Payload = createEIP712Payload({
211
233
  chainId: BigInt(chainId),
212
234
  primaryType: 'AttestedDecryptRequest',
213
- primaryTypeFields: [{ name: 'handles', type: 'bytes32[]' }],
235
+ primaryTypeFields: [
236
+ { name: 'handles', type: 'bytes32[]' },
237
+ { name: 'publicKey', type: 'bytes' },
238
+ ],
214
239
  message: {
215
240
  handles: handles,
241
+ publicKey: bytesToHex(reencryptPubKey ? reencryptPubKey : Uint8Array.from([])),
216
242
  },
217
243
  domainName: ATTESTED_DECRYPT_DOMAIN_NAME,
218
244
  domainVersion: ATTESTED_DECRYPT_DOMAIN_VERSION,
@@ -247,21 +273,29 @@ export async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpoint
247
273
  userAddress: requesterAccount.address,
248
274
  handlesWithProofs: handlesWithProofs,
249
275
  eip712Signature: hexToBytes(eip712Signature),
276
+ reencryptPubKey: reencryptPubKey ? reencryptPubKey : Uint8Array.from([]),
250
277
  });
251
- const response = await retryWithBackoff(async () => {
278
+ var response = await retryWithBackoff(async () => {
252
279
  return await kmsClient.attestedDecrypt(attestedDecryptRequest);
253
280
  }, backoffConfig);
254
281
  if (!response.decryptionAttestations ||
255
282
  response.decryptionAttestations.length === 0) {
256
283
  throw new AttestedDecryptError('No decryption attestations in response');
257
284
  }
285
+ if (reencryptKeypair) {
286
+ response = await decryptGrpcDecryptResponse(response, reencryptKeypair);
287
+ }
258
288
  const results = response.decryptionAttestations.map((att) => {
259
- if (att.plaintext === undefined) {
260
- throw new AttestedDecryptError('No plaintext in attestation');
289
+ if (att.value === undefined) {
290
+ throw new AttestedDecryptError('No value in attestation');
291
+ }
292
+ if (att.value.case !== 'plaintext') {
293
+ throw new Error(`Unexpected attestation type: ${att.value.case}, expected 'plaintext'`);
261
294
  }
295
+ const plaintext = att.value.value;
262
296
  const h = att.handle;
263
297
  const handleType = getHandleType(h);
264
- const bigIntValue = bytesToBigInt(att.plaintext);
298
+ const bigIntValue = bytesToBigInt(plaintext.value);
265
299
  return {
266
300
  handle: h,
267
301
  plaintext: bigintToPlaintext(encryptionSchemes.ecies, handleType, bigIntValue),
@@ -333,4 +367,4 @@ async function getIncoVerifier(incoLiteAddress, walletClient) {
333
367
  client: walletClient,
334
368
  });
335
369
  }
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVDLE9BQU8sRUFJTCxtQkFBbUIsRUFDbkIsV0FBVyxFQUVYLFVBQVUsRUFDVixrQkFBa0IsR0FHbkIsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUNMLG9CQUFvQixHQUVyQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixpQkFBaUIsR0FFbEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsWUFBWSxFQUNaLHdCQUF3QixHQUN6QixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGFBQWEsR0FFZCxNQUFNLGFBQWEsQ0FBQztBQVNyQixPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsWUFBWSxFQUNaLGVBQWUsR0FDaEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFpQixnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUk5RCxPQUFPLEVBQ0wsNEJB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
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVDLE9BQU8sRUFHTCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFdBQVcsRUFFWCxVQUFVLEVBQ1Ysa0JBQWtCLEdBR25CLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFDTCxvQkFBb0IsR0FFckIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsaUJBQWlCLEdBRWxCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUNMLFlBQVksRUFDWix3QkFBd0IsR0FDekIsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixhQUFhLEdBRWQsTUFBTSxhQUFhLENBQUM7QUFRckIsT0FBTyxFQUNMLDRCQUE0QixFQUM1QiwrQkFBK0IsRUFDL0IsNEJBQTRCLEVBQzVCLCtCQUErQixFQUMvQixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLFlBQVksR0FDYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxtQkFBbUIsR0FFcEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSTlELE9BQU8sRUFDTCw0QkFB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
@@ -66,15 +66,22 @@ export async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConf
66
66
  return await kmsClient.attestedCompute(attestedComputeRequest);
67
67
  }, backoffConfig);
68
68
  const decryptionAttestation = response.decryptionAttestation;
69
- if (decryptionAttestation?.plaintext === undefined) {
70
- throw new AttestedComputeError('No plaintext in compute response');
69
+ if (decryptionAttestation === undefined) {
70
+ throw new AttestedComputeError('No decryption attestation in response');
71
71
  }
72
+ if (decryptionAttestation.value === undefined) {
73
+ throw new AttestedComputeError('No value in compute response');
74
+ }
75
+ if (decryptionAttestation.value.case !== 'plaintext') {
76
+ throw new AttestedComputeError(`Unexpected attestation type: ${decryptionAttestation.value.case}, expected 'plaintext'`);
77
+ }
78
+ const plaintext = decryptionAttestation.value.value;
72
79
  const computeResultHandle = response.decryptionAttestation?.handle;
73
80
  if (!computeResultHandle) {
74
81
  throw new AttestedComputeError('No compute result handle in response');
75
82
  }
76
83
  const handleType = getHandleType(computeResultHandle);
77
- const bigIntValue = bytesToBigInt(decryptionAttestation.plaintext);
84
+ const bigIntValue = bytesToBigInt(plaintext.value);
78
85
  return {
79
86
  handle: computeResultHandle,
80
87
  plaintext: bigintToPlaintext(encryptionSchemes.ecies, handleType, bigIntValue),
@@ -88,4 +95,4 @@ export async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConf
88
95
  throw new AttestedComputeError('Failed to perform attested compute', error);
89
96
  }
90
97
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGNvbXB1dGUvYXR0ZXN0ZWQtY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFvQixNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsaUJBQWlCLEVBRWpCLGlCQUFpQixHQUVsQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFFTCw0QkFBNEIsR0FDN0IsTUFBTSxvREFBb0QsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFxQixNQUFNLFlBQVksQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxxQkFBcUIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFjdkQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZSxDQUE2QixFQUNoRSxTQUFTLEVBQ1QsRUFBRSxFQUNGLFlBQVksRUFDWixhQUFhLEVBQ2IsWUFBWSxFQUNaLDZCQUE2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
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGNvbXB1dGUvYXR0ZXN0ZWQtY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFvQixNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsaUJBQWlCLEVBRWpCLGlCQUFpQixHQUVsQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFFTCw0QkFBNEIsR0FFN0IsTUFBTSxvREFBb0QsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFxQixNQUFNLFlBQVksQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxxQkFBcUIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFjdkQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZSxDQUE2QixFQUNoRSxTQUFTLEVBQ1QsRUFBRSxFQUNGLFlBQVksRUFDWixhQUFhLEVBQ2IsWUFBWSxFQUNaLDZCQUE2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
@@ -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: [{ name: 'handles', type: 'bytes32[]' }],
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
- const response = await retryWithBackoff(async () => {
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.plaintext === undefined) {
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(att.plaintext);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGRlY3J5cHQvYXR0ZXN0ZWQtZGVjcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFhLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixpQkFBaUIsR0FFbEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBRUwsNEJBQTRCLEdBQzdCLE1BQU0sb0RBQW9ELENBQUM7QUFDNUQsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLDhDQUE4QyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQXlCLE1BQU0sWUFBWSxDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLHFCQUFxQixDQUFDO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLE9BQU8sQ0FBQztBQUV2RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFpQjtJQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMs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
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXR0ZXN0ZWRkZWNyeXB0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLEtBQUs7SUFHM0I7SUFGbEIsWUFDRSxPQUFlLEVBQ0MsS0FBZTtRQUUvQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFGQyxVQUFLLEdBQUwsS0FBSyxDQUFVO1FBRy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
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.plaintext === undefined) {
44
- throw new AttestedRevealError('No plaintext in attestation');
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(att.plaintext);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtcmV2ZWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0dGVzdGVkcmV2ZWFsL2F0dGVzdGVkLXJldmVhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFhLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxhQUFhLENBQUM7QUFDbEUsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixpQkFBaUIsR0FFbEIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxTQUFTLGNBQWMsQ0FBQyxNQUFjO0lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksbUJBQW1CLENBQzNCLG9FQUFvRSxDQUNyRSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLEVBQ25DLE9BQU8sRUFDUCxhQUFhLEVBQ2IsT0FBTyxFQUNQLDZCQUE2QixHQU05QjtJQUNDLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUM1Qiw2QkFBNkI7WUFDM0Isc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDckQsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQTBCO1lBQ25ELFNBQVMsRUFBRSx3Q0FBd0M7WUFDbkQsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDakQsT0FBTyxNQUFNLFNBQVMsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvRCxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFbEIsSUFBSSxRQUFRLENBQUMsc0JBQXNCLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5RCxNQUFNLElBQUksbUJBQW1CLENBQzNCLFlBQVksT0FBTyxDQUFDLE1BQU0sNkNBQTZDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsQ0FDaEgsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FDWCxRQUFRLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLElBQUksbUJBQW1CLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQW1CLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakQsT0FBTztnQkFDTCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxTQUFTLEVBQUUsaUJBQWlCLENBQzFCLGlCQUFpQixDQUFDLEtBQUssRUFDdkIsVUFBOEIsRUFDOUIsV0FBVyxDQUNaO2dCQUNELG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxTQUFTO2FBQ3BDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksbUJBQW1CLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLElBQUksbUJBQW1CLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztBQUNILENBQUMifQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtcmV2ZWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0dGVzdGVkcmV2ZWFsL2F0dGVzdGVkLXJldmVhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUMsT0FBTyxFQUFFLGFBQWEsRUFBYSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsaUJBQWlCLEdBRWxCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUVMLDJCQUEyQixHQUU1QixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7Ozs7R0FJRztBQUNILFNBQVMsY0FBYyxDQUFDLE1BQWM7SUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzdELE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0Isb0VBQW9FLENBQ3JFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsRUFDbkMsT0FBTyxFQUNQLGFBQWEsRUFDYixPQUFPLEVBQ1AsNkJBQTZCLEdBTTlCO0lBQ0MsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQzVCLDZCQUE2QjtZQUMzQixzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRCxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBMEIsTUFBTSxDQUN6RCwyQkFBMkIsRUFDM0I7WUFDRSxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUNGLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2pELE9BQU8sTUFBTSxTQUFTLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0QsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWxCLElBQUksUUFBUSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUQsTUFBTSxJQUFJLG1CQUFtQixDQUMzQixZQUFZLE9BQU8sQ0FBQyxNQUFNLDZDQUE2QyxRQUFRLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLENBQ2hILENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQ1gsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzFDLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxJQUFJLG1CQUFtQixDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBa0IsQ0FBQztZQUMvQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBbUIsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2dCQUNULFNBQVMsRUFBRSxpQkFBaUIsQ0FDMUIsaUJBQWlCLENBQUMsS0FBSyxFQUN2QixVQUE4QixFQUM5QixXQUFXLENBQ1o7Z0JBQ0Qsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLFNBQVM7YUFDcEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sSUFBSSxtQkFBbUIsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -14,21 +14,19 @@ 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
18
  };
20
19
  export declare function getEncryptionSchemeName(scheme: number): string;
21
20
  export type EncryptionSchemes = typeof encryptionSchemes;
22
21
  export type EciesScheme = EncryptionSchemes['ecies'];
23
- export type TfheScheme = EncryptionSchemes['tfhe'];
24
- export declare const EncryptionScheme: Schema.Literal<[0, 1]>;
22
+ export declare const EncryptionScheme: Schema.Literal<[1]>;
25
23
  export type EncryptionScheme = typeof EncryptionScheme.Type;
26
24
  type DistType<P, S extends EncryptionScheme, T extends SupportedFheType> = P extends any ? P & {
27
25
  scheme: S;
28
26
  type: T;
29
27
  } : never;
30
28
  export declare const Ciphertext: Schema.Struct<{
31
- scheme: Schema.Literal<[0, 1]>;
29
+ scheme: Schema.Literal<[1]>;
32
30
  type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
33
31
  value: Schema.TemplateLiteral<`0x${string}`>;
34
32
  }>;
@@ -36,7 +34,7 @@ export type Ciphertext = typeof Ciphertext.Type;
36
34
  export type CiphertextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Ciphertext, S, T>;
37
35
  export declare const CiphertextWithContext: Schema.Struct<{
38
36
  ciphertext: Schema.Struct<{
39
- scheme: Schema.Literal<[0, 1]>;
37
+ scheme: Schema.Literal<[1]>;
40
38
  type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
41
39
  value: Schema.TemplateLiteral<`0x${string}`>;
42
40
  }>;
@@ -53,7 +51,7 @@ export type CiphertextWithContextOf<S extends EncryptionScheme, T extends Suppor
53
51
  };
54
52
  export declare const EncryptResult: Schema.Struct<{
55
53
  ciphertext: Schema.Struct<{
56
- scheme: Schema.Literal<[0, 1]>;
54
+ scheme: Schema.Literal<[1]>;
57
55
  type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
58
56
  value: Schema.TemplateLiteral<`0x${string}`>;
59
57
  }>;
@@ -71,11 +69,11 @@ export type EncryptResultOf<S extends EncryptionScheme, T extends SupportedFheTy
71
69
  ciphertext: CiphertextOf<S, T>;
72
70
  };
73
71
  export declare const Plaintext: Schema.Union<[Schema.Struct<{
74
- scheme: Schema.Literal<[0, 1]>;
72
+ scheme: Schema.Literal<[1]>;
75
73
  type: Schema.Literal<[5, 7, 8]>;
76
74
  value: typeof Schema.BigInt;
77
75
  }>, Schema.Struct<{
78
- scheme: Schema.Literal<[0, 1]>;
76
+ scheme: Schema.Literal<[1]>;
79
77
  type: Schema.Literal<[0]>;
80
78
  value: typeof Schema.Boolean;
81
79
  }>]>;
@@ -83,11 +81,11 @@ export type Plaintext = typeof Plaintext.Type;
83
81
  export type PlaintextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Plaintext, S, T>;
84
82
  export declare const PlaintextWithContext: Schema.Struct<{
85
83
  plaintext: Schema.Union<[Schema.Struct<{
86
- scheme: Schema.Literal<[0, 1]>;
84
+ scheme: Schema.Literal<[1]>;
87
85
  type: Schema.Literal<[5, 7, 8]>;
88
86
  value: typeof Schema.BigInt;
89
87
  }>, Schema.Struct<{
90
- scheme: Schema.Literal<[0, 1]>;
88
+ scheme: Schema.Literal<[1]>;
91
89
  type: Schema.Literal<[0]>;
92
90
  value: typeof Schema.Boolean;
93
91
  }>]>;