@brightchain/brightchain-api-lib 0.7.0 → 0.10.0
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 +7 -3
- package/src/index.d.ts +4 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +5 -0
- package/src/index.js.map +1 -1
- package/src/lib/appConstants.d.ts +1 -68
- package/src/lib/appConstants.d.ts.map +1 -1
- package/src/lib/appConstants.js.map +1 -1
- package/src/lib/application.d.ts.map +1 -1
- package/src/lib/application.js +2 -1
- package/src/lib/application.js.map +1 -1
- package/src/lib/browserKeyring.d.ts +29 -0
- package/src/lib/browserKeyring.d.ts.map +1 -0
- package/src/lib/browserKeyring.js +145 -0
- package/src/lib/browserKeyring.js.map +1 -0
- package/src/lib/constants.d.ts +0 -10
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +10 -15
- package/src/lib/constants.js.map +1 -1
- package/src/lib/controllers/api/members.d.ts +7 -2
- package/src/lib/controllers/api/members.d.ts.map +1 -1
- package/src/lib/controllers/api/members.js +166 -7
- package/src/lib/controllers/api/members.js.map +1 -1
- package/src/lib/controllers/api/quorum.d.ts.map +1 -1
- package/src/lib/controllers/api/quorum.js.map +1 -1
- package/src/lib/datastore/block-document-store.d.ts.map +1 -1
- package/src/lib/datastore/block-document-store.js +1 -1
- package/src/lib/datastore/block-document-store.js.map +1 -1
- package/src/lib/documents/base.d.ts +1 -1
- package/src/lib/documents/base.d.ts.map +1 -1
- package/src/lib/documents/email-token.d.ts +1 -1
- package/src/lib/documents/email-token.d.ts.map +1 -1
- package/src/lib/documents/mnemonic.d.ts +1 -1
- package/src/lib/documents/mnemonic.d.ts.map +1 -1
- package/src/lib/documents/role.d.ts +1 -1
- package/src/lib/documents/role.d.ts.map +1 -1
- package/src/lib/documents/used-direct-login-token.d.ts +1 -1
- package/src/lib/documents/used-direct-login-token.d.ts.map +1 -1
- package/src/lib/documents/user-role.d.ts +1 -1
- package/src/lib/documents/user-role.d.ts.map +1 -1
- package/src/lib/documents/user.d.ts +1 -1
- package/src/lib/documents/user.d.ts.map +1 -1
- package/src/lib/environment.d.ts.map +1 -1
- package/src/lib/environment.js +1 -0
- package/src/lib/environment.js.map +1 -1
- package/src/lib/errors/typed-error-local.d.ts +2 -2
- package/src/lib/errors/typed-error-local.d.ts.map +1 -1
- package/src/lib/errors/typed-error-local.js.map +1 -1
- package/src/lib/interfaces/api-constants.d.ts +10 -38
- package/src/lib/interfaces/api-constants.d.ts.map +1 -1
- package/src/lib/interfaces/api-constants.js +1 -1
- package/src/lib/interfaces/backend-objects/request-user.d.ts +1 -1
- package/src/lib/interfaces/backend-objects/request-user.d.ts.map +1 -1
- package/src/lib/interfaces/backend-objects/role.d.ts +1 -1
- package/src/lib/interfaces/backend-objects/role.d.ts.map +1 -1
- package/src/lib/interfaces/jwt-sign-response.d.ts +1 -1
- package/src/lib/interfaces/jwt-sign-response.d.ts.map +1 -1
- package/src/lib/interfaces/member/index.d.ts +1 -0
- package/src/lib/interfaces/member/index.d.ts.map +1 -1
- package/src/lib/interfaces/member/index.js +1 -0
- package/src/lib/interfaces/member/index.js.map +1 -1
- package/src/lib/interfaces/member/memberProfileResponse.d.ts +51 -0
- package/src/lib/interfaces/member/memberProfileResponse.d.ts.map +1 -0
- package/src/lib/interfaces/member/memberProfileResponse.js +3 -0
- package/src/lib/interfaces/member/memberProfileResponse.js.map +1 -0
- package/src/lib/interfaces/request-user.d.ts +1 -1
- package/src/lib/interfaces/request-user.d.ts.map +1 -1
- package/src/lib/keyring.types.d.ts +7 -0
- package/src/lib/keyring.types.d.ts.map +1 -0
- package/src/lib/keyring.types.js +3 -0
- package/src/lib/keyring.types.js.map +1 -0
- package/src/lib/nodeKeyring.d.ts +24 -0
- package/src/lib/nodeKeyring.d.ts.map +1 -0
- package/src/lib/nodeKeyring.js +86 -0
- package/src/lib/nodeKeyring.js.map +1 -0
- package/src/lib/routers/messageRouter.d.ts.map +1 -1
- package/src/lib/routers/messageRouter.js +6 -0
- package/src/lib/routers/messageRouter.js.map +1 -1
- package/src/lib/secureEnclaveKeyring.d.ts +125 -0
- package/src/lib/secureEnclaveKeyring.d.ts.map +1 -0
- package/src/lib/secureEnclaveKeyring.js +491 -0
- package/src/lib/secureEnclaveKeyring.js.map +1 -0
- package/src/lib/services/diskQuorumService.d.ts +7 -6
- package/src/lib/services/diskQuorumService.d.ts.map +1 -1
- package/src/lib/services/diskQuorumService.js.map +1 -1
- package/src/lib/shared-types.d.ts +3 -2
- package/src/lib/shared-types.d.ts.map +1 -1
- package/src/lib/stores/diskCBLStore.d.ts.map +1 -1
- package/src/lib/stores/diskCBLStore.js +9 -9
- package/src/lib/stores/diskCBLStore.js.map +1 -1
- package/src/lib/systemKeyring.d.ts +60 -0
- package/src/lib/systemKeyring.d.ts.map +1 -0
- package/src/lib/systemKeyring.js +181 -0
- package/src/lib/systemKeyring.js.map +1 -0
- package/src/lib/transforms/xorMultipleTransform.d.ts.map +1 -1
- package/src/lib/transforms/xorMultipleTransform.js +11 -5
- package/src/lib/transforms/xorMultipleTransform.js.map +1 -1
- package/src/lib/types/backend-id.d.ts +2 -0
- package/src/lib/types/backend-id.d.ts.map +1 -0
- package/src/lib/types/backend-id.js +3 -0
- package/src/lib/types/backend-id.js.map +1 -0
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Secure Enclave Keyring - Key storage using Apple Secure Enclave via enclave-bridge-client
|
|
4
|
+
*
|
|
5
|
+
* This implementation uses the Enclave Bridge to encrypt keys with ECIES (secp256k1)
|
|
6
|
+
* before storing them on disk. The secp256k1 private key used for ECIES is stored
|
|
7
|
+
* in the macOS Keychain and protected by the Secure Enclave.
|
|
8
|
+
*
|
|
9
|
+
* Architecture:
|
|
10
|
+
* - Keys are encrypted using ECIES with the bridge's secp256k1 public key
|
|
11
|
+
* - Encrypted keys are stored locally on disk
|
|
12
|
+
* - Decryption requires the Enclave Bridge app to be running
|
|
13
|
+
* - An additional password-based encryption layer is applied for defense in depth
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.SecureEnclaveKeyring = void 0;
|
|
17
|
+
const tslib_1 = require("tslib");
|
|
18
|
+
const crypto = tslib_1.__importStar(require("crypto"));
|
|
19
|
+
const fs = tslib_1.__importStar(require("fs/promises"));
|
|
20
|
+
const path = tslib_1.__importStar(require("path"));
|
|
21
|
+
/**
|
|
22
|
+
* Possible socket paths for the Enclave Bridge
|
|
23
|
+
* Ordered by preference (sandboxed app first, then non-sandboxed, then legacy)
|
|
24
|
+
*/
|
|
25
|
+
const ENCLAVE_SOCKET_PATHS = [
|
|
26
|
+
// Sandboxed app path (Mac App Store version)
|
|
27
|
+
`${process.env['HOME']}/Library/Containers/com.JessicaMulein.EnclaveBridge/Data/.enclave/enclave-bridge.sock`,
|
|
28
|
+
// Non-sandboxed path (direct install)
|
|
29
|
+
`${process.env['HOME']}/.enclave/enclave-bridge.sock`,
|
|
30
|
+
// Legacy/default path
|
|
31
|
+
'/tmp/enclave-bridge.sock',
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Find the first available socket path
|
|
35
|
+
* @returns The socket path if found, null otherwise
|
|
36
|
+
*/
|
|
37
|
+
async function findSocketPath() {
|
|
38
|
+
for (const socketPath of ENCLAVE_SOCKET_PATHS) {
|
|
39
|
+
try {
|
|
40
|
+
await fs.access(socketPath);
|
|
41
|
+
return socketPath;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Try next path
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
let EnclaveBridgeClientClass = null;
|
|
50
|
+
/**
|
|
51
|
+
* Loads the EnclaveBridgeClient dynamically
|
|
52
|
+
* This is needed because the enclave-bridge-client is an ESM module
|
|
53
|
+
*/
|
|
54
|
+
async function loadEnclaveBridgeClient() {
|
|
55
|
+
if (EnclaveBridgeClientClass) {
|
|
56
|
+
return EnclaveBridgeClientClass;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const module = await Promise.resolve().then(() => tslib_1.__importStar(require('@digitaldefiance/enclave-bridge-client')));
|
|
60
|
+
EnclaveBridgeClientClass = module.EnclaveBridgeClient;
|
|
61
|
+
return EnclaveBridgeClientClass;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
throw new Error(`Failed to load enclave-bridge-client: ${error instanceof Error ? error.message : String(error)}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
let eciesServiceInstance = null;
|
|
68
|
+
async function getEciesService() {
|
|
69
|
+
if (eciesServiceInstance) {
|
|
70
|
+
return eciesServiceInstance;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const eciesLib = await Promise.resolve().then(() => tslib_1.__importStar(require('@digitaldefiance/node-ecies-lib')));
|
|
74
|
+
eciesServiceInstance = new eciesLib.ECIESService();
|
|
75
|
+
return eciesServiceInstance;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw new Error(`Failed to load node-ecies-lib: ${error instanceof Error ? error.message : String(error)}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* SecureEnclaveKeyring: Secure key storage using Apple Secure Enclave
|
|
83
|
+
*
|
|
84
|
+
* Keys are encrypted with two layers:
|
|
85
|
+
* 1. Password-based encryption (AES-256-GCM with scrypt-derived key)
|
|
86
|
+
* 2. ECIES encryption with the Secure Enclave's secp256k1 key
|
|
87
|
+
*
|
|
88
|
+
* This provides defense in depth - even if an attacker obtains the encrypted
|
|
89
|
+
* key file, they need both the password AND access to the Secure Enclave.
|
|
90
|
+
*/
|
|
91
|
+
class SecureEnclaveKeyring {
|
|
92
|
+
constructor() {
|
|
93
|
+
this.clientPublicKey = null;
|
|
94
|
+
this.initialized = false;
|
|
95
|
+
// Store keys in user home directory under .brightchain-enclave-keys
|
|
96
|
+
this.keyDir = path.join(process.env['HOME'] || process.env['USERPROFILE'] || '.', '.brightchain-enclave-keys');
|
|
97
|
+
}
|
|
98
|
+
static getInstance() {
|
|
99
|
+
if (!SecureEnclaveKeyring.instance) {
|
|
100
|
+
SecureEnclaveKeyring.instance = new SecureEnclaveKeyring();
|
|
101
|
+
}
|
|
102
|
+
return SecureEnclaveKeyring.instance;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Check if the Secure Enclave bridge is available and fully operational
|
|
106
|
+
*
|
|
107
|
+
* This performs a comprehensive check that:
|
|
108
|
+
* 1. Verifies we're on macOS Apple Silicon
|
|
109
|
+
* 2. Finds an available socket path
|
|
110
|
+
* 3. Connects to the Enclave Bridge socket
|
|
111
|
+
* 4. Pings the bridge to verify it's responsive
|
|
112
|
+
* 5. Retrieves the secp256k1 public key (verifies key handshake works)
|
|
113
|
+
* 6. Signs test data with the Secure Enclave (verifies enclave access)
|
|
114
|
+
*
|
|
115
|
+
* @param debug - Enable debug logging
|
|
116
|
+
* @throws Error if REQUIRE_SECURE_ENCLAVE=true and bridge is not available
|
|
117
|
+
* @returns true only if all checks pass
|
|
118
|
+
*/
|
|
119
|
+
static async isAvailable(debug = false) {
|
|
120
|
+
const log = debug ? console.log.bind(console) : () => { };
|
|
121
|
+
const requireBridge = process.env['REQUIRE_SECURE_ENCLAVE'] === 'true';
|
|
122
|
+
// Only available on macOS Apple Silicon
|
|
123
|
+
if (process.platform !== 'darwin' || process.arch !== 'arm64') {
|
|
124
|
+
log('❌ Not macOS Apple Silicon');
|
|
125
|
+
if (requireBridge) {
|
|
126
|
+
throw new Error('REQUIRE_SECURE_ENCLAVE is set but not running on macOS Apple Silicon (darwin/arm64)');
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
log('✅ Platform check passed');
|
|
131
|
+
// Find an available socket
|
|
132
|
+
const socketPath = await findSocketPath();
|
|
133
|
+
if (!socketPath) {
|
|
134
|
+
log('❌ No socket found');
|
|
135
|
+
if (requireBridge) {
|
|
136
|
+
throw new Error(`REQUIRE_SECURE_ENCLAVE is set but Enclave Bridge socket not found. ` +
|
|
137
|
+
`Checked paths: ${ENCLAVE_SOCKET_PATHS.join(', ')}. ` +
|
|
138
|
+
`Please ensure the Enclave Bridge app is running.`);
|
|
139
|
+
}
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
log('✅ Socket found:', socketPath);
|
|
143
|
+
let client = null;
|
|
144
|
+
try {
|
|
145
|
+
const EnclaveBridgeClient = await loadEnclaveBridgeClient();
|
|
146
|
+
client = new EnclaveBridgeClient({ socketPath, timeout: 5000 });
|
|
147
|
+
// Step 1: Connect to the socket
|
|
148
|
+
await client.connect();
|
|
149
|
+
if (!client.isConnected) {
|
|
150
|
+
log('❌ Failed to connect');
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
log('✅ Connected');
|
|
154
|
+
// Step 2: Ping the bridge
|
|
155
|
+
const pingOk = await client.ping();
|
|
156
|
+
if (!pingOk) {
|
|
157
|
+
log('❌ Ping failed');
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
log('✅ Ping OK');
|
|
161
|
+
// Step 3: Get the secp256k1 public key (required for ECIES)
|
|
162
|
+
const publicKeyInfo = await client.getPublicKey();
|
|
163
|
+
log('📦 Public key info:', {
|
|
164
|
+
length: publicKeyInfo.buffer?.length,
|
|
165
|
+
firstByte: publicKeyInfo.buffer?.[0]?.toString(16),
|
|
166
|
+
});
|
|
167
|
+
if (!publicKeyInfo.buffer || publicKeyInfo.buffer.length === 0) {
|
|
168
|
+
log('❌ No public key returned');
|
|
169
|
+
return false; // Invalid or missing public key
|
|
170
|
+
}
|
|
171
|
+
// For compressed keys, verify prefix (0x02 or 0x03)
|
|
172
|
+
if (publicKeyInfo.buffer.length === 33) {
|
|
173
|
+
if (publicKeyInfo.buffer[0] !== 0x02 &&
|
|
174
|
+
publicKeyInfo.buffer[0] !== 0x03) {
|
|
175
|
+
log('❌ Invalid compressed key prefix');
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
log('✅ Public key OK');
|
|
180
|
+
// Step 4: Get the Secure Enclave public key (P-256)
|
|
181
|
+
const enclaveKey = await client.getEnclavePublicKey();
|
|
182
|
+
log('📦 Enclave key info:', { length: enclaveKey.buffer?.length });
|
|
183
|
+
if (!enclaveKey.buffer || enclaveKey.buffer.length === 0) {
|
|
184
|
+
log('❌ No enclave key returned');
|
|
185
|
+
return false; // Invalid P-256 key
|
|
186
|
+
}
|
|
187
|
+
log('✅ Enclave key OK');
|
|
188
|
+
// Step 5: Test signing with Secure Enclave
|
|
189
|
+
const testData = Buffer.from('enclave-availability-test');
|
|
190
|
+
const signature = await client.enclaveSign(testData);
|
|
191
|
+
log('📦 Signature info:', { length: signature.buffer?.length });
|
|
192
|
+
if (!signature.buffer || signature.buffer.length === 0) {
|
|
193
|
+
log('❌ No signature returned');
|
|
194
|
+
return false; // Invalid signature
|
|
195
|
+
}
|
|
196
|
+
log('✅ Signature OK');
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
201
|
+
log('❌ Error:', errorMsg);
|
|
202
|
+
if (requireBridge) {
|
|
203
|
+
throw new Error(`REQUIRE_SECURE_ENCLAVE is set but Enclave Bridge check failed: ${errorMsg}`);
|
|
204
|
+
}
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
if (client?.isConnected) {
|
|
209
|
+
try {
|
|
210
|
+
await client.disconnect();
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
// Ignore disconnect errors
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Initialize the keyring
|
|
220
|
+
* - Creates the key storage directory
|
|
221
|
+
* - Connects to the Enclave Bridge to get the public key
|
|
222
|
+
*
|
|
223
|
+
* @throws Error if bridge is not available and REQUIRE_SECURE_ENCLAVE is set
|
|
224
|
+
*/
|
|
225
|
+
async initialize() {
|
|
226
|
+
if (this.initialized) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
// Check availability first if required
|
|
230
|
+
const requireBridge = process.env['REQUIRE_SECURE_ENCLAVE'] === 'true';
|
|
231
|
+
if (requireBridge) {
|
|
232
|
+
// This will throw if not available
|
|
233
|
+
await SecureEnclaveKeyring.isAvailable();
|
|
234
|
+
}
|
|
235
|
+
// Create key directory
|
|
236
|
+
await fs.mkdir(this.keyDir, { recursive: true, mode: 0o700 });
|
|
237
|
+
// Find the socket path
|
|
238
|
+
const socketPath = await findSocketPath();
|
|
239
|
+
if (!socketPath) {
|
|
240
|
+
const error = new Error('Enclave Bridge socket not found. Is the Enclave Bridge app running? ' +
|
|
241
|
+
`Checked paths: ${ENCLAVE_SOCKET_PATHS.join(', ')}`);
|
|
242
|
+
if (requireBridge) {
|
|
243
|
+
throw error;
|
|
244
|
+
}
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
// Get the Enclave Bridge public key for ECIES encryption
|
|
248
|
+
const EnclaveBridgeClient = await loadEnclaveBridgeClient();
|
|
249
|
+
const client = new EnclaveBridgeClient({ socketPath });
|
|
250
|
+
try {
|
|
251
|
+
await client.connect();
|
|
252
|
+
const publicKeyInfo = await client.getPublicKey();
|
|
253
|
+
this.clientPublicKey = publicKeyInfo.buffer;
|
|
254
|
+
}
|
|
255
|
+
finally {
|
|
256
|
+
await client.disconnect();
|
|
257
|
+
}
|
|
258
|
+
this.initialized = true;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Store a key securely
|
|
262
|
+
*
|
|
263
|
+
* @param id - Unique identifier for the key
|
|
264
|
+
* @param data - The raw key data to store
|
|
265
|
+
* @param password - Password for additional encryption layer
|
|
266
|
+
*/
|
|
267
|
+
async storeKey(id, data, password) {
|
|
268
|
+
await this.ensureInitialized();
|
|
269
|
+
// Step 1: Password-based encryption (inner layer)
|
|
270
|
+
const salt = crypto.randomBytes(32);
|
|
271
|
+
const iv = crypto.randomBytes(12);
|
|
272
|
+
const derivedKey = await this.deriveKey(password, salt);
|
|
273
|
+
const cipher = crypto.createCipheriv('aes-256-gcm', derivedKey, iv);
|
|
274
|
+
const passwordEncrypted = Buffer.concat([
|
|
275
|
+
cipher.update(Buffer.from(data)),
|
|
276
|
+
cipher.final(),
|
|
277
|
+
]);
|
|
278
|
+
const authTag = cipher.getAuthTag();
|
|
279
|
+
// Combine password-encrypted data: salt || iv || authTag || ciphertext
|
|
280
|
+
const innerEncrypted = Buffer.concat([
|
|
281
|
+
salt,
|
|
282
|
+
iv,
|
|
283
|
+
authTag,
|
|
284
|
+
passwordEncrypted,
|
|
285
|
+
]);
|
|
286
|
+
// Step 2: ECIES encryption with Secure Enclave key (outer layer)
|
|
287
|
+
const eciesService = await getEciesService();
|
|
288
|
+
const enclaveEncrypted = eciesService.encryptBasic(this.clientPublicKey, innerEncrypted);
|
|
289
|
+
// Store the double-encrypted data
|
|
290
|
+
await fs.writeFile(this.keyPath(id), enclaveEncrypted, { mode: 0o600 });
|
|
291
|
+
// Zero out sensitive data
|
|
292
|
+
this.zeroBuffer(derivedKey);
|
|
293
|
+
this.zeroBuffer(passwordEncrypted);
|
|
294
|
+
this.zeroBuffer(innerEncrypted);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Retrieve a key
|
|
298
|
+
*
|
|
299
|
+
* @param id - Unique identifier for the key
|
|
300
|
+
* @param password - Password for decryption
|
|
301
|
+
* @returns The decrypted key data
|
|
302
|
+
*/
|
|
303
|
+
async retrieveKey(id, password) {
|
|
304
|
+
await this.ensureInitialized();
|
|
305
|
+
// Read the encrypted file
|
|
306
|
+
const enclaveEncrypted = await fs.readFile(this.keyPath(id));
|
|
307
|
+
// Find the socket path
|
|
308
|
+
const socketPath = await findSocketPath();
|
|
309
|
+
if (!socketPath) {
|
|
310
|
+
throw new Error('Enclave Bridge socket not found');
|
|
311
|
+
}
|
|
312
|
+
// Step 1: Decrypt with Secure Enclave (outer layer)
|
|
313
|
+
const EnclaveBridgeClient = await loadEnclaveBridgeClient();
|
|
314
|
+
const client = new EnclaveBridgeClient({ socketPath });
|
|
315
|
+
let innerEncrypted;
|
|
316
|
+
try {
|
|
317
|
+
await client.connect();
|
|
318
|
+
const decryptResult = await client.decrypt(enclaveEncrypted);
|
|
319
|
+
innerEncrypted = decryptResult.buffer;
|
|
320
|
+
}
|
|
321
|
+
finally {
|
|
322
|
+
await client.disconnect();
|
|
323
|
+
}
|
|
324
|
+
// Step 2: Decrypt with password (inner layer)
|
|
325
|
+
// Format: salt (32) || iv (12) || authTag (16) || ciphertext
|
|
326
|
+
const salt = innerEncrypted.subarray(0, 32);
|
|
327
|
+
const iv = innerEncrypted.subarray(32, 44);
|
|
328
|
+
const authTag = innerEncrypted.subarray(44, 60);
|
|
329
|
+
const passwordEncrypted = innerEncrypted.subarray(60);
|
|
330
|
+
const derivedKey = await this.deriveKey(password, salt);
|
|
331
|
+
const decipher = crypto.createDecipheriv('aes-256-gcm', derivedKey, iv);
|
|
332
|
+
decipher.setAuthTag(authTag);
|
|
333
|
+
try {
|
|
334
|
+
const decrypted = Buffer.concat([
|
|
335
|
+
decipher.update(passwordEncrypted),
|
|
336
|
+
decipher.final(),
|
|
337
|
+
]);
|
|
338
|
+
// Zero out sensitive data
|
|
339
|
+
this.zeroBuffer(derivedKey);
|
|
340
|
+
this.zeroBuffer(innerEncrypted);
|
|
341
|
+
return decrypted;
|
|
342
|
+
}
|
|
343
|
+
catch {
|
|
344
|
+
this.zeroBuffer(derivedKey);
|
|
345
|
+
this.zeroBuffer(innerEncrypted);
|
|
346
|
+
throw new Error('Decryption failed: invalid password or corrupted data');
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Rotate a key's password
|
|
351
|
+
*
|
|
352
|
+
* @param id - Unique identifier for the key
|
|
353
|
+
* @param oldPassword - Current password
|
|
354
|
+
* @param newPassword - New password to set
|
|
355
|
+
*/
|
|
356
|
+
async rotateKey(id, oldPassword, newPassword) {
|
|
357
|
+
// Retrieve with old password, store with new password
|
|
358
|
+
const data = await this.retrieveKey(id, oldPassword);
|
|
359
|
+
try {
|
|
360
|
+
await this.storeKey(id, data, newPassword);
|
|
361
|
+
}
|
|
362
|
+
finally {
|
|
363
|
+
this.zeroBuffer(data);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Delete a key from storage
|
|
368
|
+
*
|
|
369
|
+
* @param id - Unique identifier for the key to delete
|
|
370
|
+
*/
|
|
371
|
+
async deleteKey(id) {
|
|
372
|
+
const keyPath = this.keyPath(id);
|
|
373
|
+
try {
|
|
374
|
+
// Overwrite with random data before deletion for security
|
|
375
|
+
const stats = await fs.stat(keyPath);
|
|
376
|
+
await fs.writeFile(keyPath, crypto.randomBytes(stats.size));
|
|
377
|
+
await fs.unlink(keyPath);
|
|
378
|
+
}
|
|
379
|
+
catch (error) {
|
|
380
|
+
if (error.code !== 'ENOENT') {
|
|
381
|
+
throw error;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Check if a key exists
|
|
387
|
+
*
|
|
388
|
+
* @param id - Unique identifier for the key
|
|
389
|
+
* @returns true if the key exists in storage
|
|
390
|
+
*/
|
|
391
|
+
async hasKey(id) {
|
|
392
|
+
try {
|
|
393
|
+
await fs.access(this.keyPath(id));
|
|
394
|
+
return true;
|
|
395
|
+
}
|
|
396
|
+
catch {
|
|
397
|
+
return false;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* List all stored key IDs
|
|
402
|
+
*
|
|
403
|
+
* @returns Array of key IDs
|
|
404
|
+
*/
|
|
405
|
+
async listKeys() {
|
|
406
|
+
await this.ensureInitialized();
|
|
407
|
+
const files = await fs.readdir(this.keyDir);
|
|
408
|
+
return files
|
|
409
|
+
.filter((f) => f.endsWith('.enclave'))
|
|
410
|
+
.map((f) => f.replace('.enclave', ''));
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Sign data using the Secure Enclave's P-256 key
|
|
414
|
+
* This is a bonus feature - allows signing with hardware-backed keys
|
|
415
|
+
*
|
|
416
|
+
* @param data - Data to sign
|
|
417
|
+
* @returns Signature in DER format
|
|
418
|
+
*/
|
|
419
|
+
async signWithEnclave(data) {
|
|
420
|
+
const socketPath = await findSocketPath();
|
|
421
|
+
if (!socketPath) {
|
|
422
|
+
throw new Error('Enclave Bridge socket not found');
|
|
423
|
+
}
|
|
424
|
+
const EnclaveBridgeClient = await loadEnclaveBridgeClient();
|
|
425
|
+
const client = new EnclaveBridgeClient({ socketPath });
|
|
426
|
+
try {
|
|
427
|
+
await client.connect();
|
|
428
|
+
const result = await client.enclaveSign(data);
|
|
429
|
+
return result.buffer;
|
|
430
|
+
}
|
|
431
|
+
finally {
|
|
432
|
+
await client.disconnect();
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Get the Secure Enclave's P-256 public key
|
|
437
|
+
* Can be used for signature verification
|
|
438
|
+
*
|
|
439
|
+
* @returns The P-256 public key
|
|
440
|
+
*/
|
|
441
|
+
async getEnclavePublicKey() {
|
|
442
|
+
const socketPath = await findSocketPath();
|
|
443
|
+
if (!socketPath) {
|
|
444
|
+
throw new Error('Enclave Bridge socket not found');
|
|
445
|
+
}
|
|
446
|
+
const EnclaveBridgeClient = await loadEnclaveBridgeClient();
|
|
447
|
+
const client = new EnclaveBridgeClient({ socketPath });
|
|
448
|
+
try {
|
|
449
|
+
await client.connect();
|
|
450
|
+
const result = await client.getEnclavePublicKey();
|
|
451
|
+
return result.buffer;
|
|
452
|
+
}
|
|
453
|
+
finally {
|
|
454
|
+
await client.disconnect();
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
// ============================================================================
|
|
458
|
+
// Private Helpers
|
|
459
|
+
// ============================================================================
|
|
460
|
+
async ensureInitialized() {
|
|
461
|
+
if (!this.initialized) {
|
|
462
|
+
await this.initialize();
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
keyPath(id) {
|
|
466
|
+
// Sanitize the ID to prevent path traversal
|
|
467
|
+
const safeId = id.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
468
|
+
return path.join(this.keyDir, `${safeId}.enclave`);
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Derive an encryption key from a password using scrypt
|
|
472
|
+
*/
|
|
473
|
+
async deriveKey(password, salt) {
|
|
474
|
+
return await new Promise((resolve, reject) => {
|
|
475
|
+
crypto.scrypt(password, salt, 32, { N: 2 ** 14, r: 8, p: 1 }, (err, derivedKey) => {
|
|
476
|
+
if (err)
|
|
477
|
+
reject(err);
|
|
478
|
+
else
|
|
479
|
+
resolve(derivedKey);
|
|
480
|
+
});
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* Securely zero a buffer to prevent sensitive data from lingering in memory
|
|
485
|
+
*/
|
|
486
|
+
zeroBuffer(buf) {
|
|
487
|
+
buf.fill(0);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
exports.SecureEnclaveKeyring = SecureEnclaveKeyring;
|
|
491
|
+
//# sourceMappingURL=secureEnclaveKeyring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secureEnclaveKeyring.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/secureEnclaveKeyring.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BlockSize, IFecService, IQuorumMember, QuorumDocumentInfo, QuorumMemberMetadata, QuorumService, SealedDocumentResult } from '@brightchain/brightchain-lib';
|
|
2
|
-
import {
|
|
2
|
+
import { Member, ShortHexGuid } from '@digitaldefiance/ecies-lib';
|
|
3
|
+
import type { GuidV4Buffer } from '@digitaldefiance/node-ecies-lib/src/types/guid-versions';
|
|
3
4
|
import { DiskBlockAsyncStore } from '../stores/diskBlockAsyncStore';
|
|
4
5
|
/**
|
|
5
6
|
* DiskQuorumService extends QuorumService with disk-based persistence
|
|
@@ -11,16 +12,16 @@ import { DiskBlockAsyncStore } from '../stores/diskBlockAsyncStore';
|
|
|
11
12
|
* The service can optionally be configured with an FEC service for
|
|
12
13
|
* parity generation and recovery on the underlying block store.
|
|
13
14
|
*/
|
|
14
|
-
export declare class DiskQuorumService extends QuorumService<
|
|
15
|
+
export declare class DiskQuorumService extends QuorumService<GuidV4Buffer> {
|
|
15
16
|
private readonly memberCollection;
|
|
16
17
|
private readonly documentCollection;
|
|
17
18
|
private readonly blockStore;
|
|
18
19
|
constructor(storagePath: string, blockSize?: BlockSize, fecService?: IFecService);
|
|
19
|
-
addMember(member: Member<
|
|
20
|
+
addMember(member: Member<GuidV4Buffer>, metadata: QuorumMemberMetadata): Promise<IQuorumMember<GuidV4Buffer>>;
|
|
20
21
|
removeMember(memberId: ShortHexGuid): Promise<void>;
|
|
21
|
-
getMember(memberId: ShortHexGuid): Promise<IQuorumMember<
|
|
22
|
-
listMembers(): Promise<IQuorumMember<
|
|
23
|
-
sealDocument<T>(agent: Member<
|
|
22
|
+
getMember(memberId: ShortHexGuid): Promise<IQuorumMember<GuidV4Buffer> | null>;
|
|
23
|
+
listMembers(): Promise<IQuorumMember<GuidV4Buffer>[]>;
|
|
24
|
+
sealDocument<T>(agent: Member<GuidV4Buffer>, document: T, memberIds: ShortHexGuid[], sharesRequired?: number): Promise<SealedDocumentResult<GuidV4Buffer>>;
|
|
24
25
|
/**
|
|
25
26
|
* Serialize encrypted shares from QuorumDataRecord to storage format
|
|
26
27
|
* Note: encryptedSharesByMemberId uses ShortHexGuid keys (already hex strings)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskQuorumService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/diskQuorumService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EAEb,kBAAkB,EAGlB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"diskQuorumService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/diskQuorumService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EAEb,kBAAkB,EAGlB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,MAAM,EACN,YAAY,EAEb,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAM5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AA8BpE;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,SAAQ,aAAa,CAAC,YAAY,CAAC;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2C;IAC5E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6C;IAChF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;gBAG/C,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,SAA2B,EACtC,UAAU,CAAC,EAAE,WAAW;IA2BX,SAAS,CACtB,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,EAC5B,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAmBxB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnD,SAAS,CACtB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IAuB/B,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;IAsBrD,YAAY,CAAC,CAAC,EAC3B,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,EAC3B,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,YAAY,EAAE,EACzB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IA+B9C;;;OAGG;IACH,OAAO,CAAC,eAAe;IAgBR,WAAW,CACxB,UAAU,EAAE,YAAY,GACvB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAwBtB,aAAa,CAC1B,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAyBjB,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD,SAAS,CACtB,UAAU,EAAE,YAAY,EACxB,SAAS,EAAE,YAAY,EAAE,GACxB,OAAO,CAAC;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,YAAY,EAAE,CAAC;KAChC,CAAC;IAgCF;;;OAGG;IACG,qBAAqB,CAAC,UAAU,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBpE;;;;OAIG;IACH,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAInD;;;OAGG;IACH,aAAa,IAAI,mBAAmB;CAGrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskQuorumService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/diskQuorumService.ts"],"names":[],"mappings":";;;AAAA,kEAWsC;AACtC,
|
|
1
|
+
{"version":3,"file":"diskQuorumService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/diskQuorumService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { GuidV4 } from '@digitaldefiance/ecies-lib';
|
|
2
1
|
import type { IEmailTokenDocument } from './documents/email-token';
|
|
3
2
|
import type { IMnemonicDocument } from './documents/mnemonic';
|
|
4
3
|
import type { IRoleDocument } from './documents/role';
|
|
@@ -8,8 +7,10 @@ import type { IUserRoleDocument } from './documents/user-role';
|
|
|
8
7
|
import { ModelName } from './enumerations/model-name';
|
|
9
8
|
import { SchemaCollection } from './enumerations/schema-collection';
|
|
10
9
|
export type { SignatureBuffer } from '@digitaldefiance/node-ecies-lib';
|
|
10
|
+
export type { GuidV4Buffer } from '@digitaldefiance/node-ecies-lib/src/types/guid-versions';
|
|
11
11
|
export type ClientSession = any;
|
|
12
|
-
|
|
12
|
+
import type { DefaultBackendIdType as DefaultBackendIdType_ } from './types/backend-id';
|
|
13
|
+
export type DefaultBackendIdType = DefaultBackendIdType_;
|
|
13
14
|
/**
|
|
14
15
|
* Block storage schema definition (replaces Mongoose Schema)
|
|
15
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-types.d.ts","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/shared-types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"shared-types.d.ts","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/shared-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,YAAY,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAI5F,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC;AAKhC,OAAO,KAAK,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACxF,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,oBAAoB,EAAE,6BAA6B,CAAC;IACpD,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskCBLStore.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/diskCBLStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EAKT,QAAQ,EAER,yBAAyB,EACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"diskCBLStore.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/diskCBLStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EAKT,QAAQ,EAER,yBAAyB,EACzB,cAAc,EAGd,SAAS,EAGV,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAe,MAAM,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAU7E;;;;;GAKG;AACH,qBAAa,YAAY,CACvB,GAAG,SAAS,UAAU,GAAG,UAAU,CACnC,YAAW,SAAS,CAAC,GAAG,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,WAAW,CAAC,CAAc;IAE3B,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;gBAI1B,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE;IAkC/D;;;;OAIG;IACI,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;IAW7C;;OAEG;IACU,GAAG,CACd,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC;IAgChB;;OAEG;IACU,GAAG,CACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAC7C,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;IA4H1C;;OAEG;IACI,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAKvC;;OAEG;IACU,eAAe,CAC1B,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GACjD,OAAO,CAAC,QAAQ,EAAE,CAAC;IAatB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,eAAe;CAYxB"}
|