ciyidogan commited on
Commit
82d3f6f
·
verified ·
1 Parent(s): 21f0805

Update encryption_utils.py

Browse files
Files changed (1) hide show
  1. encryption_utils.py +48 -8
encryption_utils.py CHANGED
@@ -8,11 +8,13 @@ Anahtar: FLARE_TOKEN_KEY (32-bayt, base64, URL-safe)
8
  import os
9
  from typing import Optional
10
  from cryptography.fernet import Fernet, InvalidToken
 
11
 
12
  _ENV_KEY = "FLARE_TOKEN_KEY"
13
 
14
  def _get_key() -> Fernet:
15
- # Direkt environment variable kullan, ConfigProvider'a bağımlılığı kaldır
 
16
  key = os.getenv(_ENV_KEY)
17
 
18
  # .env dosyasından yüklemeyi dene
@@ -25,24 +27,62 @@ def _get_key() -> Fernet:
25
  pass
26
 
27
  if not key:
28
- raise RuntimeError(f"{_ENV_KEY} ortam değişkeni tanımlanmadı")
 
 
 
 
 
29
 
30
- return Fernet(key.encode())
 
 
 
 
 
 
 
 
 
 
31
 
32
  def encrypt(plain: str) -> str:
33
  """düz string → enc:..."""
34
- f = _get_key()
35
- return "enc:" + f.encrypt(plain.encode()).decode()
 
 
 
 
 
 
 
 
 
36
 
37
  def decrypt(value: Optional[str]) -> Optional[str]:
38
  """enc:... ise çözer, değilse aynen döndürür"""
39
  if value is None or not isinstance(value, str):
40
  return value
 
41
  if not value.startswith("enc:"):
42
  return value
 
43
  token = value.split("enc:", 1)[1]
44
- f = _get_key()
45
  try:
46
- return f.decrypt(token.encode()).decode()
 
 
47
  except InvalidToken:
48
- raise RuntimeError("FLARE_TOKEN_KEY hatalı veya token bozuk")
 
 
 
 
 
 
 
 
 
 
 
8
  import os
9
  from typing import Optional
10
  from cryptography.fernet import Fernet, InvalidToken
11
+ from logger import log_error, log_warning
12
 
13
  _ENV_KEY = "FLARE_TOKEN_KEY"
14
 
15
  def _get_key() -> Fernet:
16
+ """Get encryption key with better error messages"""
17
+ # Direkt environment variable kullan
18
  key = os.getenv(_ENV_KEY)
19
 
20
  # .env dosyasından yüklemeyi dene
 
27
  pass
28
 
29
  if not key:
30
+ error_msg = (
31
+ f"{_ENV_KEY} ortam değişkeni tanımlanmadı. "
32
+ f"Lütfen 32-byte base64 key oluşturun: python generate_key.py"
33
+ )
34
+ log_error(error_msg)
35
+ raise RuntimeError(error_msg)
36
 
37
+ # Key formatını kontrol et
38
+ try:
39
+ return Fernet(key.encode())
40
+ except Exception as e:
41
+ error_msg = (
42
+ f"{_ENV_KEY} geçersiz format. "
43
+ f"32-byte base64 URL-safe key olmalı. "
44
+ f"Yeni key için: python generate_key.py"
45
+ )
46
+ log_error(error_msg, error=str(e))
47
+ raise RuntimeError(error_msg)
48
 
49
  def encrypt(plain: str) -> str:
50
  """düz string → enc:..."""
51
+ if not plain:
52
+ log_warning("Empty string passed to encrypt")
53
+ return ""
54
+
55
+ try:
56
+ f = _get_key()
57
+ encrypted = f.encrypt(plain.encode()).decode()
58
+ return "enc:" + encrypted
59
+ except Exception as e:
60
+ log_error("Encryption failed", error=str(e))
61
+ raise
62
 
63
  def decrypt(value: Optional[str]) -> Optional[str]:
64
  """enc:... ise çözer, değilse aynen döndürür"""
65
  if value is None or not isinstance(value, str):
66
  return value
67
+
68
  if not value.startswith("enc:"):
69
  return value
70
+
71
  token = value.split("enc:", 1)[1]
72
+
73
  try:
74
+ f = _get_key()
75
+ decrypted = f.decrypt(token.encode()).decode()
76
+ return decrypted
77
  except InvalidToken:
78
+ error_msg = (
79
+ "Şifre çözme başarısız. Muhtemel sebepler:\n"
80
+ "1. FLARE_TOKEN_KEY değişti\n"
81
+ "2. Şifreli veri bozuldu\n"
82
+ "3. Farklı bir key ile şifrelendi"
83
+ )
84
+ log_error(error_msg)
85
+ raise RuntimeError(error_msg)
86
+ except Exception as e:
87
+ log_error("Decryption error", error=str(e))
88
+ raise