@brightchain/brightchain-lib 0.2.0 → 0.3.0

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 (74) hide show
  1. package/package.json +1 -1
  2. package/src/lib/blockPaddingTransform.d.ts.map +1 -1
  3. package/src/lib/blockPaddingTransform.js +7 -3
  4. package/src/lib/blockPaddingTransform.js.map +1 -1
  5. package/src/lib/documents/base/document.d.ts.map +1 -1
  6. package/src/lib/documents/base/document.js +12 -5
  7. package/src/lib/documents/base/document.js.map +1 -1
  8. package/src/lib/errors/brightChainError.d.ts +2 -2
  9. package/src/lib/errors/brightChainError.js +2 -2
  10. package/src/lib/errors/checksumError.d.ts +2 -2
  11. package/src/lib/errors/checksumError.js +2 -2
  12. package/src/lib/errors/enhancedValidationError.d.ts +1 -1
  13. package/src/lib/errors/enhancedValidationError.js +1 -1
  14. package/src/lib/errors/factoryPatternViolationError.d.ts +2 -2
  15. package/src/lib/errors/factoryPatternViolationError.js +2 -2
  16. package/src/lib/errors/index.d.ts +1 -1
  17. package/src/lib/errors/index.js +1 -1
  18. package/src/lib/errors/typeGuards.d.ts +7 -7
  19. package/src/lib/errors/typeGuards.js +7 -7
  20. package/src/lib/i18n/index.d.ts +0 -1
  21. package/src/lib/i18n/index.d.ts.map +1 -1
  22. package/src/lib/i18n/index.js +2 -4
  23. package/src/lib/i18n/index.js.map +1 -1
  24. package/src/lib/interfaces/messaging/messageSystemConfig.d.ts.map +1 -1
  25. package/src/lib/interfaces/messaging/messageSystemConfig.js +13 -11
  26. package/src/lib/interfaces/messaging/messageSystemConfig.js.map +1 -1
  27. package/src/lib/interfaces/storage/blockStore.d.ts +59 -0
  28. package/src/lib/interfaces/storage/blockStore.d.ts.map +1 -1
  29. package/src/lib/interfaces/storage/cblWhitening.d.ts +76 -0
  30. package/src/lib/interfaces/storage/cblWhitening.d.ts.map +1 -0
  31. package/src/lib/interfaces/storage/cblWhitening.js +3 -0
  32. package/src/lib/interfaces/storage/cblWhitening.js.map +1 -0
  33. package/src/lib/interfaces/storage/index.d.ts +1 -0
  34. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  35. package/src/lib/secureKeyStorage.d.ts +9 -2
  36. package/src/lib/secureKeyStorage.d.ts.map +1 -1
  37. package/src/lib/secureKeyStorage.js +8 -9
  38. package/src/lib/secureKeyStorage.js.map +1 -1
  39. package/src/lib/services/blockService.d.ts +2 -1
  40. package/src/lib/services/blockService.d.ts.map +1 -1
  41. package/src/lib/services/blockService.js +7 -10
  42. package/src/lib/services/blockService.js.map +1 -1
  43. package/src/lib/services/messaging/broadcastMessageRouter.js +1 -1
  44. package/src/lib/services/messaging/broadcastMessageRouter.js.map +1 -1
  45. package/src/lib/services/messaging/directMessageRouter.js +1 -1
  46. package/src/lib/services/messaging/directMessageRouter.js.map +1 -1
  47. package/src/lib/services/messaging/messageForwardingService.js +1 -1
  48. package/src/lib/services/messaging/messageForwardingService.js.map +1 -1
  49. package/src/lib/services/messaging/webSocketTransport.d.ts.map +1 -1
  50. package/src/lib/services/messaging/webSocketTransport.js +1 -1
  51. package/src/lib/services/messaging/webSocketTransport.js.map +1 -1
  52. package/src/lib/services/tuple.service.d.ts.map +1 -1
  53. package/src/lib/services/tuple.service.js +17 -30
  54. package/src/lib/services/tuple.service.js.map +1 -1
  55. package/src/lib/services/xor.d.ts +24 -9
  56. package/src/lib/services/xor.d.ts.map +1 -1
  57. package/src/lib/services/xor.js +63 -14
  58. package/src/lib/services/xor.js.map +1 -1
  59. package/src/lib/stores/blockStoreAdapter.d.ts +5 -0
  60. package/src/lib/stores/blockStoreAdapter.d.ts.map +1 -1
  61. package/src/lib/stores/blockStoreAdapter.js +13 -0
  62. package/src/lib/stores/blockStoreAdapter.js.map +1 -1
  63. package/src/lib/stores/memoryBlockStore.d.ts +68 -0
  64. package/src/lib/stores/memoryBlockStore.d.ts.map +1 -1
  65. package/src/lib/stores/memoryBlockStore.js +298 -12
  66. package/src/lib/stores/memoryBlockStore.js.map +1 -1
  67. package/src/lib/utils/index.d.ts +11 -0
  68. package/src/lib/utils/index.d.ts.map +1 -1
  69. package/src/lib/utils/index.js +14 -0
  70. package/src/lib/utils/index.js.map +1 -1
  71. package/src/lib/utils/xorUtils.d.ts +46 -0
  72. package/src/lib/utils/xorUtils.d.ts.map +1 -0
  73. package/src/lib/utils/xorUtils.js +98 -0
  74. package/src/lib/utils/xorUtils.js.map +1 -0
@@ -11,7 +11,9 @@ const fecError_1 = require("../errors/fecError");
11
11
  const storeError_1 = require("../errors/storeError");
12
12
  const blockMetadata_1 = require("../interfaces/storage/blockMetadata");
13
13
  const serviceLocator_1 = require("../services/serviceLocator");
14
+ const xor_1 = require("../services/xor");
14
15
  const checksum_1 = require("../types/checksum");
16
+ const xorUtils_1 = require("../utils/xorUtils");
15
17
  const memoryBlockMetadataStore_1 = require("./memoryBlockMetadataStore");
16
18
  /**
17
19
  * Browser-compatible in-memory block store using Uint8Array.
@@ -519,18 +521,13 @@ class MemoryBlockStore {
519
521
  const block = await this.getData(checksum);
520
522
  randomBlocks.push(block);
521
523
  }
522
- // Perform XOR operation: source XOR random1 XOR random2 XOR ...
523
- const brightenedData = new Uint8Array(sourceBlock.data.length);
524
- // Start with source block data
525
- for (let i = 0; i < sourceBlock.data.length; i++) {
526
- brightenedData[i] = sourceBlock.data[i];
527
- }
528
- // XOR with each random block
529
- for (const randomBlock of randomBlocks) {
530
- for (let i = 0; i < brightenedData.length; i++) {
531
- brightenedData[i] ^= randomBlock.data[i % randomBlock.data.length];
532
- }
533
- }
524
+ // Collect all block data for XOR operation (source + random blocks)
525
+ const allBlockData = [
526
+ sourceBlock.data,
527
+ ...randomBlocks.map((block) => block.data),
528
+ ];
529
+ // Perform XOR operation using XorService: source XOR random1 XOR random2 XOR ...
530
+ const brightenedData = xor_1.XorService.xorMultiple(allBlockData);
534
531
  // Create the brightened block
535
532
  const brightenedBlock = new rawData_1.RawDataBlock(this._blockSize, brightenedData);
536
533
  const brightenedBlockId = brightenedBlock.idChecksum.toHex();
@@ -546,6 +543,295 @@ class MemoryBlockStore {
546
543
  originalBlockId: keyHex,
547
544
  };
548
545
  }
546
+ // === CBL Whitening Operations ===
547
+ /**
548
+ * Store a CBL with XOR whitening for Owner-Free storage.
549
+ *
550
+ * This method:
551
+ * 1. Pads the CBL to block size with length prefix
552
+ * 2. Generates a cryptographically random block (R) of the same size
553
+ * 3. XORs the padded CBL with R to produce the second block (CBL XOR R)
554
+ * 4. Stores both blocks separately
555
+ * 5. Generates parity blocks if durability options specify redundancy
556
+ * 6. Returns the IDs and a magnet URL for reconstruction
557
+ *
558
+ * @param cblData - The original CBL data as Uint8Array
559
+ * @param options - Optional storage options (durability, expiration, encryption flag)
560
+ * @returns Result containing block IDs, parity IDs (if any), and magnet URL
561
+ * @throws StoreError if storage fails
562
+ */
563
+ async storeCBLWithWhitening(cblData, options) {
564
+ // Validate input
565
+ if (!cblData || cblData.length === 0) {
566
+ throw new storeError_1.StoreError(storeErrorType_1.StoreErrorType.BlockValidationFailed, undefined, {
567
+ ERROR: 'CBL data cannot be empty',
568
+ });
569
+ }
570
+ // 1. Pad CBL to block size (includes length prefix)
571
+ const paddedCbl = (0, xorUtils_1.padToBlockSize)(cblData, this._blockSize);
572
+ // Validate that padded CBL fits within block size
573
+ if (paddedCbl.length > this._blockSize) {
574
+ throw new storeError_1.StoreError(storeErrorType_1.StoreErrorType.BlockValidationFailed, undefined, {
575
+ ERROR: `CBL data too large: padded size (${paddedCbl.length}) exceeds block size (${this._blockSize}). Use a larger block size or smaller CBL.`,
576
+ });
577
+ }
578
+ // 2. Select or generate randomizer block following OFFSystem principles
579
+ // In OFFSystem, we preferentially use existing blocks from the cache as randomizers
580
+ // This provides multi-use of blocks and better security through data reuse
581
+ const randomBlock = await this.selectOrGenerateRandomizer(paddedCbl.length);
582
+ // 3. XOR to create second block (CBL XOR R)
583
+ const xorResult = (0, xorUtils_1.xorArrays)(paddedCbl, randomBlock);
584
+ // Track stored blocks for rollback on failure
585
+ let block1Stored = false;
586
+ let block1Id = '';
587
+ try {
588
+ // 4. Store first block (R - the randomizer block)
589
+ // Note: If this was selected from existing blocks, it's already stored
590
+ // We still create a block handle for it to get the ID
591
+ const block1 = new rawData_1.RawDataBlock(this._blockSize, randomBlock);
592
+ const block1Checksum = block1.idChecksum;
593
+ // Only store if not already in the store
594
+ if (!(await this.has(block1Checksum))) {
595
+ await this.setData(block1, options);
596
+ block1Stored = true;
597
+ }
598
+ block1Id = block1Checksum.toHex();
599
+ // 5. Store second block (CBL XOR R)
600
+ const block2 = new rawData_1.RawDataBlock(this._blockSize, xorResult);
601
+ await this.setData(block2, options);
602
+ const block2Id = block2.idChecksum.toHex();
603
+ // 6. Get parity block IDs if FEC redundancy was applied
604
+ let block1ParityIds;
605
+ let block2ParityIds;
606
+ const block1Meta = await this.getMetadata(block1Id);
607
+ if (block1Meta?.parityBlockIds?.length) {
608
+ block1ParityIds = block1Meta.parityBlockIds;
609
+ }
610
+ const block2Meta = await this.getMetadata(block2Id);
611
+ if (block2Meta?.parityBlockIds?.length) {
612
+ block2ParityIds = block2Meta.parityBlockIds;
613
+ }
614
+ // 7. Generate magnet URL
615
+ const magnetUrl = this.generateCBLMagnetUrl(block1Id, block2Id, this._blockSize, block1ParityIds, block2ParityIds, options?.isEncrypted);
616
+ return {
617
+ blockId1: block1Id,
618
+ blockId2: block2Id,
619
+ blockSize: this._blockSize,
620
+ magnetUrl,
621
+ block1ParityIds,
622
+ block2ParityIds,
623
+ isEncrypted: options?.isEncrypted,
624
+ };
625
+ }
626
+ catch (error) {
627
+ // Rollback: delete block1 if it was stored by us
628
+ if (block1Stored && block1Id) {
629
+ try {
630
+ await this.deleteData(this.hexToChecksum(block1Id));
631
+ }
632
+ catch {
633
+ // Ignore rollback errors
634
+ }
635
+ }
636
+ throw error;
637
+ }
638
+ }
639
+ /**
640
+ * Select an existing block from the store as a randomizer, or generate a new one.
641
+ *
642
+ * Following OFFSystem principles:
643
+ * - Preferentially select existing blocks from the cache as randomizers
644
+ * - Only generate new random blocks if insufficient blocks exist
645
+ * - All blocks in the store look random and can be used as randomizers
646
+ *
647
+ * @param size - The required size of the randomizer block
648
+ * @returns A Uint8Array containing the randomizer data
649
+ */
650
+ async selectOrGenerateRandomizer(size) {
651
+ // Get all block IDs from the store
652
+ const blockIds = Array.from(this.blocks.keys());
653
+ // If we have existing blocks, try to use one as a randomizer
654
+ if (blockIds.length > 0) {
655
+ // Select a random block from the existing blocks
656
+ const randomIndex = Math.floor(Math.random() * blockIds.length);
657
+ const selectedBlockId = blockIds[randomIndex];
658
+ try {
659
+ const block = this.blocks.get(selectedBlockId);
660
+ if (block && block.data.length >= size) {
661
+ // Use the first 'size' bytes of the existing block as the randomizer
662
+ return block.data.slice(0, size);
663
+ }
664
+ }
665
+ catch {
666
+ // If we can't retrieve the block, fall through to generation
667
+ }
668
+ }
669
+ // Fall back to generating a new random block using CSPRNG
670
+ // This happens when:
671
+ // - The store is empty (early in block store lifecycle)
672
+ // - No suitable blocks were found
673
+ return xor_1.XorService.generateKey(size);
674
+ }
675
+ /**
676
+ * Retrieve and reconstruct a CBL from its whitened components.
677
+ *
678
+ * This method:
679
+ * 1. Retrieves both blocks (using parity recovery if needed)
680
+ * 2. XORs the blocks to reconstruct the padded CBL
681
+ * 3. Unpads to get the original CBL data
682
+ *
683
+ * @param blockId1 - First block ID (Checksum or hex string)
684
+ * @param blockId2 - Second block ID (Checksum or hex string)
685
+ * @param block1ParityIds - Optional parity block IDs for block 1 recovery
686
+ * @param block2ParityIds - Optional parity block IDs for block 2 recovery
687
+ * @returns The original CBL data as Uint8Array
688
+ * @throws StoreError if either block is not found or reconstruction fails
689
+ */
690
+ async retrieveCBL(blockId1, blockId2, block1ParityIds, block2ParityIds) {
691
+ // 1. Retrieve first block (with recovery if needed)
692
+ const b1Checksum = typeof blockId1 === 'string' ? this.hexToChecksum(blockId1) : blockId1;
693
+ let block1Data;
694
+ try {
695
+ block1Data = await this.getData(b1Checksum);
696
+ }
697
+ catch (error) {
698
+ // Attempt recovery using parity blocks if available
699
+ if (block1ParityIds?.length) {
700
+ const recovery = await this.recoverBlock(b1Checksum);
701
+ if (recovery.success && recovery.recoveredBlock) {
702
+ block1Data = recovery.recoveredBlock;
703
+ }
704
+ else {
705
+ throw new storeError_1.StoreError(storeErrorType_1.StoreErrorType.KeyNotFound, undefined, {
706
+ KEY: this.keyToHex(blockId1),
707
+ ERROR: 'Block 1 not found and recovery failed',
708
+ });
709
+ }
710
+ }
711
+ else {
712
+ throw error;
713
+ }
714
+ }
715
+ // 2. Retrieve second block (with recovery if needed)
716
+ const b2Checksum = typeof blockId2 === 'string' ? this.hexToChecksum(blockId2) : blockId2;
717
+ let block2Data;
718
+ try {
719
+ block2Data = await this.getData(b2Checksum);
720
+ }
721
+ catch (error) {
722
+ // Attempt recovery using parity blocks if available
723
+ if (block2ParityIds?.length) {
724
+ const recovery = await this.recoverBlock(b2Checksum);
725
+ if (recovery.success && recovery.recoveredBlock) {
726
+ block2Data = recovery.recoveredBlock;
727
+ }
728
+ else {
729
+ throw new storeError_1.StoreError(storeErrorType_1.StoreErrorType.KeyNotFound, undefined, {
730
+ KEY: this.keyToHex(blockId2),
731
+ ERROR: 'Block 2 not found and recovery failed',
732
+ });
733
+ }
734
+ }
735
+ else {
736
+ throw error;
737
+ }
738
+ }
739
+ // 3. XOR to reconstruct padded CBL (order doesn't matter due to commutativity)
740
+ const reconstructedPadded = (0, xorUtils_1.xorArrays)(block1Data.data, block2Data.data);
741
+ // 4. Remove padding to get original CBL
742
+ return (0, xorUtils_1.unpadCblData)(reconstructedPadded);
743
+ }
744
+ /**
745
+ * Parse a whitened CBL magnet URL and extract component IDs.
746
+ *
747
+ * Expected format: magnet:?xt=urn:brightchain:cbl&bs=<block_size>&b1=<id>&b2=<id>[&p1=<parity_ids>][&p2=<parity_ids>][&enc=1]
748
+ *
749
+ * @param magnetUrl - The magnet URL to parse
750
+ * @returns Object containing block IDs, block size, parity IDs (if any), and encryption flag
751
+ * @throws Error if the URL format is invalid
752
+ */
753
+ parseCBLMagnetUrl(magnetUrl) {
754
+ // Validate basic URL format
755
+ if (!magnetUrl || !magnetUrl.startsWith('magnet:?')) {
756
+ throw new Error('Invalid magnet URL: must start with "magnet:?"');
757
+ }
758
+ // Parse URL parameters
759
+ const queryString = magnetUrl.substring('magnet:?'.length);
760
+ const params = new URLSearchParams(queryString);
761
+ // Validate xt parameter
762
+ const xt = params.get('xt');
763
+ if (xt !== 'urn:brightchain:cbl') {
764
+ throw new Error('Invalid magnet URL: xt parameter must be "urn:brightchain:cbl"');
765
+ }
766
+ // Extract required parameters
767
+ const blockId1 = params.get('b1');
768
+ const blockId2 = params.get('b2');
769
+ const blockSizeStr = params.get('bs');
770
+ if (!blockId1) {
771
+ throw new Error('Invalid magnet URL: missing b1 parameter');
772
+ }
773
+ if (!blockId2) {
774
+ throw new Error('Invalid magnet URL: missing b2 parameter');
775
+ }
776
+ if (!blockSizeStr) {
777
+ throw new Error('Invalid magnet URL: missing bs (block size) parameter');
778
+ }
779
+ const blockSize = parseInt(blockSizeStr, 10);
780
+ if (isNaN(blockSize) || blockSize <= 0) {
781
+ throw new Error('Invalid magnet URL: invalid block size');
782
+ }
783
+ // Parse optional parity block IDs
784
+ const p1Param = params.get('p1');
785
+ const p2Param = params.get('p2');
786
+ const block1ParityIds = p1Param
787
+ ? p1Param.split(',').filter((id) => id)
788
+ : undefined;
789
+ const block2ParityIds = p2Param
790
+ ? p2Param.split(',').filter((id) => id)
791
+ : undefined;
792
+ // Parse encryption flag
793
+ const isEncrypted = params.get('enc') === '1';
794
+ return {
795
+ blockId1,
796
+ blockId2,
797
+ blockSize,
798
+ block1ParityIds,
799
+ block2ParityIds,
800
+ isEncrypted,
801
+ };
802
+ }
803
+ /**
804
+ * Generate a magnet URL for a whitened CBL.
805
+ *
806
+ * @param blockId1 - First block ID (Checksum or hex string)
807
+ * @param blockId2 - Second block ID (Checksum or hex string)
808
+ * @param blockSize - Block size in bytes
809
+ * @param block1ParityIds - Optional parity block IDs for block 1
810
+ * @param block2ParityIds - Optional parity block IDs for block 2
811
+ * @param isEncrypted - Whether the CBL is encrypted
812
+ * @returns The magnet URL string
813
+ */
814
+ generateCBLMagnetUrl(blockId1, blockId2, blockSize, block1ParityIds, block2ParityIds, isEncrypted) {
815
+ const b1Id = typeof blockId1 === 'string' ? blockId1 : blockId1.toHex();
816
+ const b2Id = typeof blockId2 === 'string' ? blockId2 : blockId2.toHex();
817
+ const params = new URLSearchParams();
818
+ params.set('xt', 'urn:brightchain:cbl');
819
+ params.set('bs', blockSize.toString());
820
+ params.set('b1', b1Id);
821
+ params.set('b2', b2Id);
822
+ // Add parity block IDs if present
823
+ if (block1ParityIds?.length) {
824
+ params.set('p1', block1ParityIds.join(','));
825
+ }
826
+ if (block2ParityIds?.length) {
827
+ params.set('p2', block2ParityIds.join(','));
828
+ }
829
+ // Add encryption flag if encrypted
830
+ if (isEncrypted) {
831
+ params.set('enc', '1');
832
+ }
833
+ return `magnet:?${params.toString()}`;
834
+ }
549
835
  }
550
836
  exports.MemoryBlockStore = MemoryBlockStore;
551
837
  //# sourceMappingURL=memoryBlockStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memoryBlockStore.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/stores/memoryBlockStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryBlockStore.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/stores/memoryBlockStore.ts"],"names":[],"mappings":"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"}
@@ -44,4 +44,15 @@ export * from './validator';
44
44
  * @see {@link checksumUtils}
45
45
  */
46
46
  export * from './checksumUtils';
47
+ /**
48
+ * XOR utilities for CBL whitening operations.
49
+ *
50
+ * Provides functions for:
51
+ * - XORing equal-length arrays
52
+ * - Padding data to block size
53
+ * - Unpadding CBL data
54
+ *
55
+ * @see {@link xorUtils}
56
+ */
57
+ export * from './xorUtils';
47
58
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;;;;;;;;;GAYG;AACH,cAAc,aAAa,CAAC;AAK5B;;;;;;;;;GASG;AACH,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;;;;;;;;;GAYG;AACH,cAAc,aAAa,CAAC;AAK5B;;;;;;;;;GASG;AACH,cAAc,iBAAiB,CAAC;AAKhC;;;;;;;;;GASG;AACH,cAAc,YAAY,CAAC"}
@@ -53,4 +53,18 @@ tslib_1.__exportStar(require("./validator"), exports);
53
53
  * @see {@link checksumUtils}
54
54
  */
55
55
  tslib_1.__exportStar(require("./checksumUtils"), exports);
56
+ // ============================================================================
57
+ // XOR Utilities
58
+ // ============================================================================
59
+ /**
60
+ * XOR utilities for CBL whitening operations.
61
+ *
62
+ * Provides functions for:
63
+ * - XORing equal-length arrays
64
+ * - Padding data to block size
65
+ * - Unpadding CBL data
66
+ *
67
+ * @see {@link xorUtils}
68
+ */
69
+ tslib_1.__exportStar(require("./xorUtils"), exports);
56
70
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,sDAA4B;AAE5B,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,0DAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AACH,sDAA4B;AAE5B,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,0DAAgC;AAEhC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAC/E;;;;;;;;;GASG;AACH,qDAA2B"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * XOR utility functions for CBL whitening operations.
3
+ * These utilities wrap XorService and add padding/unpadding for block-aligned storage.
4
+ */
5
+ /**
6
+ * XOR two Uint8Arrays of equal length.
7
+ * Delegates to XorService.xor for the actual XOR operation.
8
+ *
9
+ * @param a - First array
10
+ * @param b - Second array
11
+ * @returns XOR result (a ⊕ b)
12
+ * @throws Error if arrays have different lengths
13
+ */
14
+ export declare function xorArrays(a: Uint8Array, b: Uint8Array): Uint8Array;
15
+ /**
16
+ * XOR multiple Uint8Arrays of equal length together.
17
+ * Delegates to XorService.xorMultiple for the actual XOR operation.
18
+ *
19
+ * @param arrays - Array of Uint8Arrays to XOR together (must all be same length)
20
+ * @returns XOR result
21
+ * @throws Error if arrays have different lengths or if no arrays provided
22
+ */
23
+ export declare function xorMultipleArrays(arrays: Uint8Array[]): Uint8Array;
24
+ /**
25
+ * Pad data to a multiple of block size with length prefix and random bytes.
26
+ * The padding ensures that the data aligns with block boundaries.
27
+ *
28
+ * Format: [4-byte length prefix][original data][random padding]
29
+ *
30
+ * @param data - The data to pad
31
+ * @param blockSize - The target block size
32
+ * @returns Padded data with length prefix
33
+ */
34
+ export declare function padToBlockSize(data: Uint8Array, blockSize: number): Uint8Array;
35
+ /**
36
+ * Remove padding from CBL data by reading the length prefix.
37
+ * The length prefix tells us exactly how many bytes of original data follow.
38
+ *
39
+ * Format: [4-byte length prefix][original data][random padding]
40
+ *
41
+ * @param data - The padded CBL data with length prefix
42
+ * @returns Unpadded CBL data (original data without length prefix or padding)
43
+ * @throws Error if data is too short or length prefix is invalid
44
+ */
45
+ export declare function unpadCblData(data: Uint8Array): Uint8Array;
46
+ //# sourceMappingURL=xorUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xorUtils.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/xorUtils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAElE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAElE;AAQD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,GAChB,UAAU,CA8BZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAoBzD"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.xorArrays = xorArrays;
4
+ exports.xorMultipleArrays = xorMultipleArrays;
5
+ exports.padToBlockSize = padToBlockSize;
6
+ exports.unpadCblData = unpadCblData;
7
+ const xor_1 = require("../services/xor");
8
+ /**
9
+ * XOR utility functions for CBL whitening operations.
10
+ * These utilities wrap XorService and add padding/unpadding for block-aligned storage.
11
+ */
12
+ /**
13
+ * XOR two Uint8Arrays of equal length.
14
+ * Delegates to XorService.xor for the actual XOR operation.
15
+ *
16
+ * @param a - First array
17
+ * @param b - Second array
18
+ * @returns XOR result (a ⊕ b)
19
+ * @throws Error if arrays have different lengths
20
+ */
21
+ function xorArrays(a, b) {
22
+ return xor_1.XorService.xor(a, b);
23
+ }
24
+ /**
25
+ * XOR multiple Uint8Arrays of equal length together.
26
+ * Delegates to XorService.xorMultiple for the actual XOR operation.
27
+ *
28
+ * @param arrays - Array of Uint8Arrays to XOR together (must all be same length)
29
+ * @returns XOR result
30
+ * @throws Error if arrays have different lengths or if no arrays provided
31
+ */
32
+ function xorMultipleArrays(arrays) {
33
+ return xor_1.XorService.xorMultiple(arrays);
34
+ }
35
+ /**
36
+ * Length prefix size in bytes (4 bytes = 32-bit unsigned integer).
37
+ * This allows for data up to ~4GB in size.
38
+ */
39
+ const LENGTH_PREFIX_SIZE = 4;
40
+ /**
41
+ * Pad data to a multiple of block size with length prefix and random bytes.
42
+ * The padding ensures that the data aligns with block boundaries.
43
+ *
44
+ * Format: [4-byte length prefix][original data][random padding]
45
+ *
46
+ * @param data - The data to pad
47
+ * @param blockSize - The target block size
48
+ * @returns Padded data with length prefix
49
+ */
50
+ function padToBlockSize(data, blockSize) {
51
+ if (blockSize <= 0) {
52
+ throw new Error(`Block size must be positive: ${blockSize}`);
53
+ }
54
+ // Total size needed: length prefix + data
55
+ const totalDataSize = LENGTH_PREFIX_SIZE + data.length;
56
+ // Calculate padded size (round up to next block boundary)
57
+ const paddedSize = Math.ceil(totalDataSize / blockSize) * blockSize;
58
+ // Create padded array
59
+ const padded = new Uint8Array(paddedSize);
60
+ // Write length prefix (big-endian 32-bit unsigned integer)
61
+ const view = new DataView(padded.buffer);
62
+ view.setUint32(0, data.length, false); // false = big-endian
63
+ // Copy original data after length prefix
64
+ padded.set(data, LENGTH_PREFIX_SIZE);
65
+ // Fill remaining bytes with random data for security
66
+ if (paddedSize > totalDataSize) {
67
+ const paddingBytes = padded.subarray(totalDataSize);
68
+ xor_1.XorService.generateKey(paddingBytes.length).forEach((byte, i) => {
69
+ paddingBytes[i] = byte;
70
+ });
71
+ }
72
+ return padded;
73
+ }
74
+ /**
75
+ * Remove padding from CBL data by reading the length prefix.
76
+ * The length prefix tells us exactly how many bytes of original data follow.
77
+ *
78
+ * Format: [4-byte length prefix][original data][random padding]
79
+ *
80
+ * @param data - The padded CBL data with length prefix
81
+ * @returns Unpadded CBL data (original data without length prefix or padding)
82
+ * @throws Error if data is too short or length prefix is invalid
83
+ */
84
+ function unpadCblData(data) {
85
+ if (data.length < LENGTH_PREFIX_SIZE) {
86
+ throw new Error(`Invalid padded data: too short (${data.length} bytes, need at least ${LENGTH_PREFIX_SIZE})`);
87
+ }
88
+ // Read length prefix (big-endian 32-bit unsigned integer)
89
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
90
+ const originalLength = view.getUint32(0, false); // false = big-endian
91
+ // Validate length
92
+ if (originalLength > data.length - LENGTH_PREFIX_SIZE) {
93
+ throw new Error(`Invalid length prefix: claims ${originalLength} bytes but only ${data.length - LENGTH_PREFIX_SIZE} available`);
94
+ }
95
+ // Return original data (after length prefix, up to original length)
96
+ return data.subarray(LENGTH_PREFIX_SIZE, LENGTH_PREFIX_SIZE + originalLength);
97
+ }
98
+ //# sourceMappingURL=xorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xorUtils.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/utils/xorUtils.ts"],"names":[],"mappings":";;AAgBA,8BAEC;AAUD,8CAEC;AAkBD,wCAiCC;AAYD,oCAoBC;AAjHD,yCAA6C;AAE7C;;;GAGG;AAEH;;;;;;;;GAQG;AACH,SAAgB,SAAS,CAAC,CAAa,EAAE,CAAa;IACpD,OAAO,gBAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,MAAoB;IACpD,OAAO,gBAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B;;;;;;;;;GASG;AACH,SAAgB,cAAc,CAC5B,IAAgB,EAChB,SAAiB;IAEjB,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,0CAA0C;IAC1C,MAAM,aAAa,GAAG,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC;IAEvD,0DAA0D;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAEpE,sBAAsB;IACtB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IAE1C,2DAA2D;IAC3D,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB;IAE5D,yCAAyC;IACzC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAErC,qDAAqD;IACrD,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACpD,gBAAU,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9D,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAAC,IAAgB;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,CAAC,MAAM,yBAAyB,kBAAkB,GAAG,CAC7F,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB;IAEtE,kBAAkB;IAClB,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,iCAAiC,cAAc,mBAAmB,IAAI,CAAC,MAAM,GAAG,kBAAkB,YAAY,CAC/G,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,cAAc,CAAC,CAAC;AAChF,CAAC"}