@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.
Files changed (88) hide show
  1. package/README.md +348 -87
  2. package/package.json +15 -1
  3. package/src/browser.d.ts +5 -1
  4. package/src/browser.d.ts.map +1 -1
  5. package/src/browser.js +10 -2
  6. package/src/browser.js.map +1 -1
  7. package/src/index.d.ts +2 -1
  8. package/src/index.d.ts.map +1 -1
  9. package/src/index.js +2 -1
  10. package/src/index.js.map +1 -1
  11. package/src/lib/blockPaddingTransform.d.ts +2 -2
  12. package/src/lib/blockPaddingTransform.d.ts.map +1 -1
  13. package/src/lib/blockPaddingTransform.js +26 -9
  14. package/src/lib/blockPaddingTransform.js.map +1 -1
  15. package/src/lib/blocks/base.d.ts +1 -1
  16. package/src/lib/blocks/base.d.ts.map +1 -1
  17. package/src/lib/blocks/encryptedBlockFactory.d.ts +2 -2
  18. package/src/lib/blocks/encryptedBlockFactory.d.ts.map +1 -1
  19. package/src/lib/blocks/encryptedBlockFactory.js +22 -16
  20. package/src/lib/blocks/encryptedBlockFactory.js.map +1 -1
  21. package/src/lib/blocks/ephemeral.d.ts +1 -1
  22. package/src/lib/blocks/ephemeral.d.ts.map +1 -1
  23. package/src/lib/blocks/ephemeral.js +8 -5
  24. package/src/lib/blocks/ephemeral.js.map +1 -1
  25. package/src/lib/blocks/memoryTuple.d.ts +13 -13
  26. package/src/lib/blocks/memoryTuple.d.ts.map +1 -1
  27. package/src/lib/blocks/memoryTuple.js +29 -15
  28. package/src/lib/blocks/memoryTuple.js.map +1 -1
  29. package/src/lib/blocks/random.d.ts +9 -13
  30. package/src/lib/blocks/random.d.ts.map +1 -1
  31. package/src/lib/blocks/random.js +25 -24
  32. package/src/lib/blocks/random.js.map +1 -1
  33. package/src/lib/blocks/rawData.d.ts +1 -5
  34. package/src/lib/blocks/rawData.d.ts.map +1 -1
  35. package/src/lib/blocks/rawData.js +8 -8
  36. package/src/lib/blocks/rawData.js.map +1 -1
  37. package/src/lib/blocks/whitened.d.ts +12 -12
  38. package/src/lib/blocks/whitened.d.ts.map +1 -1
  39. package/src/lib/blocks/whitened.js +32 -20
  40. package/src/lib/blocks/whitened.js.map +1 -1
  41. package/src/lib/browserBrightChain.d.ts +30 -0
  42. package/src/lib/browserBrightChain.d.ts.map +1 -0
  43. package/src/lib/browserBrightChain.js +82 -0
  44. package/src/lib/browserBrightChain.js.map +1 -0
  45. package/src/lib/browserCrypto.d.ts +9 -0
  46. package/src/lib/browserCrypto.d.ts.map +1 -0
  47. package/src/lib/browserCrypto.js +34 -0
  48. package/src/lib/browserCrypto.js.map +1 -0
  49. package/src/lib/browserKeyring.d.ts +21 -0
  50. package/src/lib/browserKeyring.d.ts.map +1 -0
  51. package/src/lib/browserKeyring.js +133 -0
  52. package/src/lib/browserKeyring.js.map +1 -0
  53. package/src/lib/browserStream.d.ts +40 -0
  54. package/src/lib/browserStream.d.ts.map +1 -0
  55. package/src/lib/browserStream.js +154 -0
  56. package/src/lib/browserStream.js.map +1 -0
  57. package/src/lib/cblStream.d.ts +2 -2
  58. package/src/lib/cblStream.d.ts.map +1 -1
  59. package/src/lib/cblStream.js +21 -43
  60. package/src/lib/cblStream.js.map +1 -1
  61. package/src/lib/enumerations/systemKeyringErrorType.d.ts +2 -1
  62. package/src/lib/enumerations/systemKeyringErrorType.d.ts.map +1 -1
  63. package/src/lib/enumerations/systemKeyringErrorType.js +1 -0
  64. package/src/lib/enumerations/systemKeyringErrorType.js.map +1 -1
  65. package/src/lib/errors/systemKeyringError.d.ts.map +1 -1
  66. package/src/lib/errors/systemKeyringError.js +1 -0
  67. package/src/lib/errors/systemKeyringError.js.map +1 -1
  68. package/src/lib/interfaces/blocks/base.d.ts +1 -1
  69. package/src/lib/interfaces/blocks/base.d.ts.map +1 -1
  70. package/src/lib/interfaces/keyringEntry.d.ts +3 -3
  71. package/src/lib/interfaces/keyringEntry.d.ts.map +1 -1
  72. package/src/lib/primeTupleGeneratorStream.d.ts +2 -2
  73. package/src/lib/primeTupleGeneratorStream.d.ts.map +1 -1
  74. package/src/lib/primeTupleGeneratorStream.js +19 -9
  75. package/src/lib/primeTupleGeneratorStream.js.map +1 -1
  76. package/src/lib/secureHeapStorage.d.ts.map +1 -1
  77. package/src/lib/secureHeapStorage.js +8 -5
  78. package/src/lib/secureHeapStorage.js.map +1 -1
  79. package/src/lib/services/fec.service.js +4 -4
  80. package/src/lib/services/fec.service.js.map +1 -1
  81. package/src/lib/services/tuple.service.d.ts +5 -5
  82. package/src/lib/services/tuple.service.d.ts.map +1 -1
  83. package/src/lib/services/tuple.service.js +47 -38
  84. package/src/lib/services/tuple.service.js.map +1 -1
  85. package/src/lib/systemKeyring.d.ts +3 -11
  86. package/src/lib/systemKeyring.d.ts.map +1 -1
  87. package/src/lib/systemKeyring.js +7 -95
  88. package/src/lib/systemKeyring.js.map +1 -1
@@ -1,21 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SystemKeyring = void 0;
4
- const crypto_1 = require("crypto");
5
- const fs_1 = require("fs");
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.maxAccessRate = 10; // per minute
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
- const salt = (0, crypto_1.randomBytes)(32);
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.checkRateLimit(id);
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
- await this.loadFromDisk();
23
+ return this.browserKeyring.initialize();
111
24
  }
112
25
  async rotateKey(id, oldPassword, newPassword) {
113
- const data = await this.retrieveKey(id, oldPassword);
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":"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"}
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"}