@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
package/src/lib/systemKeyring.js
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SystemKeyring = void 0;
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const path_1 = require("path");
|
|
7
|
-
const util_1 = require("util");
|
|
8
|
-
const constants_1 = require("./constants");
|
|
9
|
-
const systemKeyringErrorType_1 = require("./enumerations/systemKeyringErrorType");
|
|
10
|
-
const systemKeyringError_1 = require("./errors/systemKeyringError");
|
|
11
|
-
const scryptAsync = (0, util_1.promisify)(crypto_1.scrypt);
|
|
4
|
+
const browserKeyring_1 = require("./browserKeyring");
|
|
5
|
+
// Browser-compatible SystemKeyring that delegates to BrowserKeyring
|
|
12
6
|
class SystemKeyring {
|
|
13
7
|
constructor() {
|
|
14
|
-
this.
|
|
15
|
-
this.storagePath =
|
|
16
|
-
process.env['KEYRING_PATH'] || (0, path_1.join)(process.cwd(), '.keyring');
|
|
17
|
-
this.keys = new Map();
|
|
18
|
-
this.accessLog = new Map();
|
|
8
|
+
this.browserKeyring = browserKeyring_1.BrowserKeyring.getInstance();
|
|
19
9
|
}
|
|
20
10
|
static getInstance() {
|
|
21
11
|
if (!SystemKeyring.instance) {
|
|
@@ -23,95 +13,17 @@ class SystemKeyring {
|
|
|
23
13
|
}
|
|
24
14
|
return SystemKeyring.instance;
|
|
25
15
|
}
|
|
26
|
-
async deriveKey(password, salt) {
|
|
27
|
-
return scryptAsync(password, salt, 32);
|
|
28
|
-
}
|
|
29
16
|
async storeKey(id, data, password) {
|
|
30
|
-
|
|
31
|
-
const iv = (0, crypto_1.randomBytes)(16);
|
|
32
|
-
const key = await this.deriveKey(password, salt);
|
|
33
|
-
const cipher = (0, crypto_1.createCipheriv)(constants_1.KEYRING_ALGORITHM_CONFIGURATION, key, iv);
|
|
34
|
-
const encryptedData = Buffer.concat([
|
|
35
|
-
cipher.update(data),
|
|
36
|
-
cipher.final(),
|
|
37
|
-
cipher.getAuthTag(),
|
|
38
|
-
]);
|
|
39
|
-
const entry = {
|
|
40
|
-
id,
|
|
41
|
-
version: 1,
|
|
42
|
-
encryptedData,
|
|
43
|
-
iv,
|
|
44
|
-
salt,
|
|
45
|
-
created: new Date(),
|
|
46
|
-
};
|
|
47
|
-
this.keys.set(id, entry);
|
|
48
|
-
await this.persistToDisk();
|
|
17
|
+
return this.browserKeyring.storeKey(id, data, password);
|
|
49
18
|
}
|
|
50
19
|
async retrieveKey(id, password) {
|
|
51
|
-
this.
|
|
52
|
-
const entry = this.keys.get(id);
|
|
53
|
-
if (!entry) {
|
|
54
|
-
throw new systemKeyringError_1.SystemKeyringError(systemKeyringErrorType_1.SystemKeyringErrorType.KeyNotFound, id);
|
|
55
|
-
}
|
|
56
|
-
const key = await this.deriveKey(password, entry.salt);
|
|
57
|
-
const decipher = (0, crypto_1.createDecipheriv)(constants_1.KEYRING_ALGORITHM_CONFIGURATION, key, entry.iv);
|
|
58
|
-
const authTagPos = entry.encryptedData.length - 16;
|
|
59
|
-
const authTag = entry.encryptedData.subarray(authTagPos);
|
|
60
|
-
const encryptedData = entry.encryptedData.subarray(0, authTagPos);
|
|
61
|
-
decipher.setAuthTag(authTag);
|
|
62
|
-
const decrypted = Buffer.concat([
|
|
63
|
-
decipher.update(encryptedData),
|
|
64
|
-
decipher.final(),
|
|
65
|
-
]);
|
|
66
|
-
entry.lastAccessed = new Date();
|
|
67
|
-
this.logAccess(id);
|
|
68
|
-
return decrypted;
|
|
69
|
-
}
|
|
70
|
-
checkRateLimit(id) {
|
|
71
|
-
const accessCount = this.accessLog.get(id) || 0;
|
|
72
|
-
if (accessCount >= this.maxAccessRate) {
|
|
73
|
-
throw new systemKeyringError_1.SystemKeyringError(systemKeyringErrorType_1.SystemKeyringErrorType.RateLimitExceeded);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
logAccess(id) {
|
|
77
|
-
const count = (this.accessLog.get(id) || 0) + 1;
|
|
78
|
-
this.accessLog.set(id, count);
|
|
79
|
-
// Reset count after 1 minute
|
|
80
|
-
setTimeout(() => {
|
|
81
|
-
this.accessLog.set(id, 0);
|
|
82
|
-
}, 60000);
|
|
83
|
-
}
|
|
84
|
-
async persistToDisk() {
|
|
85
|
-
const data = JSON.stringify(Array.from(this.keys.entries()));
|
|
86
|
-
await fs_1.promises.writeFile(this.storagePath, data, { mode: 0o600 });
|
|
87
|
-
}
|
|
88
|
-
async loadFromDisk() {
|
|
89
|
-
try {
|
|
90
|
-
const data = await fs_1.promises.readFile(this.storagePath, 'utf8');
|
|
91
|
-
const entries = JSON.parse(data);
|
|
92
|
-
this.keys.clear();
|
|
93
|
-
for (const [id, entry] of entries) {
|
|
94
|
-
this.keys.set(id, {
|
|
95
|
-
...entry,
|
|
96
|
-
created: new Date(entry.created),
|
|
97
|
-
lastAccessed: entry.lastAccessed
|
|
98
|
-
? new Date(entry.lastAccessed)
|
|
99
|
-
: undefined,
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
catch (error) {
|
|
104
|
-
if (error.code !== 'ENOENT') {
|
|
105
|
-
throw error;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
20
|
+
return this.browserKeyring.retrieveKey(id, password);
|
|
108
21
|
}
|
|
109
22
|
async initialize() {
|
|
110
|
-
|
|
23
|
+
return this.browserKeyring.initialize();
|
|
111
24
|
}
|
|
112
25
|
async rotateKey(id, oldPassword, newPassword) {
|
|
113
|
-
|
|
114
|
-
await this.storeKey(id, data, newPassword);
|
|
26
|
+
return this.browserKeyring.rotateKey(id, oldPassword, newPassword);
|
|
115
27
|
}
|
|
116
28
|
}
|
|
117
29
|
exports.SystemKeyring = SystemKeyring;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemKeyring.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/systemKeyring.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"systemKeyring.js","sourceRoot":"","sources":["../../../../brightchain-lib/src/lib/systemKeyring.ts"],"names":[],"mappings":";;;AAKA,qDAAkD;AAElD,oEAAoE;AACpE,MAAa,aAAa;IAIxB;QACE,IAAI,CAAC,cAAc,GAAG,+BAAc,CAAC,WAAW,EAAE,CAAC;IACrD,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,EAAU,EACV,IAAgB,EAChB,QAAgB;QAEhB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,QAAgB;QACnD,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,EAAU,EACV,WAAmB,EACnB,WAAmB;QAEnB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;CACF;AAtCD,sCAsCC"}
|