From f7a5dbc71c2dd911043441e25a460091cad565b6 Mon Sep 17 00:00:00 2001 From: Ammar Ahmed Date: Wed, 7 Feb 2024 23:03:38 +0500 Subject: [PATCH] mobile: fix saving user key --- apps/mobile/app/common/database/encryption.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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);