@brightchain/brightchain-lib 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +348 -87
  2. package/package.json +15 -1
  3. package/src/browser.d.ts +5 -1
  4. package/src/browser.d.ts.map +1 -1
  5. package/src/browser.js +10 -2
  6. package/src/browser.js.map +1 -1
  7. package/src/index.d.ts +2 -1
  8. package/src/index.d.ts.map +1 -1
  9. package/src/index.js +2 -1
  10. package/src/index.js.map +1 -1
  11. package/src/lib/blockPaddingTransform.d.ts +2 -2
  12. package/src/lib/blockPaddingTransform.d.ts.map +1 -1
  13. package/src/lib/blockPaddingTransform.js +26 -9
  14. package/src/lib/blockPaddingTransform.js.map +1 -1
  15. package/src/lib/blocks/base.d.ts +1 -1
  16. package/src/lib/blocks/base.d.ts.map +1 -1
  17. package/src/lib/blocks/encryptedBlockFactory.d.ts +2 -2
  18. package/src/lib/blocks/encryptedBlockFactory.d.ts.map +1 -1
  19. package/src/lib/blocks/encryptedBlockFactory.js +22 -16
  20. package/src/lib/blocks/encryptedBlockFactory.js.map +1 -1
  21. package/src/lib/blocks/ephemeral.d.ts +1 -1
  22. package/src/lib/blocks/ephemeral.d.ts.map +1 -1
  23. package/src/lib/blocks/ephemeral.js +8 -5
  24. package/src/lib/blocks/ephemeral.js.map +1 -1
  25. package/src/lib/blocks/memoryTuple.d.ts +12 -12
  26. package/src/lib/blocks/memoryTuple.d.ts.map +1 -1
  27. package/src/lib/blocks/memoryTuple.js +29 -15
  28. package/src/lib/blocks/memoryTuple.js.map +1 -1
  29. package/src/lib/blocks/random.d.ts +9 -13
  30. package/src/lib/blocks/random.d.ts.map +1 -1
  31. package/src/lib/blocks/random.js +25 -24
  32. package/src/lib/blocks/random.js.map +1 -1
  33. package/src/lib/blocks/rawData.d.ts +1 -5
  34. package/src/lib/blocks/rawData.d.ts.map +1 -1
  35. package/src/lib/blocks/rawData.js +8 -8
  36. package/src/lib/blocks/rawData.js.map +1 -1
  37. package/src/lib/blocks/whitened.d.ts +12 -12
  38. package/src/lib/blocks/whitened.d.ts.map +1 -1
  39. package/src/lib/blocks/whitened.js +32 -20
  40. package/src/lib/blocks/whitened.js.map +1 -1
  41. package/src/lib/browserBrightChain.d.ts +30 -0
  42. package/src/lib/browserBrightChain.d.ts.map +1 -0
  43. package/src/lib/browserBrightChain.js +82 -0
  44. package/src/lib/browserBrightChain.js.map +1 -0
  45. package/src/lib/browserCrypto.d.ts +9 -0
  46. package/src/lib/browserCrypto.d.ts.map +1 -0
  47. package/src/lib/browserCrypto.js +34 -0
  48. package/src/lib/browserCrypto.js.map +1 -0
  49. package/src/lib/browserKeyring.d.ts +21 -0
  50. package/src/lib/browserKeyring.d.ts.map +1 -0
  51. package/src/lib/browserKeyring.js +133 -0
  52. package/src/lib/browserKeyring.js.map +1 -0
  53. package/src/lib/browserStream.d.ts +40 -0
  54. package/src/lib/browserStream.d.ts.map +1 -0
  55. package/src/lib/browserStream.js +154 -0
  56. package/src/lib/browserStream.js.map +1 -0
  57. package/src/lib/cblStream.d.ts +2 -2
  58. package/src/lib/cblStream.d.ts.map +1 -1
  59. package/src/lib/cblStream.js +21 -43
  60. package/src/lib/cblStream.js.map +1 -1
  61. package/src/lib/enumerations/systemKeyringErrorType.d.ts +2 -1
  62. package/src/lib/enumerations/systemKeyringErrorType.d.ts.map +1 -1
  63. package/src/lib/enumerations/systemKeyringErrorType.js +1 -0
  64. package/src/lib/enumerations/systemKeyringErrorType.js.map +1 -1
  65. package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
  66. package/src/lib/errors/systemKeyringError.js +1 -0
  67. package/src/lib/errors/systemKeyringError.js.map +1 -1
  68. package/src/lib/interfaces/blocks/base.d.ts +1 -1
  69. package/src/lib/interfaces/blocks/base.d.ts.map +1 -1
  70. package/src/lib/interfaces/keyringEntry.d.ts +3 -3
  71. package/src/lib/interfaces/keyringEntry.d.ts.map +1 -1
  72. package/src/lib/primeTupleGeneratorStream.d.ts +2 -2
  73. package/src/lib/primeTupleGeneratorStream.d.ts.map +1 -1
  74. package/src/lib/primeTupleGeneratorStream.js +19 -9
  75. package/src/lib/primeTupleGeneratorStream.js.map +1 -1
  76. package/src/lib/secureHeapStorage.d.ts.map +1 -1
  77. package/src/lib/secureHeapStorage.js +8 -5
  78. package/src/lib/secureHeapStorage.js.map +1 -1
  79. package/src/lib/services/fec.service.js +4 -4
  80. package/src/lib/services/fec.service.js.map +1 -1
  81. package/src/lib/services/tuple.service.d.ts +5 -5
  82. package/src/lib/services/tuple.service.d.ts.map +1 -1
  83. package/src/lib/services/tuple.service.js +47 -38
  84. package/src/lib/services/tuple.service.js.map +1 -1
  85. package/src/lib/systemKeyring.d.ts +3 -11
  86. package/src/lib/systemKeyring.d.ts.map +1 -1
  87. package/src/lib/systemKeyring.js +7 -95
  88. package/src/lib/systemKeyring.js.map +1 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RandomBlock = void 0;
4
- const crypto_1 = require("crypto");
4
+ const browserCrypto_1 = require("../browserCrypto");
5
5
  const blockDataType_1 = require("../enumerations/blockDataType");
6
6
  const blockType_1 = require("../enumerations/blockType");
7
7
  const service_provider_1 = require("../services/service.provider");
@@ -23,8 +23,8 @@ class RandomBlock extends rawData_1.RawDataBlock {
23
23
  * Create a new random block
24
24
  */
25
25
  static new(blockSize, dateCreated) {
26
- const data = (0, crypto_1.randomBytes)(blockSize);
27
- return new RandomBlock(blockSize, data, dateCreated);
26
+ const data = (0, browserCrypto_1.randomBytes)(blockSize);
27
+ return new RandomBlock(blockSize, Buffer.from(data), dateCreated);
28
28
  }
29
29
  /**
30
30
  * Reconstitute a random block from existing data
@@ -61,36 +61,37 @@ class RandomBlock extends rawData_1.RawDataBlock {
61
61
  */
62
62
  get layerHeaderData() {
63
63
  // Random blocks don't have any layer-specific header data
64
- return Buffer.alloc(0);
64
+ return new Uint8Array(0);
65
65
  }
66
66
  /**
67
- * Get the complete header data from all layers
68
- */
69
- get fullHeaderData() {
70
- return Buffer.concat([super.fullHeaderData, this.layerHeaderData]);
71
- }
72
- /**
73
- * Convert a Readable stream to a Buffer
67
+ * Convert a Readable stream to a Uint8Array
74
68
  * @param readable - The readable stream to convert
75
- * @returns Promise that resolves to a Buffer
69
+ * @returns Promise that resolves to a Uint8Array
76
70
  */
77
- static async streamToBuffer(readable) {
71
+ static async streamToUint8Array(readable) {
78
72
  const chunks = [];
79
73
  for await (const chunk of readable) {
80
- chunks.push(Buffer.from(chunk));
74
+ chunks.push(new Uint8Array(chunk));
75
+ }
76
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
77
+ const result = new Uint8Array(totalLength);
78
+ let offset = 0;
79
+ for (const chunk of chunks) {
80
+ result.set(chunk, offset);
81
+ offset += chunk.length;
81
82
  }
82
- return Buffer.concat(chunks);
83
+ return result;
83
84
  }
84
85
  /**
85
- * Convert data to Buffer regardless of whether it's a Readable or Buffer
86
+ * Convert data to Uint8Array regardless of whether it's a Readable or Uint8Array
86
87
  * @param data - The data to convert
87
- * @returns Promise that resolves to a Buffer
88
+ * @returns Promise that resolves to a Uint8Array
88
89
  */
89
- static async toBuffer(data) {
90
- if (Buffer.isBuffer(data) || data instanceof Uint8Array) {
91
- return Buffer.from(data);
90
+ static async toUint8Array(data) {
91
+ if (data instanceof Uint8Array) {
92
+ return data;
92
93
  }
93
- return RandomBlock.streamToBuffer(data);
94
+ return RandomBlock.streamToUint8Array(data);
94
95
  }
95
96
  /**
96
97
  * XOR this block with another block
@@ -99,9 +100,9 @@ class RandomBlock extends rawData_1.RawDataBlock {
99
100
  if (this.blockSize !== other.blockSize) {
100
101
  throw new Error('Block sizes must match');
101
102
  }
102
- const thisData = await RandomBlock.toBuffer(this.data);
103
- const otherData = await RandomBlock.toBuffer(other.data);
104
- const result = Buffer.alloc(thisData.length);
103
+ const thisData = await RandomBlock.toUint8Array(this.data);
104
+ const otherData = await RandomBlock.toUint8Array(other.data);
105
+ const result = new Uint8Array(thisData.length);
105
106
  for (let i = 0; i < thisData.length; i++) {
106
107
  result[i] = thisData[i] ^ otherData[i];
107
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/random.ts"],"names":[],"mappings":";;;AACA,mCAAqC;AAErC,iEAA8D;AAE9D,yDAAsD;AACtD,mEAA+D;AAE/D,uCAAyC;AAEzC;;;;GAIG;AACH,MAAa,WAAY,SAAQ,sBAAY;IAC3C,YACE,SAAoB,EACpB,IAAY,EACZ,WAAkB,EAClB,QAA6B;QAE7B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CACH,SAAS,EACT,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,qBAAS,CAAC,MAAM,EAChB,6BAAa,CAAC,OAAO,EACrB,IAAI,EAAE,UAAU;QAChB,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,GAAG,CAAC,SAAoB,EAAE,WAAkB;QACxD,MAAM,IAAI,GAAG,IAAA,oBAAW,EAAC,SAAmB,CAAC,CAAC;QAC9C,OAAO,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,YAAY,CACxB,SAAoB,EACpB,IAAY,EACZ,WAAkB,EAClB,QAA6B;QAE7B,OAAO,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,IAAoB,SAAS;QAC3B,OAAO,qBAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAoB,aAAa;QAC/B,OAAO,6BAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAoB,UAAU;QAC5B,OAAO,KAAK,CAAC,CAAC,oCAAoC;IACpD,CAAC;IAED;;OAEG;IACH,IAAoB,UAAU;QAC5B,OAAO,KAAK,CAAC,CAAC,oCAAoC;IACpD,CAAC;IAED;;OAEG;IACH,IAAoB,eAAe;QACjC,0DAA0D;QAC1D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAoB,cAAc;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAkB;QACpD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAA2B;QACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YACxD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,GAAG,CAAsB,KAAQ;QAC5C,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,4DAA4D;QAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,WAOpB,CAAC;QAEP,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,MAAM,EACN,IAAI,IAAI,EAAE,EACV,kCAAe,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,EACvE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAC7B,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CACpC,CAAC;IACJ,CAAC;CACF;AAlJD,kCAkJC"}
1
+ {"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/random.ts"],"names":[],"mappings":"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"}
@@ -60,10 +60,6 @@ export declare class RawDataBlock extends BaseBlock {
60
60
  /**
61
61
  * Get this layer's header data
62
62
  */
63
- get layerHeaderData(): Buffer;
64
- /**
65
- * Get the complete header data from all layers
66
- */
67
- get fullHeaderData(): Buffer;
63
+ get layerHeaderData(): Uint8Array;
68
64
  }
69
65
  //# sourceMappingURL=rawData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rawData.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/rawData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAItD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAGjC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,WAAW,CAAC,EAAE,IAAI,EAClB,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,SAAS,GAAE,SAA6B,EACxC,aAAa,GAAE,aAAqC,EACpD,OAAO,UAAO,EACd,UAAU,UAAO;IAoCnB;;OAEG;IACH,IAAoB,IAAI,IAAI,UAAU,CAKrC;IAED;;OAEG;IACH,IAAoB,YAAY,IAAI,UAAU,CAM7C;IAED,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAED,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED,IAAW,SAAS,IAAI,UAAU,CAKjC;IAED;;OAEG;IACH,IAAW,sBAAsB,IAAI,MAAM,CAE1C;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;;OAGG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAWlC;;;OAGG;IACa,YAAY,IAAI,IAAI;IAIpC;;;OAGG;IACmB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD;;;OAGG;IACa,QAAQ,IAAI,IAAI;IAIhC;;OAEG;IACH,IAAoB,eAAe,IAAI,MAAM,CAG5C;IAED;;OAEG;IACH,IAAoB,cAAc,IAAI,MAAM,CAE3C;CACF"}
1
+ {"version":3,"file":"rawData.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/rawData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAItD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAGjC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,WAAW,CAAC,EAAE,IAAI,EAClB,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,SAAS,GAAE,SAA6B,EACxC,aAAa,GAAE,aAAqC,EACpD,OAAO,UAAO,EACd,UAAU,UAAO;IAoCnB;;OAEG;IACH,IAAoB,IAAI,IAAI,UAAU,CAKrC;IAED;;OAEG;IACH,IAAoB,YAAY,IAAI,UAAU,CAM7C;IAED,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAED,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED,IAAW,SAAS,IAAI,UAAU,CAKjC;IAED;;OAEG;IACH,IAAW,sBAAsB,IAAI,MAAM,CAE1C;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;;OAGG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAkBlC;;;OAGG;IACa,YAAY,IAAI,IAAI;IAIpC;;;OAGG;IACmB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpD;;;OAGG;IACa,QAAQ,IAAI,IAAI;IAIhC;;OAEG;IACH,IAAoB,eAAe,IAAI,UAAU,CAGhD;CACF"}
@@ -88,9 +88,15 @@ class RawDataBlock extends base_1.BaseBlock {
88
88
  */
89
89
  validateInternal() {
90
90
  const calculatedChecksum = serviceLocator_1.ServiceLocator.getServiceProvider().checksumService.calculateChecksum(this._data);
91
- if (!Buffer.from(calculatedChecksum).equals(Buffer.from(this.idChecksum))) {
91
+ // Compare checksums using array comparison
92
+ if (calculatedChecksum.length !== this.idChecksum.length) {
92
93
  throw new checksumMismatch_1.ChecksumMismatchError(this.idChecksum, calculatedChecksum);
93
94
  }
95
+ for (let i = 0; i < calculatedChecksum.length; i++) {
96
+ if (calculatedChecksum[i] !== this.idChecksum[i]) {
97
+ throw new checksumMismatch_1.ChecksumMismatchError(this.idChecksum, calculatedChecksum);
98
+ }
99
+ }
94
100
  }
95
101
  /**
96
102
  * Synchronously validate the block's data
@@ -118,13 +124,7 @@ class RawDataBlock extends base_1.BaseBlock {
118
124
  */
119
125
  get layerHeaderData() {
120
126
  // Raw data blocks don't have any layer-specific header data
121
- return Buffer.alloc(0);
122
- }
123
- /**
124
- * Get the complete header data from all layers
125
- */
126
- get fullHeaderData() {
127
- return Buffer.concat([super.fullHeaderData, this.layerHeaderData]);
127
+ return new Uint8Array(0);
128
128
  }
129
129
  }
130
130
  exports.RawDataBlock = RawDataBlock;
@@ -1 +1 @@
1
- {"version":3,"file":"rawData.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/rawData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rawData.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/rawData.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ import { RawDataBlock } from './rawData';
12
12
  * 3. Provide privacy without encryption overhead
13
13
  */
14
14
  export declare class WhitenedBlock extends RawDataBlock {
15
- constructor(blockSize: BlockSize, data: Buffer, checksum?: ChecksumUint8Array, dateCreated?: Date, canRead?: boolean, canPersist?: boolean);
15
+ constructor(blockSize: BlockSize, data: Uint8Array, checksum?: ChecksumUint8Array, dateCreated?: Date, canRead?: boolean, canPersist?: boolean);
16
16
  /**
17
17
  * The type of the block
18
18
  */
@@ -24,7 +24,7 @@ export declare class WhitenedBlock extends RawDataBlock {
24
24
  /**
25
25
  * The data in the block, excluding any metadata or other overhead
26
26
  */
27
- get layerPayload(): Buffer;
27
+ get layerPayload(): Uint8Array;
28
28
  /**
29
29
  * Whether the block can be encrypted
30
30
  */
@@ -36,19 +36,19 @@ export declare class WhitenedBlock extends RawDataBlock {
36
36
  /**
37
37
  * Get the complete header data from all layers
38
38
  */
39
- get fullHeaderData(): Buffer;
39
+ get fullHeaderData(): Uint8Array;
40
40
  /**
41
- * Convert a Readable stream to a Buffer
41
+ * Convert a Readable stream to a Uint8Array
42
42
  * @param readable - The readable stream to convert
43
- * @returns Promise that resolves to a Buffer
43
+ * @returns Promise that resolves to a Uint8Array
44
44
  */
45
- private static streamToBuffer;
45
+ private static streamToUint8Array;
46
46
  /**
47
- * Convert data to Buffer regardless of whether it's a Readable or Buffer
47
+ * Convert data to Uint8Array regardless of whether it's a Readable or Uint8Array
48
48
  * @param data - The data to convert
49
- * @returns Promise that resolves to a Buffer
49
+ * @returns Promise that resolves to a Uint8Array
50
50
  */
51
- private static toBuffer;
51
+ private static toUint8Array;
52
52
  /**
53
53
  * XOR this block with another block
54
54
  */
@@ -56,14 +56,14 @@ export declare class WhitenedBlock extends RawDataBlock {
56
56
  /**
57
57
  * Get this layer's header data
58
58
  */
59
- get layerHeaderData(): Buffer;
59
+ get layerHeaderData(): Uint8Array;
60
60
  /**
61
61
  * Create a new whitened block by XORing data with random data
62
62
  */
63
- static fromData(blockSize: BlockSize, data: Buffer, randomData: Buffer): WhitenedBlock;
63
+ static fromData(blockSize: BlockSize, data: Uint8Array, randomData: Uint8Array): WhitenedBlock;
64
64
  /**
65
65
  * Create a new whitened block with specified length metadata
66
66
  */
67
- static from(blockSize: BlockSize, data: Buffer, checksum?: ChecksumUint8Array, dateCreated?: Date, lengthWithoutPadding?: number, canRead?: boolean, canPersist?: boolean): Promise<WhitenedBlock>;
67
+ static from(blockSize: BlockSize, data: Uint8Array, checksum?: ChecksumUint8Array, dateCreated?: Date, lengthWithoutPadding?: number, canRead?: boolean, canPersist?: boolean): Promise<WhitenedBlock>;
68
68
  }
69
69
  //# sourceMappingURL=whitened.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"whitened.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/whitened.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAItD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,YAAY;gBAE3C,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,WAAW,CAAC,EAAE,IAAI,EAClB,OAAO,UAAO,EACd,UAAU,UAAO;IAcnB;;OAEG;IACH,IAAoB,SAAS,IAAI,SAAS,CAEzC;IAED;;OAEG;IACH,IAAoB,aAAa,IAAI,aAAa,CAEjD;IAED;;OAEG;IACH,IAAoB,YAAY,IAAI,MAAM,CAMzC;IAED;;OAEG;IACH,IAAoB,UAAU,IAAI,OAAO,CAExC;IAED;;OAEG;IACH,IAAoB,UAAU,IAAI,OAAO,CAExC;IAED;;OAEG;IACH,IAAoB,cAAc,IAAI,MAAM,CAE3C;IAED;;;;OAIG;mBACkB,cAAc;IAQnC;;;;OAIG;mBACkB,QAAQ;IAO7B;;OAEG;IACU,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmC3D;;OAEG;IACH,IAAoB,eAAe,IAAI,MAAM,CAG5C;IAED;;OAEG;WACW,QAAQ,CACpB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,aAAa;IAmBhB;;OAEG;WACiB,IAAI,CACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,WAAW,CAAC,EAAE,IAAI,EAClB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,OAAO,UAAO,EACd,UAAU,UAAO,GAChB,OAAO,CAAC,aAAa,CAAC;CA0C1B"}
1
+ {"version":3,"file":"whitened.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/whitened.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAItD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,YAAY;gBAE3C,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,WAAW,CAAC,EAAE,IAAI,EAClB,OAAO,UAAO,EACd,UAAU,UAAO;IAcnB;;OAEG;IACH,IAAoB,SAAS,IAAI,SAAS,CAEzC;IAED;;OAEG;IACH,IAAoB,aAAa,IAAI,aAAa,CAEjD;IAED;;OAEG;IACH,IAAoB,YAAY,IAAI,UAAU,CAM7C;IAED;;OAEG;IACH,IAAoB,UAAU,IAAI,OAAO,CAExC;IAED;;OAEG;IACH,IAAoB,UAAU,IAAI,OAAO,CAExC;IAED;;OAEG;IACH,IAAoB,cAAc,IAAI,UAAU,CAO/C;IAED;;;;OAIG;mBACkB,kBAAkB;IAevC;;;;OAIG;mBACkB,YAAY;IAOjC;;OAEG;IACU,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmC3D;;OAEG;IACH,IAAoB,eAAe,IAAI,UAAU,CAGhD;IAED;;OAEG;WACW,QAAQ,CACpB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,GACrB,aAAa;IAmBhB;;OAEG;WACiB,IAAI,CACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,WAAW,CAAC,EAAE,IAAI,EAClB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,OAAO,UAAO,EACd,UAAU,UAAO,GAChB,OAAO,CAAC,aAAa,CAAC;CA0C1B"}
@@ -39,7 +39,7 @@ class WhitenedBlock extends rawData_1.RawDataBlock {
39
39
  throw new whitenedError_1.WhitenedError(whitenedErrorType_1.WhitenedErrorType.BlockNotReadable);
40
40
  }
41
41
  // For whitened blocks, like raw data blocks, the payload is the entire data
42
- return Buffer.from(this.data);
42
+ return new Uint8Array(this.data);
43
43
  }
44
44
  /**
45
45
  * Whether the block can be encrypted
@@ -57,30 +57,42 @@ class WhitenedBlock extends rawData_1.RawDataBlock {
57
57
  * Get the complete header data from all layers
58
58
  */
59
59
  get fullHeaderData() {
60
- return Buffer.concat([super.fullHeaderData, this.layerHeaderData]);
60
+ const superHeader = super.fullHeaderData;
61
+ const layerHeader = this.layerHeaderData;
62
+ const result = new Uint8Array(superHeader.length + layerHeader.length);
63
+ result.set(superHeader);
64
+ result.set(layerHeader, superHeader.length);
65
+ return result;
61
66
  }
62
67
  /**
63
- * Convert a Readable stream to a Buffer
68
+ * Convert a Readable stream to a Uint8Array
64
69
  * @param readable - The readable stream to convert
65
- * @returns Promise that resolves to a Buffer
70
+ * @returns Promise that resolves to a Uint8Array
66
71
  */
67
- static async streamToBuffer(readable) {
72
+ static async streamToUint8Array(readable) {
68
73
  const chunks = [];
69
74
  for await (const chunk of readable) {
70
- chunks.push(Buffer.from(chunk));
75
+ chunks.push(new Uint8Array(chunk));
71
76
  }
72
- return Buffer.concat(chunks);
77
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
78
+ const result = new Uint8Array(totalLength);
79
+ let offset = 0;
80
+ for (const chunk of chunks) {
81
+ result.set(chunk, offset);
82
+ offset += chunk.length;
83
+ }
84
+ return result;
73
85
  }
74
86
  /**
75
- * Convert data to Buffer regardless of whether it's a Readable or Buffer
87
+ * Convert data to Uint8Array regardless of whether it's a Readable or Uint8Array
76
88
  * @param data - The data to convert
77
- * @returns Promise that resolves to a Buffer
89
+ * @returns Promise that resolves to a Uint8Array
78
90
  */
79
- static async toBuffer(data) {
80
- if (Buffer.isBuffer(data) || data instanceof Uint8Array) {
81
- return Buffer.from(data);
91
+ static async toUint8Array(data) {
92
+ if (data instanceof Uint8Array) {
93
+ return data;
82
94
  }
83
- return WhitenedBlock.streamToBuffer(data);
95
+ return WhitenedBlock.streamToUint8Array(data);
84
96
  }
85
97
  /**
86
98
  * XOR this block with another block
@@ -89,9 +101,9 @@ class WhitenedBlock extends rawData_1.RawDataBlock {
89
101
  if (this.blockSize !== other.blockSize) {
90
102
  throw new whitenedError_1.WhitenedError(whitenedErrorType_1.WhitenedErrorType.BlockSizeMismatch);
91
103
  }
92
- const thisData = await WhitenedBlock.toBuffer(this.data);
93
- const otherData = await WhitenedBlock.toBuffer(other.data);
94
- const result = Buffer.alloc(thisData.length);
104
+ const thisData = await WhitenedBlock.toUint8Array(this.data);
105
+ const otherData = await WhitenedBlock.toUint8Array(other.data);
106
+ const result = new Uint8Array(thisData.length);
95
107
  for (let i = 0; i < thisData.length; i++) {
96
108
  result[i] = thisData[i] ^ otherData[i];
97
109
  }
@@ -105,7 +117,7 @@ class WhitenedBlock extends rawData_1.RawDataBlock {
105
117
  */
106
118
  get layerHeaderData() {
107
119
  // Whitened blocks don't have any layer-specific header data
108
- return Buffer.alloc(0);
120
+ return new Uint8Array(0);
109
121
  }
110
122
  /**
111
123
  * Create a new whitened block by XORing data with random data
@@ -117,7 +129,7 @@ class WhitenedBlock extends rawData_1.RawDataBlock {
117
129
  if (data.length > blockSize) {
118
130
  throw new whitenedError_1.WhitenedError(whitenedErrorType_1.WhitenedErrorType.InvalidBlockSize);
119
131
  }
120
- const result = Buffer.alloc(data.length);
132
+ const result = new Uint8Array(data.length);
121
133
  for (let i = 0; i < data.length; i++) {
122
134
  result[i] = data[i] ^ randomData[i];
123
135
  }
@@ -129,8 +141,8 @@ class WhitenedBlock extends rawData_1.RawDataBlock {
129
141
  */
130
142
  static async from(blockSize, data, checksum, dateCreated, lengthWithoutPadding, canRead = true, canPersist = true) {
131
143
  // Ensure data is padded to block size
132
- const paddedData = Buffer.alloc(blockSize);
133
- data.copy(paddedData);
144
+ const paddedData = new Uint8Array(blockSize);
145
+ paddedData.set(data);
134
146
  // Create metadata with original length
135
147
  const metadata = new blockMetadata_1.BlockMetadata(blockSize, blockType_1.BlockType.OwnerFreeWhitenedBlock, blockDataType_1.BlockDataType.RawData, lengthWithoutPadding ?? data.length, dateCreated ?? new Date());
136
148
  // Create block with padded data and preserve padding
@@ -1 +1 @@
1
- {"version":3,"file":"whitened.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/whitened.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"whitened.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/whitened.ts"],"names":[],"mappings":";;;AAEA,oDAAiD;AACjD,iEAA8D;AAE9D,yDAAsD;AACtD,yEAAsE;AACtE,2DAAwD;AACxD,mEAA+D;AAE/D,uCAAyC;AAEzC;;;;;;GAMG;AACH,MAAa,aAAc,SAAQ,sBAAY;IAC7C,YACE,SAAoB,EACpB,IAAgB,EAChB,QAA6B,EAC7B,WAAkB,EAClB,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,IAAI;QAEjB,KAAK,CACH,SAAS,EACT,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,qBAAS,CAAC,sBAAsB,EAChC,6BAAa,CAAC,OAAO,EACrB,OAAO,EACP,UAAU,CACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAoB,SAAS;QAC3B,OAAO,qBAAS,CAAC,sBAAsB,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAoB,aAAa;QAC/B,OAAO,6BAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAoB,YAAY;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,6BAAa,CAAC,qCAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,CAAC;QACD,4EAA4E;QAC5E,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAoB,UAAU;QAC5B,OAAO,KAAK,CAAC,CAAC,sCAAsC;IACtD,CAAC;IAED;;OAEG;IACH,IAAoB,UAAU;QAC5B,OAAO,KAAK,CAAC,CAAC,sCAAsC;IACtD,CAAC;IAED;;OAEG;IACH,IAAoB,cAAc;QAChC,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAkB;QACxD,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAA2B;QAC3D,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,GAAG,CAAsB,KAAQ;QAC5C,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,6BAAa,CAAC,qCAAiB,CAAC,iBAAiB,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,4DAA4D;QAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,WAOpB,CAAC;QACP,MAAM,QAAQ,GACZ,kCAAe,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE1E,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,MAAM,EACN,IAAI,IAAI,EAAE,EACV,QAAQ,EACR,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAC7B,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAoB,eAAe;QACjC,4DAA4D;QAC5D,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAQ,CACpB,SAAoB,EACpB,IAAgB,EAChB,UAAsB;QAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,6BAAa,CAAC,qCAAiB,CAAC,kBAAkB,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,6BAAa,CAAC,qCAAiB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,QAAQ,GACZ,kCAAe,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE1E,OAAO,IAAI,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,SAAoB,EACpB,IAAgB,EAChB,QAA6B,EAC7B,WAAkB,EAClB,oBAA6B,EAC7B,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,IAAI;QAEjB,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7C,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAErB,uCAAuC;QACvC,MAAM,QAAQ,GAAG,IAAI,6BAAa,CAChC,SAAS,EACT,qBAAS,CAAC,sBAAsB,EAChC,6BAAa,CAAC,OAAO,EACrB,oBAAoB,IAAI,IAAI,CAAC,MAAM,EACnC,WAAW,IAAI,IAAI,IAAI,EAAE,CAC1B,CAAC;QAEF,qDAAqD;QACrD,MAAM,KAAK,GAAG,IAAI,aAAa,CAC7B,SAAS,EACT,UAAU,EACV,QAAQ,EACR,WAAW,EACX,OAAO,EACP,UAAU,CACX,CAAC;QAEF,4DAA4D;QAC5D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;YACnC,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,4DAA4D;QAC5D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE;YACvC,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AArOD,sCAqOC"}
@@ -0,0 +1,30 @@
1
+ import { ChecksumUint8Array } from '@digitaldefiance/ecies-lib';
2
+ import { BlockSize } from './enumerations/blockSize';
3
+ import { MemoryBlockStore } from './stores/memoryBlockStore';
4
+ export interface BlockInfo {
5
+ id: string;
6
+ checksum: ChecksumUint8Array;
7
+ size: number;
8
+ index: number;
9
+ }
10
+ export interface FileReceipt {
11
+ id: string;
12
+ fileName: string;
13
+ originalSize: number;
14
+ blockCount: number;
15
+ blocks: BlockInfo[];
16
+ cblData: number[];
17
+ magnetUrl: string;
18
+ }
19
+ export declare class BrowserBrightChain {
20
+ private blockStore;
21
+ private blockSize;
22
+ constructor(blockSize?: BlockSize);
23
+ storeFile(fileData: Uint8Array, fileName?: string): Promise<FileReceipt>;
24
+ retrieveFile(receipt: FileReceipt): Promise<Uint8Array>;
25
+ private createCBL;
26
+ private createMagnetUrl;
27
+ getBlockStore(): MemoryBlockStore;
28
+ }
29
+ export { BrowserBrightChain as BrightChain };
30
+ //# sourceMappingURL=browserBrightChain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserBrightChain.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/browserBrightChain.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAEnB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAY;gBAEjB,SAAS,GAAE,SAA2B;IAK5C,SAAS,CACb,QAAQ,EAAE,UAAU,EACpB,QAAQ,SAAa,GACpB,OAAO,CAAC,WAAW,CAAC;IAwCjB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAkB7D,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,eAAe;IASvB,aAAa,IAAI,gBAAgB;CAGlC;AAGD,OAAO,EAAE,kBAAkB,IAAI,WAAW,EAAE,CAAC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrightChain = exports.BrowserBrightChain = void 0;
4
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
5
+ const rawData_1 = require("./blocks/rawData");
6
+ const blockSize_1 = require("./enumerations/blockSize");
7
+ const memoryBlockStore_1 = require("./stores/memoryBlockStore");
8
+ class BrowserBrightChain {
9
+ constructor(blockSize = blockSize_1.BlockSize.Small) {
10
+ this.blockSize = blockSize;
11
+ this.blockStore = new memoryBlockStore_1.MemoryBlockStore(blockSize);
12
+ }
13
+ async storeFile(fileData, fileName = 'untitled') {
14
+ const blocks = [];
15
+ const chunkSize = this.blockSize;
16
+ for (let i = 0; i < fileData.length; i += chunkSize) {
17
+ const chunk = fileData.slice(i, Math.min(i + chunkSize, fileData.length));
18
+ const paddedChunk = new Uint8Array(chunkSize);
19
+ paddedChunk.set(chunk);
20
+ if (chunk.length < chunkSize) {
21
+ crypto.getRandomValues(paddedChunk.subarray(chunk.length));
22
+ }
23
+ const block = new rawData_1.RawDataBlock(this.blockSize, paddedChunk);
24
+ await this.blockStore.setData(block);
25
+ blocks.push({
26
+ id: (0, ecies_lib_1.uint8ArrayToHex)(block.idChecksum),
27
+ checksum: block.idChecksum,
28
+ size: chunk.length,
29
+ index: blocks.length,
30
+ });
31
+ }
32
+ const cblData = this.createCBL(blocks, fileData.length, fileName);
33
+ const receiptId = (0, ecies_lib_1.uint8ArrayToHex)(new Uint8Array(32).map(() => Math.floor(Math.random() * 256)));
34
+ return {
35
+ id: receiptId,
36
+ fileName,
37
+ originalSize: fileData.length,
38
+ blockCount: blocks.length,
39
+ blocks,
40
+ cblData: Array.from(cblData),
41
+ magnetUrl: this.createMagnetUrl(receiptId, fileName, fileData.length),
42
+ };
43
+ }
44
+ async retrieveFile(receipt) {
45
+ const chunks = [];
46
+ for (const blockInfo of receipt.blocks) {
47
+ const block = await this.blockStore.getData(blockInfo.checksum);
48
+ chunks.push(block.data.slice(0, blockInfo.size));
49
+ }
50
+ const result = new Uint8Array(receipt.originalSize);
51
+ let offset = 0;
52
+ for (const chunk of chunks) {
53
+ result.set(chunk, offset);
54
+ offset += chunk.length;
55
+ }
56
+ return result;
57
+ }
58
+ createCBL(blocks, originalSize, fileName) {
59
+ const header = JSON.stringify({
60
+ version: 1,
61
+ fileName,
62
+ originalSize,
63
+ blockCount: blocks.length,
64
+ blocks: blocks.map((b) => ({ id: b.id, size: b.size })),
65
+ });
66
+ return new TextEncoder().encode(header);
67
+ }
68
+ createMagnetUrl(id, fileName, size) {
69
+ const params = new URLSearchParams({
70
+ xt: `urn:brightchain:${id}`,
71
+ dn: fileName,
72
+ xl: size.toString(),
73
+ });
74
+ return `magnet:?${params.toString()}`;
75
+ }
76
+ getBlockStore() {
77
+ return this.blockStore;
78
+ }
79
+ }
80
+ exports.BrowserBrightChain = BrowserBrightChain;
81
+ exports.BrightChain = BrowserBrightChain;
82
+ //# sourceMappingURL=browserBrightChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserBrightChain.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/browserBrightChain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Browser-compatible crypto utilities using Web Crypto API
3
+ */
4
+ /**
5
+ * Generate cryptographically secure random bytes using Web Crypto API
6
+ * Handles the 65,536 byte limit by chunking large requests
7
+ */
8
+ export declare function randomBytes(size: number): Uint8Array;
9
+ //# sourceMappingURL=browserCrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserCrypto.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/browserCrypto.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA2BpD"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * Browser-compatible crypto utilities using Web Crypto API
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.randomBytes = randomBytes;
7
+ /**
8
+ * Generate cryptographically secure random bytes using Web Crypto API
9
+ * Handles the 65,536 byte limit by chunking large requests
10
+ */
11
+ function randomBytes(size) {
12
+ if (size <= 0) {
13
+ return new Uint8Array(0);
14
+ }
15
+ // Web Crypto API has a limit of 65,536 bytes per call
16
+ const MAX_BYTES = 65536;
17
+ if (size <= MAX_BYTES) {
18
+ const bytes = new Uint8Array(size);
19
+ crypto.getRandomValues(bytes);
20
+ return bytes;
21
+ }
22
+ // For larger sizes, chunk the requests
23
+ const result = new Uint8Array(size);
24
+ let offset = 0;
25
+ while (offset < size) {
26
+ const chunkSize = Math.min(MAX_BYTES, size - offset);
27
+ const chunk = new Uint8Array(chunkSize);
28
+ crypto.getRandomValues(chunk);
29
+ result.set(chunk, offset);
30
+ offset += chunkSize;
31
+ }
32
+ return result;
33
+ }
34
+ //# sourceMappingURL=browserCrypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserCrypto.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/browserCrypto.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAMH,kCA2BC;AA/BD;;;GAGG;AACH,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACd,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,sDAAsD;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC;IAExB,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO,MAAM,GAAG,IAAI,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,SAAS,CAAC;IACtB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Browser-compatible keyring implementation using Web Crypto API and localStorage
3
+ */
4
+ export declare class BrowserKeyring {
5
+ private static instance;
6
+ private readonly keys;
7
+ private readonly accessLog;
8
+ private readonly maxAccessRate;
9
+ private constructor();
10
+ static getInstance(): BrowserKeyring;
11
+ private deriveKey;
12
+ storeKey(id: string, data: Uint8Array, password: string): Promise<void>;
13
+ retrieveKey(id: string, password: string): Promise<Uint8Array>;
14
+ private checkRateLimit;
15
+ private logAccess;
16
+ private persistToStorage;
17
+ private loadFromStorage;
18
+ initialize(): Promise<void>;
19
+ rotateKey(id: string, oldPassword: string, newPassword: string): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=browserKeyring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserKeyring.d.ts","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/browserKeyring.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAM;IAEpC,OAAO;WAKO,WAAW,IAAI,cAAc;YAO7B,SAAS;IA6BV,QAAQ,CACnB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IA6BH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA+B3E,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,SAAS;YAUH,gBAAgB;YAchB,eAAe;IAuBhB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,SAAS,CACpB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;CAIjB"}