@zksdk/core 0.1.10 → 0.1.12

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.
@@ -4,7 +4,7 @@
4
4
  * This client handles all TFHE operations including key generation,
5
5
  * encryption, and decryption. The ClientKey never leaves the user's machine.
6
6
  */
7
- import type { VaultKeys, EncryptedTransferParams, CmuxTransferResult, BalanceTransferResult, KeyGenOptions, ExecutePayload } from "./types.js";
7
+ import type { VaultKeys, EncryptedTransferParams, CmuxTransferResult, BalanceTransferResult, BalanceBlobResult, KeyGenOptions, ExecutePayload } from "./types.js";
8
8
  declare function toBase64(bytes: Uint8Array): string;
9
9
  declare function fromBase64(b64: string): Uint8Array;
10
10
  /**
@@ -89,10 +89,34 @@ export declare class TfheClient {
89
89
  * Decrypt CMUX token transfer result
90
90
  */
91
91
  decryptCmuxToken(encryptedResultB64: string): CmuxTransferResult;
92
+ /**
93
+ * Decrypt balance blob (deposit result - no validity flag)
94
+ *
95
+ * Balance blobs have format: count (u16) + N × FheUint32
96
+ * Unlike CMUX results, they do NOT have an FheBool at the end.
97
+ *
98
+ * IMPORTANT: Ciphertext size is calculated dynamically from the blob itself
99
+ * because Rust's encrypt_trivial() produces different sizes (264,101 bytes)
100
+ * than JS's encrypt_with_client_key() (263,448 bytes).
101
+ */
102
+ decryptBalanceBlob(encryptedBlobB64: string): BalanceBlobResult;
103
+ /**
104
+ * Auto-detect format and decrypt either balance blob or CMUX result
105
+ *
106
+ * For balance blobs from Rust worker, size is calculated dynamically
107
+ * because encrypt_trivial() produces different sizes than encrypt_with_client_key().
108
+ */
109
+ autoDecrypt(encryptedDataB64: string): CmuxTransferResult | BalanceBlobResult;
92
110
  /**
93
111
  * Decrypt balance transfer result
94
112
  */
95
113
  decryptBalanceTransfer(encryptedResultB64: string): BalanceTransferResult;
114
+ /**
115
+ * Calculate ciphertext size from blob (for balance blobs from worker)
116
+ * This handles the case where Rust uses encrypt_trivial() which produces
117
+ * different-sized ciphertexts than encrypt_with_client_key().
118
+ */
119
+ private calculateSizeFromBlob;
96
120
  private computeCiphertextSizes;
97
121
  }
98
122
  export { toBase64, fromBase64 };
@@ -1 +1 @@
1
- {"version":3,"file":"TfheClient.d.ts","sourceRoot":"","sources":["../../src/TfheClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EAEf,MAAM,YAAY,CAAC;AA2DpB,iBAAS,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS3C;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAU3C;AAaD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,UAAU,CAAuB;IAEzC;;OAEG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD/C,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACG,YAAY,CAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB1D;;;;;OAKG;IACG,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IA0CxE;;OAEG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAiBzC;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,uBAAuB;IAwD1B;;;;OAIG;IACH,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,uBAAuB;IA2C1B;;OAEG;IACH,0BAA0B,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,cAAc;IAkBjB;;OAEG;IACH,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,cAAc;IAcjB;;;OAGG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,uBAAuB,GAAG;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE;IAsCxD;;OAEG;IACH,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,kBAAkB;IA4ChE;;OAEG;IACH,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,GAAG,qBAAqB;IA2BzE,OAAO,CAAC,sBAAsB;CAkB/B;AAGD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"TfheClient.d.ts","sourceRoot":"","sources":["../../src/TfheClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,cAAc,EAEf,MAAM,YAAY,CAAC;AA2DpB,iBAAS,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS3C;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAU3C;AAaD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,UAAU,CAAuB;IAEzC;;OAEG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD/C,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACG,YAAY,CAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB1D;;;;;OAKG;IACG,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IA0CxE;;OAEG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAiBzC;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,uBAAuB;IAwD1B;;;;OAIG;IACH,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,uBAAuB;IA2C1B;;OAEG;IACH,0BAA0B,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,cAAc;IAkBjB;;OAEG;IACH,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,cAAc;IAcjB;;;OAGG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,uBAAuB,GAAG;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE;IAsCxD;;OAEG;IACH,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,kBAAkB;IAiDhE;;;;;;;;;OASG;IACH,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,iBAAiB;IAqC/D;;;;;OAKG;IACH,WAAW,CACT,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,GAAG,iBAAiB;IA0DzC;;OAEG;IACH,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,GAAG,qBAAqB;IAmCzE;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,sBAAsB;CAqB/B;AAGD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
@@ -384,19 +384,97 @@ class TfheClient {
384
384
  const count = bytes[0] | (bytes[1] << 8);
385
385
  let offset = 2;
386
386
  console.log("[TfheClient] count =", count, ", expected total size =", 2 + count * sizes.uint32 + sizes.bool);
387
+ // Use safe_deserialize to match the Rust worker's safe_serialize format
388
+ const SIZE_LIMIT = BigInt("18446744073709551615"); // u64::MAX
387
389
  const balances = [];
388
390
  for (let i = 0; i < count; i++) {
389
391
  const balanceBytes = bytes.slice(offset, offset + sizes.uint32);
390
392
  console.log(`[TfheClient] Balance[${i}]: offset=${offset}, reading ${sizes.uint32} bytes, first 8 bytes:`, Array.from(balanceBytes.slice(0, 8)));
391
- const balanceCt = tfhe.FheUint32.deserialize(balanceBytes);
393
+ const balanceCt = tfhe.FheUint32.safe_deserialize(balanceBytes, SIZE_LIMIT);
392
394
  balances.push(balanceCt.decrypt(this.clientKey));
393
395
  offset += sizes.uint32;
394
396
  }
395
397
  const boolBytes = bytes.slice(offset, offset + sizes.bool);
396
- const validCt = tfhe.FheBool.deserialize(boolBytes);
398
+ const validCt = tfhe.FheBool.safe_deserialize(boolBytes, SIZE_LIMIT);
397
399
  const isValid = validCt.decrypt(this.clientKey);
398
400
  return { balances, isValid };
399
401
  }
402
+ /**
403
+ * Decrypt balance blob (deposit result - no validity flag)
404
+ *
405
+ * Balance blobs have format: count (u16) + N × FheUint32
406
+ * Unlike CMUX results, they do NOT have an FheBool at the end.
407
+ *
408
+ * IMPORTANT: Ciphertext size is calculated dynamically from the blob itself
409
+ * because Rust's encrypt_trivial() produces different sizes (264,101 bytes)
410
+ * than JS's encrypt_with_client_key() (263,448 bytes).
411
+ */
412
+ decryptBalanceBlob(encryptedBlobB64) {
413
+ this.requireClientKey();
414
+ const bytes = fromBase64(encryptedBlobB64);
415
+ // First 2 bytes are u16 count (little-endian)
416
+ const count = bytes[0] | (bytes[1] << 8);
417
+ // Calculate actual ciphertext size from the blob itself
418
+ // This handles Rust's encrypt_trivial() producing different sizes than JS
419
+ const uint32Size = this.calculateSizeFromBlob(bytes, count);
420
+ console.log("[TfheClient] decryptBalanceBlob: total bytes =", bytes.length, ", count =", count, ", calculated uint32 size =", uint32Size);
421
+ // Use safe_deserialize to match the Rust worker's safe_serialize format
422
+ const SIZE_LIMIT = BigInt("18446744073709551615"); // u64::MAX
423
+ let offset = 2;
424
+ const balances = [];
425
+ for (let i = 0; i < count; i++) {
426
+ const balanceBytes = bytes.slice(offset, offset + uint32Size);
427
+ const balanceCt = tfhe.FheUint32.safe_deserialize(balanceBytes, SIZE_LIMIT);
428
+ balances.push(balanceCt.decrypt(this.clientKey));
429
+ offset += uint32Size;
430
+ }
431
+ return { balances };
432
+ }
433
+ /**
434
+ * Auto-detect format and decrypt either balance blob or CMUX result
435
+ *
436
+ * For balance blobs from Rust worker, size is calculated dynamically
437
+ * because encrypt_trivial() produces different sizes than encrypt_with_client_key().
438
+ */
439
+ autoDecrypt(encryptedDataB64) {
440
+ this.requireClientKey();
441
+ const bytes = fromBase64(encryptedDataB64);
442
+ // First 2 bytes are u16 count (little-endian)
443
+ const count = bytes[0] | (bytes[1] << 8);
444
+ // Calculate expected sizes based on local params
445
+ const sizes = this.ciphertextSizes ?? this.computeCiphertextSizes();
446
+ // Check for exact CMUX result match: 2 (header) + N * uint32 + 1 * bool
447
+ const expectedCmuxSize = 2 + count * sizes.uint32 + sizes.bool;
448
+ if (bytes.length === expectedCmuxSize) {
449
+ console.log("[TfheClient] Detected CMUX result format (exact match)");
450
+ return this.decryptCmuxToken(encryptedDataB64);
451
+ }
452
+ // Check for exact Balance Blob match: 2 (header) + N * uint32
453
+ // Note: Rust optimization might mean this doesn't match exactly, hence the fallback below
454
+ const expectedBlobSize = 2 + count * sizes.uint32;
455
+ if (bytes.length === expectedBlobSize) {
456
+ console.log("[TfheClient] Detected Balance Blob format (exact match)");
457
+ return this.decryptBalanceBlob(encryptedDataB64);
458
+ }
459
+ // Fallback: Calculate size dynamically from blob
460
+ // This handles Rust's encrypt_trivial() producing different sizes than JS
461
+ // BUT this only works for Balance Blobs (no boolean flag)
462
+ const uint32Size = this.calculateSizeFromBlob(bytes, count);
463
+ const balanceBlobSize = 2 + count * uint32Size;
464
+ console.log("[TfheClient] autoDecrypt: total bytes =", bytes.length, ", count =", count, ", calculated uint32 size =", uint32Size);
465
+ // Balance blobs from worker should match exactly
466
+ if (bytes.length === balanceBlobSize) {
467
+ console.log("[TfheClient] Detected balance blob format (dynamic size)");
468
+ return this.decryptBalanceBlob(encryptedDataB64);
469
+ }
470
+ // If we're here, it might be a CMUX blob with dynamic sizing, which is trickier.
471
+ // However, currently only Balance Blobs use encrypt_trivial.
472
+ // CMUX results are fully encrypted and should match standard sizes.
473
+ // If getting "Invalid Size", it's likely because the code previously fell through to here
474
+ // effectively treating a CMUX blob (with extra bool) as a weird Balance Blob.
475
+ console.warn(`[TfheClient] Unknown format, trying balance blob fallback`);
476
+ return this.decryptBalanceBlob(encryptedDataB64);
477
+ }
400
478
  /**
401
479
  * Decrypt balance transfer result
402
480
  */
@@ -411,22 +489,37 @@ class TfheClient {
411
489
  const senderBytes = bytes.slice(0, sizes.uint32);
412
490
  const receiverBytes = bytes.slice(sizes.uint32, sizes.uint32 * 2);
413
491
  const boolBytes = bytes.slice(sizes.uint32 * 2, expectedLen);
414
- const newSenderCt = tfhe.FheUint32.deserialize(senderBytes);
415
- const newReceiverCt = tfhe.FheUint32.deserialize(receiverBytes);
416
- const validCt = tfhe.FheBool.deserialize(boolBytes);
492
+ // Use safe_deserialize to match the Rust worker's safe_serialize format
493
+ const SIZE_LIMIT = BigInt("18446744073709551615"); // u64::MAX
494
+ const newSenderCt = tfhe.FheUint32.safe_deserialize(senderBytes, SIZE_LIMIT);
495
+ const newReceiverCt = tfhe.FheUint32.safe_deserialize(receiverBytes, SIZE_LIMIT);
496
+ const validCt = tfhe.FheBool.safe_deserialize(boolBytes, SIZE_LIMIT);
417
497
  return {
418
498
  newSender: newSenderCt.decrypt(this.clientKey),
419
499
  newReceiver: newReceiverCt.decrypt(this.clientKey),
420
500
  isValid: validCt.decrypt(this.clientKey),
421
501
  };
422
502
  }
503
+ /**
504
+ * Calculate ciphertext size from blob (for balance blobs from worker)
505
+ * This handles the case where Rust uses encrypt_trivial() which produces
506
+ * different-sized ciphertexts than encrypt_with_client_key().
507
+ */
508
+ calculateSizeFromBlob(bytes, count) {
509
+ const totalCiphertextBytes = bytes.length - 2; // subtract 2-byte count header
510
+ const sizePerCiphertext = Math.floor(totalCiphertextBytes / count);
511
+ return sizePerCiphertext;
512
+ }
423
513
  computeCiphertextSizes() {
424
514
  this.requireClientKey();
425
515
  const sampleUint = tfhe.FheUint32.encrypt_with_client_key(0, this.clientKey);
426
516
  const sampleBool = tfhe.FheBool.encrypt_with_client_key(false, this.clientKey);
517
+ // Use safe_serialize to match the Rust worker's serialization format
518
+ // The worker uses tfhe::safe_serialization::safe_serialize
519
+ const SIZE_LIMIT = BigInt("18446744073709551615"); // u64::MAX
427
520
  const sizes = {
428
- uint32: sampleUint.serialize().length,
429
- bool: sampleBool.serialize().length,
521
+ uint32: sampleUint.safe_serialize(SIZE_LIMIT).length,
522
+ bool: sampleBool.safe_serialize(SIZE_LIMIT).length,
430
523
  };
431
524
  console.log("[TfheClient] Computed ciphertext sizes:", sizes);
432
525
  this.ciphertextSizes = sizes;
@@ -1 +1 @@
1
- {"version":3,"file":"TfheClient.js","sourceRoot":"","sources":["../../src/TfheClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TfheClient.js","sourceRoot":"","sources":["../../src/TfheClient.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,9 @@
12
12
  * console.log('Save your clientKey securely!');
13
13
  * ```
14
14
  */
15
- export { TfheClient, toBase64, fromBase64 } from './TfheClient.js';
16
- export type { CircuitId, VaultKeys, EncryptedTransferParams, CmuxTransferResult, BalanceTransferResult, KeyGenOptions, VaultRegistration, ExecutePayload, StorageType, StorageOptions, } from './types.js';
17
- export { CIRCUIT_PRIVATE_TOKEN_SLOTS, CIRCUIT_CMUX_TOKEN_LEGACY } from './types.js';
15
+ export { TfheClient, toBase64, fromBase64 } from "./TfheClient.js";
16
+ export type { CircuitId, VaultKeys, EncryptedTransferParams, CmuxTransferResult, BalanceTransferResult, BalanceBlobResult, KeyGenOptions, VaultRegistration, ExecutePayload, StorageType, StorageOptions, } from "./types.js";
17
+ export { CIRCUIT_PRIVATE_TOKEN_SLOTS, CIRCUIT_CMUX_TOKEN_LEGACY, } from "./types.js";
18
18
  /** Package version */
19
19
  export declare const VERSION = "0.1.0";
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnE,YAAY,EACV,SAAS,EACT,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEpF,sBAAsB;AACtB,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnE,YAAY,EACV,SAAS,EACT,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,sBAAsB;AACtB,eAAO,MAAM,OAAO,UAAU,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -24,5 +24,5 @@ var types_js_1 = require("./types.js");
24
24
  Object.defineProperty(exports, "CIRCUIT_PRIVATE_TOKEN_SLOTS", { enumerable: true, get: function () { return types_js_1.CIRCUIT_PRIVATE_TOKEN_SLOTS; } });
25
25
  Object.defineProperty(exports, "CIRCUIT_CMUX_TOKEN_LEGACY", { enumerable: true, get: function () { return types_js_1.CIRCUIT_CMUX_TOKEN_LEGACY; } });
26
26
  /** Package version */
27
- exports.VERSION = '0.1.0';
27
+ exports.VERSION = "0.1.0";
28
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,iDAAmE;AAA1D,2GAAA,UAAU,OAAA;AAAE,yGAAA,QAAQ,OAAA;AAAE,2GAAA,UAAU,OAAA;AAezC,8BAA8B;AAC9B,uCAAoF;AAA3E,uHAAA,2BAA2B,OAAA;AAAE,qHAAA,yBAAyB,OAAA;AAE/D,sBAAsB;AACT,QAAA,OAAO,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,iDAAmE;AAA1D,2GAAA,UAAU,OAAA;AAAE,yGAAA,QAAQ,OAAA;AAAE,2GAAA,UAAU,OAAA;AAgBzC,8BAA8B;AAC9B,uCAGoB;AAFlB,uHAAA,2BAA2B,OAAA;AAC3B,qHAAA,yBAAyB,OAAA;AAG3B,sBAAsB;AACT,QAAA,OAAO,GAAG,OAAO,CAAC"}
@@ -2,9 +2,9 @@
2
2
  * ZKSDK Core Types
3
3
  */
4
4
  /** Supported storage backends */
5
- export type StorageType = 'postgres' | 'celestia' | 'avail' | 'eigenda' | 'ipfs';
5
+ export type StorageType = "postgres" | "celestia" | "avail" | "eigenda" | "ipfs";
6
6
  /** Supported circuit identifiers */
7
- export type CircuitId = 'private_token_slots_v1' | 'cmux_token_v1_linear' | 'balance_transfer_v1' | 'private_token_accounts_v1' | string;
7
+ export type CircuitId = "private_token_slots_v1" | "cmux_token_v1_linear" | "balance_transfer_v1" | "private_token_accounts_v1" | string;
8
8
  /** Current private token slots circuit ID */
9
9
  export declare const CIRCUIT_PRIVATE_TOKEN_SLOTS: CircuitId;
10
10
  /** Legacy circuit ID (deprecated, use CIRCUIT_PRIVATE_TOKEN_SLOTS) */
@@ -34,6 +34,10 @@ export interface BalanceTransferResult {
34
34
  newReceiver: number;
35
35
  isValid: boolean;
36
36
  }
37
+ /** Result from balance blob decryption (no validity flag) */
38
+ export interface BalanceBlobResult {
39
+ balances: number[];
40
+ }
37
41
  /** Key generation options */
38
42
  export interface KeyGenOptions {
39
43
  wasmModule?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iCAAiC;AACjC,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjF,oCAAoC;AACpC,MAAM,MAAM,SAAS,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,qBAAqB,GACrB,2BAA2B,GAC3B,MAAM,CAAC;AAEX,6CAA6C;AAC7C,eAAO,MAAM,2BAA2B,EAAE,SAAoC,CAAC;AAC/E,sEAAsE;AACtE,eAAO,MAAM,yBAAyB,EAAE,SAAkC,CAAC;AAE3E,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,kCAAkC;AAClC,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,SAAS,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,iCAAiC;AACjC,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,UAAU,GACV,OAAO,GACP,SAAS,GACT,MAAM,CAAC;AAEX,oCAAoC;AACpC,MAAM,MAAM,SAAS,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,qBAAqB,GACrB,2BAA2B,GAC3B,MAAM,CAAC;AAEX,6CAA6C;AAC7C,eAAO,MAAM,2BAA2B,EAAE,SAAoC,CAAC;AAC/E,sEAAsE;AACtE,eAAO,MAAM,yBAAyB,EAAE,SAAkC,CAAC;AAE3E,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,iDAAiD;AACjD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,kCAAkC;AAClC,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,SAAS,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
package/dist/cjs/types.js CHANGED
@@ -5,7 +5,7 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CIRCUIT_CMUX_TOKEN_LEGACY = exports.CIRCUIT_PRIVATE_TOKEN_SLOTS = void 0;
7
7
  /** Current private token slots circuit ID */
8
- exports.CIRCUIT_PRIVATE_TOKEN_SLOTS = 'private_token_slots_v1';
8
+ exports.CIRCUIT_PRIVATE_TOKEN_SLOTS = "private_token_slots_v1";
9
9
  /** Legacy circuit ID (deprecated, use CIRCUIT_PRIVATE_TOKEN_SLOTS) */
10
- exports.CIRCUIT_CMUX_TOKEN_LEGACY = 'cmux_token_v1_linear';
10
+ exports.CIRCUIT_CMUX_TOKEN_LEGACY = "cmux_token_v1_linear";
11
11
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAaH,6CAA6C;AAChC,QAAA,2BAA2B,GAAc,wBAAwB,CAAC;AAC/E,sEAAsE;AACzD,QAAA,yBAAyB,GAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAkBH,6CAA6C;AAChC,QAAA,2BAA2B,GAAc,wBAAwB,CAAC;AAC/E,sEAAsE;AACzD,QAAA,yBAAyB,GAAc,sBAAsB,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * This client handles all TFHE operations including key generation,
5
5
  * encryption, and decryption. The ClientKey never leaves the user's machine.
6
6
  */
7
- import type { VaultKeys, EncryptedTransferParams, CmuxTransferResult, BalanceTransferResult, KeyGenOptions, ExecutePayload } from "./types.js";
7
+ import type { VaultKeys, EncryptedTransferParams, CmuxTransferResult, BalanceTransferResult, BalanceBlobResult, KeyGenOptions, ExecutePayload } from "./types.js";
8
8
  declare function toBase64(bytes: Uint8Array): string;
9
9
  declare function fromBase64(b64: string): Uint8Array;
10
10
  /**
@@ -89,10 +89,34 @@ export declare class TfheClient {
89
89
  * Decrypt CMUX token transfer result
90
90
  */
91
91
  decryptCmuxToken(encryptedResultB64: string): CmuxTransferResult;
92
+ /**
93
+ * Decrypt balance blob (deposit result - no validity flag)
94
+ *
95
+ * Balance blobs have format: count (u16) + N × FheUint32
96
+ * Unlike CMUX results, they do NOT have an FheBool at the end.
97
+ *
98
+ * IMPORTANT: Ciphertext size is calculated dynamically from the blob itself
99
+ * because Rust's encrypt_trivial() produces different sizes (264,101 bytes)
100
+ * than JS's encrypt_with_client_key() (263,448 bytes).
101
+ */
102
+ decryptBalanceBlob(encryptedBlobB64: string): BalanceBlobResult;
103
+ /**
104
+ * Auto-detect format and decrypt either balance blob or CMUX result
105
+ *
106
+ * For balance blobs from Rust worker, size is calculated dynamically
107
+ * because encrypt_trivial() produces different sizes than encrypt_with_client_key().
108
+ */
109
+ autoDecrypt(encryptedDataB64: string): CmuxTransferResult | BalanceBlobResult;
92
110
  /**
93
111
  * Decrypt balance transfer result
94
112
  */
95
113
  decryptBalanceTransfer(encryptedResultB64: string): BalanceTransferResult;
114
+ /**
115
+ * Calculate ciphertext size from blob (for balance blobs from worker)
116
+ * This handles the case where Rust uses encrypt_trivial() which produces
117
+ * different-sized ciphertexts than encrypt_with_client_key().
118
+ */
119
+ private calculateSizeFromBlob;
96
120
  private computeCiphertextSizes;
97
121
  }
98
122
  export { toBase64, fromBase64 };
@@ -1 +1 @@
1
- {"version":3,"file":"TfheClient.d.ts","sourceRoot":"","sources":["../../src/TfheClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EAEf,MAAM,YAAY,CAAC;AA2DpB,iBAAS,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS3C;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAU3C;AAaD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,UAAU,CAAuB;IAEzC;;OAEG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD/C,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACG,YAAY,CAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB1D;;;;;OAKG;IACG,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IA0CxE;;OAEG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAiBzC;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,uBAAuB;IAwD1B;;;;OAIG;IACH,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,uBAAuB;IA2C1B;;OAEG;IACH,0BAA0B,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,cAAc;IAkBjB;;OAEG;IACH,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,cAAc;IAcjB;;;OAGG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,uBAAuB,GAAG;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE;IAsCxD;;OAEG;IACH,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,kBAAkB;IA4ChE;;OAEG;IACH,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,GAAG,qBAAqB;IA2BzE,OAAO,CAAC,sBAAsB;CAkB/B;AAGD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"TfheClient.d.ts","sourceRoot":"","sources":["../../src/TfheClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,cAAc,EAEf,MAAM,YAAY,CAAC;AA2DpB,iBAAS,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAS3C;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAU3C;AAaD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,UAAU,CAAuB;IAEzC;;OAEG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgD/C,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACG,YAAY,CAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB1D;;;;;OAKG;IACG,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IA0CxE;;OAEG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAiBzC;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACH,qBAAqB,CACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,uBAAuB;IAwD1B;;;;OAIG;IACH,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,uBAAuB;IA2C1B;;OAEG;IACH,0BAA0B,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,cAAc;IAkBjB;;OAEG;IACH,0BAA0B,CACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,cAAc;IAcjB;;;OAGG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,uBAAuB,GAAG;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE;IAsCxD;;OAEG;IACH,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,kBAAkB;IAiDhE;;;;;;;;;OASG;IACH,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,iBAAiB;IAqC/D;;;;;OAKG;IACH,WAAW,CACT,gBAAgB,EAAE,MAAM,GACvB,kBAAkB,GAAG,iBAAiB;IA0DzC;;OAEG;IACH,sBAAsB,CAAC,kBAAkB,EAAE,MAAM,GAAG,qBAAqB;IAmCzE;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,sBAAsB;CAqB/B;AAGD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
@@ -379,19 +379,97 @@ export class TfheClient {
379
379
  const count = bytes[0] | (bytes[1] << 8);
380
380
  let offset = 2;
381
381
  console.log("[TfheClient] count =", count, ", expected total size =", 2 + count * sizes.uint32 + sizes.bool);
382
+ // Use safe_deserialize to match the Rust worker's safe_serialize format
383
+ const SIZE_LIMIT = BigInt("18446744073709551615"); // u64::MAX
382
384
  const balances = [];
383
385
  for (let i = 0; i < count; i++) {
384
386
  const balanceBytes = bytes.slice(offset, offset + sizes.uint32);
385
387
  console.log(`[TfheClient] Balance[${i}]: offset=${offset}, reading ${sizes.uint32} bytes, first 8 bytes:`, Array.from(balanceBytes.slice(0, 8)));
386
- const balanceCt = tfhe.FheUint32.deserialize(balanceBytes);
388
+ const balanceCt = tfhe.FheUint32.safe_deserialize(balanceBytes, SIZE_LIMIT);
387
389
  balances.push(balanceCt.decrypt(this.clientKey));
388
390
  offset += sizes.uint32;
389
391
  }
390
392
  const boolBytes = bytes.slice(offset, offset + sizes.bool);
391
- const validCt = tfhe.FheBool.deserialize(boolBytes);
393
+ const validCt = tfhe.FheBool.safe_deserialize(boolBytes, SIZE_LIMIT);
392
394
  const isValid = validCt.decrypt(this.clientKey);
393
395
  return { balances, isValid };
394
396
  }
397
+ /**
398
+ * Decrypt balance blob (deposit result - no validity flag)
399
+ *
400
+ * Balance blobs have format: count (u16) + N × FheUint32
401
+ * Unlike CMUX results, they do NOT have an FheBool at the end.
402
+ *
403
+ * IMPORTANT: Ciphertext size is calculated dynamically from the blob itself
404
+ * because Rust's encrypt_trivial() produces different sizes (264,101 bytes)
405
+ * than JS's encrypt_with_client_key() (263,448 bytes).
406
+ */
407
+ decryptBalanceBlob(encryptedBlobB64) {
408
+ this.requireClientKey();
409
+ const bytes = fromBase64(encryptedBlobB64);
410
+ // First 2 bytes are u16 count (little-endian)
411
+ const count = bytes[0] | (bytes[1] << 8);
412
+ // Calculate actual ciphertext size from the blob itself
413
+ // This handles Rust's encrypt_trivial() producing different sizes than JS
414
+ const uint32Size = this.calculateSizeFromBlob(bytes, count);
415
+ console.log("[TfheClient] decryptBalanceBlob: total bytes =", bytes.length, ", count =", count, ", calculated uint32 size =", uint32Size);
416
+ // Use safe_deserialize to match the Rust worker's safe_serialize format
417
+ const SIZE_LIMIT = BigInt("18446744073709551615"); // u64::MAX
418
+ let offset = 2;
419
+ const balances = [];
420
+ for (let i = 0; i < count; i++) {
421
+ const balanceBytes = bytes.slice(offset, offset + uint32Size);
422
+ const balanceCt = tfhe.FheUint32.safe_deserialize(balanceBytes, SIZE_LIMIT);
423
+ balances.push(balanceCt.decrypt(this.clientKey));
424
+ offset += uint32Size;
425
+ }
426
+ return { balances };
427
+ }
428
+ /**
429
+ * Auto-detect format and decrypt either balance blob or CMUX result
430
+ *
431
+ * For balance blobs from Rust worker, size is calculated dynamically
432
+ * because encrypt_trivial() produces different sizes than encrypt_with_client_key().
433
+ */
434
+ autoDecrypt(encryptedDataB64) {
435
+ this.requireClientKey();
436
+ const bytes = fromBase64(encryptedDataB64);
437
+ // First 2 bytes are u16 count (little-endian)
438
+ const count = bytes[0] | (bytes[1] << 8);
439
+ // Calculate expected sizes based on local params
440
+ const sizes = this.ciphertextSizes ?? this.computeCiphertextSizes();
441
+ // Check for exact CMUX result match: 2 (header) + N * uint32 + 1 * bool
442
+ const expectedCmuxSize = 2 + count * sizes.uint32 + sizes.bool;
443
+ if (bytes.length === expectedCmuxSize) {
444
+ console.log("[TfheClient] Detected CMUX result format (exact match)");
445
+ return this.decryptCmuxToken(encryptedDataB64);
446
+ }
447
+ // Check for exact Balance Blob match: 2 (header) + N * uint32
448
+ // Note: Rust optimization might mean this doesn't match exactly, hence the fallback below
449
+ const expectedBlobSize = 2 + count * sizes.uint32;
450
+ if (bytes.length === expectedBlobSize) {
451
+ console.log("[TfheClient] Detected Balance Blob format (exact match)");
452
+ return this.decryptBalanceBlob(encryptedDataB64);
453
+ }
454
+ // Fallback: Calculate size dynamically from blob
455
+ // This handles Rust's encrypt_trivial() producing different sizes than JS
456
+ // BUT this only works for Balance Blobs (no boolean flag)
457
+ const uint32Size = this.calculateSizeFromBlob(bytes, count);
458
+ const balanceBlobSize = 2 + count * uint32Size;
459
+ console.log("[TfheClient] autoDecrypt: total bytes =", bytes.length, ", count =", count, ", calculated uint32 size =", uint32Size);
460
+ // Balance blobs from worker should match exactly
461
+ if (bytes.length === balanceBlobSize) {
462
+ console.log("[TfheClient] Detected balance blob format (dynamic size)");
463
+ return this.decryptBalanceBlob(encryptedDataB64);
464
+ }
465
+ // If we're here, it might be a CMUX blob with dynamic sizing, which is trickier.
466
+ // However, currently only Balance Blobs use encrypt_trivial.
467
+ // CMUX results are fully encrypted and should match standard sizes.
468
+ // If getting "Invalid Size", it's likely because the code previously fell through to here
469
+ // effectively treating a CMUX blob (with extra bool) as a weird Balance Blob.
470
+ console.warn(`[TfheClient] Unknown format, trying balance blob fallback`);
471
+ return this.decryptBalanceBlob(encryptedDataB64);
472
+ }
395
473
  /**
396
474
  * Decrypt balance transfer result
397
475
  */
@@ -406,22 +484,37 @@ export class TfheClient {
406
484
  const senderBytes = bytes.slice(0, sizes.uint32);
407
485
  const receiverBytes = bytes.slice(sizes.uint32, sizes.uint32 * 2);
408
486
  const boolBytes = bytes.slice(sizes.uint32 * 2, expectedLen);
409
- const newSenderCt = tfhe.FheUint32.deserialize(senderBytes);
410
- const newReceiverCt = tfhe.FheUint32.deserialize(receiverBytes);
411
- const validCt = tfhe.FheBool.deserialize(boolBytes);
487
+ // Use safe_deserialize to match the Rust worker's safe_serialize format
488
+ const SIZE_LIMIT = BigInt("18446744073709551615"); // u64::MAX
489
+ const newSenderCt = tfhe.FheUint32.safe_deserialize(senderBytes, SIZE_LIMIT);
490
+ const newReceiverCt = tfhe.FheUint32.safe_deserialize(receiverBytes, SIZE_LIMIT);
491
+ const validCt = tfhe.FheBool.safe_deserialize(boolBytes, SIZE_LIMIT);
412
492
  return {
413
493
  newSender: newSenderCt.decrypt(this.clientKey),
414
494
  newReceiver: newReceiverCt.decrypt(this.clientKey),
415
495
  isValid: validCt.decrypt(this.clientKey),
416
496
  };
417
497
  }
498
+ /**
499
+ * Calculate ciphertext size from blob (for balance blobs from worker)
500
+ * This handles the case where Rust uses encrypt_trivial() which produces
501
+ * different-sized ciphertexts than encrypt_with_client_key().
502
+ */
503
+ calculateSizeFromBlob(bytes, count) {
504
+ const totalCiphertextBytes = bytes.length - 2; // subtract 2-byte count header
505
+ const sizePerCiphertext = Math.floor(totalCiphertextBytes / count);
506
+ return sizePerCiphertext;
507
+ }
418
508
  computeCiphertextSizes() {
419
509
  this.requireClientKey();
420
510
  const sampleUint = tfhe.FheUint32.encrypt_with_client_key(0, this.clientKey);
421
511
  const sampleBool = tfhe.FheBool.encrypt_with_client_key(false, this.clientKey);
512
+ // Use safe_serialize to match the Rust worker's serialization format
513
+ // The worker uses tfhe::safe_serialization::safe_serialize
514
+ const SIZE_LIMIT = BigInt("18446744073709551615"); // u64::MAX
422
515
  const sizes = {
423
- uint32: sampleUint.serialize().length,
424
- bool: sampleBool.serialize().length,
516
+ uint32: sampleUint.safe_serialize(SIZE_LIMIT).length,
517
+ bool: sampleBool.safe_serialize(SIZE_LIMIT).length,
425
518
  };
426
519
  console.log("[TfheClient] Computed ciphertext sizes:", sizes);
427
520
  this.ciphertextSizes = sizes;