import base64 import hashlib from cryptography.fernet import Fernet from app.config import settings def _build_fernet() -> Fernet: digest = hashlib.sha256(settings.SECRET_KEY.encode("utf-8")).digest() key = base64.urlsafe_b64encode(digest) return Fernet(key) def encrypt_secret(value: str | None) -> str | None: if not value: return None return _build_fernet().encrypt(value.encode("utf-8")).decode("utf-8") def decrypt_secret(value: str | None) -> str | None: if not value: return None return _build_fernet().decrypt(value.encode("utf-8")).decode("utf-8")