From d0a40f2a4434b94d58192c920204512a46ea4d80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Fri, 2 Feb 2024 10:56:08 -0500
Subject: [PATCH] getPasswordKey: try to decrypt to check if password is valid

Change-Id: I74f9ec6e69d2de0da7a589e013b9c3f3f29382ce
---
 src/jamidht/archive_account_manager.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/jamidht/archive_account_manager.cpp b/src/jamidht/archive_account_manager.cpp
index 66f28c41f0..b549984610 100644
--- a/src/jamidht/archive_account_manager.cpp
+++ b/src/jamidht/archive_account_manager.cpp
@@ -657,7 +657,10 @@ ArchiveAccountManager::getPasswordKey(const std::string& password)
 {
     try {
         auto data = dhtnet::fileutils::loadFile(fileutils::getFullPath(path_, archivePath_));
-        return dht::crypto::aesGetKey(data, password);
+        // Try to decrypt to check if password is valid
+        auto key = dht::crypto::aesGetKey(data, password);
+        auto decrypted = dht::crypto::aesDecrypt(dht::crypto::aesGetEncrypted(data), key);
+        return key;
     } catch (const std::exception& e) {
         JAMI_ERR("Error loading archive: %s", e.what());
     }
-- 
GitLab