o \|]az@sfddlZddlZddlmZddlmZmZddlm Z m Z ddl m Z ddlmZGdd d ZdS) N) lru_cache)AnyList)PyJWKPyJWKSet)decode_complete)PyJWKClientErrorc@sveZdZddededefddZdefd d Zde fd d Z de e fd dZ dede fddZdede fddZdS) PyJWKClientTuri cache_keysmax_cached_keyscCs$||_|rt|d|j|_dSdS)N)maxsize)r rget_signing_key)selfr r rr1/usr/lib/python3/dist-packages/jwt/jwks_client.py__init__ szPyJWKClient.__init__returncCs<tj|j }t|WdS1swYdSN)urllibrequesturlopenr jsonload)rresponserrr fetch_datas$zPyJWKClient.fetch_datacCs|}t|Sr)rr from_dict)rdatarrr get_jwk_sets zPyJWKClient.get_jwk_setcCs(|}dd|jD}|std|S)NcSs g|] }|jdvr|jr|qS))sigN)public_key_usekey_id).0 jwk_set_keyrrr s z0PyJWKClient.get_signing_keys..z2The JWKS endpoint did not contain any signing keys)r keysr )rjwk_set signing_keysrrrget_signing_keysszPyJWKClient.get_signing_keyskidcCs@|}d}|D] }|j|kr|}nq|std|d|S)Nz,Unable to find a signing key that matches: "")r*r#r )rr+r) signing_keykeyrrrr(s  zPyJWKClient.get_signing_keytokencCs(t|ddid}|d}||dS)Nverify_signatureF)optionsheaderr+) decode_tokenrget)rr/ unverifiedr2rrrget_signing_key_from_jwt8sz$PyJWKClient.get_signing_key_from_jwtN)Tr )__name__ __module__ __qualname__strboolintrrrrr rrr*rr6rrrrr s r )rurllib.requestr functoolsrtypingrrapi_jwkrrapi_jwtrr3 exceptionsr r rrrrs