mindoodb 0.0.51 → 0.0.53
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-server.md +11 -2
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +13 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +45 -20
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.d.ts +2 -0
- package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.js +6 -62
- package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +24 -0
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +75 -24
- package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
- package/dist/browser/index.mjs +57 -0
- package/dist/core/BaseMindooDB.d.ts +85 -10
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +687 -196
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +59 -7
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +407 -86
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +61 -9
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +363 -35
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/core/BaseMindooTenantFactory.d.ts +17 -1
- package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantFactory.js +286 -17
- package/dist/core/BaseMindooTenantFactory.js.map +1 -1
- package/dist/core/accesscontrol/DirectoryStateNode.d.ts +68 -1
- package/dist/core/accesscontrol/DirectoryStateNode.d.ts.map +1 -1
- package/dist/core/accesscontrol/DirectoryStateNode.js +157 -4
- package/dist/core/accesscontrol/DirectoryStateNode.js.map +1 -1
- package/dist/core/accesscontrol/directoryProjection.d.ts.map +1 -1
- package/dist/core/accesscontrol/directoryProjection.js +14 -5
- package/dist/core/accesscontrol/directoryProjection.js.map +1 -1
- package/dist/core/accesscontrol/grantKeys.d.ts +17 -14
- package/dist/core/accesscontrol/grantKeys.d.ts.map +1 -1
- package/dist/core/accesscontrol/grantKeys.js +51 -21
- package/dist/core/accesscontrol/grantKeys.js.map +1 -1
- package/dist/core/accesscontrol/types.d.ts +2 -1
- package/dist/core/accesscontrol/types.d.ts.map +1 -1
- package/dist/core/accesscontrol/types.js +3 -2
- package/dist/core/accesscontrol/types.js.map +1 -1
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts +7 -0
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/AuthenticationService.js +70 -14
- package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
- package/dist/core/appendonlystores/network/entryWireCodec.d.ts +51 -0
- package/dist/core/appendonlystores/network/entryWireCodec.d.ts.map +1 -0
- package/dist/core/appendonlystores/network/entryWireCodec.js +93 -0
- package/dist/core/appendonlystores/network/entryWireCodec.js.map +1 -0
- package/dist/core/builtinDbInvariants.d.ts +53 -0
- package/dist/core/builtinDbInvariants.d.ts.map +1 -0
- package/dist/core/builtinDbInvariants.js +147 -0
- package/dist/core/builtinDbInvariants.js.map +1 -0
- package/dist/core/copy/feasibility.d.ts.map +1 -1
- package/dist/core/copy/feasibility.js +3 -0
- package/dist/core/copy/feasibility.js.map +1 -1
- package/dist/core/copy/flatten.d.ts.map +1 -1
- package/dist/core/copy/flatten.js +6 -1
- package/dist/core/copy/flatten.js.map +1 -1
- package/dist/core/copy/host.d.ts +5 -0
- package/dist/core/copy/host.d.ts.map +1 -1
- package/dist/core/copy/preflight.d.ts.map +1 -1
- package/dist/core/copy/preflight.js +7 -1
- package/dist/core/copy/preflight.js.map +1 -1
- package/dist/core/copy/types.d.ts +7 -0
- package/dist/core/copy/types.d.ts.map +1 -1
- package/dist/core/crypto/EntrySignature.d.ts +8 -2
- package/dist/core/crypto/EntrySignature.d.ts.map +1 -1
- package/dist/core/crypto/EntrySignature.js +14 -5
- package/dist/core/crypto/EntrySignature.js.map +1 -1
- package/dist/core/crypto/MindooDocSigner.d.ts.map +1 -1
- package/dist/core/crypto/MindooDocSigner.js +11 -2
- package/dist/core/crypto/MindooDocSigner.js.map +1 -1
- package/dist/core/crypto/RSAEncryption.d.ts +19 -0
- package/dist/core/crypto/RSAEncryption.d.ts.map +1 -1
- package/dist/core/crypto/RSAEncryption.js +36 -3
- package/dist/core/crypto/RSAEncryption.js.map +1 -1
- package/dist/core/crypto/privateKeyEncryption.js +1 -1
- package/dist/core/crypto/privateKeyEncryption.js.map +1 -1
- package/dist/core/crypto/rsaOaep3072.d.ts +12 -0
- package/dist/core/crypto/rsaOaep3072.d.ts.map +1 -0
- package/dist/core/crypto/rsaOaep3072.js +30 -0
- package/dist/core/crypto/rsaOaep3072.js.map +1 -0
- package/dist/core/index.d.ts +7 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +30 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/join/deviceJoinBootstrap.d.ts +23 -0
- package/dist/core/join/deviceJoinBootstrap.d.ts.map +1 -0
- package/dist/core/join/deviceJoinBootstrap.js +37 -0
- package/dist/core/join/deviceJoinBootstrap.js.map +1 -0
- package/dist/core/keys/KeyBag.d.ts +20 -2
- package/dist/core/keys/KeyBag.d.ts.map +1 -1
- package/dist/core/keys/KeyBag.js +22 -10
- package/dist/core/keys/KeyBag.js.map +1 -1
- package/dist/core/logging/MindooLogger.d.ts.map +1 -1
- package/dist/core/logging/MindooLogger.js +65 -40
- package/dist/core/logging/MindooLogger.js.map +1 -1
- package/dist/core/tenantIdValidation.d.ts.map +1 -1
- package/dist/core/tenantIdValidation.js +1 -1
- package/dist/core/tenantIdValidation.js.map +1 -1
- package/dist/core/tenantSetup.d.ts +94 -9
- package/dist/core/tenantSetup.d.ts.map +1 -1
- package/dist/core/tenantSetup.js +208 -20
- package/dist/core/tenantSetup.js.map +1 -1
- package/dist/core/types.d.ts +295 -33
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +14 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/uri/joinRequestUri.d.ts.map +1 -1
- package/dist/core/uri/joinRequestUri.js +12 -3
- package/dist/core/uri/joinRequestUri.js.map +1 -1
- package/dist/core/userid/canonicalUsername.d.ts +66 -0
- package/dist/core/userid/canonicalUsername.d.ts.map +1 -0
- package/dist/core/userid/canonicalUsername.js +235 -0
- package/dist/core/userid/canonicalUsername.js.map +1 -0
- package/dist/core/userid/index.d.ts +9 -0
- package/dist/core/userid/index.d.ts.map +1 -1
- package/dist/core/userid/index.js +14 -0
- package/dist/core/userid/index.js.map +1 -1
- package/dist/core/userkeys/UserKeyDocument.d.ts +50 -0
- package/dist/core/userkeys/UserKeyDocument.d.ts.map +1 -0
- package/dist/core/userkeys/UserKeyDocument.js +145 -0
- package/dist/core/userkeys/UserKeyDocument.js.map +1 -0
- package/dist/core/userkeys/UserKeyManager.d.ts +170 -0
- package/dist/core/userkeys/UserKeyManager.d.ts.map +1 -0
- package/dist/core/userkeys/UserKeyManager.js +1277 -0
- package/dist/core/userkeys/UserKeyManager.js.map +1 -0
- package/dist/core/userkeys/fingerprint.d.ts +17 -0
- package/dist/core/userkeys/fingerprint.d.ts.map +1 -0
- package/dist/core/userkeys/fingerprint.js +59 -0
- package/dist/core/userkeys/fingerprint.js.map +1 -0
- package/dist/core/userkeys/index.d.ts +11 -0
- package/dist/core/userkeys/index.d.ts.map +1 -0
- package/dist/core/userkeys/index.js +49 -0
- package/dist/core/userkeys/index.js.map +1 -0
- package/dist/core/userkeys/recipients.d.ts +51 -0
- package/dist/core/userkeys/recipients.d.ts.map +1 -0
- package/dist/core/userkeys/recipients.js +292 -0
- package/dist/core/userkeys/recipients.js.map +1 -0
- package/dist/core/userkeys/resolveUserKeyDocument.d.ts +21 -0
- package/dist/core/userkeys/resolveUserKeyDocument.d.ts.map +1 -0
- package/dist/core/userkeys/resolveUserKeyDocument.js +98 -0
- package/dist/core/userkeys/resolveUserKeyDocument.js.map +1 -0
- package/dist/core/userkeys/sealedCrypto.d.ts +21 -0
- package/dist/core/userkeys/sealedCrypto.d.ts.map +1 -0
- package/dist/core/userkeys/sealedCrypto.js +79 -0
- package/dist/core/userkeys/sealedCrypto.js.map +1 -0
- package/dist/core/userkeys/sealedTypes.d.ts +72 -0
- package/dist/core/userkeys/sealedTypes.d.ts.map +1 -0
- package/dist/core/userkeys/sealedTypes.js +14 -0
- package/dist/core/userkeys/sealedTypes.js.map +1 -0
- package/dist/core/userkeys/types.d.ts +70 -0
- package/dist/core/userkeys/types.d.ts.map +1 -0
- package/dist/core/userkeys/types.js +48 -0
- package/dist/core/userkeys/types.js.map +1 -0
- package/dist/core/userkeys/validateUserKeyDocument.d.ts +19 -0
- package/dist/core/userkeys/validateUserKeyDocument.d.ts.map +1 -0
- package/dist/core/userkeys/validateUserKeyDocument.js +42 -0
- package/dist/core/userkeys/validateUserKeyDocument.js.map +1 -0
- package/dist/node/server/CapabilityMatcher.d.ts +5 -0
- package/dist/node/server/CapabilityMatcher.d.ts.map +1 -1
- package/dist/node/server/CapabilityMatcher.js +10 -1
- package/dist/node/server/CapabilityMatcher.js.map +1 -1
- package/dist/node/server/DeviceDiscoveryService.d.ts +36 -0
- package/dist/node/server/DeviceDiscoveryService.d.ts.map +1 -0
- package/dist/node/server/DeviceDiscoveryService.js +165 -0
- package/dist/node/server/DeviceDiscoveryService.js.map +1 -0
- package/dist/node/server/MindooDBServer.d.ts +13 -0
- package/dist/node/server/MindooDBServer.d.ts.map +1 -1
- package/dist/node/server/MindooDBServer.js +99 -61
- package/dist/node/server/MindooDBServer.js.map +1 -1
- package/dist/node/server/SystemAdminAuth.d.ts +7 -0
- package/dist/node/server/SystemAdminAuth.d.ts.map +1 -1
- package/dist/node/server/SystemAdminAuth.js +4 -1
- package/dist/node/server/SystemAdminAuth.js.map +1 -1
- package/dist/node/server/TenantManager.d.ts +29 -0
- package/dist/node/server/TenantManager.d.ts.map +1 -1
- package/dist/node/server/TenantManager.js +146 -7
- package/dist/node/server/TenantManager.js.map +1 -1
- package/package.json +5 -5
|
@@ -4,6 +4,10 @@ exports.BaseMindooTenantFactory = void 0;
|
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
const BaseMindooTenant_1 = require("./BaseMindooTenant");
|
|
6
6
|
const privateKeyEncryption_1 = require("./crypto/privateKeyEncryption");
|
|
7
|
+
const rsaOaep3072_1 = require("./crypto/rsaOaep3072");
|
|
8
|
+
const types_2 = require("./userkeys/types");
|
|
9
|
+
const RSAEncryption_1 = require("./crypto/RSAEncryption");
|
|
10
|
+
const deviceJoinBootstrap_1 = require("./join/deviceJoinBootstrap");
|
|
7
11
|
const pbkdf2Iterations_1 = require("./crypto/pbkdf2Iterations");
|
|
8
12
|
const KeyBag_1 = require("./keys/KeyBag");
|
|
9
13
|
const logging_1 = require("./logging");
|
|
@@ -12,6 +16,7 @@ const joinRequestUri_1 = require("./uri/joinRequestUri");
|
|
|
12
16
|
const tenantIdValidation_1 = require("./tenantIdValidation");
|
|
13
17
|
const timeSource_1 = require("./utils/timeSource");
|
|
14
18
|
const tenantSetup_1 = require("./tenantSetup");
|
|
19
|
+
const types_3 = require("./appendonlystores/types");
|
|
15
20
|
/**
|
|
16
21
|
* BaseTenantFactory is a platform-agnostic implementation of TenantFactory
|
|
17
22
|
* that creates and manages tenants and users.
|
|
@@ -70,6 +75,7 @@ class BaseMindooTenantFactory {
|
|
|
70
75
|
signingKey: options.preDecryptedUserKeys.signingKey,
|
|
71
76
|
encryptionKey: options.preDecryptedUserKeys.encryptionKey,
|
|
72
77
|
cacheEncryptionKey: options.preDecryptedUserKeys.cacheEncryptionKey,
|
|
78
|
+
userKeyPrivateBytes: options.preDecryptedUserKeys.userKeyPrivateBytes,
|
|
73
79
|
}
|
|
74
80
|
: undefined);
|
|
75
81
|
// Initialize the tenant
|
|
@@ -158,6 +164,17 @@ class BaseMindooTenantFactory {
|
|
|
158
164
|
this.logger.debug(`Created user ID: ${username}`);
|
|
159
165
|
return privateUserId;
|
|
160
166
|
}
|
|
167
|
+
async ensureUserKeyPair(user, password) {
|
|
168
|
+
if (user.userKeyPair)
|
|
169
|
+
return user.userKeyPair;
|
|
170
|
+
const generated = await (0, rsaOaep3072_1.generateRsaOaep3072)(this.cryptoAdapter);
|
|
171
|
+
const encrypted = await (0, privateKeyEncryption_1.encryptPrivateKey)(this.cryptoAdapter, generated.privateKeyBytes, password, types_2.USERKEY_PRIVATE_SALT);
|
|
172
|
+
user.userKeyPair = {
|
|
173
|
+
publicKey: generated.publicKeyPem,
|
|
174
|
+
privateKey: encrypted,
|
|
175
|
+
};
|
|
176
|
+
return user.userKeyPair;
|
|
177
|
+
}
|
|
161
178
|
/**
|
|
162
179
|
* Removes the private information from a private user ID and returns a public user ID.
|
|
163
180
|
*/
|
|
@@ -174,6 +191,26 @@ class BaseMindooTenantFactory {
|
|
|
174
191
|
const decryptedEncryptionKey = await (0, privateKeyEncryption_1.decryptPrivateKey)(this.cryptoAdapter, identity.userEncryptionKeyPair.privateKey, oldPassword, "encryption");
|
|
175
192
|
const encryptedSigningKey = await (0, privateKeyEncryption_1.encryptPrivateKey)(this.cryptoAdapter, new Uint8Array(decryptedSigningKey), newPassword, "signing");
|
|
176
193
|
const encryptedEncryptionKey = await (0, privateKeyEncryption_1.encryptPrivateKey)(this.cryptoAdapter, new Uint8Array(decryptedEncryptionKey), newPassword, "encryption");
|
|
194
|
+
let userKeyPair;
|
|
195
|
+
if (identity.userKeyPair) {
|
|
196
|
+
try {
|
|
197
|
+
userKeyPair = {
|
|
198
|
+
publicKey: identity.userKeyPair.publicKey,
|
|
199
|
+
privateKey: await (0, privateKeyEncryption_1.encryptPrivateKey)(this.cryptoAdapter, new Uint8Array(await (0, privateKeyEncryption_1.decryptPrivateKey)(this.cryptoAdapter, identity.userKeyPair.privateKey, oldPassword, types_2.USERKEY_PRIVATE_SALT)), newPassword, types_2.USERKEY_PRIVATE_SALT),
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
// Haven verifies the password by calling this with old === new.
|
|
204
|
+
// A stored User-Key that cannot be opened (wrong salt, truncated JSON)
|
|
205
|
+
// must not block unlocking the signing/encryption keys.
|
|
206
|
+
try {
|
|
207
|
+
this.logger.warn(`Skipping User-Key re-encrypt for ${identity.username}; signing/encryption keys still opened`, error);
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
// Logging a DOMException must never fail password change / unlock.
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
177
214
|
return {
|
|
178
215
|
username: identity.username,
|
|
179
216
|
userSigningKeyPair: {
|
|
@@ -184,6 +221,7 @@ class BaseMindooTenantFactory {
|
|
|
184
221
|
publicKey: identity.userEncryptionKeyPair.publicKey,
|
|
185
222
|
privateKey: encryptedEncryptionKey,
|
|
186
223
|
},
|
|
224
|
+
...(userKeyPair ? { userKeyPair } : {}),
|
|
187
225
|
};
|
|
188
226
|
}
|
|
189
227
|
/**
|
|
@@ -270,13 +308,33 @@ class BaseMindooTenantFactory {
|
|
|
270
308
|
// (no merge step needed) and returned as-is in the result, so the
|
|
271
309
|
// caller can persist it once after createTenant returns.
|
|
272
310
|
const keyBag = options.existingKeyBag ?? new KeyBag_1.KeyBag(appUser.userEncryptionKeyPair.privateKey, options.userPassword, this.cryptoAdapter, this.logger.createChild("KeyBag"));
|
|
273
|
-
|
|
274
|
-
|
|
311
|
+
// Stamp the founding keys: `createdAt` is the version identity travelling
|
|
312
|
+
// with every delivery and join response, so leaving it unset would make all
|
|
313
|
+
// versions of a key indistinguishable to delivery dedupe.
|
|
314
|
+
const keyCreatedAt = Date.now();
|
|
315
|
+
await keyBag.createDocKey(tenantId, types_1.DEFAULT_TENANT_KEY_ID, keyCreatedAt);
|
|
316
|
+
await keyBag.createDocKey(tenantId, types_1.PUBLIC_INFOS_KEY_ID, keyCreatedAt);
|
|
275
317
|
// 3. Open tenant
|
|
276
318
|
const tenant = await this.openTenant(tenantId, adminUser.userSigningKeyPair.publicKey, adminUser.userEncryptionKeyPair.publicKey, appUser, options.userPassword, keyBag, options.preDecryptedAppUserKeys ? { preDecryptedUserKeys: options.preDecryptedAppUserKeys } : undefined);
|
|
277
319
|
// 4. Register the app user in the directory
|
|
278
320
|
const directory = await tenant.openDirectory();
|
|
279
|
-
await directory.registerUser(this.toPublicUserId(appUser), adminUser.userSigningKeyPair.privateKey, options.adminPassword);
|
|
321
|
+
await directory.registerUser(this.toPublicUserId(appUser), adminUser.userSigningKeyPair.privateKey, options.adminPassword, undefined, "First device");
|
|
322
|
+
// Mint the founder's User-Key while admin can still sign the `default`
|
|
323
|
+
// wrap into `acl_keydistribution_default` (User-Key target, not per
|
|
324
|
+
// device). Later devices import `default` from that document after they
|
|
325
|
+
// receive the User-Key.
|
|
326
|
+
tenant.noteUserDirectoryFetched?.();
|
|
327
|
+
// Open (or mint) the identity User-Key *before* reconcile so a live-bag
|
|
328
|
+
// empty password cannot generate a throwaway pair and wrap `default` to it.
|
|
329
|
+
if (typeof tenant.ensureLocalUserKeyPair === "function") {
|
|
330
|
+
await tenant.ensureLocalUserKeyPair();
|
|
331
|
+
}
|
|
332
|
+
if (typeof tenant.reconcileUserKeys === "function") {
|
|
333
|
+
await tenant.reconcileUserKeys({ allowSelfCreate: true });
|
|
334
|
+
}
|
|
335
|
+
if (typeof directory.autoDistributeKeysToUser === "function") {
|
|
336
|
+
await directory.autoDistributeKeysToUser(this.toPublicUserId(appUser).username, [types_1.DEFAULT_TENANT_KEY_ID], adminUser.userSigningKeyPair.privateKey, options.adminPassword);
|
|
337
|
+
}
|
|
280
338
|
// 5. Enforce the v2 storage format from creation (default on). We write an
|
|
281
339
|
// admin-signed default policy carrying `requireMetadataSignatureSince =
|
|
282
340
|
// now`, but with `disableAllAccessChecksAndPolicies: true` so this turns
|
|
@@ -292,10 +350,21 @@ class BaseMindooTenantFactory {
|
|
|
292
350
|
}, adminUser.userSigningKeyPair.privateKey, options.adminPassword);
|
|
293
351
|
}
|
|
294
352
|
const tenantLabel = typeof options.tenantLabel === "string" ? options.tenantLabel.trim() : "";
|
|
353
|
+
const setupDb = await tenant.openDB("directory", { adminOnlyDb: true });
|
|
295
354
|
if (tenantLabel) {
|
|
296
|
-
|
|
297
|
-
await (0, tenantSetup_1.writeTenantSetupLabel)(directoryDb, tenantLabel, adminUser.userSigningKeyPair, options.adminPassword);
|
|
355
|
+
await (0, tenantSetup_1.writeTenantSetupLabel)(setupDb, tenantLabel, adminUser.userSigningKeyPair, options.adminPassword, tenant);
|
|
298
356
|
}
|
|
357
|
+
// The admin holds no grantaccess document, so `tenantsetup` is the only
|
|
358
|
+
// place members can learn who administers the tenant.
|
|
359
|
+
await (0, tenantSetup_1.writeTenantSetupAdministrator)(setupDb, {
|
|
360
|
+
username: adminUser.username,
|
|
361
|
+
keyPairs: [
|
|
362
|
+
{
|
|
363
|
+
signingPublicKey: adminUser.userSigningKeyPair.publicKey,
|
|
364
|
+
encryptionPublicKey: adminUser.userEncryptionKeyPair.publicKey,
|
|
365
|
+
},
|
|
366
|
+
],
|
|
367
|
+
}, adminUser.userSigningKeyPair, options.adminPassword, tenant);
|
|
299
368
|
console.log(`[createTenant] ✓ Tenant "${tenantId}" created successfully`);
|
|
300
369
|
this.logger.info(`Tenant "${tenantId}" created successfully`);
|
|
301
370
|
return { tenant, adminUser, appUser, keyBag };
|
|
@@ -324,6 +393,9 @@ class BaseMindooTenantFactory {
|
|
|
324
393
|
if (trimmedLabel.length > 0) {
|
|
325
394
|
joinRequest.label = trimmedLabel;
|
|
326
395
|
}
|
|
396
|
+
if (user.userKeyPair?.publicKey) {
|
|
397
|
+
joinRequest.userPublicKey = user.userKeyPair.publicKey;
|
|
398
|
+
}
|
|
327
399
|
if (options?.format === "uri") {
|
|
328
400
|
return (0, joinRequestUri_1.encodeJoinRequestUri)(joinRequest);
|
|
329
401
|
}
|
|
@@ -354,8 +426,8 @@ class BaseMindooTenantFactory {
|
|
|
354
426
|
// supplied, the joined tenant's keys are added to the existing bag
|
|
355
427
|
// in place; the same bag instance is returned to the caller.
|
|
356
428
|
const keyBag = options.existingKeyBag ?? new KeyBag_1.KeyBag(options.user.userEncryptionKeyPair.privateKey, options.password, this.cryptoAdapter, this.logger.createChild("KeyBag"));
|
|
357
|
-
if (response.v !== 2 || !Array.isArray(response.encryptedDocKeys)) {
|
|
358
|
-
throw new Error("Invalid join response: expected a v2 encryptedDocKeys payload");
|
|
429
|
+
if ((response.v !== 2 && response.v !== 3) || !Array.isArray(response.encryptedDocKeys)) {
|
|
430
|
+
throw new Error("Invalid join response: expected a v2 or v3 encryptedDocKeys payload");
|
|
359
431
|
}
|
|
360
432
|
if (!response.encryptedDocKeys.some((entry) => entry.keyId === types_1.PUBLIC_INFOS_KEY_ID)) {
|
|
361
433
|
throw new Error(`Invalid join response: missing required "${types_1.PUBLIC_INFOS_KEY_ID}" document key`);
|
|
@@ -363,16 +435,11 @@ class BaseMindooTenantFactory {
|
|
|
363
435
|
// 2. Import all encrypted document key versions from the join response.
|
|
364
436
|
// Preserve the version timestamps so key rotation ordering remains stable
|
|
365
437
|
// in the recipient's KeyBag.
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
await keyBag.decryptAndImportKey("doc", response.tenantId, entry.keyId, {
|
|
372
|
-
...version.encryptedKey,
|
|
373
|
-
createdAt: version.createdAt ?? version.encryptedKey.createdAt,
|
|
374
|
-
}, options.sharePassword);
|
|
375
|
-
}
|
|
438
|
+
if (response.v === 3) {
|
|
439
|
+
await this.importRsaWrappedJoinKeys(response, options, keyBag);
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
await this.importPasswordWrappedJoinKeys(response, options, keyBag);
|
|
376
443
|
}
|
|
377
444
|
// 3. Adopt the username the admin registered. It may differ from the one
|
|
378
445
|
// this device asked for (corrected spelling, or supplied for a nameless
|
|
@@ -392,6 +459,208 @@ class BaseMindooTenantFactory {
|
|
|
392
459
|
this.logger.info(`Joined tenant "${response.tenantId}" successfully`);
|
|
393
460
|
return { tenant, keyBag, user: effectiveUser };
|
|
394
461
|
}
|
|
462
|
+
/**
|
|
463
|
+
* Prove device signing-key possession and discover tenants on a MindooDB server
|
|
464
|
+
* (`POST /device/challenge` + `POST /device/discover`).
|
|
465
|
+
*/
|
|
466
|
+
async discoverTenantsOnServer(serverUrl, options) {
|
|
467
|
+
const baseUrl = serverUrl.replace(/\/$/, "");
|
|
468
|
+
const subtle = this.cryptoAdapter.getSubtle();
|
|
469
|
+
const signingKey = options.preDecryptedUserKeys?.signingKey
|
|
470
|
+
?? await subtle.importKey("pkcs8", await (0, privateKeyEncryption_1.decryptPrivateKey)(this.cryptoAdapter, options.user.userSigningKeyPair.privateKey, options.password, "signing"), { name: "Ed25519" }, false, ["sign"]);
|
|
471
|
+
const challengeRes = await fetch(`${baseUrl}/device/challenge`, {
|
|
472
|
+
method: "POST",
|
|
473
|
+
headers: { "Content-Type": "application/json" },
|
|
474
|
+
body: JSON.stringify({
|
|
475
|
+
signingPublicKey: options.user.userSigningKeyPair.publicKey,
|
|
476
|
+
}),
|
|
477
|
+
});
|
|
478
|
+
if (!challengeRes.ok) {
|
|
479
|
+
const errorBody = await challengeRes.text();
|
|
480
|
+
throw new Error(`Device discovery challenge failed (HTTP ${challengeRes.status}): ${errorBody}`);
|
|
481
|
+
}
|
|
482
|
+
const { challenge } = (await challengeRes.json());
|
|
483
|
+
if (typeof challenge !== "string" || !challenge) {
|
|
484
|
+
throw new Error("Device discovery challenge response missing challenge");
|
|
485
|
+
}
|
|
486
|
+
const messageBytes = new TextEncoder().encode(challenge);
|
|
487
|
+
const signatureBuffer = await subtle.sign({ name: "Ed25519" }, signingKey, messageBytes);
|
|
488
|
+
const signature = this.uint8ArrayToBase64(new Uint8Array(signatureBuffer));
|
|
489
|
+
const discoverRes = await fetch(`${baseUrl}/device/discover`, {
|
|
490
|
+
method: "POST",
|
|
491
|
+
headers: { "Content-Type": "application/json" },
|
|
492
|
+
body: JSON.stringify({ challenge, signature }),
|
|
493
|
+
});
|
|
494
|
+
if (!discoverRes.ok) {
|
|
495
|
+
const errorBody = await discoverRes.text();
|
|
496
|
+
throw new Error(`Device discovery failed (HTTP ${discoverRes.status}): ${errorBody}`);
|
|
497
|
+
}
|
|
498
|
+
const body = (await discoverRes.json());
|
|
499
|
+
return Array.isArray(body.tenants) ? body.tenants : [];
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Bootstrap a tenant from a device-discovery delivery: unwrap `$publicinfos`,
|
|
503
|
+
* adopt the registered username from the per-device join bootstrap (when
|
|
504
|
+
* present), open the tenant, optionally pull the directory and reconcile
|
|
505
|
+
* distributions.
|
|
506
|
+
*/
|
|
507
|
+
async bootstrapTenantFromDelivery(delivery, options) {
|
|
508
|
+
if (!delivery.tenantId || !delivery.wrappedPublicInfosKey) {
|
|
509
|
+
throw new Error("Invalid device delivery: tenantId and wrappedPublicInfosKey are required");
|
|
510
|
+
}
|
|
511
|
+
(0, tenantIdValidation_1.validateTenantId)(delivery.tenantId);
|
|
512
|
+
const keyBag = options.existingKeyBag ??
|
|
513
|
+
new KeyBag_1.KeyBag(options.user.userEncryptionKeyPair.privateKey, options.password, this.cryptoAdapter, this.logger.createChild("KeyBag"));
|
|
514
|
+
const decryptKey = await this.resolveJoinRecipientEncryptionKey({
|
|
515
|
+
user: options.user,
|
|
516
|
+
password: options.password,
|
|
517
|
+
preDecryptedUserKeys: options.preDecryptedUserKeys,
|
|
518
|
+
});
|
|
519
|
+
const rsa = new RSAEncryption_1.RSAEncryption(this.cryptoAdapter, this.logger.createChild("RSAEncryption"));
|
|
520
|
+
const wrappedList = delivery.wrappedPublicInfosKeys && delivery.wrappedPublicInfosKeys.length > 0
|
|
521
|
+
? delivery.wrappedPublicInfosKeys
|
|
522
|
+
: [delivery.wrappedPublicInfosKey];
|
|
523
|
+
try {
|
|
524
|
+
for (let index = 0; index < wrappedList.length; index++) {
|
|
525
|
+
const rawPublicInfos = await rsa.unwrapKeyFromBase64(wrappedList[index], decryptKey);
|
|
526
|
+
// wrappedList is newest-first (server getAllKeys order) and the KeyBag
|
|
527
|
+
// sorts stably, so inserting in that order already yields newest-first
|
|
528
|
+
// without a `createdAt`. The delivery does not carry the real rotation
|
|
529
|
+
// stamps; a synthetic rank would masquerade as both a creation date
|
|
530
|
+
// (epoch 0 + n ms) and a version identity in delivery dedupe.
|
|
531
|
+
await keyBag.set("doc", delivery.tenantId, types_1.PUBLIC_INFOS_KEY_ID, rawPublicInfos);
|
|
532
|
+
}
|
|
533
|
+
this.logger.info(`Unwrapped ${wrappedList.length} $publicinfos version(s) from device discovery for tenant ${delivery.tenantId}`);
|
|
534
|
+
}
|
|
535
|
+
catch (error) {
|
|
536
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
537
|
+
throw new Error(`Cannot unwrap device discovery delivery: it is bound to a different device's encryption key (${message})`);
|
|
538
|
+
}
|
|
539
|
+
let user = options.user;
|
|
540
|
+
let bootstrapTenantLabel;
|
|
541
|
+
let bootstrapAdminUsername;
|
|
542
|
+
const wrappedJoinResponse = typeof delivery.wrappedJoinResponse === "string" ? delivery.wrappedJoinResponse.trim() : "";
|
|
543
|
+
if (wrappedJoinResponse) {
|
|
544
|
+
try {
|
|
545
|
+
const bootstrap = await (0, deviceJoinBootstrap_1.unwrapDeviceJoinBootstrap)(rsa, wrappedJoinResponse, decryptKey);
|
|
546
|
+
const registeredUsername = bootstrap.username.trim();
|
|
547
|
+
if (registeredUsername.length > 0 && registeredUsername !== user.username) {
|
|
548
|
+
this.logger.info(`Adopting registered username "${registeredUsername}" from device join bootstrap (was "${user.username}")`);
|
|
549
|
+
user = { ...user, username: registeredUsername };
|
|
550
|
+
}
|
|
551
|
+
if (bootstrap.tenantLabel)
|
|
552
|
+
bootstrapTenantLabel = bootstrap.tenantLabel;
|
|
553
|
+
if (bootstrap.adminUsername)
|
|
554
|
+
bootstrapAdminUsername = bootstrap.adminUsername;
|
|
555
|
+
}
|
|
556
|
+
catch (error) {
|
|
557
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
558
|
+
throw new Error(`Cannot unwrap device join bootstrap: it is bound to a different device's encryption key (${message})`);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
const tenant = await this.openTenant(delivery.tenantId, delivery.adminSigningPublicKey, delivery.adminEncryptionPublicKey, user, options.password, keyBag, options.preDecryptedUserKeys
|
|
562
|
+
? { preDecryptedUserKeys: options.preDecryptedUserKeys }
|
|
563
|
+
: undefined);
|
|
564
|
+
if (options.serverUrl) {
|
|
565
|
+
const remoteDirectory = await tenant.connectToServer(options.serverUrl, "directory", types_3.StoreKind.docs);
|
|
566
|
+
const directoryDb = await tenant.openDB("directory", { adminOnlyDb: true });
|
|
567
|
+
try {
|
|
568
|
+
await directoryDb.pullChangesFrom(remoteDirectory);
|
|
569
|
+
}
|
|
570
|
+
catch (error) {
|
|
571
|
+
const name = error instanceof Error ? error.name : "Error";
|
|
572
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
573
|
+
throw new Error(`Cannot pull directory after device discovery (${name}: ${message})`);
|
|
574
|
+
}
|
|
575
|
+
if (typeof tenant.reconcileKeyDistributionsForCurrentUser === "function") {
|
|
576
|
+
const reconcile = await tenant.reconcileKeyDistributionsForCurrentUser();
|
|
577
|
+
if (reconcile.adoptedUsername && reconcile.adoptedUsername !== user.username) {
|
|
578
|
+
user = { ...user, username: reconcile.adoptedUsername };
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
// User-Key lives in `userdirectory` (encrypted with `$publicinfos`).
|
|
582
|
+
// Dist unwrap needs that private key; pulling directory alone leaves
|
|
583
|
+
// Device 2 trying its locally generated pair against the published wrap.
|
|
584
|
+
try {
|
|
585
|
+
const remoteUserDirectory = await tenant.connectToServer(options.serverUrl, types_1.USER_DIRECTORY_DB_ID, types_3.StoreKind.docs);
|
|
586
|
+
const userDirectoryDb = await tenant.openDB(types_1.USER_DIRECTORY_DB_ID);
|
|
587
|
+
await userDirectoryDb.pullChangesFrom(remoteUserDirectory);
|
|
588
|
+
tenant.noteUserDirectoryFetched?.();
|
|
589
|
+
await tenant.reconcileUserKeys?.({ allowSelfCreate: false });
|
|
590
|
+
if (typeof tenant.reconcileKeyDistributionsForCurrentUser === "function") {
|
|
591
|
+
await tenant.reconcileKeyDistributionsForCurrentUser();
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
catch (error) {
|
|
595
|
+
this.logger.warn(`bootstrapTenantFromDelivery: userdirectory pull/reconcile failed: ${error}`);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
let tenantLabel = bootstrapTenantLabel;
|
|
599
|
+
try {
|
|
600
|
+
const directoryDb = await tenant.openDB("directory", { adminOnlyDb: true });
|
|
601
|
+
const liveLabel = await (0, tenantSetup_1.readTenantSetupLabel)(directoryDb, tenant);
|
|
602
|
+
if (liveLabel)
|
|
603
|
+
tenantLabel = liveLabel;
|
|
604
|
+
}
|
|
605
|
+
catch {
|
|
606
|
+
// Label needs `default`; the join-bootstrap snapshot is the fallback.
|
|
607
|
+
}
|
|
608
|
+
return {
|
|
609
|
+
tenant,
|
|
610
|
+
keyBag,
|
|
611
|
+
user,
|
|
612
|
+
...(tenantLabel ? { tenantLabel } : {}),
|
|
613
|
+
...(bootstrapAdminUsername ? { adminUsername: bootstrapAdminUsername } : {}),
|
|
614
|
+
};
|
|
615
|
+
}
|
|
616
|
+
async importRsaWrappedJoinKeys(response, options, keyBag) {
|
|
617
|
+
const decryptKey = await this.resolveJoinRecipientEncryptionKey(options);
|
|
618
|
+
const rsa = new RSAEncryption_1.RSAEncryption(this.cryptoAdapter, this.logger.createChild("RSAEncryption"));
|
|
619
|
+
for (const entry of response.encryptedDocKeys) {
|
|
620
|
+
if (!entry.keyId || !Array.isArray(entry.versions) || entry.versions.length === 0) {
|
|
621
|
+
throw new Error("Invalid join response: encryptedDocKeys entries must include a keyId and versions");
|
|
622
|
+
}
|
|
623
|
+
for (const version of entry.versions) {
|
|
624
|
+
if (!version.wrappedKey) {
|
|
625
|
+
throw new Error("Invalid join response: v3 versions must include wrappedKey");
|
|
626
|
+
}
|
|
627
|
+
try {
|
|
628
|
+
const rawKey = await rsa.unwrapKeyFromBase64(version.wrappedKey, decryptKey);
|
|
629
|
+
await keyBag.set("doc", response.tenantId, entry.keyId, rawKey, version.createdAt);
|
|
630
|
+
}
|
|
631
|
+
catch (error) {
|
|
632
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
633
|
+
throw new Error(`Cannot decrypt join response: it is bound to a different device's encryption key (${message})`);
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
async importPasswordWrappedJoinKeys(response, options, keyBag) {
|
|
639
|
+
if (!options.sharePassword) {
|
|
640
|
+
throw new Error("This join response requires a sharePassword (legacy v2)");
|
|
641
|
+
}
|
|
642
|
+
for (const entry of response.encryptedDocKeys) {
|
|
643
|
+
if (!entry.keyId || !Array.isArray(entry.versions) || entry.versions.length === 0) {
|
|
644
|
+
throw new Error("Invalid join response: encryptedDocKeys entries must include a keyId and versions");
|
|
645
|
+
}
|
|
646
|
+
for (const version of entry.versions) {
|
|
647
|
+
if (!version.encryptedKey) {
|
|
648
|
+
throw new Error("Invalid join response: v2 versions must include encryptedKey");
|
|
649
|
+
}
|
|
650
|
+
await keyBag.decryptAndImportKey("doc", response.tenantId, entry.keyId, {
|
|
651
|
+
...version.encryptedKey,
|
|
652
|
+
createdAt: version.createdAt ?? version.encryptedKey.createdAt,
|
|
653
|
+
}, options.sharePassword);
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
async resolveJoinRecipientEncryptionKey(options) {
|
|
658
|
+
if (options.preDecryptedUserKeys?.encryptionKey) {
|
|
659
|
+
return options.preDecryptedUserKeys.encryptionKey;
|
|
660
|
+
}
|
|
661
|
+
const decryptedKeyBuffer = await (0, privateKeyEncryption_1.decryptPrivateKey)(this.cryptoAdapter, options.user.userEncryptionKeyPair.privateKey, options.password, "encryption");
|
|
662
|
+
return this.cryptoAdapter.getSubtle().importKey("pkcs8", decryptedKeyBuffer, { name: "RSA-OAEP", hash: "SHA-256" }, false, ["decrypt"]);
|
|
663
|
+
}
|
|
395
664
|
/**
|
|
396
665
|
* Internal method to encrypt a private key using password-based key derivation.
|
|
397
666
|
* This is the reverse of BaseMindooTenant.decryptPrivateKey().
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMindooTenantFactory.js","sourceRoot":"","sources":["../../src/core/BaseMindooTenantFactory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseMindooTenantFactory.js","sourceRoot":"","sources":["../../src/core/BaseMindooTenantFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,6 +69,35 @@ export declare function createGenesisNode(): DirectoryStateNode;
|
|
|
69
69
|
* node's predecessor semantics (an all-empty node) if `T` precedes everything.
|
|
70
70
|
*/
|
|
71
71
|
export declare function nodeCovering(head: DirectoryStateNode, T: number): DirectoryStateNode;
|
|
72
|
+
/**
|
|
73
|
+
* Whether `creatorSigningKey` and `signerSigningKey` belong to the same person.
|
|
74
|
+
*
|
|
75
|
+
* The creator is resolved against {@link creatorNode} (typically the directory
|
|
76
|
+
* at the trusted time of the `doc_create` entry) so authorship survives
|
|
77
|
+
* retirement of the creating device. If that node no longer indexes the
|
|
78
|
+
* creating key — because the device was later retired, or because the
|
|
79
|
+
* creator's trusted time sits past every directory bound — we walk `prev`
|
|
80
|
+
* until we find a node that still had the key. Signing keys are not reused
|
|
81
|
+
* across people, so that look-back still names the original person.
|
|
82
|
+
*
|
|
83
|
+
* The signer is resolved against {@link signerNode} only (no look-back) so a
|
|
84
|
+
* revoked device cannot act as `$author`.
|
|
85
|
+
*
|
|
86
|
+
* Keys that never appear in a grant (admin, trusted non-user keys) fall back
|
|
87
|
+
* to device-key equality, matching the historical `$author` behaviour for
|
|
88
|
+
* those identities.
|
|
89
|
+
*/
|
|
90
|
+
export declare function isSamePerson(creatorNode: DirectoryStateNode, signerNode: DirectoryStateNode, creatorSigningKey: string, signerSigningKey: string): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* The grant that contained `signingKey` at `node`, or at the most recent
|
|
93
|
+
* predecessor that still indexed it. Used for creator resolution so a retired
|
|
94
|
+
* creating device can still be attributed to its person.
|
|
95
|
+
*/
|
|
96
|
+
export declare function grantAtOrBefore(node: DirectoryStateNode, signingKey: string): UserGrantSnapshot | undefined;
|
|
97
|
+
/** True when two Ed25519 PEM signing keys are the same device, ignoring whitespace. */
|
|
98
|
+
export declare function signingKeysEqual(a: string, b: string): boolean;
|
|
99
|
+
/** Match a signing key in {@link DirectoryStateNode.bySigningKey}, ignoring PEM whitespace. */
|
|
100
|
+
export declare function grantForSigningKey(node: DirectoryStateNode, signingKey: string): UserGrantSnapshot | undefined;
|
|
72
101
|
/**
|
|
73
102
|
* A single recorded mutation of the {@link DirectoryStateChainBuilder}, in the
|
|
74
103
|
* trusted-time order it was applied. The ordered list of deltas is the compact,
|
|
@@ -109,6 +138,15 @@ export type DirectoryRevisionDelta = {
|
|
|
109
138
|
op: "grant";
|
|
110
139
|
t: number;
|
|
111
140
|
grant: UserGrantSnapshot;
|
|
141
|
+
} | {
|
|
142
|
+
op: "grantDoc";
|
|
143
|
+
t: number;
|
|
144
|
+
docId: string;
|
|
145
|
+
grant: UserGrantSnapshot;
|
|
146
|
+
} | {
|
|
147
|
+
op: "removeGrantDoc";
|
|
148
|
+
t: number;
|
|
149
|
+
docId: string;
|
|
112
150
|
} | {
|
|
113
151
|
op: "revokeBySigningKey";
|
|
114
152
|
t: number;
|
|
@@ -151,6 +189,13 @@ export declare class DirectoryStateChainBuilder {
|
|
|
151
189
|
* rebuilt deterministically when {@link importDeltaLog} replays the log.
|
|
152
190
|
*/
|
|
153
191
|
private groupContributions;
|
|
192
|
+
/**
|
|
193
|
+
* Per-grant-document contributions, keyed by grant document id. Several
|
|
194
|
+
* `grantaccess` documents may share a `username_hash` (offline duplicates /
|
|
195
|
+
* historical re-registers); the live trust cache unions their keys, so the
|
|
196
|
+
* time-travel node must do the same (§6.5, §8.1).
|
|
197
|
+
*/
|
|
198
|
+
private grantContributions;
|
|
154
199
|
/** The current head node ("now"). */
|
|
155
200
|
getHead(): DirectoryStateNode;
|
|
156
201
|
/** The node covering trusted time `T`. */
|
|
@@ -187,8 +232,30 @@ export declare class DirectoryStateChainBuilder {
|
|
|
187
232
|
applyTrustedWitness(witness: TrustedWitnessDoc, trustedTime: number): void;
|
|
188
233
|
/** Remove a trusted witness (rotation: drop the old doc). */
|
|
189
234
|
removeTrustedWitness(witnessPublicKey: string, trustedTime: number): void;
|
|
190
|
-
/**
|
|
235
|
+
/**
|
|
236
|
+
* Apply (insert or replace) a user grant for a single logical stream keyed by
|
|
237
|
+
* `username_hash`. Equivalent to {@link applyGrantDoc} with a synthetic
|
|
238
|
+
* document id — kept for unit tests and legacy delta logs. Prefer
|
|
239
|
+
* {@link applyGrantDoc} when projecting real directory revisions so multiple
|
|
240
|
+
* grant documents for the same user union their device keys.
|
|
241
|
+
*/
|
|
191
242
|
applyGrant(grant: UserGrantSnapshot, trustedTime: number): void;
|
|
243
|
+
/**
|
|
244
|
+
* Apply (insert or replace) one grant document's contribution at trusted time
|
|
245
|
+
* `T`. Because several documents may share a `username_hash` (offline merge /
|
|
246
|
+
* duplicate registers), {@link DirectoryStateNode.usersByHash} is the union of
|
|
247
|
+
* active keys across every contributing document — matching
|
|
248
|
+
* `trustedKeysCache` / `getUserGrantOverview`.
|
|
249
|
+
*/
|
|
250
|
+
applyGrantDoc(docId: string, grant: UserGrantSnapshot, trustedTime: number): void;
|
|
251
|
+
/** Drop a grant document's contribution (e.g. it was deleted), at time `T`. */
|
|
252
|
+
removeGrantDoc(docId: string, trustedTime: number): void;
|
|
253
|
+
/**
|
|
254
|
+
* Recompute the union-by-hash {@link UserGrantSnapshot} for `usernameHash`
|
|
255
|
+
* from the current per-document contributions and push a node at trusted
|
|
256
|
+
* time `T`. Removes the entry when no contributing document remains.
|
|
257
|
+
*/
|
|
258
|
+
private recomputeUser;
|
|
192
259
|
/**
|
|
193
260
|
* Mark a grant revoked by signing key (legacy standalone `revokeaccess`
|
|
194
261
|
* compatibility, §8.1). If the key belongs to a known grant, the grant is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectoryStateNode.d.ts","sourceRoot":"","sources":["../../../src/core/accesscontrol/DirectoryStateNode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,QAAQ,EACR,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oDAAoD;IACpD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4FAA4F;IAC5F,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,+EAA+E;IAC/E,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,qBAAqB,EAAE,MAAM,CAAC;IAE9B,aAAa,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC7C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAChD,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IACzC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,gCAAgC;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5C,kDAAkD;IAClD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7C,kDAAkD;IAClD,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAEnD,gEAAgE;IAChE,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACjC;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,IAAI,kBAAkB,CAYtD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAMpF;AAgBD;;;;;;;;;GASG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,eAAe,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAClE;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAC3E;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACnE;IAAE,EAAE,EAAE,gBAAgB,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC/D;IAAE,EAAE,EAAE,sBAAsB,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GACpD;IAAE,EAAE,EAAE,oBAAoB,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAClF;IAAE,EAAE,EAAE,gBAAgB,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,EAAE,EAAE,WAAW,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC;AAE5D;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,IAAI,CAA2C;IAEvD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAgC;IAEhD;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA+D;IAEzF,qCAAqC;IACrC,OAAO,IAAI,kBAAkB;IAI7B,0CAA0C;IAC1C,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAIzC,gEAAgE;IAChE,KAAK,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"DirectoryStateNode.d.ts","sourceRoot":"","sources":["../../../src/core/accesscontrol/DirectoryStateNode.ts"],"names":[],"mappings":"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"}
|