
    hN                         d dl Z d dlZd dlmZmZ d dlmZ d Zddedee   fdZ		 ddeded	ed
   fdZ
dedefdZdededefdZy)    N)LiteralOptional)verbose_proxy_loggerc                  p    ddl m}  t        j                  dd       }|t	        j
                  d       | }|S )Nr   )
master_keyLITELLM_SALT_KEYzQLITELLM_SALT_KEY is None using master_key to encrypt/decrypt secrets stored in DB)litellm.proxy.proxy_serverr   osgetenvr   debug)r   salt_keys     l/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/proxy/common_utils/encrypt_decrypt_utils.py_get_salt_keyr      s9    5yy+T2H""_	
 O    valuenew_encryption_keyc                    |xs
 t               }	 t        | t              r3t        | |      }t	        j
                  |      j                  d      }|S t        j                  dt        |        d|  d       | S # t        $ r}|d }~ww xY w)Nr   signing_keyutf-8z,Invalid value type passed to encrypt_value: z for Value: z
 Value must be a string)r   
isinstancestrencrypt_valuebase64	b64encodedecoder   r   type	Exception)r   r   r   encrypted_valuees        r   encrypt_value_helperr!      s    $7KeS!+%[QO$..?FFwOO"""":4;-|TYSZZst	
  s   AA: &A: :	B
BB
keyexception_type)r   errorc                 t   t               }	 t        | t              r$t        j                  |       }t        ||      } | S | S # t        $ rl}d| dt        |       d}|dk(  rt        j                  |       Y d }~y t        j                  d|  d| d       t        j                  |       Y d }~y d }~ww xY w)	Nr   z Error decrypting value for key: z8, Did your master_key/salt key change recently? 
Error: zX
Set permanent salt key - https://docs.litellm.ai/docs/proxy/prod#5-set-litellm-salt-keyr   zUnable to decrypt value=z
 for key: z, returning None)
r   r   r   r   	b64decodedecrypt_valuer   r   r   	exception)r   r"   r#   r   decoded_b64r    error_messages          r   decrypt_value_helperr+   *   s    
  /KeS! **51K!MEL  :3%?xy|}~y  yA  AZ  [W$ &&}5""&ugZu<LM	
 	&&}5s#   3A  A 	B7,B2<1B22B7r   c                     dd l }dd l}dd l}|j                  |j	                               }|j                         }|j                  j                  |      }| j	                  d      }|j                  |      }|S )Nr   r   )	hashlibnacl.secret
nacl.utilssha256encodedigestsecret	SecretBoxencrypt)	r   r   r-   naclhash_object
hash_bytesboxvalue_bytes	encrypteds	            r   r   r   H   sl     ..!3!3!56K##%J ++



+C ,,w'KK(Ir   returnc                 <   dd l }dd l}dd l}|j                  |j	                               }|j                         }|j                  j                  |      }	 t        |       dk(  ry|j                  |       }|j                  d      }|S # t        $ r}|d }~ww xY w)Nr    r   )r-   r.   r/   r0   r1   r2   r3   r4   lendecryptr   r   )	r   r   r-   r6   r7   r8   r9   	plaintextr    s	            r   r'   r'   ]   s     ..!3!3!56K##%J ++



+Cu:?KK&	$$W-	 s   B '#B 	BBB)N)r$   )r   r
   typingr   r   litellm._loggingr   r   r   r!   r+   r   bytesr'    r   r   <module>rF      s     	 $ 1 # , 18	 ,-< 3 * S S r   