26 lines
647 B
Python
26 lines
647 B
Python
|
|
from cryptography.fernet import Fernet
|
||
|
|
|
||
|
|
from app.config import settings
|
||
|
|
|
||
|
|
_fernet: Fernet | None = (
|
||
|
|
Fernet(settings.token_encryption_key.encode()) if settings.token_encryption_key else None
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def _require_fernet() -> Fernet:
|
||
|
|
if _fernet is None:
|
||
|
|
raise RuntimeError("TOKEN_ENCRYPTION_KEY is not configured")
|
||
|
|
return _fernet
|
||
|
|
|
||
|
|
|
||
|
|
def encrypt(value: str | None) -> str | None:
|
||
|
|
if value is None:
|
||
|
|
return None
|
||
|
|
return _require_fernet().encrypt(value.encode()).decode()
|
||
|
|
|
||
|
|
|
||
|
|
def decrypt(value: str | None) -> str | None:
|
||
|
|
if value is None:
|
||
|
|
return None
|
||
|
|
return _require_fernet().decrypt(value.encode()).decode()
|