from argon2 import PasswordHasher from argon2.exceptions import InvalidHashError, VerificationError _hasher = PasswordHasher() # Verified against when the user does not exist, so login duration does not # reveal whether an email address is registered. _DUMMY_HASH = _hasher.hash("pablan-dummy-password") def hash_password(password: str) -> str: return _hasher.hash(password) def verify_password(password_hash: str, password: str) -> bool: try: return _hasher.verify(password_hash, password) except (VerificationError, InvalidHashError): return False def burn_verification_time() -> None: verify_password(_DUMMY_HASH, "wrong-password")