from argon2 import PasswordHasher from argon2.exceptions import VerifyMismatchError from apps.api.src.config import settings ph = PasswordHasher( time_cost=settings.ARGON2_TIME_COST, memory_cost=settings.ARGON2_MEMORY_COST, parallelism=settings.ARGON2_PARALLELISM, hash_len=32, salt_len=16, ) def hash_password(password: str) -> str: return ph.hash(password) def verify_password(password: str, hashed: str) -> bool: try: return ph.verify(hashed, password) except VerifyMismatchError: return False def check_password_needs_rehash(hashed: str) -> bool: return ph.check_needs_rehash(hashed)