
    ^h
                     j    S SK r S SKrS SKJr  S rS\4S jrS\4S jrS\S\4S jrS\	S\S	\4S
 jr
g)    N)verbose_proxy_loggerc                  v    SSK Jn   [        R                  " SS 5      nUc  [        R
                  " S5        U nU$ )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     j/home/james-whalen/.local/lib/python3.13/site-packages/litellm/proxy/common_utils/encrypt_decrypt_utils.py_get_salt_keyr      s9    5yy+T2H""_	
 O    valuec                    [        5       n [        U [        5      (       a0  [        XS9n[        R
                  " U5      R                  S5      nU$ [        R                  " S[        U 5       SU  S35        U $ ! [         a  nUeS nAff = f)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A9 'A9 9
B
BB
c           	         [        5       n [        U [        5      (       a!  [        R                  " U 5      n[        X!S9n U $ U $ ! [         a0  n[        R                  " SU  S[        U5       S35         S nAg S nAff = f)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   5A A 
A>&A99A>r   c                     SS K nSS KnSS KnUR                  UR	                  5       5      nUR                  5       nUR                  R                  U5      nU R	                  S5      nUR                  U5      nU$ 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                     SS K nSS KnSS KnUR                  UR	                  5       5      nUR                  5       nUR                  R                  U5      nUR                  U 5      nUR                  S5      nU$ 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   