bg~ddlZddlZddlmZddlmZddlmZm Z m Z m Z ddl m Z ddlmZmZddlmZdd lmZmZdd lmZGd d ZdS) N) lru_cache) SSLContext)AnyDictListOptional)URLError)PyJWKPyJWKSet)decode_complete)PyJWKClientConnectionErrorPyJWKClientError) JWKSetCacheceZdZ ddeded ed ed ed eeeefd edee fdZ defdZ ddede fdZ ddedeefdZdedefdZdedefdZedeededeefdZdS) PyJWKClientFT,Nuri cache_keysmax_cached_keys cache_jwk_setlifespanheaderstimeout ssl_contextc |i}||_d|_||_||_||_|r.|dkrt d|dt ||_nd|_|r%t||j|_dSdS)Nrz/Lifespan must be greater than 0, the input is "")maxsize) r jwk_set_cacherrrrrrget_signing_key) selfrrrrrrrrs F/opt/cloudlinux/venv/lib64/python3.11/site-packages/jwt/jwks_client.py__init__zPyJWKClient.__init__s ?G48  &  &1}}&QhQQQ"-X!6!6D  !%D   \$F9_#E#E#EdFZ#[#[D  \ \returncd} tj|j|j}tj||j|j5}tj |}dddn #1swxYwY||j |j |SS#ttf$r}td|dd}~wwxYw#|j |j |wwxYw)N)urlr)rcontextz'Fail to fetch data from the url, err: "r)urllibrequestRequestrrurlopenrrjsonloadr!putr TimeoutErrorr)r#jwk_setrresponsees r$ fetch_datazPyJWKClient.fetch_data2sV 0&&48T\&JJA''4<1A( .)H-- . . . . . . . . . . . . . . .!-"&&w////.,'   ,>!>>>  !-"&&w////.sNAB+A<0 B+<BB+BB+C+C<CCC$C;refreshcd}|j|s|j}||}t|tst dt j|S)Nz.The JWKS endpoint did not return a JSON object)r!getr7 isinstancedictrr from_dict)r#r8datas r$ get_jwk_setzPyJWKClient.get_jwk_setDsp   )' )%))++D <??$$D$%% U"#STT T!$'''r&ct||}d|jD}|std|S)Nc2g|]}|jdv |j|S))sigN)public_key_usekey_id).0 jwk_set_keys r$ z0PyJWKClient.get_signing_keys..Ss8   )]::{?Q: :::r&z2The JWKS endpoint did not contain any signing keys)r?keysr)r#r8r3 signing_keyss r$get_signing_keyszPyJWKClient.get_signing_keysQsU""7++  &|    Y"#WXX Xr&kidc|}|||}|sA|d}|||}|std|d|S)NT)r8z,Unable to find a signing key that matches: "r)rJ match_kidr)r#rKrI signing_keys r$r"zPyJWKClient.get_signing_key^s,,.. nn\377  000>>L..s;;K &I3IIIr&tokenct|ddi}|d}||dS)Nverify_signatureF)optionsheaderrK) decode_tokenr"r:)r#rO unverifiedrSs r$get_signing_key_from_jwtz$PyJWKClient.get_signing_key_from_jwtnsD!%2De1LMMM H%##FJJu$5$5666r&rIc2d}|D]}|j|kr|}n|S)N)rD)rIrKrNkeys r$rMzPyJWKClient.match_kidss:   CzS  ! !r&)FrTrNrN)F)__name__ __module__ __qualname__strboolintrrrrr%r7r r?rr rJr"rV staticmethodrMr&r$rrs!!",0,0!\!\ !\!\ !\  !\  !\$sCx.)!\!\j)!\!\!\!\F0C0000$ ( (4 (H ( ( ( (   e    35 7c7e7777 U #(5/\r&r)r/urllib.requestr+ functoolsrsslrtypingrrrr urllib.errorr api_jwkr r api_jwtr rT exceptionsrrr!rrr`r&r$ris ,,,,,,,,,,,,!!!!!!$$$$$$$$444444DDDDDDDD&&&&&&nnnnnnnnnnr&