&)c ddlZddlZddlmZddlmZmZmZddl m Z ddl m Z m Z ddlmZddlmZdd lmZGd d ZdS) N) lru_cache)AnyListOptional)URLError)PyJWKPyJWKSet)decode_complete)PyJWKClientError) JWKSetCachec eZdZ ddedededed ef d Zd efd Zdd ed e fdZ dd ed e e fdZ ded e fdZded e fdZede e ded ee fdZdS) PyJWKClientFT,uri cache_keysmax_cached_keys cache_jwk_setlifespanc||_d|_|r.|dkrtd|dt||_nd|_|r%t ||j|_dSdS)Nrz/Lifespan must be greater than 0, the input is "")maxsize)r jwk_set_cacher r rget_signing_key)selfrrrrrs 1/usr/lib/python3/dist-packages/jwt/jwks_client.py__init__zPyJWKClient.__init__s48  &1}}&QhQQQ"-X!6!6D  !%D   \$F9_#E#E#EdFZ#[#[D  \ \returncd} tj|j5}t j|}dddn #1swxYwY||j|j|SS#t$r}td|dd}~wwxYw#|j|j|wwxYw)Nz'Fail to fetch data from the url, err: "r) urllibrequesturlopenrjsonloadrputrr )rjwk_setresponsees r fetch_datazPyJWKClient.fetch_data)s 0''11 .X)H-- . . . . . . . . . . . . . . . !-"&&w////.  S S S"#QQ#Q#Q#QRR R S !-"&&w////.sK$A8A  A8 A  A8A A8B8 BBBB$Crefreshcd}|j|s|j}||}tj|SN)rgetr+r from_dict)rr,datas r get_jwk_setzPyJWKClient.get_jwk_set6sN   )' )%))++D <??$$D!$'''rct||}d|jD}|std|S)Nc2g|]}|jdv |j|S))sigN)public_key_usekey_id).0 jwk_set_keys r z0PyJWKClient.get_signing_keys..Bs8   )]::{?Q: :::rz2The JWKS endpoint did not contain any signing keys)r2keysr )rr,r( signing_keyss rget_signing_keyszPyJWKClient.get_signing_keys@sU""7++  &|    Y"#WXX Xrkidc|}|||}|sA|d}|||}|std|d|S)NT)r,z,Unable to find a signing key that matches: "r)r= match_kidr )rr>r< signing_keys rrzPyJWKClient.get_signing_keyMs,,.. nn\377  000>>L..s;;K &I3IIIrtokenct|ddi}|d}||dS)Nverify_signatureF)optionsheaderr>) decode_tokenrr/)rrB unverifiedrFs rget_signing_key_from_jwtz$PyJWKClient.get_signing_key_from_jwt]sD!%2De1LMMM H%##FJJu$5$5666rr<c2d}|D]}|j|kr|}n|Sr.)r7)r<r>rAkeys rr@zPyJWKClient.match_kidbs:   CzS  ! !rN)FrTr)F)__name__ __module__ __qualname__strboolintrrr+r r2rr r=rrI staticmethodrr@rrrr sc!!" \\ \\ \  \  \\\\6 0C 0 0 0 0((4(H((((   e    35 7c7e7777 U #(5/\rr)r%urllib.requestr" functoolsrtypingrrr urllib.errorrapi_jwkr r api_jwtr rG exceptionsr rr rrSrrr[s &&&&&&&&&&!!!!!!$$$$$$$$444444((((((&&&&&&^^^^^^^^^^r