Spaces:
Building
Building
File size: 1,129 Bytes
41622e0 97ae05d 41622e0 97ae05d 41622e0 97ae05d 41622e0 97ae05d 41622e0 97ae05d 41622e0 97ae05d 41622e0 97ae05d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
"""
Flare – Fernet şifreleme yardımcıları
• encrypt(): düz string → "enc:<blob>"
• decrypt(): enc:<blob> → düz string (veya enc: yoksa aynen döner)
Anahtar: FLARE_TOKEN_KEY (32-bayt, base64, URL-safe)
"""
import os
from typing import Optional
from cryptography.fernet import Fernet, InvalidToken
_ENV_KEY = "FLARE_TOKEN_KEY"
def _get_key() -> Fernet:
key = os.getenv(_ENV_KEY)
if not key:
raise RuntimeError(f"{_ENV_KEY} ortam değişkeni tanımlanmadı")
return Fernet(key.encode())
def encrypt(plain: str) -> str:
"""düz string → enc:..."""
f = _get_key()
return "enc:" + f.encrypt(plain.encode()).decode()
def decrypt(value: Optional[str]) -> Optional[str]:
"""enc:... ise çözer, değilse aynen döndürür"""
if value is None or not isinstance(value, str):
return value
if not value.startswith("enc:"):
return value
token = value.split("enc:", 1)[1]
f = _get_key()
try:
return f.decrypt(token.encode()).decode()
except InvalidToken:
raise RuntimeError("FLARE_TOKEN_KEY hatalı veya token bozuk")
|