From cb9a068e40de923fc2f8c29126c386e8abc157d3 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Wed, 20 Aug 2025 21:46:09 -0400 Subject: [PATCH] Handle config decryption errors gracefully --- src/seedpass/core/encryption.py | 12 +++++++----- src/seedpass/core/manager.py | 9 +++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/seedpass/core/encryption.py b/src/seedpass/core/encryption.py index e38e9a2..47c0b99 100644 --- a/src/seedpass/core/encryption.py +++ b/src/seedpass/core/encryption.py @@ -409,11 +409,13 @@ class EncryptionManager: if return_kdf: return data, kdf return data - except (InvalidToken, InvalidTag, JSONDecodeError) as e: - logger.error( - f"FATAL: Could not decrypt or parse data from {file_path}: {e}", - exc_info=True, - ) + except (InvalidToken, InvalidTag) as e: + msg = f"Failed to decrypt or parse data from {file_path}: {e}" + logger.error(msg) + raise InvalidToken(msg) from e + except JSONDecodeError as e: + msg = f"Failed to parse JSON data from {file_path}: {e}" + logger.error(msg) raise def get_encrypted_index(self) -> Optional[bytes]: diff --git a/src/seedpass/core/manager.py b/src/seedpass/core/manager.py index e5c1c4c..590c8b1 100644 --- a/src/seedpass/core/manager.py +++ b/src/seedpass/core/manager.py @@ -4420,6 +4420,15 @@ class PasswordManager: else: logging.warning("Password verification failed.") return is_correct + except InvalidToken as e: + logging.error(f"Failed to decrypt config: {e}") + print( + colored( + "Error: Could not decrypt configuration. The password may be incorrect or the file may be corrupted.", + "red", + ) + ) + return False except Exception as e: logging.error(f"Error verifying password: {e}", exc_info=True) print(colored(f"Error: Failed to verify password: {e}", "red"))