import base64 import hashlib from cryptography.fernet import Fernet from app.core.config import get_settings def _derive_fernet_key(secret: str) -> bytes: digest = hashlib.sha256(secret.encode("utf-8")).digest() return base64.urlsafe_b64encode(digest) def _get_fernet() -> Fernet: settings = get_settings() key = _derive_fernet_key(settings.SECRET_KEY) return Fernet(key) def encrypt_api_key(api_key: str) -> str: f = _get_fernet() return f.encrypt(api_key.encode("utf-8")).decode("utf-8") def decrypt_api_key(encrypted_key: str) -> str: f = _get_fernet() return f.decrypt(encrypted_key.encode("utf-8")).decode("utf-8")