@brightchain/brightchain-lib 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +13 -13
- 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
|
@@ -1,28 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
class BlockPaddingTransform extends
|
|
3
|
+
const browserCrypto_1 = require("./browserCrypto");
|
|
4
|
+
const browserStream_1 = require("./browserStream");
|
|
5
|
+
class BlockPaddingTransform extends browserStream_1.Transform {
|
|
6
6
|
constructor(blockSize) {
|
|
7
7
|
super();
|
|
8
8
|
this.blockSize = blockSize;
|
|
9
|
-
this.buffer =
|
|
9
|
+
this.buffer = new Uint8Array(0);
|
|
10
10
|
}
|
|
11
11
|
_transform(chunk, encoding, callback) {
|
|
12
|
-
|
|
12
|
+
// Convert Buffer to Uint8Array if needed
|
|
13
|
+
let data;
|
|
14
|
+
if (chunk instanceof Uint8Array) {
|
|
15
|
+
data = chunk;
|
|
16
|
+
}
|
|
17
|
+
else if (Buffer.isBuffer(chunk)) {
|
|
18
|
+
data = new Uint8Array(chunk);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
callback(new Error('Input must be Buffer or Uint8Array'));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const newBuffer = new Uint8Array(this.buffer.length + data.length);
|
|
25
|
+
newBuffer.set(this.buffer);
|
|
26
|
+
newBuffer.set(data, this.buffer.length);
|
|
27
|
+
this.buffer = newBuffer;
|
|
13
28
|
while (this.buffer.length >= this.blockSize) {
|
|
14
29
|
const block = this.buffer.subarray(0, this.blockSize);
|
|
15
30
|
this.buffer = this.buffer.subarray(this.blockSize);
|
|
16
|
-
this.push(block);
|
|
31
|
+
this.push(Buffer.from(block));
|
|
17
32
|
}
|
|
18
33
|
callback();
|
|
19
34
|
}
|
|
20
35
|
_flush(callback) {
|
|
21
36
|
if (this.buffer.length > 0) {
|
|
22
37
|
const paddingSize = this.blockSize - (this.buffer.length % this.blockSize);
|
|
23
|
-
const padding = (0,
|
|
24
|
-
const paddedBlock =
|
|
25
|
-
this.
|
|
38
|
+
const padding = (0, browserCrypto_1.randomBytes)(paddingSize);
|
|
39
|
+
const paddedBlock = new Uint8Array(this.buffer.length + padding.length);
|
|
40
|
+
paddedBlock.set(this.buffer);
|
|
41
|
+
paddedBlock.set(padding, this.buffer.length);
|
|
42
|
+
this.push(Buffer.from(paddedBlock));
|
|
26
43
|
}
|
|
27
44
|
callback();
|
|
28
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockPaddingTransform.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockPaddingTransform.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"blockPaddingTransform.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/blockPaddingTransform.ts"],"names":[],"mappings":";;AAAA,mDAA8C;AAC9C,mDAA+D;AAG/D,MAAM,qBAAsB,SAAQ,yBAAS;IAI3C,YAAY,SAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAmB,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAEQ,UAAU,CACjB,KAAU,EACV,QAAgB,EAChB,QAA2B;QAE3B,yCAAyC;QACzC,IAAI,IAAgB,CAAC;QACrB,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAExB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,QAAQ,EAAE,CAAC;IACb,CAAC;IAEQ,MAAM,CAAC,QAA2B;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,WAAW,GACf,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,IAAA,2BAAW,EAAC,WAAW,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACxE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;CACF;AAED,kBAAe,qBAAqB,CAAC"}
|
package/src/lib/blocks/base.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChecksumString, ChecksumUint8Array } from '@digitaldefiance/ecies-lib';
|
|
2
|
-
import { Readable } from '
|
|
2
|
+
import { Readable } from '../browserStream';
|
|
3
3
|
import { BlockMetadata } from '../blockMetadata';
|
|
4
4
|
import { BlockDataType } from '../enumerations/blockDataType';
|
|
5
5
|
import { BlockSize } from '../enumerations/blockSize';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAqB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD;;;;;;;;;;;;;GAaG;AACH,8BAAsB,SAAU,YAAW,UAAU;IACnD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAEnD;;;;;;;;;;OAUG;IACH,SAAS,aACP,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,aAAa,EACvB,OAAO,UAAO,EACd,UAAU,UAAO;IA+BnB;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,CAExC;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,kBAAkB,CAE1C;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,cAAc,CAI1C;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,IAAI,CAE7B;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,aAAa,CAEnC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;;OAGG;aACa,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C;;;OAGG;aACa,YAAY,IAAI,IAAI;IAEpC;;;OAGG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACH,aAAoB,IAAI,IAAI,UAAU,GAAG,QAAQ,CAAC;IAElD;;OAEG;IACH,aAAoB,iBAAiB,IAAI,MAAM,CAAC;IAEhD;;OAEG;IACH,aAAoB,eAAe,IAAI,UAAU,CAAC;IAElD;;OAEG;IACH,aAAoB,SAAS,IAAI,UAAU,CAAC;IAE5C;;OAEG;IACH,aAAoB,YAAY,IAAI,UAAU,CAAC;IAE/C;;OAEG;IACH,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAE/C;;OAEG;IACH,IAAW,MAAM,IAAI,UAAU,EAAE,CAMhC;IAED;;OAEG;IACH,IAAW,oBAAoB,IAAI,MAAM,CAUxC;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,UAAU,GAAG,IAAI,CAGrC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,MAAM,CAUjC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,UAAU,CAatC;CACF"}
|
|
@@ -8,7 +8,7 @@ export declare class EncryptedBlockFactory {
|
|
|
8
8
|
private static readonly eciesService;
|
|
9
9
|
private static readonly checksumService;
|
|
10
10
|
private static blockConstructors;
|
|
11
|
-
static registerBlockType(type: BlockType, constructor: new <TID extends PlatformID = Uint8Array>(type: BlockType, dataType: BlockDataType, data:
|
|
12
|
-
static createBlock<TID extends PlatformID = Uint8Array>(type: BlockType, dataType: BlockDataType, blockSize: BlockSize, data:
|
|
11
|
+
static registerBlockType(type: BlockType, constructor: new <TID extends PlatformID = Uint8Array>(type: BlockType, dataType: BlockDataType, data: Uint8Array, checksum: ChecksumUint8Array, metadata: EncryptedBlockMetadata<TID>, recipientWithKey: Member<TID>, canRead: boolean, canPersist: boolean) => EncryptedBlock): void;
|
|
12
|
+
static createBlock<TID extends PlatformID = Uint8Array>(type: BlockType, dataType: BlockDataType, blockSize: BlockSize, data: Uint8Array, checksum: ChecksumUint8Array, creator: Member<TID>, dateCreated?: Date, lengthBeforeEncryption?: number, canRead?: boolean, canPersist?: boolean): Promise<EncryptedBlock>;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=encryptedBlockFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryptedBlockFactory.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encryptedBlockFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,UAAU,EACX,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAMtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7C,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAwB;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEhE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAWzB;WAEO,iBAAiB,CAC7B,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,KAAK,GAAG,SAAS,UAAU,GAAG,UAAU,EACnD,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"encryptedBlockFactory.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encryptedBlockFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,UAAU,EACX,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAMtD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7C,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAwB;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEhE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAWzB;WAEO,iBAAiB,CAC7B,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,KAAK,GAAG,SAAS,UAAU,GAAG,UAAU,EACnD,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC,EACrC,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,EAC7B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,KAChB,cAAc,GAClB,IAAI;WAIa,WAAW,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EACjE,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EACpB,WAAW,CAAC,EAAE,IAAI,EAClB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,OAAO,UAAO,EACd,UAAU,UAAO,GAChB,OAAO,CAAC,cAAc,CAAC;CAkJ3B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EncryptedBlockFactory = void 0;
|
|
4
|
-
const
|
|
4
|
+
const browserCrypto_1 = require("../browserCrypto");
|
|
5
5
|
const constants_1 = require("../constants");
|
|
6
6
|
const encryptedBlockMetadata_1 = require("../encryptedBlockMetadata");
|
|
7
7
|
const blockDataType_1 = require("../enumerations/blockDataType");
|
|
@@ -42,41 +42,47 @@ class EncryptedBlockFactory {
|
|
|
42
42
|
}
|
|
43
43
|
// Calculate checksum on the original data
|
|
44
44
|
const computedChecksum = this.checksumService.calculateChecksum(data);
|
|
45
|
-
|
|
45
|
+
// Compare checksums using array comparison
|
|
46
|
+
if (computedChecksum.length !== checksum.length) {
|
|
46
47
|
throw new checksumMismatch_1.ChecksumMismatchError(checksum, computedChecksum);
|
|
47
48
|
}
|
|
49
|
+
for (let i = 0; i < computedChecksum.length; i++) {
|
|
50
|
+
if (computedChecksum[i] !== checksum[i]) {
|
|
51
|
+
throw new checksumMismatch_1.ChecksumMismatchError(checksum, computedChecksum);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
48
54
|
const finalChecksum = checksum ?? computedChecksum;
|
|
49
55
|
// Create metadata with correct length
|
|
50
56
|
const updatedMetadata = new ephemeralBlockMetadata_1.EphemeralBlockMetadata(blockSize, type, blockDataType_1.BlockDataType.EncryptedData, lengthBeforeEncryption ?? data.length, creator, dateCreated);
|
|
51
57
|
// If data is already encrypted (starts with 0x04), use it directly
|
|
52
58
|
if (data[0] === constants_1.ECIES.PUBLIC_KEY_MAGIC) {
|
|
53
59
|
// Create a properly sized buffer
|
|
54
|
-
const finalData =
|
|
55
|
-
|
|
60
|
+
const finalData = new Uint8Array(blockSize);
|
|
61
|
+
finalData.set(data);
|
|
56
62
|
return new Constructor(type, blockDataType_1.BlockDataType.EncryptedData, finalData, finalChecksum, encryptedBlockMetadata_1.EncryptedBlockMetadata.fromEphemeralBlockMetadata(updatedMetadata, blockEncryptionType_1.BlockEncryptionType.SingleRecipient, 1), creator, canRead, canPersist);
|
|
57
63
|
}
|
|
58
64
|
// Create final data buffer with proper size
|
|
59
|
-
const finalData =
|
|
65
|
+
const finalData = new Uint8Array(blockSize);
|
|
60
66
|
// Generate encryption headers
|
|
61
|
-
const ephemeralPublicKey =
|
|
62
|
-
const keyData = (0,
|
|
67
|
+
const ephemeralPublicKey = new Uint8Array(constants_1.ECIES.PUBLIC_KEY_LENGTH);
|
|
68
|
+
const keyData = (0, browserCrypto_1.randomBytes)(constants_1.ECIES.PUBLIC_KEY_LENGTH - 1);
|
|
63
69
|
ephemeralPublicKey[0] = constants_1.ECIES.PUBLIC_KEY_MAGIC; // Set ECIES public key prefix
|
|
64
|
-
|
|
65
|
-
const iv = (0,
|
|
66
|
-
const authTag = (0,
|
|
70
|
+
ephemeralPublicKey.set(keyData, 1); // Copy after prefix
|
|
71
|
+
const iv = (0, browserCrypto_1.randomBytes)(constants_1.ECIES.IV_LENGTH);
|
|
72
|
+
const authTag = (0, browserCrypto_1.randomBytes)(constants_1.ECIES.AUTH_TAG_LENGTH);
|
|
67
73
|
// Copy headers to final buffer
|
|
68
74
|
let offset = 0;
|
|
69
|
-
|
|
75
|
+
finalData.set(ephemeralPublicKey, offset);
|
|
70
76
|
offset += constants_1.ECIES.PUBLIC_KEY_LENGTH;
|
|
71
|
-
|
|
77
|
+
finalData.set(iv, offset);
|
|
72
78
|
offset += constants_1.ECIES.IV_LENGTH;
|
|
73
|
-
|
|
79
|
+
finalData.set(authTag, offset);
|
|
74
80
|
offset += constants_1.ECIES.AUTH_TAG_LENGTH;
|
|
75
81
|
// Copy data to payload area
|
|
76
|
-
|
|
82
|
+
finalData.set(data, offset);
|
|
77
83
|
// Create a copy of the data for validation
|
|
78
|
-
const finalDataCopy =
|
|
79
|
-
|
|
84
|
+
const finalDataCopy = new Uint8Array(blockSize);
|
|
85
|
+
finalDataCopy.set(finalData);
|
|
80
86
|
// Verify the data length matches the block size
|
|
81
87
|
if (finalDataCopy.length !== blockSize) {
|
|
82
88
|
throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataBufferIsTruncated);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryptedBlockFactory.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encryptedBlockFactory.ts"],"names":[],"mappings":";;;AAKA,
|
|
1
|
+
{"version":3,"file":"encryptedBlockFactory.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encryptedBlockFactory.ts"],"names":[],"mappings":";;;AAKA,oDAA+C;AAC/C,4CAAqC;AACrC,sEAAmE;AACnE,iEAA8D;AAC9D,6EAA0E;AAG1E,uFAAoF;AACpF,sEAAmE;AACnE,2CAAuD;AACvD,iEAAmE;AACnE,mEAA+D;AAG/D,oDAAsD;AAEtD,MAAa,qBAAqB;IAiBzB,MAAM,CAAC,iBAAiB,CAC7B,IAAe,EACf,WASmB;QAEnB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,WAAW,CAC7B,IAAe,EACf,QAAuB,EACvB,SAAoB,EACpB,IAAgB,EAChB,QAA4B,EAC5B,OAAoB,EACpB,WAAkB,EAClB,sBAA+B,EAC/B,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,IAAI;QAEjB,0CAA0C;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,4BAAoB,CAC5B,mDAAwB,CAAC,gBAAgB,EACzC,IAAI,CACL,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,MAAM,aAAa,GAAI,SAAoB,GAAG,iBAAK,CAAC,aAAa,CAAC;QAElE,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,4BAAoB,CAC5B,mDAAwB,CAAC,kBAAkB,CAC5C,CAAC;QACJ,CAAC;QAED,+CAA+C;QAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YAChC,MAAM,IAAI,4BAAoB,CAC5B,mDAAwB,CAAC,yBAAyB,CACnD,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,+DAA+D;QAC/D,2DAA2D;QAC3D,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,sBAAsB,GAAG,aAAa,EAAE,CAAC;gBAC3C,MAAM,IAAI,4BAAoB,CAC5B,mDAAwB,CAAC,yBAAyB,CACnD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEtE,2CAA2C;QAC3C,IAAI,gBAAgB,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,IAAI,wCAAqB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC9D,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,wCAAqB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,QAAQ,IAAI,gBAAgB,CAAC;QAEnD,sCAAsC;QACtC,MAAM,eAAe,GAAG,IAAI,+CAAsB,CAChD,SAAS,EACT,IAAI,EACJ,6BAAa,CAAC,aAAa,EAC3B,sBAAsB,IAAI,IAAI,CAAC,MAAM,EACrC,OAAO,EACP,WAAW,CACZ,CAAC;QAEF,mEAAmE;QACnE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,iBAAK,CAAC,gBAAgB,EAAE,CAAC;YACvC,iCAAiC;YACjC,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,SAAmB,CAAC,CAAC;YACtD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEpB,OAAO,IAAI,WAAW,CACpB,IAAI,EACJ,6BAAa,CAAC,aAAa,EAC3B,SAAS,EACT,aAAa,EACb,+CAAsB,CAAC,0BAA0B,CAC/C,eAAe,EACf,yCAAmB,CAAC,eAAe,EACnC,CAAC,CACF,EACD,OAAO,EACP,OAAO,EACP,UAAU,CACX,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,SAAmB,CAAC,CAAC;QAEtD,8BAA8B;QAC9B,MAAM,kBAAkB,GAAG,IAAI,UAAU,CAAC,iBAAK,CAAC,iBAAiB,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAA,2BAAW,EAAC,iBAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;QACzD,kBAAkB,CAAC,CAAC,CAAC,GAAG,iBAAK,CAAC,gBAAgB,CAAC,CAAC,8BAA8B;QAC9E,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB;QAExD,MAAM,EAAE,GAAG,IAAA,2BAAW,EAAC,iBAAK,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAA,2BAAW,EAAC,iBAAK,CAAC,eAAe,CAAC,CAAC;QAEnD,+BAA+B;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,iBAAK,CAAC,iBAAiB,CAAC;QAClC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,iBAAK,CAAC,SAAS,CAAC;QAC1B,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,iBAAK,CAAC,eAAe,CAAC;QAEhC,4BAA4B;QAC5B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5B,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,SAAmB,CAAC,CAAC;QAC1D,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE7B,gDAAgD;QAChD,IAAI,aAAa,CAAC,MAAM,KAAM,SAAoB,EAAE,CAAC;YACnD,MAAM,IAAI,4BAAoB,CAC5B,mDAAwB,CAAC,qBAAqB,CAC/C,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,MAAM,iBAAiB,GAAG,aAAa,CAAC,QAAQ,CAC9C,CAAC,EACD,iBAAK,CAAC,iBAAiB,CACxB,CAAC;QACF,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,iBAAK,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,IAAI,4BAAoB,CAC5B,mDAAwB,CAAC,+BAA+B,CACzD,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,WAAW,CACpB,IAAI,EACJ,6BAAa,CAAC,aAAa,EAC3B,aAAa,EACb,aAAa,EACb,+CAAsB,CAAC,0BAA0B,CAC/C,eAAe,EACf,yCAAmB,CAAC,eAAe,EACnC,CAAC,CACF,EACD,OAAO,EACP,OAAO,EACP,UAAU,CACX,CAAC;IACJ,CAAC;;AA7LH,sDA8LC;AA7LyB,kCAAY,GAAG,IAAA,kCAAkB,GAAE,CAAC;AACpC,qCAAe,GAAG,IAAI,kCAAe,EAAE,CAAC;AAEjD,uCAAiB,GAW5B,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChecksumUint8Array, Member, type PlatformID } from '@digitaldefiance/ecies-lib';
|
|
2
|
-
import { Readable } from '
|
|
2
|
+
import { Readable } from '../browserStream';
|
|
3
3
|
import { BlockDataType } from '../enumerations/blockDataType';
|
|
4
4
|
import { BlockSize } from '../enumerations/blockSize';
|
|
5
5
|
import { BlockType } from '../enumerations/blockType';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ephemeral.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/ephemeral.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,MAAM,EACN,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ephemeral.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/ephemeral.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,MAAM,EACN,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EACL,SAAS,EAGV,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAQnE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAInC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;GAGG;AACH,qBAAa,cAAc,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,CAC7D,SAAQ,SACR,YAAW,eAAe,CAAC,GAAG,CAAC;IAE/B;;OAEG;WACiB,IAAI,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EAC1D,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EACpB,WAAW,CAAC,EAAE,IAAI,EAClB,sBAAsB,CAAC,EAAE,MAAM,EAC/B,OAAO,UAAO,EACd,UAAU,UAAO,GAChB,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAgChC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAErC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAEzC;;;;;;;;;;;;OAYG;gBAED,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,UAAU,GAAG,QAAQ,EAC3B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC,EACrC,OAAO,UAAO,EACd,UAAU,UAAQ;IAyCpB;;OAEG;IACH,IAAoB,IAAI,IAAI,UAAU,CAKrC;IAED;;OAEG;IACH,IAAoB,WAAW,IAAI,IAAI,CAEtC;IAED;;OAEG;IACH,IAAW,sBAAsB,IAAI,MAAM,CAE1C;IAED;;OAEG;IACI,UAAU,IAAI,OAAO;IAuB5B;;;;OAIG;IACI,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IA4BvD;;;OAGG;IACa,YAAY,IAAI,IAAI;IAkBpC;;;OAGG;IACmB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBpD;;;OAGG;IACH,IAAW,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAE5C;IAED,IAAoB,iBAAiB,IAAI,MAAM,CAE9C;IAED;;OAEG;IACH,IAAoB,eAAe,IAAI,UAAU,CAMhD;IAED;;OAEG;IACH,IAAoB,YAAY,IAAI,UAAU,CAQ7C;IAED;;OAEG;IACH,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED;;;;OAIG;IACU,OAAO,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,CAAC,EACjD,YAAY,EAAE,SAAS,EACvB,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GACzB,OAAO,CAAC,CAAC,CAAC;IAmEb;;;OAGG;IACH,IAAW,SAAS,IAAI,UAAU,CAQjC;CACF"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EphemeralBlock = void 0;
|
|
4
4
|
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const browserCrypto_1 = require("../browserCrypto");
|
|
6
|
+
const browserStream_1 = require("../browserStream");
|
|
7
7
|
const constants_1 = require("../constants");
|
|
8
8
|
const blockAccessErrorType_1 = require("../enumerations/blockAccessErrorType");
|
|
9
9
|
const blockErrorType_1 = require("../enumerations/blockErrorType");
|
|
@@ -49,7 +49,7 @@ class EphemeralBlock extends base_1.BaseBlock {
|
|
|
49
49
|
* @param encrypted - Whether the block is encrypted
|
|
50
50
|
*/
|
|
51
51
|
constructor(type, dataType, data, checksum, metadata, canRead = true, canPersist = false) {
|
|
52
|
-
if (data instanceof
|
|
52
|
+
if (data instanceof browserStream_1.Readable) {
|
|
53
53
|
throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.EphemeralBlockOnlySupportsBufferData);
|
|
54
54
|
}
|
|
55
55
|
// Initialize base class
|
|
@@ -63,8 +63,11 @@ class EphemeralBlock extends base_1.BaseBlock {
|
|
|
63
63
|
let paddedData = data;
|
|
64
64
|
if (paddedData.length < maxDataSize) {
|
|
65
65
|
// Pad with random data to reach the full block size
|
|
66
|
-
const padding = (0,
|
|
67
|
-
|
|
66
|
+
const padding = (0, browserCrypto_1.randomBytes)(maxDataSize - paddedData.length);
|
|
67
|
+
const result = new Uint8Array(paddedData.length + padding.length);
|
|
68
|
+
result.set(paddedData);
|
|
69
|
+
result.set(padding, paddedData.length);
|
|
70
|
+
paddedData = result;
|
|
68
71
|
}
|
|
69
72
|
if (!metadata) {
|
|
70
73
|
throw new block_1.BlockMetadataError(blockMetadataErrorType_1.BlockMetadataErrorType.MetadataRequired);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ephemeral.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/ephemeral.ts"],"names":[],"mappings":";;;AAAA,0DAKoC;AACpC,
|
|
1
|
+
{"version":3,"file":"ephemeral.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/ephemeral.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BlockSize } from '../enumerations/blockSize';
|
|
2
2
|
import { ChecksumUint8Array } from '@digitaldefiance/ecies-lib';
|
|
3
|
-
import {
|
|
4
|
-
import { BlockHandle } from './handle';
|
|
3
|
+
import { IBaseBlock } from '../interfaces/blocks/base';
|
|
4
|
+
import { type BlockHandle } from './handle';
|
|
5
5
|
import { RawDataBlock } from './rawData';
|
|
6
6
|
/**
|
|
7
7
|
* InMemoryBlockTuple represents a tuple of blocks that can be XORed together.
|
|
@@ -10,14 +10,14 @@ import { RawDataBlock } from './rawData';
|
|
|
10
10
|
* 2. Parity blocks XORed for error correction
|
|
11
11
|
*
|
|
12
12
|
* This class supports both:
|
|
13
|
-
* 1. In-memory blocks (
|
|
13
|
+
* 1. In-memory blocks (IBaseBlock derivatives) for immediate operations
|
|
14
14
|
* 2. Disk-based blocks (BlockHandle) for persistent storage
|
|
15
15
|
*/
|
|
16
16
|
export declare class InMemoryBlockTuple {
|
|
17
17
|
static readonly TupleSize: number;
|
|
18
18
|
private readonly _blocks;
|
|
19
19
|
private readonly _blockSize;
|
|
20
|
-
constructor(blocks: (
|
|
20
|
+
constructor(blocks: (IBaseBlock | BlockHandle<any>)[]);
|
|
21
21
|
/**
|
|
22
22
|
* Get the block IDs in this tuple
|
|
23
23
|
*/
|
|
@@ -25,27 +25,27 @@ export declare class InMemoryBlockTuple {
|
|
|
25
25
|
/**
|
|
26
26
|
* Get the block IDs as a concatenated buffer
|
|
27
27
|
*/
|
|
28
|
-
get blockIdsBuffer():
|
|
28
|
+
get blockIdsBuffer(): Uint8Array;
|
|
29
29
|
/**
|
|
30
30
|
* Get the blocks in this tuple
|
|
31
31
|
*/
|
|
32
|
-
get blocks(): (
|
|
32
|
+
get blocks(): (IBaseBlock | BlockHandle<any>)[];
|
|
33
33
|
/**
|
|
34
34
|
* Get the block size for this tuple
|
|
35
35
|
*/
|
|
36
36
|
get blockSize(): BlockSize;
|
|
37
37
|
/**
|
|
38
|
-
* Convert a Readable stream to a
|
|
38
|
+
* Convert a Readable stream to a Uint8Array
|
|
39
39
|
* @param readable - The readable stream to convert
|
|
40
|
-
* @returns Promise that resolves to a
|
|
40
|
+
* @returns Promise that resolves to a Uint8Array
|
|
41
41
|
*/
|
|
42
|
-
private static
|
|
42
|
+
private static streamToUint8Array;
|
|
43
43
|
/**
|
|
44
|
-
* Convert data to
|
|
44
|
+
* Convert data to Uint8Array regardless of whether it's a Readable or Uint8Array
|
|
45
45
|
* @param data - The data to convert
|
|
46
|
-
* @returns Promise that resolves to a
|
|
46
|
+
* @returns Promise that resolves to a Uint8Array
|
|
47
47
|
*/
|
|
48
|
-
private static
|
|
48
|
+
private static toUint8Array;
|
|
49
49
|
/**
|
|
50
50
|
* XOR all blocks together
|
|
51
51
|
* @returns A new RawDataBlock containing the XOR result
|
|
@@ -60,6 +60,6 @@ export declare class InMemoryBlockTuple {
|
|
|
60
60
|
* Create a tuple from blocks
|
|
61
61
|
* This creates in-memory blocks
|
|
62
62
|
*/
|
|
63
|
-
static fromBlocks(blocks: (
|
|
63
|
+
static fromBlocks(blocks: (IBaseBlock | BlockHandle<any>)[]): InMemoryBlockTuple;
|
|
64
64
|
}
|
|
65
65
|
//# sourceMappingURL=memoryTuple.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryTuple.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/memoryTuple.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"memoryTuple.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/memoryTuple.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,gBAAuB,SAAS,SAAc;IAE9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;gBAE3B,MAAM,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE;IAiBrD;;OAEG;IACH,IAAW,QAAQ,IAAI,kBAAkB,EAAE,CAE1C;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,UAAU,CAStC;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAErD;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;;;OAIG;mBACkB,kBAAkB;IAevC;;;;OAIG;mBACkB,YAAY;IAOjC;;;OAGG;IACU,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;IA6CzC;;;OAGG;WACiB,OAAO,CACzB,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,CAAC,EAAE,EAAE,kBAAkB,KAAK,MAAM,GAC/C,OAAO,CAAC,kBAAkB,CAAC;IAwB9B;;;OAGG;WACW,UAAU,CACtB,MAAM,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,GACxC,kBAAkB;CAUtB"}
|
|
@@ -14,7 +14,7 @@ const rawData_1 = require("./rawData");
|
|
|
14
14
|
* 2. Parity blocks XORed for error correction
|
|
15
15
|
*
|
|
16
16
|
* This class supports both:
|
|
17
|
-
* 1. In-memory blocks (
|
|
17
|
+
* 1. In-memory blocks (IBaseBlock derivatives) for immediate operations
|
|
18
18
|
* 2. Disk-based blocks (BlockHandle) for persistent storage
|
|
19
19
|
*/
|
|
20
20
|
class InMemoryBlockTuple {
|
|
@@ -39,7 +39,14 @@ class InMemoryBlockTuple {
|
|
|
39
39
|
* Get the block IDs as a concatenated buffer
|
|
40
40
|
*/
|
|
41
41
|
get blockIdsBuffer() {
|
|
42
|
-
|
|
42
|
+
const totalLength = this.blockIds.reduce((sum, id) => sum + id.length, 0);
|
|
43
|
+
const result = new Uint8Array(totalLength);
|
|
44
|
+
let offset = 0;
|
|
45
|
+
for (const id of this.blockIds) {
|
|
46
|
+
result.set(id, offset);
|
|
47
|
+
offset += id.length;
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
43
50
|
}
|
|
44
51
|
/**
|
|
45
52
|
* Get the blocks in this tuple
|
|
@@ -54,27 +61,34 @@ class InMemoryBlockTuple {
|
|
|
54
61
|
return this._blockSize;
|
|
55
62
|
}
|
|
56
63
|
/**
|
|
57
|
-
* Convert a Readable stream to a
|
|
64
|
+
* Convert a Readable stream to a Uint8Array
|
|
58
65
|
* @param readable - The readable stream to convert
|
|
59
|
-
* @returns Promise that resolves to a
|
|
66
|
+
* @returns Promise that resolves to a Uint8Array
|
|
60
67
|
*/
|
|
61
|
-
static async
|
|
68
|
+
static async streamToUint8Array(readable) {
|
|
62
69
|
const chunks = [];
|
|
63
70
|
for await (const chunk of readable) {
|
|
64
|
-
chunks.push(
|
|
71
|
+
chunks.push(new Uint8Array(chunk));
|
|
72
|
+
}
|
|
73
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
74
|
+
const result = new Uint8Array(totalLength);
|
|
75
|
+
let offset = 0;
|
|
76
|
+
for (const chunk of chunks) {
|
|
77
|
+
result.set(chunk, offset);
|
|
78
|
+
offset += chunk.length;
|
|
65
79
|
}
|
|
66
|
-
return
|
|
80
|
+
return result;
|
|
67
81
|
}
|
|
68
82
|
/**
|
|
69
|
-
* Convert data to
|
|
83
|
+
* Convert data to Uint8Array regardless of whether it's a Readable or Uint8Array
|
|
70
84
|
* @param data - The data to convert
|
|
71
|
-
* @returns Promise that resolves to a
|
|
85
|
+
* @returns Promise that resolves to a Uint8Array
|
|
72
86
|
*/
|
|
73
|
-
static async
|
|
74
|
-
if (
|
|
87
|
+
static async toUint8Array(data) {
|
|
88
|
+
if (data instanceof Uint8Array) {
|
|
75
89
|
return data;
|
|
76
90
|
}
|
|
77
|
-
return InMemoryBlockTuple.
|
|
91
|
+
return InMemoryBlockTuple.streamToUint8Array(data);
|
|
78
92
|
}
|
|
79
93
|
/**
|
|
80
94
|
* XOR all blocks together
|
|
@@ -86,11 +100,11 @@ class InMemoryBlockTuple {
|
|
|
86
100
|
}
|
|
87
101
|
try {
|
|
88
102
|
// Load and copy first block's data
|
|
89
|
-
const
|
|
90
|
-
|
|
103
|
+
const firstBlockData = await InMemoryBlockTuple.toUint8Array(this._blocks[0].data);
|
|
104
|
+
const result = new Uint8Array(firstBlockData);
|
|
91
105
|
// XOR with remaining blocks
|
|
92
106
|
for (let i = 1; i < this._blocks.length; i++) {
|
|
93
|
-
const currentData = await InMemoryBlockTuple.
|
|
107
|
+
const currentData = await InMemoryBlockTuple.toUint8Array(this._blocks[i].data);
|
|
94
108
|
if (currentData.length !== result.length) {
|
|
95
109
|
throw new memoryTupleError_1.MemoryTupleError(memoryTupleErrorType_1.MemoryTupleErrorType.BlockSizeMismatch);
|
|
96
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryTuple.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/memoryTuple.ts"],"names":[],"mappings":";;;AACA,4CAAqC;AACrC,iEAA8D;AAE9D,yDAAsD;AAGtD,+EAA4E;AAC5E,iEAA8D;AAG9D,uCAAyC;AAEzC;;;;;;;;;GASG;AACH,MAAa,kBAAkB;IAM7B,YAAY,
|
|
1
|
+
{"version":3,"file":"memoryTuple.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/memoryTuple.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { RawDataBlock } from './rawData';
|
|
|
10
10
|
* where data blocks are XORed with random blocks to make them meaningless on their own.
|
|
11
11
|
*/
|
|
12
12
|
export declare class RandomBlock extends RawDataBlock {
|
|
13
|
-
constructor(blockSize: BlockSize, data:
|
|
13
|
+
constructor(blockSize: BlockSize, data: Uint8Array, dateCreated?: Date, checksum?: ChecksumUint8Array);
|
|
14
14
|
/**
|
|
15
15
|
* Create a new random block
|
|
16
16
|
*/
|
|
@@ -18,7 +18,7 @@ export declare class RandomBlock extends RawDataBlock {
|
|
|
18
18
|
/**
|
|
19
19
|
* Reconstitute a random block from existing data
|
|
20
20
|
*/
|
|
21
|
-
static reconstitute(blockSize: BlockSize, data:
|
|
21
|
+
static reconstitute(blockSize: BlockSize, data: Uint8Array, dateCreated?: Date, checksum?: ChecksumUint8Array): RandomBlock;
|
|
22
22
|
/**
|
|
23
23
|
* The type of the block
|
|
24
24
|
*/
|
|
@@ -38,23 +38,19 @@ export declare class RandomBlock extends RawDataBlock {
|
|
|
38
38
|
/**
|
|
39
39
|
* Get this layer's header data
|
|
40
40
|
*/
|
|
41
|
-
get layerHeaderData():
|
|
41
|
+
get layerHeaderData(): Uint8Array;
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
44
|
-
*/
|
|
45
|
-
get fullHeaderData(): Buffer;
|
|
46
|
-
/**
|
|
47
|
-
* Convert a Readable stream to a Buffer
|
|
43
|
+
* Convert a Readable stream to a Uint8Array
|
|
48
44
|
* @param readable - The readable stream to convert
|
|
49
|
-
* @returns Promise that resolves to a
|
|
45
|
+
* @returns Promise that resolves to a Uint8Array
|
|
50
46
|
*/
|
|
51
|
-
private static
|
|
47
|
+
private static streamToUint8Array;
|
|
52
48
|
/**
|
|
53
|
-
* Convert data to
|
|
49
|
+
* Convert data to Uint8Array regardless of whether it's a Readable or Uint8Array
|
|
54
50
|
* @param data - The data to convert
|
|
55
|
-
* @returns Promise that resolves to a
|
|
51
|
+
* @returns Promise that resolves to a Uint8Array
|
|
56
52
|
*/
|
|
57
|
-
private static
|
|
53
|
+
private static toUint8Array;
|
|
58
54
|
/**
|
|
59
55
|
* XOR this block with another block
|
|
60
56
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/random.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;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY;gBAEzC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/random.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;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY;gBAEzC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,WAAW,CAAC,EAAE,IAAI,EAClB,QAAQ,CAAC,EAAE,kBAAkB;IAkB/B;;OAEG;WACW,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG,WAAW;IAKxE;;OAEG;WACW,YAAY,CACxB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,UAAU,EAChB,WAAW,CAAC,EAAE,IAAI,EAClB,QAAQ,CAAC,EAAE,kBAAkB,GAC5B,WAAW;IAId;;OAEG;IACH,IAAoB,SAAS,IAAI,SAAS,CAEzC;IAED;;OAEG;IACH,IAAoB,aAAa,IAAI,aAAa,CAEjD;IAED;;OAEG;IACH,IAAoB,UAAU,IAAI,OAAO,CAExC;IAED;;OAEG;IACH,IAAoB,UAAU,IAAI,OAAO,CAExC;IAED;;OAEG;IACH,IAAoB,eAAe,IAAI,UAAU,CAGhD;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;CAgC5D"}
|