Ë
    uPêj  ã                   ó�   — d Z ddlZddlZddlZddlZddlmZmZ ddlZddl	m
Z
 d„ Zdedz  fd„Z G d„ d	«      Z	 d
eeef   fd„Zy)zÃ
This is a file for the AWS Secret Manager Integration

Relevant issue: https://github.com/BerriAI/litellm/issues/1883

Requires:
* `os.environ["AWS_REGION_NAME"],
* `pip install boto3>=1.28.57`
é    N)ÚAnyÚFinal)ÚKeyManagementSystemc                  ó>   — dt         j                  vrt        d«      ‚y )NÚAWS_REGION_NAMEú7Missing required environment variable - AWS_REGION_NAME)ÚosÚenvironÚ
ValueError© ó    úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/secret_managers/aws_secret_manager.pyÚvalidate_environmentr      s   € Ø¤§
¡
Ñ*ÜÐRÓSÐSð +r   Úuse_aws_kmsc                 óê   — | �| du ry 	 dd l }t        «        |j                  dt        j                  d«      ¬«      }|t
        _        t        j                  t
        _	        y # t        $ r}|‚d }~ww xY w©NFr   Úkmsr   )Úregion_name)Úboto3r   Úclientr	   ÚgetenvÚlitellmÚsecret_manager_clientr   ÚAWS_KMSÚ_key_management_systemÚ	Exception)r   r   Ú
kms_clientÚes       r   Úload_aws_kmsr      si   € ØÐ˜k¨UÑ2ØðÛäÔð "ŸL™L¨¼B¿I¹IÐFWÓ<X˜LÓYˆ
à(2ŒÔ%Ü)<×)DÑ)DŒÕ&øäò Øˆûðús   ‰AA" Á"	A2Á+A-Á-A2c                   ó@   — e Zd ZdZd
d„Zd„ Zdedz  fd„Zdede	fd	„Z
y)ÚAWSKeyManagementService_V2zJ
    V2 Clean Class for decrypting keys from AWS KeyManagementService
    ÚreturnNc                 óR   — | j                  «        | j                  d¬«      | _        y )NT)r   )r   r   r   )Úselfs    r   Ú__init__z#AWSKeyManagementService_V2.__init__1   s#   € Ø×!Ñ!Ô#Ø×+Ñ+¸Ð+Ó=ˆ�r   c                 ó¼   — dt         j                  vrt        d«      ‚d}t        j                  dd «      €t        j                  dd «      �d}|du rt        d«      ‚y )Nr   r   FÚLITELLM_LICENSEÚ&LITELLM_SECRET_AWS_KMS_LITELLM_LICENSETzkAWSKeyManagementService V2 is an Enterprise Feature. Please add a valid LITELLM_LICENSE to your envionment.)r	   r
   r   r   )r$   Úis_litellm_license_in_envs     r   r   z/AWSKeyManagementService_V2.validate_environment5   sm   € ð ¤B§J¡JÑ.ÜÐVÓWÐWð +0Ð!ô �I‰IÐ'¨Ó.Ð:Ü�y‰yÐAÀ4ÓHÐTà(,Ð%Ø$¨Ñ-ÜØ}óð ð .r   r   c                 ó¤   — |�|du ry 	 dd l }t        «        |j                  dt        j                  d«      ¬«      }|S # t
        $ r}|‚d }~ww xY wr   )r   r   r   r	   r   r   )r$   r   r   r   r   s        r   r   z'AWSKeyManagementService_V2.load_aws_kmsH   sY   € ØÐ +°Ñ"6Øð
	Ûä Ô"ð !&§¡¨UÄÇ	Á	ÐJ[Ó@\ Ó ]ˆJàÐøÜò 	ØˆGûð	ús   ‰5? ¿	AÁA
Á
AÚsecret_namec                 ó0  — | j                   €t        d«      ‚t        j                  |d «      }|€t	        d|› d�«      ‚t        |t        «      r#|j                  d«      r|j                  dd«      }t        j                  |«      }d|i} | j                   j                  d	i |¤Ž}|d   }|j                  d«      }t        |t        «      r|j                  «       }	 t        j                  |«      }t        |t         «      r|S 	 |S # t        $ r Y |S w xY w)
Nzkms_client is Nonez!AWS KMS - Encrypted Value of Key=z is Noneúaws_kms/Ú ÚCiphertextBlobÚ	Plaintextzutf-8r   )r   r   r	   r   r   Ú
isinstanceÚstrÚ
startswithÚreplaceÚbase64Ú	b64decodeÚdecryptÚdecodeÚstripÚastÚliteral_evalÚbool)	r$   r+   Úencrypted_valueÚciphertext_blobÚparamsÚresponseÚ	plaintextÚsecretÚsecret_value_as_bools	            r   Údecrypt_valuez(AWSKeyManagementService_V2.decrypt_valueW   s   € Ø�?‰?Ð"ÜÐ1Ó2Ð2ÜŸ)™) K°Ó6ˆØÐ"ÜÐ?À¸}ÈHÐUÓVÐVÜ�o¤sÔ+°×0JÑ0JÈ:Ô0VØ-×5Ñ5°jÀ"ÓEˆOô "(×!1Ñ!1°/Ó!Bˆð *¨?Ð;ˆà1˜$Ÿ/™/×1Ñ1Ñ;°FÑ;ˆð $ KÑ0ˆ	Ø×!Ñ! 'Ó*ˆÜ�fœcÔ"Ø—\‘\“^ˆFð	Ü*-×*:Ñ*:¸6Ó*BÐ ÜÐ.´Ô5Ø+Ð+ð 6ð
 ˆøô ò 	Øàˆð	ús   Ã&D Ä	DÄD)r"   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r   r<   r   r2   r   rD   r   r   r   r!   r!   ,   s4   „ ñó>òð&¨¨t©ó ð¨ð °ô r   r!   r"   c                  ó”  — t        «       } i }t        j                  j                  «       D ]š  \  }}|�/t	        |t
        «      r|j                  «       j                  d«      s&|€Œ:t	        |t
        «      sŒK|j                  d«      sŒ]| j                  |¬«      }t        j                  dd|t        j                  ¬«      }|||<   Œœ |S )NÚlitellm_secret_aws_kmsr-   )r+   Úlitellm_secret_aws_kms_r.   )Úflags)r!   r	   r
   Úitemsr1   r2   Úlowerr3   rD   ÚreÚsubÚ
IGNORECASE)Úaws_kmsÚ
new_valuesÚkÚvÚdecrypted_values        r   Údecrypt_env_varrW   ~   s§   € ä/Ó1€Gà€JÜ—
‘
× Ñ Ó"ò ,‰ˆˆ1ØˆMœj¨¬CÔ0°Q·W±W³Y×5IÑ5IÐJbÔ5cØ‰Mœj¨¬CÕ0°Q·\±\À*Õ5Mà%×3Ñ3ÀÐ3ÓBˆOä—‘Ð0°"°a¼r¿}¹}ÔMˆAØ+ˆJ�qŠMð,ð Ðr   )rH   r:   r5   r	   rO   Útypingr   r   r   Úlitellm.proxy._typesr   r   r<   r   r!   Údictr2   rW   r   r   r   ú<module>r[      s]   ðñó Û Û 	Û 	ß ã Ý 4òTð
˜d T™kó ÷$Hñ HðVð˜˜c 3˜h™ô r   