JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/josepy/__pycache__/jwa.cpython-39.opt-1.pyc

a

�Bg<�@s�dZddlZddlZddlmZddlmZmZmZddl	Z
ddlmZddl
mZmZddlmZmZmZddlmZmZdd	lmZdd
lmZmZmZe�e�ZGdd�dej �Z!Gd
d�de!e�Z"Gdd�de"�Z#Gdd�d�Z$Gdd�de$e"�Z%Gdd�de$e"�Z&Gdd�de"�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)�Any�Callable�Dict)�default_backend)�hashes�hmac)�ec�padding�rsa)�decode_dss_signature�encode_dss_signature)�
HashAlgorithm)�errors�
interfaces�jwkc@seZdZdZdS)�JWAzJSON Web Algorithm.N)�__name__�
__module__�__qualname__�__doc__�rr�./usr/lib/python3.9/site-packages/josepy/jwa.pyrsrc@s�eZdZUdZiZeedfed<eed<edd�dd�Z	ee
d�d	d
�Zed�dd
�Z
eddd�dd��Zed�dd�Zeedd�dd��Zejeeed�dd��Zejeeee
d�dd��Zed�dd�ZdS)�JWASignaturez-Base class for JSON Web Signature Algorithms.�
SIGNATURES�ktyN)�name�returncCs
||_dS�N�r)�selfrrrr�__init__&szJWASignature.__init__)�otherrcCst|t�stS|j|jkSr)�
isinstancer�NotImplementedr)r r"rrr�__eq__)s
zJWASignature.__eq__)rcCst|j|jf�Sr)�hash�	__class__r�r rrr�__hash__.szJWASignature.__hash__)�
signature_clsrcCs||j|j<|S)z(Register class for JSON deserialization.)rr)�clsr*rrr�register1szJWASignature.registercCs|jSrrr(rrr�to_partial_json7szJWASignature.to_partial_json)�jobjrcCs
|j|Sr)r)r+r.rrr�	from_json:szJWASignature.from_json��key�msgrcCs
t��dS)�Sign the ``msg`` using ``key``.N��NotImplementedError)r r1r2rrr�sign>szJWASignature.sign�r1r2�sigrcCs
t��dS)z-Verify the ``msg`` and ``sig`` using ``key``.Nr4)r r1r2r8rrr�verifyCszJWASignature.verifycCs|jSrrr(rrr�__repr__HszJWASignature.__repr__)rrrrrr�str�__annotations__rr!�boolr%�intr)�classmethodr,r-r/�abc�abstractmethod�bytesr6r9r:rrrrr s 
rcsXeZdZejZeegefd��fdd�Z	e
e
e
d�dd�Ze
e
e
ed�dd	�Z
�ZS)
�_JWAHS�r�hash_cst��|�|�|_dSr��superr!r&�r rrE�r'rrr!Osz_JWAHS.__init__r0cCs&tj||jt�d�}|�|�|��S)N�Zbackend)r�HMACr&r�update�finalize)r r1r2Zsignerrrrr6Ss
z_JWAHS.signr7c
Csntj||jt�d�}|�|�z|�|�Wn8tjjyd}zt	j
|dd�WYd}~dSd}~00dSdS)NrJT��exc_infoF)rrKr&rrLr9�cryptography�
exceptions�InvalidSignature�logger�debug)r r1r2r8Zverifier�errorrrrr9Xs
z
_JWAHS.verify)rrrrZJWKOctrr;rrr!rBr6r=r9�
__classcell__rrrIrrCLsrCc@sVeZdZUejZeZee	d<eZ
ee	d<ej
eed�dd�Zejeeed�dd�Zd	S)
�_JWARSAr
r&r0c
Cs�z|�||j|j�WStyP}z$tj|dd�t�d��WYd}~nHd}~0ty�}z(tj|dd�t�t	|���WYd}~n
d}~00dS)r3TrN�%Public key cannot be used for signingN)
r6r
r&�AttributeErrorrSrTr�Error�
ValueErrorr;�r r1r2rUrrrr6isz_JWARSA.signr7c
CsZz|�|||j|j�Wn8tjjyP}ztj|dd�WYd}~dSd}~00dSdS)�,Verify the ``msg` and ``sig`` using ``key``.TrNNF)r9r
r&rPrQrRrSrT)r r1r2r8rUrrrr9tsz_JWARSA.verifyN)rrrrZJWKRSArr$r
rr<r&rrZ
RSAPrivateKeyrBr6ZRSAPublicKeyr=r9rrrrrWds

rWcs.eZdZeegefdd��fdd�Z�ZS)�_JWARSN�rrErcs"t��|�t��|_|�|_dSr)rGr!r
ZPKCS1v15r&rHrIrrr!�s
z_JWARS.__init__�rrrr;rrr!rVrrrIrr^sr^cs.eZdZeegefdd��fdd�Z�ZS)�_JWAPSNr_cs4t��|�tjt�|��tjjd�|_|�|_dS)N)ZmgfZsalt_length)rGr!r
ZPSSZMGF1Z
MAX_LENGTHr&rHrIrrr!�sz_JWAPS.__init__r`rrrIrra�sracs�eZdZejZeegefd��fdd�Z	e
jeed�dd�Z
e
jeed�dd�Ze
jeeed	�d
d�Ze
jeeed�d
d�Z�ZS)�_JWAECrDcst��|�|�|_dSrrFrHrIrrr!�sz_JWAEC.__init__r0cCsB|�||�}t|�\}}tj�|j�}|j|dd�|j|dd�S)r3�big)�length�	byteorder)�_signrr�JWKEC�expected_length_for_curve�curve�to_bytes)r r1r2r8ZdrZdsrdrrrr6�s�z_JWAEC.signc
Cs�z|�|t�|j��WStyR}z$tj|dd�t�d��WYd}~nHd}~0t	y�}z(tj|dd�t�t
|���WYd}~n
d}~00dS)NTrNrX)r6r	�ECDSAr&rYrSrTrrZr[r;r\rrrrf�sz_JWAEC._signr7cCs^tj�|j�}t|�d|kr"dSttj|d|�dd�tj||d�dd��}|�|||�S)r]�Frrc)reN)	rrgrhri�lenr
r>�
from_bytes�_verify)r r1r2r8Zrlen�asn1sigrrrr9�s�z
_JWAEC.verify)r1r2rprc
Cs\z|�||t�|j��Wn8tjjyR}ztj|dd�WYd}~dSd}~00dSdS)NTrNF)	r9r	rkr&rPrQrRrSrT)r r1r2rprUrrrro�sz_JWAEC._verify)rrrrrgrr;rrr!r	ZEllipticCurvePrivateKeyrBr6rfZEllipticCurvePublicKeyr=r9rorVrrrIrrb�s	
rb�HS256�HS384�HS512�RS256�RS384�RS512�PS256�PS384�PS512�ES256�ES384�ES512)8rr@Zlogging�collections.abcr�typingrrrZcryptography.exceptionsrPZcryptography.hazmat.backendsrZcryptography.hazmat.primitivesrrZ)cryptography.hazmat.primitives.asymmetricr	r
rZ/cryptography.hazmat.primitives.asymmetric.utilsrr
Z%cryptography.hazmat.primitives.hashesrZjosepyrrrZ	getLoggerrrSZJSONDeSerializablerrrCrWr^rarbr,ZSHA256rqZSHA384rrZSHA512rsrtrurvrwrxryrzr{r|rrrr�<module>s>
,1
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg