@inco/js 0.8.0-devnet-5 → 0.9.0-devnet-test-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/cjs/advancedacl/session-key.d.ts +11 -10
  2. package/dist/cjs/advancedacl/session-key.js +7 -11
  3. package/dist/cjs/attestedcompute/attested-compute.d.ts +6 -6
  4. package/dist/cjs/attestedcompute/attested-compute.js +2 -2
  5. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +8 -8
  6. package/dist/cjs/attesteddecrypt/attested-decrypt.js +6 -6
  7. package/dist/cjs/encryption/encryption.d.ts +10 -10
  8. package/dist/cjs/encryption/encryption.js +5 -5
  9. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +270 -7
  10. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +98 -12
  11. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +0 -6
  12. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +2 -8
  13. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +213 -0
  14. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +36 -11
  15. package/dist/cjs/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +3 -3
  16. package/dist/cjs/kms/quorumClient.d.ts +5 -4
  17. package/dist/cjs/kms/quorumClient.js +33 -30
  18. package/dist/cjs/lite/index.d.ts +1 -1
  19. package/dist/cjs/lite/index.js +15 -2
  20. package/dist/cjs/lite/lightning.d.ts +33 -24
  21. package/dist/cjs/lite/lightning.js +67 -38
  22. package/dist/cjs/lite/xwing.d.ts +123 -0
  23. package/dist/cjs/lite/xwing.js +275 -0
  24. package/dist/cjs/reencryption/types.d.ts +2 -2
  25. package/dist/esm/advancedacl/session-key.d.ts +11 -10
  26. package/dist/esm/advancedacl/session-key.js +7 -11
  27. package/dist/esm/attestedcompute/attested-compute.d.ts +6 -6
  28. package/dist/esm/attestedcompute/attested-compute.js +2 -2
  29. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +8 -8
  30. package/dist/esm/attesteddecrypt/attested-decrypt.js +4 -4
  31. package/dist/esm/encryption/encryption.d.ts +10 -10
  32. package/dist/esm/encryption/encryption.js +5 -5
  33. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +270 -7
  34. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +97 -11
  35. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +0 -6
  36. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +2 -8
  37. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +213 -0
  38. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +35 -10
  39. package/dist/esm/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +3 -3
  40. package/dist/esm/kms/quorumClient.d.ts +5 -4
  41. package/dist/esm/kms/quorumClient.js +33 -30
  42. package/dist/esm/lite/index.d.ts +1 -1
  43. package/dist/esm/lite/index.js +2 -2
  44. package/dist/esm/lite/lightning.d.ts +33 -24
  45. package/dist/esm/lite/lightning.js +67 -38
  46. package/dist/esm/lite/xwing.d.ts +123 -0
  47. package/dist/esm/lite/xwing.js +263 -0
  48. package/dist/esm/reencryption/types.d.ts +2 -2
  49. package/dist/types/advancedacl/session-key.d.ts +11 -10
  50. package/dist/types/attestedcompute/attested-compute.d.ts +6 -6
  51. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +8 -8
  52. package/dist/types/encryption/encryption.d.ts +10 -10
  53. package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +270 -7
  54. package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +0 -6
  55. package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +213 -0
  56. package/dist/types/generated/es/inco/sealingfetcher/v1/sealingfetcher_pb.d.ts +3 -3
  57. package/dist/types/kms/quorumClient.d.ts +5 -4
  58. package/dist/types/lite/index.d.ts +1 -1
  59. package/dist/types/lite/lightning.d.ts +33 -24
  60. package/dist/types/lite/xwing.d.ts +123 -0
  61. package/dist/types/reencryption/types.d.ts +2 -2
  62. package/package.json +6 -6
  63. package/dist/cjs/lite/ecies.d.ts +0 -26
  64. package/dist/cjs/lite/ecies.js +0 -146
  65. package/dist/esm/lite/ecies.d.ts +0 -26
  66. package/dist/esm/lite/ecies.js +0 -134
  67. package/dist/types/lite/ecies.d.ts +0 -26
@@ -0,0 +1,263 @@
1
+ import { Chacha20Poly1305 } from '@hpke/chacha20poly1305';
2
+ import { CipherSuite, HkdfSha256 } from '@hpke/core';
3
+ import { XWing } from '@hpke/hybridkem-x-wing';
4
+ import { asBytes32, bytesFromHexString, bytesToHex } from '../binary.js';
5
+ import { bytesToPlaintext, decodeCiphertextInput, encodeCiphertextInput, encryptionSchemes, getEncryptionSchemeName, SupportedFheType, } from '../encryption/encryption.js';
6
+ import { computeHandle, computePrehandle } from '../handle.js';
7
+ import { parse } from '../schema.js';
8
+ import { decodeInput, encodeInput } from './hadu.js';
9
+ // Get X-Wing key sizes from the library
10
+ const xwingKem = new XWing();
11
+ /**
12
+ * X-Wing public key size in bytes.
13
+ * Combining ML-KEM-768 (1184 bytes) and X25519 (32 bytes).
14
+ */
15
+ export const XWING_PUBLIC_KEY_SIZE = xwingKem.publicKeySize;
16
+ // Test network private key for testing
17
+ export const TEST_NETWORK_SEED_KEY = '0x0000000000000000000000000000000000000000000000000000000000000000';
18
+ // Test network X-Wing public key (1216 bytes)
19
+ // Generated from Go with seed of all zeros using HPKE layer: hpke.KEM_XWING.Scheme().DeriveKeyPair(seed)
20
+ // This matches the key used in covalidator's GetXwingPrivateKeyForTesting() via DeriveXwingPrivateKey
21
+ export const TEST_NETWORK_XWING_PUBKEY = '0xca882388911c7c762aafc20debd63e845b3bed28c9d5262cdea7771fb31bd660a1ae7b395a9a7df3d12c7b118e8eda5057572c1ba05cd9b635edf33dabca4cac7291e0848f19c20e5beb850c3818f3543d49b3a5c729cb86a28fda539775d04feda112fe0c81d138aaf623aea7d507a4e826e890105db6065a44aba76a10d771c00d1b33f4ac51869806aae18eada68f19047024542d64a7aa1c91a5e1aa49d93613b5224b415bcc7aa166e4b55033438d20c641f9664fdb1689b53208181463e3d1325d46b30f07c5945b7e3fa1418bf833d975258461b294664eaf60795964924a280729c10a37fc6e967440bdd55d4ca53596286383481291152365303d44517cef369c00933b0b30368a230353e729c031075e8388673678a56b3ba84a165b28096ee9bd684483e1844258b451c365c41fa534152a3b64120041450128e960c7d6437d717ee266bdde7aaeec225ed93b958d188e97407349f1382976ca47d761ecc59a6f394487eb015c083abb490584677240eb47f838c838568a496119378b8bb81484610a50792b5d9c9939db188e7d0249d3cb918c436f111a2898849b286b0743a22c57464c709c5eaceac1ba493adca3328c0b14b5e38d3aea74e328b622b17e7181c35ad11c2103bdb7f2b209d93dcbc4ab61a06bc37139e6d2b7a06c5b7e9267bef3a8918a706f793271a5acc2574532da79e5a10cf074b998147a3c43586a411a513bba0d11cc19a36c83b19277f28022c88b120abfdba7076a8263e05336e3245aef7033eb3c762b5bbfa5791ac960398b649d5cbb652ddc6b2398143a0861ab3b410b696328879c099098adf819fbf7ac170030e86675e7f45c22ac9e1cf52c3102487bb0b91ab592afdc69c6e3a9b71876b86260b6c736b8291098f1130d3b763525cbad540ce2d042eacb6ed43b7bcba898f712c412f26066e09945f44ec7026c8ef959831abc10719d2017a12a41728b41c02371a5f5756ebc79406be708ea41bbd21563c874a0b791a3b4e4224a609967004f065c5ab4f3b4c61cb35df70573269da53179c3701fc5205f61974426f9b794c1b5826494b70842b6920c17752029369264dc8590b898b85c9d89a258e1f46c1b0490efd17c485cb51687cea272041e90b8e629521d3c5e3fa7518161bad7a159295b63cc6c0077897b53d47db8bc0ecb820f550705b65715a1a1094d04854f56acd26aa0baa10cb8447fad6211f53105796a42882328e6852e8de821c283b51eaab9bc95c4dc53615626049d63b1f9a457193805276b1905b0ab39353b5cf91fdd6023d4d816aef9cce4a3cfb3d12190172df221ae61d427563a098cc60e3dc9997ef54959180be5dc64a911157db6be3a01be2ee343caab33b8729abf0c50c674758c511291941fceac646232920907c2e88b9ec10211161729c797643a553a6ae5c4b7483c04e3263bd291e311c609071348b7c3310aa97d6b8318e0a4afe8399fa22f951049a9bb8860f7c69a333d3cc1aaf0129ab560713bf29eb3a01f9a276c78e54e3a3648b2447c80242b271b11406866389426d8b59796540d6b5702092ab21ee217c075cfc0c17ef826ce9ea29b9e61617457a5b1aaa23a58615dc53c59183beb36ea19498c21820b70ab47adeb678f1c52bf8768b3597b608ea1a8a15cd62e8a29bec4a1ac248ef9f02de0144bca06025f95a42bd6c8eaaaaaa2366328561d';
22
+ /**
23
+ * Create HPKE cipher suite with X-Wing KEM, HKDF-SHA256, and ChaCha20-Poly1305 AEAD.
24
+ * This configuration provides post-quantum security with hybrid classical/PQ encryption.
25
+ * Workaround: Manually calls setup on the XWing KEM due to a bug in @hpke/hybridkem-x-wing@0.6.1
26
+ * where encap() calls getRandomValues before calling _setup().
27
+ */
28
+ async function createXwingSuite() {
29
+ const kem = new XWing();
30
+ // Workaround: Call setup to initialize _api before encap() is called
31
+ // @ts-expect-error _setup is private but must be called to initialize crypto API
32
+ await kem._setup();
33
+ return new CipherSuite({
34
+ kem,
35
+ kdf: new HkdfSha256(),
36
+ aead: new Chacha20Poly1305(),
37
+ });
38
+ }
39
+ /**
40
+ * Derive X-Wing keypair from a 32-byte seed (deterministic).
41
+ * This matches the Go implementation in covalidator/encoding/xwing.go
42
+ *
43
+ * @param seed - 32-byte seed for deterministic key derivation
44
+ * @returns X-Wing keypair with cached public key bytes
45
+ */
46
+ export async function deriveXwingKeypairFromSeed(seed) {
47
+ if (seed.length !== 32) {
48
+ throw new Error(`Invalid X-Wing seed length: expected 32 bytes, got ${seed.length}`);
49
+ }
50
+ const suite = await createXwingSuite();
51
+ // Create a fresh ArrayBuffer copy to avoid SharedArrayBuffer issues
52
+ const seedCopy = new Uint8Array(seed);
53
+ const keyPair = await suite.kem.deriveKeyPair(seedCopy.buffer);
54
+ const publicKeyBytes = new Uint8Array(await suite.kem.serializePublicKey(keyPair.publicKey));
55
+ return {
56
+ scheme: encryptionSchemes.xwing,
57
+ publicKey: keyPair.publicKey,
58
+ privateKey: keyPair.privateKey,
59
+ encodePublicKey() {
60
+ return publicKeyBytes;
61
+ },
62
+ };
63
+ }
64
+ /**
65
+ * Generate a random X-Wing keypair.
66
+ *
67
+ * @returns X-Wing keypair with cached public key bytes
68
+ */
69
+ export async function generateXwingKeypair() {
70
+ const suite = await createXwingSuite();
71
+ const keyPair = await suite.kem.generateKeyPair();
72
+ const publicKeyBytes = new Uint8Array(await suite.kem.serializePublicKey(keyPair.publicKey));
73
+ return {
74
+ scheme: encryptionSchemes.xwing,
75
+ publicKey: keyPair.publicKey,
76
+ privateKey: keyPair.privateKey,
77
+ encodePublicKey() {
78
+ return publicKeyBytes;
79
+ },
80
+ };
81
+ }
82
+ /**
83
+ * Decode X-Wing public key from bytes.
84
+ *
85
+ * @param pubKeyBytes - 1216-byte X-Wing public key
86
+ * @returns CryptoKey for encryption operations
87
+ */
88
+ export async function decodeXwingPublicKey(pubKeyBytes) {
89
+ const suite = await createXwingSuite();
90
+ if (pubKeyBytes.length !== suite.kem.publicKeySize) {
91
+ throw new Error(`Invalid X-Wing public key length: expected ${XWING_PUBLIC_KEY_SIZE} bytes, got ${pubKeyBytes.length}`);
92
+ }
93
+ // Create a fresh ArrayBuffer copy to avoid SharedArrayBuffer issues
94
+ const pubKeyCopy = new Uint8Array(pubKeyBytes);
95
+ return await suite.kem.deserializePublicKey(pubKeyCopy.buffer);
96
+ }
97
+ /**
98
+ * Decode X-Wing private key from 32-byte seed.
99
+ * Alias for deriveXwingKeypairFromSeed for consistency with Go API.
100
+ *
101
+ * @param seed - 32-byte seed
102
+ * @returns X-Wing keypair
103
+ */
104
+ export async function decodeXwingPrivateKey(seed) {
105
+ return await deriveXwingKeypairFromSeed(seed);
106
+ }
107
+ /**
108
+ * Encode X-Wing public key to bytes.
109
+ *
110
+ * @param publicKey - CryptoKey containing X-Wing public key
111
+ * @returns 1216-byte serialized public key
112
+ */
113
+ export async function encodeXwingPublicKey(publicKey) {
114
+ const suite = await createXwingSuite();
115
+ return new Uint8Array(await suite.kem.serializePublicKey(publicKey));
116
+ }
117
+ /**
118
+ * Encrypt using X-Wing HPKE (RFC 9180) with ChaCha20-Poly1305 AEAD.
119
+ *
120
+ * Output format: encappedKey (1184 bytes) || ciphertext (variable length)
121
+ *
122
+ * @param pubKeyA - Recipient's public key
123
+ * @param msg - Message to encrypt
124
+ * @param aad - Additional authenticated data (default: empty)
125
+ * @param info - Context info for key derivation (default: empty)
126
+ * @returns Encrypted data (encappedKey || ciphertext)
127
+ */
128
+ export async function encrypt(pubKeyA, msg, aad = new Uint8Array(0), info = new Uint8Array(0)) {
129
+ const suite = await createXwingSuite();
130
+ // Create fresh ArrayBuffer copies to avoid SharedArrayBuffer issues
131
+ const infoCopy = new Uint8Array(info);
132
+ const sender = await suite.createSenderContext({
133
+ recipientPublicKey: pubKeyA,
134
+ info: infoCopy.buffer,
135
+ });
136
+ const msgCopy = new Uint8Array(msg);
137
+ const aadCopy = new Uint8Array(aad);
138
+ const ciphertext = await sender.seal(msgCopy.buffer, aadCopy.buffer);
139
+ const encappedKey = sender.enc;
140
+ // Concatenate encappedKey and ciphertext
141
+ const result = new Uint8Array(encappedKey.byteLength + ciphertext.byteLength);
142
+ result.set(new Uint8Array(encappedKey), 0);
143
+ result.set(new Uint8Array(ciphertext), encappedKey.byteLength);
144
+ return result;
145
+ }
146
+ /**
147
+ * Decrypt using X-Wing HPKE (RFC 9180) with ChaCha20-Poly1305 AEAD.
148
+ *
149
+ * Input format: encappedKey (1184 bytes) || ciphertext (variable length)
150
+ *
151
+ * @param privKeyA - Recipient's private key
152
+ * @param encryptedData - Encrypted data (encappedKey || ciphertext)
153
+ * @param aad - Additional authenticated data (default: empty)
154
+ * @param info - Context info for key derivation (default: empty)
155
+ * @returns Decrypted plaintext
156
+ */
157
+ export async function decrypt(privKeyA, encryptedData, aad = new Uint8Array(0), info = new Uint8Array(0)) {
158
+ const suite = await createXwingSuite();
159
+ // X-Wing encapsulated key size from the KEM
160
+ const encappedKeySize = suite.kem.encSize;
161
+ if (encryptedData.length < encappedKeySize) {
162
+ throw new Error(`Invalid X-Wing encrypted data length: expected at least ${encappedKeySize} bytes, got ${encryptedData.length}`);
163
+ }
164
+ // Split encappedKey and ciphertext
165
+ const encappedKey = encryptedData.slice(0, encappedKeySize);
166
+ const ciphertext = encryptedData.slice(encappedKeySize);
167
+ // Create fresh ArrayBuffer copies to avoid SharedArrayBuffer issues
168
+ const infoCopy = new Uint8Array(info);
169
+ const encCopy = new Uint8Array(encappedKey);
170
+ const recipient = await suite.createRecipientContext({
171
+ recipientKey: privKeyA.privateKey,
172
+ enc: encCopy.buffer,
173
+ info: infoCopy.buffer,
174
+ });
175
+ const ctCopy = new Uint8Array(ciphertext);
176
+ const aadCopy = new Uint8Array(aad);
177
+ const plaintext = await recipient.open(ctCopy.buffer, aadCopy.buffer);
178
+ return new Uint8Array(plaintext);
179
+ }
180
+ /**
181
+ * Create an X-Wing encryptor for encrypting inputs.
182
+ * Follows the same pattern as ECIES encryptor in ecies.ts.
183
+ *
184
+ * The encryptor:
185
+ * 1. Encodes the plaintext with its context (HADU encoding)
186
+ * 2. Encrypts using X-Wing HPKE
187
+ * 3. Computes prehandle and handle for tracking
188
+ * 4. Returns the encrypted ciphertext with metadata
189
+ *
190
+ * @param args - X-Wing encryptor arguments (recipient's public key)
191
+ * @returns Encryptor function
192
+ */
193
+ export function getXwingEncryptor({ pubKeyA, }) {
194
+ return async ({ plaintext, context, }) => {
195
+ if (plaintext.scheme !== encryptionSchemes.xwing) {
196
+ throw new Error(`Plaintext with scheme ${getEncryptionSchemeName(plaintext.scheme)} cannot be encrypted with X-Wing`);
197
+ }
198
+ // Encode plaintext with context (HADU encoding)
199
+ const inputCiphertextPayloadBytes = Buffer.from(encodeInput({ plaintext, context }));
200
+ // Encrypt with X-Wing HPKE (empty AAD and info)
201
+ const aad = new Uint8Array(0);
202
+ const info = new Uint8Array(0);
203
+ const ct = await encrypt(pubKeyA, inputCiphertextPayloadBytes, aad, info);
204
+ // Compute prehandle and handle for ciphertext tracking
205
+ const prehandle = computePrehandle({
206
+ ciphertext: ct,
207
+ handleType: plaintext.type,
208
+ indexHandle: 0,
209
+ handleVersion: 0,
210
+ });
211
+ const handle = computeHandle({
212
+ prehandle,
213
+ context: context,
214
+ });
215
+ return {
216
+ prehandle: asBytes32(prehandle),
217
+ handle: asBytes32(handle),
218
+ context,
219
+ ciphertext: {
220
+ scheme: encryptionSchemes.xwing,
221
+ type: plaintext.type,
222
+ // Prepend handle as checksum for early mismatch detection
223
+ value: encodeCiphertextInput(context.version, bytesToHex(handle), bytesToHex(ct)),
224
+ },
225
+ };
226
+ };
227
+ }
228
+ /**
229
+ * Create an X-Wing decryptor for decrypting inputs.
230
+ * Follows the same pattern as ECIES decryptor in ecies.ts.
231
+ *
232
+ * The decryptor:
233
+ * 1. Removes the prepended handle from the ciphertext
234
+ * 2. Decrypts using X-Wing HPKE
235
+ * 3. Decodes the HADU-encoded payload
236
+ * 4. Extracts and returns the plaintext
237
+ *
238
+ * @param args - X-Wing decryptor arguments (recipient's private key)
239
+ * @returns Decryptor function
240
+ */
241
+ export function getXwingDecryptor({ privKeyA, }) {
242
+ return async ({ scheme, value, }) => {
243
+ if (scheme !== encryptionSchemes.xwing) {
244
+ throw new Error(`Ciphertext with scheme ${getEncryptionSchemeName(scheme)} cannot be decrypted with X-Wing`);
245
+ }
246
+ // Remove the prepended handle
247
+ const { ciphertext } = decodeCiphertextInput(value);
248
+ // Decrypt with X-Wing HPKE (empty AAD and info)
249
+ const aad = new Uint8Array(0);
250
+ const info = new Uint8Array(0);
251
+ const ptBuf = await decrypt(privKeyA, bytesFromHexString(ciphertext), aad, info);
252
+ // Decode HADU-encoded payload
253
+ const payload = decodeInput(ptBuf);
254
+ const computable = payload.value;
255
+ if (computable.case !== 'scalar') {
256
+ throw new Error(`Decrypted plaintext is not a scalar, cannot currently be decrypted. This feature may be implemented on request.`);
257
+ }
258
+ // Extract and return plaintext
259
+ const typ = parse(SupportedFheType, computable.value.type);
260
+ return bytesToPlaintext(computable.value.value, encryptionSchemes.xwing, typ);
261
+ };
262
+ }
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHdpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGl0ZS94d2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixxQkFBcUIsRUFFckIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUdqQix1QkFBdUIsRUFHdkIsZ0JBQWdCLEdBRWpCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJELHdDQUF3QztBQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTdCOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7QUFFNUQsdUNBQXVDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUNoQyxvRUFBb0UsQ0FBQztBQUV2RSw4Q0FBOEM7QUFDOUMseUdBQXlHO0FBQ3pHLHNHQUFzRztBQUN0RyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FDcEMsbzRFQUFvNEUsQ0FBQztBQWV2NEU7Ozs7O0dBS0c7QUFDSCxLQUFLLFVBQVUsZ0JBQWdCO0lBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FB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
@@ -2,7 +2,7 @@ import { Address } from 'viem';
2
2
  import { HexString } from '../binary.js';
3
3
  import { CiphertextOf, EncryptionScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
4
4
  import { Handle } from '../handle.js';
5
- import type { Secp256k1Keypair } from '../lite/ecies.js';
5
+ import type { XwingKeypair } from '../lite/xwing.js';
6
6
  import type { BackoffConfig } from '../retry.js';
7
7
  export type Reencryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: ReencryptFnArgs<S, T>, backoffConfig?: Partial<BackoffConfig>) => Promise<PlaintextOf<S, T>>;
8
8
  export interface ReencryptorArgs {
@@ -12,7 +12,7 @@ export type ReencryptFnArgs<S extends EncryptionScheme, T extends SupportedFheTy
12
12
  handle: Handle;
13
13
  ciphertext?: CiphertextOf<S, T>;
14
14
  };
15
- export type SupportedEphemeralKeypairs = Secp256k1Keypair;
15
+ export type SupportedEphemeralKeypairs = XwingKeypair;
16
16
  export interface PubKeyEncodable {
17
17
  encodePublicKey(): Uint8Array;
18
18
  }
@@ -1,9 +1,10 @@
1
1
  import { type Account, type Address, type Chain, type Hex, PublicClient, type Transport, type WalletClient } from 'viem';
2
+ import type { PrivateKeyAccount } from 'viem/accounts';
2
3
  import { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/index.js';
3
4
  import { SupportedChainId } from '../chain.js';
4
- import { type EciesScheme, SupportedFheType } from '../encryption/encryption.js';
5
+ import { EncryptionScheme, SupportedFheType } from '../encryption/encryption.js';
5
6
  import { HexString } from '../index.js';
6
- import type { Secp256k1Keypair } from '../lite/index.js';
7
+ import type { XwingKeypair } from '../lite/index.js';
7
8
  import { BackoffConfig } from '../retry.js';
8
9
  import type { AllowanceVoucher, AllowanceVoucherWithSig } from './types.js';
9
10
  import { AttestedComputeOP } from '../attestedcompute/types.js';
@@ -33,7 +34,7 @@ export declare function grantSessionKeyCustomVerifier({ chainId, incoLiteAddress
33
34
  export declare function updateActiveVouchersSessionNonce(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>): Promise<`0x${string}`>;
34
35
  export interface SessionKeyAttestedComputeArgs {
35
36
  chainId: SupportedChainId;
36
- ephemeralKeypair: Secp256k1Keypair;
37
+ ephemeralAccount: PrivateKeyAccount;
37
38
  kmsQuorumClient: KmsQuorumClient;
38
39
  allowanceVoucherWithSig: AllowanceVoucherWithSig;
39
40
  lhsHandle: HexString;
@@ -44,19 +45,19 @@ export interface SessionKeyAttestedComputeArgs {
44
45
  ethClient?: PublicClient<Transport, Chain> | WalletClient<Transport, Chain, Account> | undefined;
45
46
  executorAddress?: HexString | undefined;
46
47
  reencryptPubKey?: Uint8Array | undefined;
47
- reencryptKeypair?: Secp256k1Keypair | undefined;
48
+ reencryptKeypair?: XwingKeypair | undefined;
48
49
  }
49
- export declare function sessionKeyAttestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralKeypair, allowanceVoucherWithSig, requesterArgData, ethClient, executorAddress, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedComputeArgs): Promise<DecryptionAttestation<EciesScheme, SupportedFheType> | EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>;
50
+ export declare function sessionKeyAttestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, ethClient, executorAddress, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedComputeArgs): Promise<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
50
51
  export interface SessionKeyAttestedDecryptArgs {
51
52
  chainId: SupportedChainId;
52
- ephemeralKeypair: Secp256k1Keypair;
53
+ ephemeralAccount: PrivateKeyAccount;
53
54
  kmsQuorumClient: KmsQuorumClient;
54
55
  allowanceVoucherWithSig: AllowanceVoucherWithSig;
55
56
  handles: HexString[];
56
57
  requesterArgData?: Hex | undefined;
57
58
  backoffConfig?: Partial<BackoffConfig> | undefined;
58
59
  reencryptPubKey?: Uint8Array | undefined;
59
- reencryptKeypair?: Secp256k1Keypair | undefined;
60
+ reencryptKeypair?: XwingKeypair | undefined;
60
61
  ethClient?: PublicClient<Transport, Chain> | WalletClient<Transport, Chain, Account> | undefined;
61
62
  executorAddress?: HexString | undefined;
62
63
  }
@@ -69,7 +70,7 @@ export interface SessionKeyAttestedDecryptArgs {
69
70
  * chainId,
70
71
  * kmsConnectRpcEndpointOrClient: covalidatorUrl,
71
72
  * allowanceVoucherWithSig: voucher,
72
- * ephemeralKeypair,
73
+ * ephemeralAccount,
73
74
  * handles,
74
75
  * });
75
76
  * console.log(attestations[0].plaintext.value);
@@ -81,7 +82,7 @@ export interface SessionKeyAttestedDecryptArgs {
81
82
  * chainId,
82
83
  * kmsConnectRpcEndpointOrClient: covalidatorUrl,
83
84
  * allowanceVoucherWithSig: voucher,
84
- * ephemeralKeypair,
85
+ * ephemeralAccount,
85
86
  * handles,
86
87
  * reencryptPubKey: recipientPubKey,
87
88
  * });
@@ -90,4 +91,4 @@ export interface SessionKeyAttestedDecryptArgs {
90
91
  * );
91
92
  * ```
92
93
  */
93
- export declare function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralKeypair, allowanceVoucherWithSig, requesterArgData, backoffConfig, reencryptPubKey, reencryptKeypair, ethClient, executorAddress, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType> | EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>>;
94
+ export declare function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, backoffConfig, reencryptPubKey, reencryptKeypair, ethClient, executorAddress, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
@@ -2,9 +2,9 @@ import type { Account, Chain, Transport, WalletClient } from 'viem';
2
2
  import { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/types.js';
3
3
  import { HexString } from '../binary.js';
4
4
  import { SupportedChainId } from '../chain.js';
5
- import type { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
5
+ import type { EncryptionScheme, SupportedFheType } from '../encryption/encryption.js';
6
6
  import { KmsQuorumClient } from '../kms/quorumClient.js';
7
- import type { Secp256k1Keypair } from '../lite/ecies.js';
7
+ import type { XwingKeypair } from '../lite/xwing.js';
8
8
  import type { BackoffConfig } from '../retry.js';
9
9
  import { AttestedComputeOP } from './types.js';
10
10
  export declare const ATTESTED_COMPUTE_DOMAIN_NAME = "IncoAttestedCompute";
@@ -38,8 +38,8 @@ export declare function attestedCompute<T extends SupportedFheType>({ executorAd
38
38
  kmsQuorumClient: KmsQuorumClient;
39
39
  chainId: SupportedChainId;
40
40
  reencryptPubKey: Uint8Array;
41
- reencryptKeypair: Secp256k1Keypair;
42
- }): Promise<DecryptionAttestation<EciesScheme, T>>;
41
+ reencryptKeypair: XwingKeypair;
42
+ }): Promise<DecryptionAttestation<EncryptionScheme, T>>;
43
43
  export declare function attestedCompute<T extends SupportedFheType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, reencryptPubKey, }: {
44
44
  executorAddress: HexString;
45
45
  lhsHandle: HexString;
@@ -51,7 +51,7 @@ export declare function attestedCompute<T extends SupportedFheType>({ executorAd
51
51
  chainId: SupportedChainId;
52
52
  reencryptPubKey: Uint8Array;
53
53
  reencryptKeypair?: never;
54
- }): Promise<EncryptedDecryptionAttestation<EciesScheme, T>>;
54
+ }): Promise<EncryptedDecryptionAttestation<EncryptionScheme, T>>;
55
55
  export declare function attestedCompute<T extends SupportedFheType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, }: {
56
56
  executorAddress: HexString;
57
57
  lhsHandle: HexString;
@@ -63,4 +63,4 @@ export declare function attestedCompute<T extends SupportedFheType>({ executorAd
63
63
  chainId: SupportedChainId;
64
64
  reencryptPubKey?: never;
65
65
  reencryptKeypair?: never;
66
- }): Promise<DecryptionAttestation<EciesScheme, T>>;
66
+ }): Promise<DecryptionAttestation<EncryptionScheme, T>>;
@@ -1,9 +1,9 @@
1
1
  import type { Account, Chain, PublicClient, Transport, WalletClient } from 'viem';
2
2
  import { type HexString } from '../binary.js';
3
3
  import { type SupportedChainId } from '../chain.js';
4
- import { type EciesScheme, type SupportedFheType } from '../encryption/encryption.js';
4
+ import { EncryptionScheme, type SupportedFheType } from '../encryption/encryption.js';
5
5
  import { KmsQuorumClient } from '../kms/quorumClient.js';
6
- import type { Secp256k1Keypair } from '../lite/ecies.js';
6
+ import type { XwingKeypair } from '../lite/xwing.js';
7
7
  import type { BackoffConfig } from '../retry.js';
8
8
  import { type DecryptionAttestation, type EncryptedDecryptionAttestation } from './types.js';
9
9
  export declare const ATTESTED_DECRYPT_DOMAIN_NAME = "IncoAttestedDecrypt";
@@ -34,7 +34,7 @@ export declare function attestedDecrypt({ handles, backoffConfig, chainId, kmsQu
34
34
  chainId: SupportedChainId;
35
35
  kmsQuorumClient: KmsQuorumClient;
36
36
  executorAddress: HexString;
37
- }): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
37
+ }): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
38
38
  /**
39
39
  * Decrypt multiple handles in a single attested request.
40
40
  * Returns an array of attestations aligned with the response ordering.
@@ -49,10 +49,10 @@ export declare function attestedDecrypt({ handles, backoffConfig, walletClient,
49
49
  walletClient: WalletClient<Transport, Chain, Account>;
50
50
  chainId: SupportedChainId;
51
51
  reencryptPubKey: Uint8Array;
52
- reencryptKeypair: Secp256k1Keypair;
52
+ reencryptKeypair: XwingKeypair;
53
53
  kmsQuorumClient: KmsQuorumClient;
54
54
  executorAddress: HexString;
55
- }): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
55
+ }): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
56
56
  /**
57
57
  * Decrypt multiple handles in a single attested request.
58
58
  * Returns an array of attestations aligned with the response ordering.
@@ -70,7 +70,7 @@ export declare function attestedDecrypt({ handles, backoffConfig, walletClient,
70
70
  reencryptKeypair?: never;
71
71
  kmsQuorumClient: KmsQuorumClient;
72
72
  executorAddress: HexString;
73
- }): Promise<Array<EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>>;
73
+ }): Promise<Array<EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
74
74
  /**
75
75
  * Decrypt multiple handles in a single attested request.
76
76
  * Returns an array of attestations aligned with the response ordering.
@@ -88,9 +88,9 @@ export declare function attestedDecrypt({ handles, backoffConfig, walletClient,
88
88
  reencryptKeypair?: never;
89
89
  kmsQuorumClient: KmsQuorumClient;
90
90
  executorAddress: HexString;
91
- }): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
91
+ }): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
92
92
  export declare function fetchEip712DomainVersion(executorAddress: HexString | undefined, defaultVersion: string, walletClient?: WalletClient<Transport, Chain, Account> | PublicClient<Transport, Chain>): Promise<string>;
93
- export declare function decryptEncryptedAttestations(attestations: Array<DecryptionAttestation<EciesScheme, SupportedFheType> | EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>, reencryptKeypair: Secp256k1Keypair): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
93
+ export declare function decryptEncryptedAttestations(attestations: Array<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>, reencryptKeypair: XwingKeypair): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
94
94
  /**
95
95
  * Validates a handle format.
96
96
  * @param handle - The handle to validate
@@ -14,19 +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 ecies: 1;
17
+ readonly xwing: 2;
18
18
  };
19
19
  export declare function getEncryptionSchemeName(scheme: number): string;
20
20
  export type EncryptionSchemes = typeof encryptionSchemes;
21
- export type EciesScheme = EncryptionSchemes['ecies'];
22
- export declare const EncryptionScheme: Schema.Literal<[1]>;
21
+ export type XwingScheme = EncryptionSchemes['xwing'];
22
+ export declare const EncryptionScheme: Schema.Literal<[2]>;
23
23
  export type EncryptionScheme = typeof EncryptionScheme.Type;
24
24
  type DistType<P, S extends EncryptionScheme, T extends SupportedFheType> = P extends any ? P & {
25
25
  scheme: S;
26
26
  type: T;
27
27
  } : never;
28
28
  export declare const Ciphertext: Schema.Struct<{
29
- scheme: Schema.Literal<[1]>;
29
+ scheme: Schema.Literal<[2]>;
30
30
  type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
31
31
  value: Schema.TemplateLiteral<`0x${string}`>;
32
32
  }>;
@@ -34,7 +34,7 @@ export type Ciphertext = typeof Ciphertext.Type;
34
34
  export type CiphertextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Ciphertext, S, T>;
35
35
  export declare const CiphertextWithContext: Schema.Struct<{
36
36
  ciphertext: Schema.Struct<{
37
- scheme: Schema.Literal<[1]>;
37
+ scheme: Schema.Literal<[2]>;
38
38
  type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
39
39
  value: Schema.TemplateLiteral<`0x${string}`>;
40
40
  }>;
@@ -52,7 +52,7 @@ export type CiphertextWithContextOf<S extends EncryptionScheme, T extends Suppor
52
52
  };
53
53
  export declare const EncryptResult: Schema.Struct<{
54
54
  ciphertext: Schema.Struct<{
55
- scheme: Schema.Literal<[1]>;
55
+ scheme: Schema.Literal<[2]>;
56
56
  type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
57
57
  value: Schema.TemplateLiteral<`0x${string}`>;
58
58
  }>;
@@ -71,11 +71,11 @@ export type EncryptResultOf<S extends EncryptionScheme, T extends SupportedFheTy
71
71
  ciphertext: CiphertextOf<S, T>;
72
72
  };
73
73
  export declare const Plaintext: Schema.Union<[Schema.Struct<{
74
- scheme: Schema.Literal<[1]>;
74
+ scheme: Schema.Literal<[2]>;
75
75
  type: Schema.Literal<[5, 7, 8]>;
76
76
  value: typeof Schema.BigInt;
77
77
  }>, Schema.Struct<{
78
- scheme: Schema.Literal<[1]>;
78
+ scheme: Schema.Literal<[2]>;
79
79
  type: Schema.Literal<[0]>;
80
80
  value: typeof Schema.Boolean;
81
81
  }>]>;
@@ -83,11 +83,11 @@ export type Plaintext = typeof Plaintext.Type;
83
83
  export type PlaintextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Plaintext, S, T>;
84
84
  export declare const PlaintextWithContext: Schema.Struct<{
85
85
  plaintext: Schema.Union<[Schema.Struct<{
86
- scheme: Schema.Literal<[1]>;
86
+ scheme: Schema.Literal<[2]>;
87
87
  type: Schema.Literal<[5, 7, 8]>;
88
88
  value: typeof Schema.BigInt;
89
89
  }>, Schema.Struct<{
90
- scheme: Schema.Literal<[1]>;
90
+ scheme: Schema.Literal<[2]>;
91
91
  type: Schema.Literal<[0]>;
92
92
  value: typeof Schema.Boolean;
93
93
  }>]>;