e<dZddlZddlZddlmZddlmZmZmZddl Z ddl m Z ddl mZmZddlmZmZmZddlmZmZdd lmZdd lmZmZmZej:eZGd d ej@Z!Gd de!eZ"Gdde"Z#GddZ$Gdde$e"Z%Gdde$e"Z&Gdde"Z'e"jQe#dejRZ*e"jQe#dejVZ,e"jQe#dejZZ.e"jQe%dejRZ/e"jQe%dejVZ0e"jQe%dejZZ1e"jQe&dejRZ2e"jQe&d ejVZ3e"jQe&d!ejZZ4e"jQe'd"ejRZ5e"jQe'd#ejVZ6e"jQe'd$ejZZ7y)%zZJSON Web Algorithms. https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40 N)Hashable)AnyCallableDict)default_backend)hasheshmac)ecpaddingrsa)decode_dss_signatureencode_dss_signature) HashAlgorithm)errors interfacesjwkceZdZdZy)JWAzJSON Web Algorithm.N)__name__ __module__ __qualname____doc__,/usr/lib/python3/dist-packages/josepy/jwa.pyrrsrrc eZdZUdZiZeedfed<eed<deddfdZ dede fd Z de fd Z edd Zdefd Zed eddfdZej&dededefdZej&dededede fdZdefdZy) JWASignaturez-Base class for JSON Web Signature Algorithms. SIGNATURESktynamereturnNc||_yNr )selfr s r__init__zJWASignature.__init__&s  rotherc`t|tstS|j|jk(Sr#) isinstancerNotImplementedr )r%r's r__eq__zJWASignature.__eq__)s%%.! !yyEJJ&&rcDt|j|jfSr#)hash __class__r r%s r__hash__zJWASignature.__hash__.sT^^TYY/00rc8||j|j<|S)z(Register class for JSON deserialization.)rr )cls signature_clss rregisterzJWASignature.register1s.;}))*rc|jSr#r$r/s rto_partial_jsonzJWASignature.to_partial_json7 yyrjobjc |j|Sr#)r)r2r8s r from_jsonzJWASignature.from_json:s~~d##rkeymsgct)Sign the ``msg`` using ``key``.NotImplementedError)r%r;r<s rsignzJWASignature.sign> "##rsigct)z-Verify the ``msg`` and ``sig`` using ``key``.r?)r%r;r<rCs rverifyzJWASignature.verifyCrBrc|jSr#r$r/s r__repr__zJWASignature.__repr__Hr7r)r3rr!r)rrrrrrstr__annotations__rr&boolr+intr0 classmethodr4r6r:abcabstractmethodbytesrArErGrrrrr s7,.JS.(). HST'C'D' 1#1 $S$^$$ $$%$E$$ $#$E$$$$$#rrcveZdZejZdedegefffd Z de de de fdZ de de de de fd Z xZS) _JWAHSr hash_c<t||||_yr#superr&r-r%r rRr.s rr&z_JWAHS.__init__O G rr;r<r!ctj||jt}|j ||j S)Nbackend)r HMACr-rupdatefinalize)r%r;r<signers rrAz _JWAHS.signSs43 ?3DE c  rrCc tj||jt}|j | |j |y#t jj$r!}tj|dYd}~yd}~wwxYw)NrYTexc_infoF) r r[r-rr\rE cryptography exceptionsInvalidSignatureloggerdebug)r%r;r<rCverifiererrors rrEz _JWAHS.verifyXsn99S$))_5FG  OOC  &&77  LLL . sAB ,BB )rrrrJWKOctrrHrrr&rOrArJrE __classcell__r.s@rrQrQLsd **CS"m2C)D!!E!e! % e % D rrQceZdZUejZeZee d<eZ e e d<de jdedefdZde j dededefdZy ) _JWARSAr r-r;r<r!cN |j||j|jS#t$r1}tj |dt jdd}~wt$r:}tj |dt jt|d}~wwxYw)r>Tr`%Public key cannot be used for signingN) rAr r-AttributeErrorrerfrError ValueErrorrHr%r;r<rhs rrAz _JWARSA.signis +88Ctyy9 9 H LLL .,,FG G + LLL .,,s5z* * +s &) B$,A B$*5BB$rCc |j|||j|jy#tjj $r!}t j|dYd}~yd}~wwxYw),Verify the ``msg` and ``sig`` using ``key``.Tr`NF)rEr r-rbrcrdrerf)r%r;r<rCrhs rrEz_JWARSA.verifytsW  JJsCtyy 9  &&77  LLL . s(+A)A$$A)N)rrrrJWKRSArr*r rrIr-rr RSAPrivateKeyrOrA RSAPublicKeyrJrErrrrmrmdsf **C!GS!(D-( +)) + +% +#**Utrrmc6eZdZdedegefddffd ZxZS)_JWARSr rRr!Ncnt||tj|_||_yr#)rUr&r PKCS1v15r-rVs rr&z_JWARS.__init__s) '') G rrrrrHrrr&rjrks@rrzrz,S"m2C)Drrzc6eZdZdedegefddffd ZxZS)_JWAPSr rRr!Nct||tjtj|tjj |_||_y)N)mgf salt_length)rUr&r PSSMGF1 MAX_LENGTHr-rVs rr&z_JWAPS.__init__s@ {{w||EG'<'++J`J`a G rr}rks@rrrr~rrceZdZejZdedegefffd Z de jde de fdZ de jde de fdZde jde d e defd Zde jde d e defd ZxZS) _JWAECr rRc<t||||_yr#rTrVs rr&z_JWAEC.__init__rWrr;r<r!c|j||}t|\}}tjj |j }|j |d|j |dzS)r>big)length byteorder)_signr rJWKECexpected_length_for_curvecurveto_bytes)r%r;r<rCdrdsrs rrAz _JWAEC.signshjjc"%c*B44SYY?{{&E{:R[[U>I>   rc^ |j|tj|jS#t$r1}t j |dtjdd}~wt$r:}t j |dtjt|d}~wwxYw)NTr`ro) rAr ECDSAr-rprerfrrqrrrHrss rrz _JWAEC._signs +88C$))!45 5 H LLL .,,FG G + LLL .,,s5z* * +s .1 B,,A&& B,25B''B,rCctjj|j}t |d|zk7ryt t j|d|dt j||dd}|j|||S)ruFrr)rN) rrrrlenrrK from_bytes_verify)r%r;r<rCrlenasn1sigs rrEz _JWAEC.verifysxyy22399= s8q4x & NN3q;%N 8 NN3tu:N 7 ||Cg..rrc |j||tj|jy#tj j $r!}tj|dYd}~yd}~wwxYw)NTr`F) rEr rr-rbrcrdrerf)r%r;r<rrhs rrz_JWAEC._verifysZ  JJwRXXdii%8 9  &&77  LLL . s03A1A,,A1)rrrrrrrHrrr&r EllipticCurvePrivateKeyrOrArEllipticCurvePublicKeyrJrErrjrks@rrrs ))CS"m2C)D 22  5 +33+%+E+ /"33 /% /e /PT /24455UYrrHS256HS384HS512RS256RS384RS512PS256PS384PS512ES256ES384ES512)8rrMloggingcollections.abcrtypingrrrcryptography.exceptionsrbcryptography.hazmat.backendsrcryptography.hazmat.primitivesrr )cryptography.hazmat.primitives.asymmetricr r r /cryptography.hazmat.primitives.asymmetric.utilsr r%cryptography.hazmat.primitives.hashesrjosepyrrr getLoggerrreJSONDeSerializablerrrQrmrzrrr4SHA256rSHA384rSHA512rrrrrrrrrrrrrrs  $&&87FF@**   8 $* ' ' )3)X\06WlWl-\-b fWfmm<=fWfmm<=fWfmm<= fWfmm<=fWfmm<=fWfmm<= fWfmm<=fWfmm<=fWfmm<= fWfmm<=fWfmm<=fWfmm<=r