mobile: fix saving user key

This commit is contained in:
Ammar Ahmed
2024-02-07 23:03:38 +05:00
committed by Abdullah Atta
parent 303ac1db56
commit f7a5dbc71c

View File

@@ -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);