diff --git a/apps/mobile/app/common/database/encryption.js b/apps/mobile/app/common/database/encryption.js index 239090f94..9ae138aa1 100644 --- a/apps/mobile/app/common/database/encryption.js +++ b/apps/mobile/app/common/database/encryption.js @@ -220,16 +220,17 @@ export async function getDatabaseKey(appLockPassword) { } } -export async function deriveCryptoKey(name, data) { +export async function deriveCryptoKey(data) { try { let credentials = await Sodium.deriveKey(data.password, data.salt); - const userKeyCipher = await encrypt( { key: await getDatabaseKey() }, credentials.key ); + DatabaseLogger.info("User key stored: ", !!userKeyCipher, credentials); + // Store encrypted user key in MMKV MMKV.setMap(USER_KEY_CIPHER, userKeyCipher); return credentials.key; @@ -241,15 +242,21 @@ export async function deriveCryptoKey(name, data) { export async function getCryptoKey(_name) { try { const keyCipher = MMKV.getMap(USER_KEY_CIPHER); - if (!key) return null; - const key = decrypt( + if (!keyCipher) { + DatabaseLogger.info("User key cipher is null"); + return null; + } + + const key = await decrypt( { key: await getDatabaseKey() }, keyCipher ); + DatabaseLogger.info("User key decrypted: ", !!key); + return key; } catch (e) { DatabaseLogger.error(e);