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.
Files changed (185) hide show
  1. package/README-server.md +11 -2
  2. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +13 -1
  3. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  4. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +45 -20
  5. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
  6. package/dist/appendonlystores/network/HttpTransport.d.ts +2 -0
  7. package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
  8. package/dist/appendonlystores/network/HttpTransport.js +6 -62
  9. package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
  10. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +24 -0
  11. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
  12. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +75 -24
  13. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
  14. package/dist/browser/index.mjs +57 -0
  15. package/dist/core/BaseMindooDB.d.ts +85 -10
  16. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  17. package/dist/core/BaseMindooDB.js +687 -196
  18. package/dist/core/BaseMindooDB.js.map +1 -1
  19. package/dist/core/BaseMindooTenant.d.ts +59 -7
  20. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  21. package/dist/core/BaseMindooTenant.js +407 -86
  22. package/dist/core/BaseMindooTenant.js.map +1 -1
  23. package/dist/core/BaseMindooTenantDirectory.d.ts +61 -9
  24. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  25. package/dist/core/BaseMindooTenantDirectory.js +363 -35
  26. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  27. package/dist/core/BaseMindooTenantFactory.d.ts +17 -1
  28. package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
  29. package/dist/core/BaseMindooTenantFactory.js +286 -17
  30. package/dist/core/BaseMindooTenantFactory.js.map +1 -1
  31. package/dist/core/accesscontrol/DirectoryStateNode.d.ts +68 -1
  32. package/dist/core/accesscontrol/DirectoryStateNode.d.ts.map +1 -1
  33. package/dist/core/accesscontrol/DirectoryStateNode.js +157 -4
  34. package/dist/core/accesscontrol/DirectoryStateNode.js.map +1 -1
  35. package/dist/core/accesscontrol/directoryProjection.d.ts.map +1 -1
  36. package/dist/core/accesscontrol/directoryProjection.js +14 -5
  37. package/dist/core/accesscontrol/directoryProjection.js.map +1 -1
  38. package/dist/core/accesscontrol/grantKeys.d.ts +17 -14
  39. package/dist/core/accesscontrol/grantKeys.d.ts.map +1 -1
  40. package/dist/core/accesscontrol/grantKeys.js +51 -21
  41. package/dist/core/accesscontrol/grantKeys.js.map +1 -1
  42. package/dist/core/accesscontrol/types.d.ts +2 -1
  43. package/dist/core/accesscontrol/types.d.ts.map +1 -1
  44. package/dist/core/accesscontrol/types.js +3 -2
  45. package/dist/core/accesscontrol/types.js.map +1 -1
  46. package/dist/core/appendonlystores/network/AuthenticationService.d.ts +7 -0
  47. package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
  48. package/dist/core/appendonlystores/network/AuthenticationService.js +70 -14
  49. package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
  50. package/dist/core/appendonlystores/network/entryWireCodec.d.ts +51 -0
  51. package/dist/core/appendonlystores/network/entryWireCodec.d.ts.map +1 -0
  52. package/dist/core/appendonlystores/network/entryWireCodec.js +93 -0
  53. package/dist/core/appendonlystores/network/entryWireCodec.js.map +1 -0
  54. package/dist/core/builtinDbInvariants.d.ts +53 -0
  55. package/dist/core/builtinDbInvariants.d.ts.map +1 -0
  56. package/dist/core/builtinDbInvariants.js +147 -0
  57. package/dist/core/builtinDbInvariants.js.map +1 -0
  58. package/dist/core/copy/feasibility.d.ts.map +1 -1
  59. package/dist/core/copy/feasibility.js +3 -0
  60. package/dist/core/copy/feasibility.js.map +1 -1
  61. package/dist/core/copy/flatten.d.ts.map +1 -1
  62. package/dist/core/copy/flatten.js +6 -1
  63. package/dist/core/copy/flatten.js.map +1 -1
  64. package/dist/core/copy/host.d.ts +5 -0
  65. package/dist/core/copy/host.d.ts.map +1 -1
  66. package/dist/core/copy/preflight.d.ts.map +1 -1
  67. package/dist/core/copy/preflight.js +7 -1
  68. package/dist/core/copy/preflight.js.map +1 -1
  69. package/dist/core/copy/types.d.ts +7 -0
  70. package/dist/core/copy/types.d.ts.map +1 -1
  71. package/dist/core/crypto/EntrySignature.d.ts +8 -2
  72. package/dist/core/crypto/EntrySignature.d.ts.map +1 -1
  73. package/dist/core/crypto/EntrySignature.js +14 -5
  74. package/dist/core/crypto/EntrySignature.js.map +1 -1
  75. package/dist/core/crypto/MindooDocSigner.d.ts.map +1 -1
  76. package/dist/core/crypto/MindooDocSigner.js +11 -2
  77. package/dist/core/crypto/MindooDocSigner.js.map +1 -1
  78. package/dist/core/crypto/RSAEncryption.d.ts +19 -0
  79. package/dist/core/crypto/RSAEncryption.d.ts.map +1 -1
  80. package/dist/core/crypto/RSAEncryption.js +36 -3
  81. package/dist/core/crypto/RSAEncryption.js.map +1 -1
  82. package/dist/core/crypto/privateKeyEncryption.js +1 -1
  83. package/dist/core/crypto/privateKeyEncryption.js.map +1 -1
  84. package/dist/core/crypto/rsaOaep3072.d.ts +12 -0
  85. package/dist/core/crypto/rsaOaep3072.d.ts.map +1 -0
  86. package/dist/core/crypto/rsaOaep3072.js +30 -0
  87. package/dist/core/crypto/rsaOaep3072.js.map +1 -0
  88. package/dist/core/index.d.ts +7 -3
  89. package/dist/core/index.d.ts.map +1 -1
  90. package/dist/core/index.js +30 -4
  91. package/dist/core/index.js.map +1 -1
  92. package/dist/core/join/deviceJoinBootstrap.d.ts +23 -0
  93. package/dist/core/join/deviceJoinBootstrap.d.ts.map +1 -0
  94. package/dist/core/join/deviceJoinBootstrap.js +37 -0
  95. package/dist/core/join/deviceJoinBootstrap.js.map +1 -0
  96. package/dist/core/keys/KeyBag.d.ts +20 -2
  97. package/dist/core/keys/KeyBag.d.ts.map +1 -1
  98. package/dist/core/keys/KeyBag.js +22 -10
  99. package/dist/core/keys/KeyBag.js.map +1 -1
  100. package/dist/core/logging/MindooLogger.d.ts.map +1 -1
  101. package/dist/core/logging/MindooLogger.js +65 -40
  102. package/dist/core/logging/MindooLogger.js.map +1 -1
  103. package/dist/core/tenantIdValidation.d.ts.map +1 -1
  104. package/dist/core/tenantIdValidation.js +1 -1
  105. package/dist/core/tenantIdValidation.js.map +1 -1
  106. package/dist/core/tenantSetup.d.ts +94 -9
  107. package/dist/core/tenantSetup.d.ts.map +1 -1
  108. package/dist/core/tenantSetup.js +208 -20
  109. package/dist/core/tenantSetup.js.map +1 -1
  110. package/dist/core/types.d.ts +295 -33
  111. package/dist/core/types.d.ts.map +1 -1
  112. package/dist/core/types.js +14 -1
  113. package/dist/core/types.js.map +1 -1
  114. package/dist/core/uri/joinRequestUri.d.ts.map +1 -1
  115. package/dist/core/uri/joinRequestUri.js +12 -3
  116. package/dist/core/uri/joinRequestUri.js.map +1 -1
  117. package/dist/core/userid/canonicalUsername.d.ts +66 -0
  118. package/dist/core/userid/canonicalUsername.d.ts.map +1 -0
  119. package/dist/core/userid/canonicalUsername.js +235 -0
  120. package/dist/core/userid/canonicalUsername.js.map +1 -0
  121. package/dist/core/userid/index.d.ts +9 -0
  122. package/dist/core/userid/index.d.ts.map +1 -1
  123. package/dist/core/userid/index.js +14 -0
  124. package/dist/core/userid/index.js.map +1 -1
  125. package/dist/core/userkeys/UserKeyDocument.d.ts +50 -0
  126. package/dist/core/userkeys/UserKeyDocument.d.ts.map +1 -0
  127. package/dist/core/userkeys/UserKeyDocument.js +145 -0
  128. package/dist/core/userkeys/UserKeyDocument.js.map +1 -0
  129. package/dist/core/userkeys/UserKeyManager.d.ts +170 -0
  130. package/dist/core/userkeys/UserKeyManager.d.ts.map +1 -0
  131. package/dist/core/userkeys/UserKeyManager.js +1277 -0
  132. package/dist/core/userkeys/UserKeyManager.js.map +1 -0
  133. package/dist/core/userkeys/fingerprint.d.ts +17 -0
  134. package/dist/core/userkeys/fingerprint.d.ts.map +1 -0
  135. package/dist/core/userkeys/fingerprint.js +59 -0
  136. package/dist/core/userkeys/fingerprint.js.map +1 -0
  137. package/dist/core/userkeys/index.d.ts +11 -0
  138. package/dist/core/userkeys/index.d.ts.map +1 -0
  139. package/dist/core/userkeys/index.js +49 -0
  140. package/dist/core/userkeys/index.js.map +1 -0
  141. package/dist/core/userkeys/recipients.d.ts +51 -0
  142. package/dist/core/userkeys/recipients.d.ts.map +1 -0
  143. package/dist/core/userkeys/recipients.js +292 -0
  144. package/dist/core/userkeys/recipients.js.map +1 -0
  145. package/dist/core/userkeys/resolveUserKeyDocument.d.ts +21 -0
  146. package/dist/core/userkeys/resolveUserKeyDocument.d.ts.map +1 -0
  147. package/dist/core/userkeys/resolveUserKeyDocument.js +98 -0
  148. package/dist/core/userkeys/resolveUserKeyDocument.js.map +1 -0
  149. package/dist/core/userkeys/sealedCrypto.d.ts +21 -0
  150. package/dist/core/userkeys/sealedCrypto.d.ts.map +1 -0
  151. package/dist/core/userkeys/sealedCrypto.js +79 -0
  152. package/dist/core/userkeys/sealedCrypto.js.map +1 -0
  153. package/dist/core/userkeys/sealedTypes.d.ts +72 -0
  154. package/dist/core/userkeys/sealedTypes.d.ts.map +1 -0
  155. package/dist/core/userkeys/sealedTypes.js +14 -0
  156. package/dist/core/userkeys/sealedTypes.js.map +1 -0
  157. package/dist/core/userkeys/types.d.ts +70 -0
  158. package/dist/core/userkeys/types.d.ts.map +1 -0
  159. package/dist/core/userkeys/types.js +48 -0
  160. package/dist/core/userkeys/types.js.map +1 -0
  161. package/dist/core/userkeys/validateUserKeyDocument.d.ts +19 -0
  162. package/dist/core/userkeys/validateUserKeyDocument.d.ts.map +1 -0
  163. package/dist/core/userkeys/validateUserKeyDocument.js +42 -0
  164. package/dist/core/userkeys/validateUserKeyDocument.js.map +1 -0
  165. package/dist/node/server/CapabilityMatcher.d.ts +5 -0
  166. package/dist/node/server/CapabilityMatcher.d.ts.map +1 -1
  167. package/dist/node/server/CapabilityMatcher.js +10 -1
  168. package/dist/node/server/CapabilityMatcher.js.map +1 -1
  169. package/dist/node/server/DeviceDiscoveryService.d.ts +36 -0
  170. package/dist/node/server/DeviceDiscoveryService.d.ts.map +1 -0
  171. package/dist/node/server/DeviceDiscoveryService.js +165 -0
  172. package/dist/node/server/DeviceDiscoveryService.js.map +1 -0
  173. package/dist/node/server/MindooDBServer.d.ts +13 -0
  174. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  175. package/dist/node/server/MindooDBServer.js +99 -61
  176. package/dist/node/server/MindooDBServer.js.map +1 -1
  177. package/dist/node/server/SystemAdminAuth.d.ts +7 -0
  178. package/dist/node/server/SystemAdminAuth.d.ts.map +1 -1
  179. package/dist/node/server/SystemAdminAuth.js +4 -1
  180. package/dist/node/server/SystemAdminAuth.js.map +1 -1
  181. package/dist/node/server/TenantManager.d.ts +29 -0
  182. package/dist/node/server/TenantManager.d.ts.map +1 -1
  183. package/dist/node/server/TenantManager.js +146 -7
  184. package/dist/node/server/TenantManager.js.map +1 -1
  185. 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
- await keyBag.createDocKey(tenantId, types_1.DEFAULT_TENANT_KEY_ID);
274
- await keyBag.createDocKey(tenantId, types_1.PUBLIC_INFOS_KEY_ID);
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
- const directoryDb = await tenant.openDB("directory", { adminOnlyDb: true });
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
- for (const entry of response.encryptedDocKeys) {
367
- if (!entry.keyId || !Array.isArray(entry.versions) || entry.versions.length === 0) {
368
- throw new Error("Invalid join response: encryptedDocKeys entries must include a keyId and versions");
369
- }
370
- for (const version of entry.versions) {
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
- /** Apply (insert or replace) a user grant, keyed by `username_hash`. */
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":"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"}
1
+ {"version":3,"file":"DirectoryStateNode.d.ts","sourceRoot":"","sources":["../../../src/core/accesscontrol/DirectoryStateNode.ts"],"names":[],"mappings":"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"}