from argon2 import PasswordHasher from argon2.exceptions import ( VerifyMismatchError, VerificationError, InvalidHash, ) from utils.loggers import logger pwd_hasher = PasswordHasher( time_cost=3, memory_cost=65536, parallelism=2, ) def pwd_hash(pwd_plain: str) -> str: pwd_plain = str(pwd_plain) return pwd_hasher.hash(pwd_plain) def pwd_verify(pwd_plain: str, stored_hash: str) -> bool: pwd_plain = str(pwd_plain) try: valid = pwd_hasher.verify(stored_hash, pwd_plain) except (VerifyMismatchError, VerificationError, InvalidHash) as e: logger.warning(f"Password verification failed: {e.__class__.__name__}") return False return valid