@brightchain/brightchain-lib 0.8.0 → 0.8.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/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryptedBlockFactory.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encryptedBlockFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEvE,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;
|
|
1
|
+
{"version":3,"file":"encryptedBlockFactory.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encryptedBlockFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEvE,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;AAOtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,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,QAAQ,EAClB,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,QAAQ,EAClB,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;CA+J3B"}
|
|
@@ -11,6 +11,7 @@ const ephemeralBlockMetadata_1 = require("../ephemeralBlockMetadata");
|
|
|
11
11
|
const block_1 = require("../errors/block");
|
|
12
12
|
const checksumMismatch_1 = require("../errors/checksumMismatch");
|
|
13
13
|
const checksum_service_1 = require("../services/checksum.service");
|
|
14
|
+
const service_provider_1 = require("../services/service.provider");
|
|
14
15
|
const browserConfig_1 = require("../browserConfig");
|
|
15
16
|
class EncryptedBlockFactory {
|
|
16
17
|
static registerBlockType(type, constructor) {
|
|
@@ -22,13 +23,17 @@ class EncryptedBlockFactory {
|
|
|
22
23
|
if (!Constructor) {
|
|
23
24
|
throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidBlockType, type);
|
|
24
25
|
}
|
|
25
|
-
//
|
|
26
|
-
const
|
|
26
|
+
// Get ID provider to calculate header size
|
|
27
|
+
const idProvider = service_provider_1.ServiceProvider.getInstance().idProvider;
|
|
28
|
+
// Calculate the actual payload capacity
|
|
29
|
+
// Header = 1 byte (encryption type) + idSize + ECIES.WITH_LENGTH.FIXED_OVERHEAD_SIZE
|
|
30
|
+
const headerSize = 1 + idProvider.byteLength + ecies_lib_1.ECIES.WITH_LENGTH.FIXED_OVERHEAD_SIZE;
|
|
31
|
+
const payloadLength = blockSize - headerSize;
|
|
27
32
|
// Validate data length
|
|
28
33
|
if (data.length < 1) {
|
|
29
34
|
throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthTooShort);
|
|
30
35
|
}
|
|
31
|
-
// Total data length must not exceed
|
|
36
|
+
// Total data length must not exceed available payload capacity
|
|
32
37
|
if (data.length > payloadLength) {
|
|
33
38
|
throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataLengthExceedsCapacity);
|
|
34
39
|
}
|
|
@@ -49,24 +54,31 @@ class EncryptedBlockFactory {
|
|
|
49
54
|
const finalChecksum = checksum ?? computedChecksum;
|
|
50
55
|
// Create metadata with correct length
|
|
51
56
|
const updatedMetadata = new ephemeralBlockMetadata_1.EphemeralBlockMetadata(blockSize, type, blockDataType_1.BlockDataType.EncryptedData, lengthBeforeEncryption ?? data.length, creator, dateCreated);
|
|
52
|
-
// If data is already encrypted (starts with 0x04), use it directly
|
|
53
|
-
if (data[0] === ecies_lib_1.ECIES.PUBLIC_KEY_MAGIC) {
|
|
54
|
-
// Create a properly sized buffer
|
|
55
|
-
const finalData = new Uint8Array(blockSize);
|
|
56
|
-
finalData.set(data);
|
|
57
|
-
return new Constructor(type, blockDataType_1.BlockDataType.EncryptedData, finalData, finalChecksum, encryptedBlockMetadata_1.EncryptedBlockMetadata.fromEphemeralBlockMetadata(updatedMetadata, blockEncryptionType_1.BlockEncryptionType.SingleRecipient, 1), creator, canRead, canPersist);
|
|
58
|
-
}
|
|
59
57
|
// Create final data buffer with proper size
|
|
60
58
|
const finalData = new Uint8Array(blockSize);
|
|
61
|
-
//
|
|
59
|
+
// If data is already encrypted (starts with BlockEncryptionType), use it directly
|
|
60
|
+
if (data[0] === blockEncryptionType_1.BlockEncryptionType.SingleRecipient ||
|
|
61
|
+
data[0] === blockEncryptionType_1.BlockEncryptionType.MultiRecipient) {
|
|
62
|
+
finalData.set(data);
|
|
63
|
+
return new Constructor(type, blockDataType_1.BlockDataType.EncryptedData, finalData, finalChecksum, encryptedBlockMetadata_1.EncryptedBlockMetadata.fromEphemeralBlockMetadata(updatedMetadata, data[0], 1), creator, canRead, canPersist);
|
|
64
|
+
}
|
|
65
|
+
// Generate encryption headers for unencrypted data
|
|
66
|
+
let offset = 0;
|
|
67
|
+
// Set encryption type byte
|
|
68
|
+
finalData[offset] = blockEncryptionType_1.BlockEncryptionType.SingleRecipient;
|
|
69
|
+
offset += 1;
|
|
70
|
+
// Set recipient ID
|
|
71
|
+
const recipientId = new Uint8Array(creator.idBytes);
|
|
72
|
+
finalData.set(recipientId.subarray(0, idProvider.byteLength), offset);
|
|
73
|
+
offset += idProvider.byteLength;
|
|
74
|
+
// Generate ECIES WITH_LENGTH header components
|
|
62
75
|
const ephemeralPublicKey = new Uint8Array(ecies_lib_1.ECIES.PUBLIC_KEY_LENGTH);
|
|
63
76
|
const keyData = (0, browserCrypto_1.randomBytes)(ecies_lib_1.ECIES.PUBLIC_KEY_LENGTH - 1);
|
|
64
|
-
ephemeralPublicKey[0] = ecies_lib_1.ECIES.PUBLIC_KEY_MAGIC;
|
|
65
|
-
ephemeralPublicKey.set(keyData, 1);
|
|
77
|
+
ephemeralPublicKey[0] = ecies_lib_1.ECIES.PUBLIC_KEY_MAGIC;
|
|
78
|
+
ephemeralPublicKey.set(keyData, 1);
|
|
66
79
|
const iv = (0, browserCrypto_1.randomBytes)(ecies_lib_1.ECIES.IV_SIZE);
|
|
67
80
|
const authTag = (0, browserCrypto_1.randomBytes)(ecies_lib_1.ECIES.AUTH_TAG_SIZE);
|
|
68
|
-
// Copy headers to final buffer
|
|
69
|
-
let offset = 0;
|
|
81
|
+
// Copy ECIES headers to final buffer
|
|
70
82
|
finalData.set(ephemeralPublicKey, offset);
|
|
71
83
|
offset += ecies_lib_1.ECIES.PUBLIC_KEY_LENGTH;
|
|
72
84
|
finalData.set(iv, offset);
|
|
@@ -83,7 +95,8 @@ class EncryptedBlockFactory {
|
|
|
83
95
|
throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.DataBufferIsTruncated);
|
|
84
96
|
}
|
|
85
97
|
// Verify the ephemeral public key is valid
|
|
86
|
-
const
|
|
98
|
+
const ephemeralKeyOffset = 1 + idProvider.byteLength;
|
|
99
|
+
const ephemeralKeyCheck = finalDataCopy.subarray(ephemeralKeyOffset, ephemeralKeyOffset + ecies_lib_1.ECIES.PUBLIC_KEY_LENGTH);
|
|
87
100
|
if (ephemeralKeyCheck[0] !== ecies_lib_1.ECIES.PUBLIC_KEY_MAGIC) {
|
|
88
101
|
throw new block_1.BlockValidationError(blockValidationErrorType_1.BlockValidationErrorType.InvalidEphemeralPublicKeyLength);
|
|
89
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryptedBlockFactory.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encryptedBlockFactory.ts"],"names":[],"mappings":";;;AAAA,0DAAuE;AACvE,oDAA+C;AAC/C,sEAAmE;AACnE,iEAA8D;AAC9D,6EAA0E;AAG1E,uFAAoF;AACpF,sEAAmE;AACnE,2CAAuD;AACvD,iEAAmE;AACnE,mEAA+D;AAI/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,QAAkB,EAClB,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,
|
|
1
|
+
{"version":3,"file":"encryptedBlockFactory.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/blocks/encryptedBlockFactory.ts"],"names":[],"mappings":"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"}
|