dddddlmZddlZddlZddlmZddlmZmZm Z ddl m Z m Z m Z mZddlmZGdd ZGd d ZGd d Zy)) annotationsN)Any)get_default_algorithms has_cryptorequires_cryptography)InvalidKeyError PyJWKError PyJWKSetError PyJWTError)JWKDictcteZdZdd dZedd dZedd dZed dZed dZ ed dZ y) PyJWKNclt|_||_|jjdd}|st d|j|s6t |jt r|jjdd}|s|jjdd}|dk(r0|dk(s|sd}ny|dk(rd }nq|d k(rd }ni|d k(rd }nat d||dk(rd}nK|dk(rd}nC|dk(r0|st d|j|dk(rd}nt d|t d|ts|tvrt|d|jj||_ |jstd|j|jj|j|_ y)Nktyzkty is not found: algcrvECzP-256ES256zP-384ES384zP-521ES512 secp256k1ES256KzUnsupported crv: RSARS256octHS256OKPzcrv is not found: Ed25519EdDSAzUnsupported kty: z) requires 'cryptography' to be installed.z%Unable to find an algorithm for key: ) r _algorithms _jwk_datagetr isinstancedictrrr Algorithmfrom_jwkkey)selfjwk_data algorithmrrs -/usr/lib/python3/dist-packages/jwt/api_jwk.py__init__zPyJWK.__init__ s13!nn  -!$6t~~6F"GH HZ=**5$7I..$$UD1Cd{'> 'IG^ 'IG^ 'IK' (I),=cU*CDD# # ),>t~~>N*OPP)# 'I),=cU*CDD%(9#&?@@i+@@ {*STU U))--i8~~DT^^DTUV V>>**4>>:ct||SN)r)objr+s r, from_dictzPyJWK.from_dict>sS)$$r.cXtj|}tj||Sr0)jsonloadsrr2)datar+r1s r, from_jsonzPyJWK.from_jsonBs!jjsI..r.c:|jjddS)Nrr"r#r)s r,key_typezPyJWK.key_typeG~~!!%..r.c:|jjddS)Nkidr9r:s r,key_idz PyJWK.key_idKr<r.c:|jjddS)Nuser9r:s r,public_key_usezPyJWK.public_key_useOr<r.r0)r*r r+ str | NonereturnNone)r1r r+rCrD'PyJWK')r6strr+rErDrF)rDrC) __name__ __module__ __qualname__r- staticmethodr2r7propertyr;r?rBr.r,rr sl/;b%%////////r.rc@eZdZddZeddZeddZd dZy) PyJWKSetcg|_|s tdt|ts td|D]'} |jj t |)t|jdk(r tdy#t $rYYwxYw)Nz$The JWK Set did not contain any keyszInvalid JWK Set valuerzUThe JWK Set did not contain any usable keys. Perhaps 'cryptography' is not installed?)keysr r$listappendrr len)r)rQr(s r,r-zPyJWKSet.__init__Us  FG G$% 78 8 C    s,  tyy>Q g     s$B B  B c<|jdg}t|S)NrQ)r#rO)r1rQs r,r2zPyJWKSet.from_dictjswwvr"~r.cVtj|}tj|Sr0)r4r5rOr2)r6r1s r,r7zPyJWKSet.from_jsonos!jj!!#&&r.cf|jD]}|j|k(s|cStd|)Nzkeyset has no key for kid: )rQr?KeyError)r)r>r(s r, __getitem__zPyJWKSet.__getitem__ts;99 CzzS   4SE:;;r.N)rQz list[JWKDict]rDrE)r1zdict[str, Any]rD 'PyJWKSet')r6rGrDrZ)r>rGrDrF)rHrIrJr-rKr2r7rYrMr.r,rOrOTs4*''rlsB" QQNNE/E/P$<$