
    ^h(                         S r SSKrSSKrSSKrSSKrSSKJrJrJr  SSK	r	SSK
Jr  S rS\\   4S jr " S S	5      r S
\\\4   4S jrg)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DictOptional)KeyManagementSystemc                  B    S[         R                  ;  a  [        S5      eg )NAWS_REGION_NAME7Missing required environment variable - AWS_REGION_NAME)osenviron
ValueError     d/home/james-whalen/.local/lib/python3.13/site-packages/litellm/secret_managers/aws_secret_manager.pyvalidate_environmentr      s    

*RSS +r   use_aws_kmsc                     U b  U SL a  g  SS K n[        5         UR                  S[        R                  " S5      S9nU[
        l        [        R                  [
        l	        g ! [         a  nUeS nAff = f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    kU2 \\%RYY?P5Q\R
(2%)<)D)D& s   AA" "
A3,A..A3c                   N    \ rS rSrSrSS jrS rS\\   4S jr	S	\
S\4S
 jrSrg)AWSKeyManagementService_V2,   zB
V2 Clean Class for decrypting keys from AWS KeyManagementService
returnNc                 L    U R                  5         U R                  SS9U l        g )NT)r   )r   r    r   )selfs    r   __init__#AWSKeyManagementService_V2.__init__1   s#    !!#+++=r   c                     S[         R                  ;  a  [        S5      eSn[         R                  " SS 5      b  SnO[         R                  " SS 5      b  SnUSL a  [        S5      eg )Nr   r	   FLITELLM_LICENSET&LITELLM_SECRET_AWS_KMS_LITELLM_LICENSEzkAWSKeyManagementService 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   /AWSKeyManagementService_V2.validate_environment5   sq     BJJ.VWW +0!99&-9(,%YY?FR(,%$-}  .r   r   c                     Ub  USL a  g  SS K n[        5         UR                  S[        R                  " S5      S9nU$ ! [
         a  nUeS nAff = fr   )r   r   r   r
   r   r   )r&   r   r   r   r   s        r   r    'AWSKeyManagementService_V2.load_aws_kmsG   sY    +"6
	 " eCT9UVJ 	G	s   3? 
A	AAsecret_namec                 z   U R                   c  [        S5      e[        R                  " US 5      nUc  [	        SR                  U5      5      e[        U[        5      (       a(  UR                  S5      (       a  UR                  SS5      n[        R                  " U5      nSU0nU R                   R                  " S0 UD6nUS   nUR                  S5      n[        U[        5      (       a  UR                  5       n [        R                   " U5      n[        U["        5      (       a  U$  U$ ! [         a     U$ f = f)	Nzkms_client is Nonez+AWS KMS - Encrypted Value of Key={} is Noneaws_kms/ CiphertextBlob	Plaintextzutf-8r   )r   r   r
   r   r   format
isinstancestr
startswithreplacebase64	b64decodedecryptdecodestripastliteral_evalbool)	r&   r0   encrypted_valueciphertext_blobparamsresponse	plaintextsecretsecret_value_as_bools	            r   decrypt_value(AWSKeyManagementService_V2.decrypt_valueV   s2   ??"122))K6"=DD[Q  os++0J0J:0V0V-55j"EO !**?; #O4??**4V4 [)	!!'*fc""\\^F	#&#3#3F#; .55++ 6
   		s   <,D, ,
D:9D:)r   )r$   N)__name__
__module____qualname____firstlineno____doc__r'   r   r   rB   r    r8   r   rJ   __static_attributes__r   r   r   r"   r"   ,   s4    >$   r   r"   r$   c                     [        5       n 0 n[        R                  R                  5        H  u  p#Ub9  [	        U[
        5      (       a$  UR                  5       R                  S5      (       d4  Uc  MF  [	        U[
        5      (       d  M]  UR                  S5      (       d  Mu  U R                  US9n[        R                  " SSU[        R                  S9nXAU'   M     U$ )Nlitellm_secret_aws_kmsr2   )r0   litellm_secret_aws_kms_r3   )flags)r"   r
   r   itemsr7   r8   lowerr9   rJ   resub
IGNORECASE)aws_kms
new_valueskvdecrypted_values        r   decrypt_env_varr`      s    (*GJ

  "M1c""	$$%=>>m
1c 2 2q||J7O7O%333BO0"ar}}MA+qM # r   )rP   r@   r;   r
   rX   typingr   r   r   r   litellm.proxy._typesr   r   rB   r    r"   r8   r`   r   r   r   <module>rc      s`      	 	 & &  4T
htn $I IXc3h r   