B E`@sfddlZddlZddlmZddlmZmZddlm Z m Z ddl m Z ddlmZGdd d ZdS) N) lru_cache)AnyList)PyJWKPyJWKSet)decode_complete)PyJWKClientErrorc@sneZdZdeeedddZedddZe dd d Z e e dd d Z ee d ddZee dddZdS) PyJWKClientT)uri cache_keysmax_cached_keyscCs ||_|rt|d|j|_dS)N)maxsize)r rget_signing_key)selfr r rr@/opt/alt/python37/lib/python3.7/site-packages/jwt/jwks_client.py__init__ szPyJWKClient.__init__)returnc Cs$tj|j }t|SQRXdS)N)urllibZrequestZurlopenr jsonload)rZresponserrr fetch_dataszPyJWKClient.fetch_datacCs|}t|S)N)rrZ from_dict)rdatarrr get_jwk_setszPyJWKClient.get_jwk_setcCsN|}g}x(|jD]}|jdkr|jr||qWt|dkrJtd|S)Nsigrz2The JWKS endpoint did not contain any signing keys)rkeysZpublic_key_usekey_idappendlenr )rZjwk_set signing_keysZ jwk_set_keyrrrget_signing_keyss  zPyJWKClient.get_signing_keys)kidrcCsB|}d}x|D]}|j|kr|}PqW|s>td|d|S)Nz,Unable to find a signing key that matches: "")r"rr )rr#r!Z signing_keykeyrrrr(s  zPyJWKClient.get_signing_key)tokenrcCs(t|ddid}|d}||dS)NZverify_signatureF)optionsheaderr#) decode_tokenrget)rr&Z unverifiedr(rrrget_signing_key_from_jwt8sz$PyJWKClient.get_signing_key_from_jwtN)Tr )__name__ __module__ __qualname__strboolintrrrrrrrr"rr+rrrrr s  r )rZurllib.requestr functoolsrtypingrrZapi_jwkrrZapi_jwtrr) exceptionsr r rrrrs