From 32070327f95e941e990cd311571bce776bfe922d Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Mon, 27 Jul 2026 10:20:25 +0500 Subject: [PATCH] core: add logs to diagnose why decryption fails after changing password (#10139) --- packages/core/src/api/sync/index.ts | 4 ++++ packages/core/src/api/user-manager.ts | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/packages/core/src/api/sync/index.ts b/packages/core/src/api/sync/index.ts index 07f16fb6a..fd6de5ad5 100644 --- a/packages/core/src/api/sync/index.ts +++ b/packages/core/src/api/sync/index.ts @@ -387,6 +387,10 @@ export class Sync { const itemsToDecrypt = itemsByKeyVersion.get(keyInfo.version); if (!itemsToDecrypt || itemsToDecrypt.length === 0) continue; + this.logger.info("Decrypting using key", { + keyInfo: keyInfo.version, + items: itemsToDecrypt.length + }); decrypted.push( ...(await this.db.storage().decryptMulti(keyInfo.key, itemsToDecrypt)) ); diff --git a/packages/core/src/api/user-manager.ts b/packages/core/src/api/user-manager.ts index c1150a102..13c835a0e 100644 --- a/packages/core/src/api/user-manager.ts +++ b/packages/core/src/api/user-manager.ts @@ -404,11 +404,13 @@ class UserManager { { version: KeyVersion; key: SerializedKey }[] | undefined > { const masterKey = await this.getMasterKey(); + logger.info("master key exists: ", { masterKey: !!masterKey }); if (!masterKey) return; const dataEncryptionKey = await this.keyManager.get("dataEncryptionKey", { refetchUser: false }); + logger.info("DEK exists: ", { dataEncryptionKey: !!dataEncryptionKey }); if (!dataEncryptionKey) return [ { @@ -424,6 +426,9 @@ class UserManager { refetchUser: false } ); + logger.info("legacy DEK exists: ", { + legacyDataEncryptionKey: !!legacyDataEncryptionKey + }); if (legacyDataEncryptionKey) keys.push({ key: await this.keyManager.unwrapKey( @@ -436,6 +441,10 @@ class UserManager { key: await this.keyManager.unwrapKey(dataEncryptionKey, masterKey), version: KEY_VERSION.DEK }); + logger.info("Keys:", { + keys: keys.length, + keyVersions: keys.map((k) => k.version) + }); return keys; }