@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.
- package/README.md +348 -87
- package/package.json +15 -1
- package/src/browser.d.ts +5 -1
- package/src/browser.d.ts.map +1 -1
- package/src/browser.js +10 -2
- package/src/browser.js.map +1 -1
- package/src/index.d.ts +2 -1
- package/src/index.d.ts.map +1 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/lib/blockPaddingTransform.d.ts +2 -2
- package/src/lib/blockPaddingTransform.d.ts.map +1 -1
- package/src/lib/blockPaddingTransform.js +26 -9
- package/src/lib/blockPaddingTransform.js.map +1 -1
- package/src/lib/blocks/base.d.ts +1 -1
- package/src/lib/blocks/base.d.ts.map +1 -1
- package/src/lib/blocks/encryptedBlockFactory.d.ts +2 -2
- package/src/lib/blocks/encryptedBlockFactory.d.ts.map +1 -1
- package/src/lib/blocks/encryptedBlockFactory.js +22 -16
- package/src/lib/blocks/encryptedBlockFactory.js.map +1 -1
- package/src/lib/blocks/ephemeral.d.ts +1 -1
- package/src/lib/blocks/ephemeral.d.ts.map +1 -1
- package/src/lib/blocks/ephemeral.js +8 -5
- package/src/lib/blocks/ephemeral.js.map +1 -1
- package/src/lib/blocks/memoryTuple.d.ts +12 -12
- package/src/lib/blocks/memoryTuple.d.ts.map +1 -1
- package/src/lib/blocks/memoryTuple.js +29 -15
- package/src/lib/blocks/memoryTuple.js.map +1 -1
- package/src/lib/blocks/random.d.ts +9 -13
- package/src/lib/blocks/random.d.ts.map +1 -1
- package/src/lib/blocks/random.js +25 -24
- package/src/lib/blocks/random.js.map +1 -1
- package/src/lib/blocks/rawData.d.ts +1 -5
- package/src/lib/blocks/rawData.d.ts.map +1 -1
- package/src/lib/blocks/rawData.js +8 -8
- package/src/lib/blocks/rawData.js.map +1 -1
- package/src/lib/blocks/whitened.d.ts +12 -12
- package/src/lib/blocks/whitened.d.ts.map +1 -1
- package/src/lib/blocks/whitened.js +32 -20
- package/src/lib/blocks/whitened.js.map +1 -1
- package/src/lib/browserBrightChain.d.ts +30 -0
- package/src/lib/browserBrightChain.d.ts.map +1 -0
- package/src/lib/browserBrightChain.js +82 -0
- package/src/lib/browserBrightChain.js.map +1 -0
- package/src/lib/browserCrypto.d.ts +9 -0
- package/src/lib/browserCrypto.d.ts.map +1 -0
- package/src/lib/browserCrypto.js +34 -0
- package/src/lib/browserCrypto.js.map +1 -0
- package/src/lib/browserKeyring.d.ts +21 -0
- package/src/lib/browserKeyring.d.ts.map +1 -0
- package/src/lib/browserKeyring.js +133 -0
- package/src/lib/browserKeyring.js.map +1 -0
- package/src/lib/browserStream.d.ts +40 -0
- package/src/lib/browserStream.d.ts.map +1 -0
- package/src/lib/browserStream.js +154 -0
- package/src/lib/browserStream.js.map +1 -0
- package/src/lib/cblStream.d.ts +2 -2
- package/src/lib/cblStream.d.ts.map +1 -1
- package/src/lib/cblStream.js +21 -43
- package/src/lib/cblStream.js.map +1 -1
- package/src/lib/enumerations/systemKeyringErrorType.d.ts +2 -1
- package/src/lib/enumerations/systemKeyringErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/systemKeyringErrorType.js +1 -0
- package/src/lib/enumerations/systemKeyringErrorType.js.map +1 -1
- package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
- package/src/lib/errors/systemKeyringError.js +1 -0
- package/src/lib/errors/systemKeyringError.js.map +1 -1
- package/src/lib/interfaces/blocks/base.d.ts +1 -1
- package/src/lib/interfaces/blocks/base.d.ts.map +1 -1
- package/src/lib/interfaces/keyringEntry.d.ts +3 -3
- package/src/lib/interfaces/keyringEntry.d.ts.map +1 -1
- package/src/lib/primeTupleGeneratorStream.d.ts +2 -2
- package/src/lib/primeTupleGeneratorStream.d.ts.map +1 -1
- package/src/lib/primeTupleGeneratorStream.js +19 -9
- package/src/lib/primeTupleGeneratorStream.js.map +1 -1
- package/src/lib/secureHeapStorage.d.ts.map +1 -1
- package/src/lib/secureHeapStorage.js +8 -5
- package/src/lib/secureHeapStorage.js.map +1 -1
- package/src/lib/services/fec.service.js +4 -4
- package/src/lib/services/fec.service.js.map +1 -1
- package/src/lib/services/tuple.service.d.ts +5 -5
- package/src/lib/services/tuple.service.d.ts.map +1 -1
- package/src/lib/services/tuple.service.js +47 -38
- package/src/lib/services/tuple.service.js.map +1 -1
- package/src/lib/systemKeyring.d.ts +3 -11
- package/src/lib/systemKeyring.d.ts.map +1 -1
- package/src/lib/systemKeyring.js +7 -95
- package/src/lib/systemKeyring.js.map +1 -1
package/src/lib/blocks/random.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RandomBlock = void 0;
|
|
4
|
-
const
|
|
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,
|
|
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
|
|
64
|
+
return new Uint8Array(0);
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
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
|
|
69
|
+
* @returns Promise that resolves to a Uint8Array
|
|
76
70
|
*/
|
|
77
|
-
static async
|
|
71
|
+
static async streamToUint8Array(readable) {
|
|
78
72
|
const chunks = [];
|
|
79
73
|
for await (const chunk of readable) {
|
|
80
|
-
chunks.push(
|
|
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
|
|
83
|
+
return result;
|
|
83
84
|
}
|
|
84
85
|
/**
|
|
85
|
-
* Convert data to
|
|
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
|
|
88
|
+
* @returns Promise that resolves to a Uint8Array
|
|
88
89
|
*/
|
|
89
|
-
static async
|
|
90
|
-
if (
|
|
91
|
-
return
|
|
90
|
+
static async toUint8Array(data) {
|
|
91
|
+
if (data instanceof Uint8Array) {
|
|
92
|
+
return data;
|
|
92
93
|
}
|
|
93
|
-
return RandomBlock.
|
|
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.
|
|
103
|
-
const otherData = await RandomBlock.
|
|
104
|
-
const result =
|
|
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,
|
|
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():
|
|
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;
|
|
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
|
-
|
|
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
|
|
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":";;;AACA,oDAAiD;AACjD,+EAA4E;AAC5E,iEAA8D;AAE9D,yDAAsD;AACtD,2CAAmD;AACnD,iEAAmE;AACnE,+DAA4D;AAC5D,iCAAmC;AAEnC;;;GAGG;AACH,MAAa,YAAa,SAAQ,gBAAS;IAGzC,YACE,SAAoB,EACpB,IAAgB,EAChB,WAAkB,EAClB,QAA6B,EAC7B,YAAuB,qBAAS,CAAC,OAAO,EACxC,gBAA+B,6BAAa,CAAC,OAAO,EACpD,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,IAAI;QAEjB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,CAAC,MAAM,yBAAyB,SAAS,GAAG,CACjE,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GACtB,+BAAc,CAAC,kBAAkB,EAAE,CAAC,eAAe,CAAC,iBAAiB,CACnE,IAAI,CACL,CAAC;QACJ,MAAM,QAAQ,GAAG,IAAI,6BAAa,CAChC,SAAS,EACT,SAAS,EACT,aAAa,EACb,IAAI,CAAC,MAAM,EACX,WAAW,IAAI,GAAG,CACnB,CAAC;QAEF,KAAK,CACH,SAAS,EACT,aAAa,EACb,QAAQ,IAAI,kBAAkB,EAC9B,QAAQ,EACR,OAAO,EACP,UAAU,CACX,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAoB,IAAI;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,wBAAgB,CAAC,2CAAoB,CAAC,kBAAkB,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAoB,YAAY;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,wBAAgB,CAAC,2CAAoB,CAAC,kBAAkB,CAAC,CAAC;QACtE,CAAC;QACD,sDAAsD;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAW,iBAAiB;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,IAAW,SAAS;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,wBAAgB,CAAC,2CAAoB,CAAC,kBAAkB,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAW,sBAAsB;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACO,gBAAgB;QACxB,MAAM,kBAAkB,GACtB,+BAAc,CAAC,kBAAkB,EAAE,CAAC,eAAe,CAAC,iBAAiB,CACnE,IAAI,CAAC,KAAK,CACX,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,
|
|
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:
|
|
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():
|
|
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():
|
|
39
|
+
get fullHeaderData(): Uint8Array;
|
|
40
40
|
/**
|
|
41
|
-
* Convert a Readable stream to a
|
|
41
|
+
* Convert a Readable stream to a Uint8Array
|
|
42
42
|
* @param readable - The readable stream to convert
|
|
43
|
-
* @returns Promise that resolves to a
|
|
43
|
+
* @returns Promise that resolves to a Uint8Array
|
|
44
44
|
*/
|
|
45
|
-
private static
|
|
45
|
+
private static streamToUint8Array;
|
|
46
46
|
/**
|
|
47
|
-
* Convert data to
|
|
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
|
|
49
|
+
* @returns Promise that resolves to a Uint8Array
|
|
50
50
|
*/
|
|
51
|
-
private static
|
|
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():
|
|
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:
|
|
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:
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
|
68
|
+
* Convert a Readable stream to a Uint8Array
|
|
64
69
|
* @param readable - The readable stream to convert
|
|
65
|
-
* @returns Promise that resolves to a
|
|
70
|
+
* @returns Promise that resolves to a Uint8Array
|
|
66
71
|
*/
|
|
67
|
-
static async
|
|
72
|
+
static async streamToUint8Array(readable) {
|
|
68
73
|
const chunks = [];
|
|
69
74
|
for await (const chunk of readable) {
|
|
70
|
-
chunks.push(
|
|
75
|
+
chunks.push(new Uint8Array(chunk));
|
|
71
76
|
}
|
|
72
|
-
|
|
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
|
|
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
|
|
89
|
+
* @returns Promise that resolves to a Uint8Array
|
|
78
90
|
*/
|
|
79
|
-
static async
|
|
80
|
-
if (
|
|
81
|
-
return
|
|
91
|
+
static async toUint8Array(data) {
|
|
92
|
+
if (data instanceof Uint8Array) {
|
|
93
|
+
return data;
|
|
82
94
|
}
|
|
83
|
-
return WhitenedBlock.
|
|
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.
|
|
93
|
-
const otherData = await WhitenedBlock.
|
|
94
|
-
const result =
|
|
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
|
|
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 =
|
|
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 =
|
|
133
|
-
|
|
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":";;;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,
|
|
1
|
+
{"version":3,"file":"whitened.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/whitened.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|