
    #	h                         S SK r S SKrS SKJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJr  SSKJrJr  SSKJr  SS	KJrJr  SS
KJr   " S S5      rg)    N)	lru_cache)
SSLContext)AnyDictListOptional)URLError   )PyJWKPyJWKSet)decode_complete)PyJWKClientConnectionErrorPyJWKClientError)JWKSetCachec                       \ rS rSr       SS\S\S\S\S\S\\\\	4      S	\S
\\
   4S jjrS\	4S jrSS\S\4S jjrSS\S\\   4S jjrS\S\4S jrS\S\4S jr\S\\   S\S\\   4S j5       rSrg)PyJWKClient   Nuri
cache_keysmax_cached_keyscache_jwk_setlifespanheaderstimeoutssl_contextc	                     Uc  0 nXl         S U l        X`l        Xpl        Xl        U(       a&  US::  a  [        SU S35      e[        U5      U l        OS U l        U(       a  [        US9" U R                  5      U l        g g )Nr   z/Lifespan must be greater than 0, the input is "")maxsize)	r   jwk_set_cacher   r   r   r   r   r   get_signing_key)	selfr   r   r   r   r   r   r   r   s	            A/var/www/html/env/lib/python3.13/site-packages/jwt/jwks_client.py__init__PyJWKClient.__init__   s     ?G48& 1}&EhZqQ  "-X!6D!%D $-_#E$$$D      returnc                 2   S n [         R                  R                  U R                  U R                  S9n[         R                  R                  X R                  U R                  S9 n[        R                  " U5      nS S S 5        UU R                  b  U R                  R                  U5        $ $ ! , (       d  f       N9= f! [        [        4 a  n[        SU S35      UeS nAff = f! U R                  b  U R                  R                  U5        f f = f)N)urlr   )r   contextz'Fail to fetch data from the url, err: "r   )urllibrequestRequestr   r   urlopenr   r   jsonloadr   putr	   TimeoutErrorr   )r!   jwk_setrresponsees        r"   
fetch_dataPyJWKClient.fetch_data4   s    	0&&488T\\&JA''<<1A1A ( ))H- !!-""&&w/ .  ,' 	,9!A>	 !!-""&&w/ .sB   A$C (B2?C C+ 2
C <C C(C##C((C+ ++Drefreshc                     S nU R                   b!  U(       d  U R                   R                  5       nUc  U R                  5       n[        U[        5      (       d  [        S5      e[        R                  " U5      $ )Nz.The JWKS endpoint did not return a JSON object)r   getr6   
isinstancedictr   r   	from_dict)r!   r8   datas      r"   get_jwk_setPyJWKClient.get_jwk_setF   sd    )'%%))+D<??$D$%%"#STT!!$''r%   c                     U R                  U5      nUR                   Vs/ s H*  nUR                  S;   d  M  UR                  (       d  M(  UPM,     nnU(       d  [	        S5      eU$ s  snf )N)sigNz2The JWKS endpoint did not contain any signing keys)r?   keyspublic_key_usekey_idr   )r!   r8   r2   jwk_set_keysigning_keyss        r"   get_signing_keysPyJWKClient.get_signing_keysS   sp    ""7+  '||
+))]: ?J?Q?Q + 	 
 "#WXX
s   A'A'A'kidc                     U R                  5       nU R                  X!5      nU(       d6  U R                  SS9nU R                  X!5      nU(       d  [        SU S35      eU$ )NT)r8   z,Unable to find a signing key that matches: "r   )rH   	match_kidr   )r!   rJ   rG   signing_keys       r"   r    PyJWKClient.get_signing_key`   sf    ,,.nn\7000>L..;K&B3%qI  r%   tokenc                 d    [        USS0S9nUS   nU R                  UR                  S5      5      $ )Nverify_signatureF)optionsheaderrJ   )decode_tokenr    r:   )r!   rO   
unverifiedrS   s       r"   get_signing_key_from_jwt$PyJWKClient.get_signing_key_from_jwtp   s8    !%2De1LM
H%##FJJu$566r%   rG   c                 F    S nU  H  nUR                   U:X  d  M  Un  U$    U$ )N)rE   )rG   rJ   rM   keys       r"   rL   PyJWKClient.match_kidu   s3    CzzS !  
 r%   )r    r   r   r   r   r   )F   Ti,  N   N)F)__name__
__module____qualname____firstlineno__strboolintr   r   r   r   r#   r6   r   r?   r   r   rH   r    rV   staticmethodrL   __static_attributes__ r%   r"   r   r      s    !!",0,0## # 	#
 # # $sCx.)# # j)#J0C 0$(4 (H ( e 3 5  7c 7e 7
 U # (5/  r%   r   )r.   urllib.requestr*   	functoolsr   sslr   typingr   r   r   r   urllib.errorr	   api_jwkr   r   api_jwtr   rT   
exceptionsr   r   r   r   r   rf   r%   r"   <module>ro      s2        , , ! $ 4 D &p pr%   