a Bg<@sdZddlZddlZddlmZddlmZmZmZddl Z ddl m Z ddl mZmZddlmZmZmZddlmZmZdd lmZdd lmZmZmZeeZGd d d ej Z!Gd dde!eZ"Gddde"Z#GdddZ$Gddde$e"Z%Gddde$e"Z&Gddde"Z'e"(e#dej)Z*e"(e#dej+Z,e"(e#dej-Z.e"(e%dej)Z/e"(e%dej+Z0e"(e%dej-Z1e"(e&dej)Z2e"(e&d ej+Z3e"(e&d!ej-Z4e"(e'd"ej)Z5e"(e'd#ej+Z6e"(e'd$ej-Z7dS)%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 interfacesjwkc@seZdZdZdS)JWAzJSON Web Algorithm.N)__name__ __module__ __qualname____doc__rr./usr/lib/python3.9/site-packages/josepy/jwa.pyrsrc@seZdZUdZiZeedfed<eed<eddddZ ee dd d Z e d d d Z edddddZed ddZeeddddZejeeedddZejeeee dddZed ddZdS) JWASignaturez-Base class for JSON Web Signature Algorithms. SIGNATURESktyN)namereturncCs ||_dSNr)selfrrrr__init__&szJWASignature.__init__)otherrcCst|tstS|j|jkSr) isinstancerNotImplementedr)r r"rrr__eq__)s zJWASignature.__eq__)rcCst|j|jfSr)hash __class__rr rrr__hash__.szJWASignature.__hash__) signature_clsrcCs||j|j<|S)z(Register class for JSON deserialization.)rr)clsr*rrrregister1s zJWASignature.registercCs|jSrrr(rrrto_partial_json7szJWASignature.to_partial_json)jobjrcCs |j|Sr)r)r+r.rrr from_json:szJWASignature.from_jsonkeymsgrcCs tdS)Sign the ``msg`` using ``key``.NNotImplementedError)r r1r2rrrsign>szJWASignature.signr1r2sigrcCs tdS)z-Verify the ``msg`` and ``sig`` using ``key``.Nr4)r r1r2r8rrrverifyCszJWASignature.verifycCs|jSrrr(rrr__repr__HszJWASignature.__repr__)rrrrrrstr__annotations__rr!boolr%intr) classmethodr,r-r/abcabstractmethodbytesr6r9r:rrrrr s rcsXeZdZejZeegefdfdd Z e e e dddZ e e e e ddd Z ZS) _JWAHSrhash_cst|||_dSrsuperr!r&r rrEr'rrr!Os z_JWAHS.__init__r0cCs&tj||jtd}|||S)NZbackend)rHMACr&rupdatefinalize)r r1r2Zsignerrrrr6Ss z _JWAHS.signr7c Csntj||jtd}||z||Wn8tjjyd}zt j |ddWYd}~dSd}~00dSdS)NrJTexc_infoF) rrKr&rrLr9 cryptography exceptionsInvalidSignatureloggerdebug)r r1r2r8Zverifiererrorrrrr9Xs z _JWAHS.verify)rrrrZJWKOctrr;rrr!rBr6r=r9 __classcell__rrrIrrCLsrCc@sVeZdZUejZeZee d<eZ e e d<e j eedddZe jeeedddZd S) _JWARSAr r&r0c Csz|||j|jWStyP}z$tj|ddtdWYd}~nHd}~0ty}z(tj|ddtt |WYd}~n d}~00dS)r3TrN%Public key cannot be used for signingN) r6r r&AttributeErrorrSrTrError ValueErrorr;r r1r2rUrrrr6isz _JWARSA.signr7c CsZz||||j|jWn8tjjyP}ztj|ddWYd}~dSd}~00dSdS),Verify the ``msg` and ``sig`` using ``key``.TrNNF)r9r r&rPrQrRrSrT)r r1r2r8rUrrrr9ts z_JWARSA.verifyN)rrrrZJWKRSArr$r rr<r&rr Z RSAPrivateKeyrBr6Z RSAPublicKeyr=r9rrrrrWds    rWcs.eZdZeegefddfdd ZZS)_JWARSNrrErcs"t|t|_||_dSr)rGr!r ZPKCS1v15r&rHrIrrr!s  z_JWARS.__init__rrrr;rrr!rVrrrIrr^sr^cs.eZdZeegefddfdd ZZS)_JWAPSNr_cs4t|tjt|tjjd|_||_dS)N)ZmgfZ salt_length)rGr!r ZPSSZMGF1Z MAX_LENGTHr&rHrIrrr!s z_JWAPS.__init__r`rrrIrrasracseZdZejZeegefdfdd Z e j e e dddZ e j e e dddZe je e ed d d Ze je e ed d dZZS)_JWAECrDcst|||_dSrrFrHrIrrr!s z_JWAEC.__init__r0cCsB|||}t|\}}tj|j}|j|dd|j|ddS)r3big)length byteorder)_signr rJWKECexpected_length_for_curvecurveto_bytes)r r1r2r8ZdrZdsrdrrrr6s   z _JWAEC.signc Csz||t|jWStyR}z$tj|ddtdWYd}~nHd}~0t y}z(tj|ddtt |WYd}~n d}~00dS)NTrNrX) r6r ECDSAr&rYrSrTrrZr[r;r\rrrrfsz _JWAEC._signr7cCs^tj|j}t|d|kr"dSttj|d|ddtj||ddd}||||S)r]Frrc)reN) rrgrhrilenr r> from_bytes_verify)r r1r2r8Zrlenasn1sigrrrr9sz _JWAEC.verify)r1r2rprc Cs\z|||t|jWn8tjjyR}ztj|ddWYd}~dSd}~00dSdS)NTrNF) r9r rkr&rPrQrRrSrT)r r1r2rprUrrrros z_JWAEC._verify)rrrrrgrr;rrr!r ZEllipticCurvePrivateKeyrBr6rfZEllipticCurvePublicKeyr=r9rorVrrrIrrbs    rbHS256HS384HS512RS256RS384RS512PS256PS384PS512ES256ES384ES512)8rr@Zloggingcollections.abcrtypingrrrZcryptography.exceptionsrPZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrrZ)cryptography.hazmat.primitives.asymmetricr r r Z/cryptography.hazmat.primitives.asymmetric.utilsr r Z%cryptography.hazmat.primitives.hashesrZjosepyrrrZ getLoggerrrSZJSONDeSerializablerrrCrWr^rarbr,ZSHA256rqZSHA384rrZSHA512rsrtrurvrwrxryrzr{r|rrrrs>    ,1