
    g
                     b    d dl Z d dlZd dlmZ d ZdefdZdefdZdedefdZde	ded	efd
Z
y)    N)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     e/var/www/openai/venv/lib/python3.12/site-packages/litellm/proxy/common_utils/encrypt_decrypt_utils.py_get_salt_keyr      s9    5yy+T2H""_	
 O    valuec                    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   encrypted_valuees       r   encrypt_value_helperr      s    /KeS!+%[QO$..?FFwOO"""":4;-|TYSZZst	
  s   AA6 &A6 6	B?BBc           	          t               }	 t        | t              r$t        j                  |       }t        ||      } | S | S # t        $ r/}t        j                  d|  dt        |       d       Y d }~y d }~ww xY w)Nr   zHError decrypting value, Did your master_key/salt key change recently? : z
Error: zX
Set permanent salt key - https://docs.litellm.ai/docs/proxy/prod#5-set-litellm-salt-key)	r   r   r   r   	b64decodedecrypt_valuer   r   error)r   r   decoded_b64r   s       r   decrypt_value_helperr$   *   s    /KeS! **51K!MEL  ""VW\V]]fgjklgmfn  oH  I	
 	s   3A  A 	A:%A55A: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   >   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                  |      }|j                  |       }|j                  d      }|S r&   )
r'   r(   r)   r*   r+   r,   r-   r.   decryptr   )r   r   r'   r0   r1   r2   r3   	plaintexts           r   r!   r!   S   sn     ..!3!3!56K##%J ++



+C E"I  )Ir   )r   r   litellm._loggingr   r   r   r   r$   r   bytesr!    r   r   <module>r=      sX     	 1 ( ( 3 * S S r   