+
    ïHÐj,ˆ  ã                  óJ  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	H
t
HtHtHtHtHt ^RIHt ^RIHtHt ^RIHtHtHtHtHtHtHtHtHt  ^ RIH t  ^ R	I!H"t"H#t# ^ R
I$H%t% ^ RI&H't' ^ RI(H)t) ^ RI*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4 ^ RI5H6t6H7t7 ^ RI8H9t9H:t: ^ RI;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtC ^ RIDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtL RtM]	'       dh   ]<]>,          tO]1]3,          tP]9]:,          ]6,          ]7,          tQ]O]P,          ]Q,          tR]<]1,          ]9,          ]6,          tS]>]3,          ]:,          ]7,          tT0 R$mtUR R ltV ! R R]4      tW ! R R]W4      tX ! R R]W4      tY]M'       d/    ! R R]W4      tZ ! R R]W4      t[ ! R  R!]Z4      t\ ! R" R#]W4      t]R# R#   ]N d    RtM LÝi ; i)%é    )ÚannotationsN)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚAnyÚClassVarÚLiteralÚNoReturnÚcastÚoverload©ÚInvalidKeyError)ÚHashlibHashÚJWKDict)	Úbase64url_decodeÚbase64url_encodeÚder_to_raw_signatureÚforce_bytesÚfrom_base64url_uintÚis_pem_formatÚ
is_ssh_keyÚraw_to_der_signatureÚto_base64url_uint)Úx509)ÚInvalidSignatureÚUnsupportedAlgorithm)Údefault_backend)Úhashes)Úpadding)
ÚECDSAÚ	SECP256K1Ú	SECP256R1Ú	SECP384R1Ú	SECP521R1ÚEllipticCurveÚEllipticCurvePrivateKeyÚEllipticCurvePrivateNumbersÚEllipticCurvePublicKeyÚEllipticCurvePublicNumbers)ÚEd448PrivateKeyÚEd448PublicKey)ÚEd25519PrivateKeyÚEd25519PublicKey)ÚRSAPrivateKeyÚRSAPrivateNumbersÚRSAPublicKeyÚRSAPublicNumbersÚrsa_crt_dmp1Úrsa_crt_dmq1Úrsa_crt_iqmpÚrsa_recover_prime_factors)ÚEncodingÚNoEncryptionÚPrivateFormatÚPublicFormatÚload_der_public_keyÚload_pem_private_keyÚload_pem_public_keyÚload_ssh_public_keyTFc               ó   € V ^8„  d   QhRR/# )é   Úreturnzdict[str, Algorithm]© )Úformats   "Ú0/usr/lib/python3/dist-packages/jwt/algorithms.pyÚ__annotate__rD   k   s   € ÷ ñ Ð 4ñ ó    c                 ó*  € R\        4       R\        \        P                  4      R\        \        P                  4      R\        \        P                  4      /p \
        '       Ed/   V P                  R\        \        P                  4      R\        \        P                  4      R\        \        P                  4      R\        \        P                  4      R	\        \        P                  4      R
\        \        P                  4      R\        \        P                  4      R\        \        P                  4      R\        \        P                  4      R\        \        P                  4      R\        \        P                  4      R\        4       /4       V # )z=
Returns the algorithms that are implemented by the library.
ÚnoneÚHS256ÚHS384ÚHS512ÚRS256ÚRS384ÚRS512ÚES256ÚES256KÚES384ÚES521ÚES512ÚPS256ÚPS384ÚPS512ÚEdDSA)ÚNoneAlgorithmÚHMACAlgorithmÚSHA256ÚSHA384ÚSHA512Ú
has_cryptoÚupdateÚRSAAlgorithmÚECAlgorithmÚRSAPSSAlgorithmÚOKPAlgorithm)Údefault_algorithmss    rC   Úget_default_algorithmsrc   k   s!  € ð
 	”“Ø”œ}×3Ñ3Ó4Ø”œ}×3Ñ3Ó4Ø”œ}×3Ñ3Ó4ð	Ð÷ „zØ×!Ñ!àœ¤l×&9Ñ&9Ó:Øœ¤l×&9Ñ&9Ó:Øœ¤l×&9Ñ&9Ó:Øœ¤[×%7Ñ%7Ó8Øœ+¤k×&8Ñ&8Ó9Øœ¤[×%7Ñ%7Ó8Øœ¤[×%7Ñ%7Ó8ØœÜ×&Ñ&óð œ¬×)?Ñ)?Ó@Øœ¬×)?Ñ)?Ó@Øœ¬×)?Ñ)?Ó@Øœ›ðô	
ð& ÐrE   c                  ó  € ] tR t^�tRtR R lt]R R l4       t]R R l4       t]R R	 l4       t	]
]]R
 R l4       4       4       t]
]]RR R ll4       4       4       t]]RR R ll4       4       t]]R R l4       4       tRtR# )Ú	Algorithmz@
The interface for an algorithm used to sign and verify tokens.
c               ó    € V ^8„  d   QhRRRR/# )r?   ÚbytestrÚbytesr@   rA   )rB   s   "rC   rD   ÚAlgorithm.__annotate__’   s   € ÷ 5ñ 5¨5ð 5°Uñ 5rE   c                ó�  € \        V RR4      pVf   \        h\        '       d†   \        V\        4      '       dp   \        V\        P                  4      '       dP   \        P                  ! V! 4       \        4       R7      pVP                  V4       \        VP                  4       4      # \        V! V4      P                  4       4      # )z…
Compute a hash digest using the specified algorithm's hash algorithm.

If there is no hash algorithm, raises a NotImplementedError.
Úhash_algN)Úbackend)ÚgetattrÚNotImplementedErrorr\   Ú
isinstanceÚtypeÚ
issubclassr   ÚHashAlgorithmÚHashr   r]   rh   ÚfinalizeÚdigest)Úselfrg   rk   ru   s   &&  rC   Úcompute_hash_digestÚAlgorithm.compute_hash_digest’   s‘   € ô ˜4 ¨TÓ2ˆØÒÜ%Ð%÷ ‹JÜ˜8¤T×*Ò*Ü˜8¤V×%9Ñ%9×:Ò:ä—[’[¡£´_Ó5FÔGˆFØ�M‰M˜'Ô"Ü˜Ÿ™Ó*Ó+Ð+ä™ 'Ó*×1Ñ1Ó3Ó4Ð4rE   c               ó    € V ^8„  d   QhRRRR/# )r?   Úkeyr   r@   rA   )rB   s   "rC   rD   ri   ©   s   € ÷ ñ ˜sð  sñ rE   c                ó   € R# )z‚
Performs necessary validation and conversions on the key and returns
the key value in the proper format for sign() and verify().
NrA   ©rv   rz   s   &&rC   Úprepare_keyÚAlgorithm.prepare_key¨   ó   ‚ rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   Úmsgrh   rz   r   r@   rA   )rB   s   "rC   rD   ri   °   s!   € ÷ ñ ˜ð  Cð ¨Eñ rE   c                ó   € R# )zV
Returns a digital signature for the specified message
using the specified key value.
NrA   ©rv   r�   rz   s   &&&rC   ÚsignÚAlgorithm.sign¯   r   rE   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r?   r�   rh   rz   r   Úsigr@   ÚboolrA   )rB   s   "rC   rD   ri   ·   s(   € ÷ ñ ˜%ð  cð °ð ¸$ñ rE   c                ó   € R# )zb
Verifies that the specified digital signature is valid
for the specified message and key values.
NrA   ©rv   r�   rz   r‡   s   &&&&rC   ÚverifyÚAlgorithm.verify¶   r   rE   c               ó    € V ^8„  d   QhRRRR/# )r?   Úas_dictúLiteral[True]r@   r   rA   )rB   s   "rC   rD   ri   À   s   € ×?Ñ? Ð?°7Ñ?rE   c                	ó   € R # ©NrA   ©Úkey_objrŽ   s   &&rC   Úto_jwkÚAlgorithm.to_jwk½   s   € ñ =@rE   c               ó    € V ^8„  d   QhRRRR/# )r?   rŽ   úLiteral[False]r@   ÚstrrA   )rB   s   "rC   rD   ri   Å   s   € ×DÑD ÐD¸CÑDrE   c                	ó   € R # r‘   rA   r’   s   &&rC   r”   r•   Â   s	   € ñ BErE   c               ó    € V ^8„  d   QhRRRR/# )r?   rŽ   rˆ   r@   úJWKDict | strrA   )rB   s   "rC   rD   ri   É   s   € ÷ ñ  ð °-ñ rE   c                ó   € R# )z#
Serializes a given key into a JWK
NrA   r’   s   &&rC   r”   r•   Ç   r   rE   c               ó    € V ^8„  d   QhRRRR/# )r?   Újwkústr | JWKDictr@   r   rA   )rB   s   "rC   rD   ri   Ð   s   € ÷ ñ �mð ¨ñ rE   c                ó   € R# )z:
Deserializes a given key from JWK back into a key object
NrA   ©rž   s   &rC   Úfrom_jwkÚAlgorithm.from_jwkÎ   r   rE   rA   N©F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rw   r   r}   r„   r‹   r   Ústaticmethodr”   r¢   Ú__static_attributes__rA   rE   rC   re   re   �   sÂ   † ñõ5ð, ôó ðð ôó ðð ôó ðð ØØÜ?ó ó ó ð @àØØÞDó ó ó ð EàØöó ó ðð
 Øôó ó ôrE   re   c                  ón   € ] tR t^ÖtRtR R ltR R ltR R lt]RR R	 ll4       t	]R
 R l4       t
RtR# )rW   zN
Placeholder for use when no signing or verification
operations are required.
c               ó    € V ^8„  d   QhRRRR/# )r?   rz   z
str | Noner@   ÚNonerA   )rB   s   "rC   rD   ÚNoneAlgorithm.__annotate__Ü   s   € ÷ ñ ˜zð ¨dñ rE   c                	ó6   € VR 8X  d   RpVe   \        R4      hV# )Ú Nz*When alg = "none", key value must be None.r   r|   s   &&rC   r}   ÚNoneAlgorithm.prepare_keyÜ   s$   € Ø�"Œ9ØˆCàŠ?Ü!Ð"NÓOÐOàˆ
rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r�   rh   rz   r®   r@   rA   )rB   s   "rC   rD   r¯   å   s!   € ÷ ñ ˜ð  Dð ¨Uñ rE   c                	ó   € R # )rE   rA   rƒ   s   &&&rC   r„   ÚNoneAlgorithm.signå   s   € ÙrE   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r?   r�   rh   rz   r®   r‡   r@   rˆ   rA   )rB   s   "rC   rD   r¯   è   s(   € ÷ ñ ˜%ð  dð °ð ¸4ñ rE   c                	ó   € R # r¤   rA   rŠ   s   &&&&rC   r‹   ÚNoneAlgorithm.verifyè   s   € ÙrE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   r   rŽ   rˆ   r@   r
   rA   )rB   s   "rC   rD   r¯   ì   s!   € ÷ $ñ $˜ð $ dð $°xñ $rE   c                	ó   € \        4       hr‘   ©rn   r’   s   &&rC   r”   ÚNoneAlgorithm.to_jwkë   ó   € ä!Ó#Ð#rE   c               ó    € V ^8„  d   QhRRRR/# )r?   rž   rŸ   r@   r
   rA   )rB   s   "rC   rD   r¯   ð   s   € ÷ $ñ $�mð $¨ñ $rE   c                	ó   € \        4       hr‘   r»   r¡   s   &rC   r¢   ÚNoneAlgorithm.from_jwkï   r½   rE   rA   Nr¤   )r¥   r¦   r§   r¨   r©   r}   r„   r‹   rª   r”   r¢   r«   rA   rE   rC   rW   rW   Ö   s>   † ñõ
õõð ö$ó ð$ð ô$ó ô$rE   rW   c                  ó<  € ] tR t^ôt$ Rt]P                  tR]R&   ]P                  t
R]R&   ]P                  tR]R&   R R lt]R R	 l4       tR
 R lt]]R R l4       4       t]]RR R ll4       4       t]RR R ll4       t]R R l4       tR R ltR R ltRtR# )rX   zZ
Performs signing and verification operations using HMAC
and the specified hash function.
zClassVar[HashlibHash]rY   rZ   r[   c               ó    € V ^8„  d   QhRRRR/# )r?   rk   r   r@   r®   rA   )rB   s   "rC   rD   ÚHMACAlgorithm.__annotate__þ   s   € ÷ !ñ ! ð !°ñ !rE   c                	ó   € Wn         R # r‘   ©rk   ©rv   rk   s   &&rC   Ú__init__ÚHMACAlgorithm.__init__þ   s   € Ø ŽrE   c               ó    € V ^8„  d   QhRRRR/# )r?   Ú	key_bytesrh   r@   rˆ   rA   )rB   s   "rC   rD   rÃ     s   € ÷ ñ ˜uð ¨ñ rE   c                	óÞ   € \         '       g   R #  \        V 4       R#   \        \        \        3 d     Mi ; i \
        P                  ! T 4       R#   \        \        \        3 d     R # i ; i©FT)r\   r:   Ú	TypeErrorÚ
ValueErrorr   r   Úload_der_x509_certificate)rÊ   s   &rC   Ú_is_der_keyÚHMACAlgorithm._is_der_key  sl   € ç‹zÙð	Ü 	Ô*ñ øô œ:Ô';Ð<ô 	Ùð	úð
	Ü×*Ò*¨9Ô5ñ øô œ:Ô';Ð<ô 	Úð	ús   � �6µ6ºA ÁA,Á+A,c               ó    € V ^8„  d   QhRRRR/# )r?   rz   ústr | bytesr@   rh   rA   )rB   s   "rC   rD   rÃ     s   € ÷ \ñ \˜{ð \¨uñ \rE   c                	óî  € \        V4      p\        V4      ^ 8X  d   \        R4      h\        V4      '       g)   \	        V4      '       g   V P                  V4      '       d   \        R4      h \        P                  ! VR R7      pR	p
T.pT'       d}   TP                  4       p\!        T\"        4      '       d,   RT9   d   Rp
MLTP%                  TP'                  4       4       KY  \!        T\(        4      '       g   Kq  TP%                  T4       K„  T
'       d   \        R4      hT#   \         Ed·     TP                  \        P                  ! T4      RR7      pM  \         d    Rp Mi ; iTP                  R4      pR	p^ pT\        T4      8  Ed   YG,          R
8w  d   T^,          pK)  T^,           pT\        T4      8  d2   YH,          R8X  d   T^,          pK(  YH,          R
8X  d   MT^,          pKA  T\        T4      8¼  d   M™T^,           p	T	\        T4      8  d   TT	,          R9   d   T	^,          p	K)  T	\        T4      8  dL   YI,          R8X  d?    \        P                  ! YGT^,            4      R8H  pM  \         d     Mi ; iT'       d   MT^,           pEK  TP                  R4      '       g    TP                  R4      '       d   T'       d   \        R4      RhRp EL_\         d    Rp ELni ; i)r   zHMAC key must not be empty.zdThe specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.c                ó   € ^ # )r   rA   )Ú_s   &rC   Ú<lambda>Ú+HMACAlgorithm.prepare_key.<locals>.<lambda>+  s   € ÁrE   )Ú	parse_intÚsurrogatepass)Úerrorsr±   u   ï»¿ 	
FÚ"Ú\z 	
Ú:ÚktyÚ{Ú[z‡The specified key looks like a JWK and should not be used directly as an HMAC secret. Load it via PyJWK / HMACAlgorithm.from_jwk first.NT)r   Úlenr   r   r   rÐ   ÚjsonÚloadsÚRecursionErrorÚdecodeÚdetect_encodingÚUnicodeErrorÚlstriprÎ   Ú
startswithÚpopro   ÚdictÚextendÚvaluesÚlist)rv   rz   rÊ   Újwk_objÚdecoded_keyÚstripped_keyÚhas_jwk_memberÚindexÚendÚ
next_indexÚcontains_jwk_memberÚobjects_to_checkÚobjs   &&           rC   r}   ÚHMACAlgorithm.prepare_key  sÄ  € Ü Ó$ˆ	äˆy‹>˜QÔÜ!Ð"?Ó@Ð@ô ˜)×$Ò$Ü˜)×$Ò$Ø×Ñ 	×*Ò*ä!ð9óð ð3	Ü—j’j ±kÔBˆGðf $ÐØ#˜9ÐßØ"×&Ñ&Ó(ˆCÜ˜#œt×$Ò$Ø˜C”<Ø*.Ð'ØØ ×'Ñ'¨¯
©
«Ö5Ü˜C¤×&Ô&Ø ×'Ñ'¨Ö,ßÜ!ð8óð ð ÐøôI õ /	ð!Ø'×.Ñ.Ü×(Ò(¨Ó3¸Oð /ó ‘øô  ô !Ø ’ð!úà&×-Ñ-¨oÓ>ˆLØ"ˆNØˆEØœ#˜kÓ*Õ*ØÕ%¨Ô,Ø˜Q•J�EÙØ˜a•i�ØœC Ó,Ô,Ø"Õ'¨4Ô/Ø˜q�šØ$Õ)¨SÔ0Øà˜q�šØœ#˜kÓ*Ô*ØØ  1�W�
Ø ¤3 {Ó#3Ô3¸Øõ9àô9ð  !•O’JØ¤ KÓ 0Ô0°[Õ5LÐPSÔ5SðÜ)-¯ªØ'°°aµÐ8ó*à"ñ*#™øô &ô Ùðúç%ØØ˜a�“Ø×&Ñ& s×+Ò+Ø×'Ñ'¨×,Ò,·ä%ð<óð ð	ð
 ‹GÜô 	Ø‹Gð	ús   Á,D# Ä#K4Ä0'EÅK4ÅE(Å%K4Å'E(Å(C+K4É"I7É6K4É7JÊK4ÊJÊ
K4Ê#K4Ê4K4ËK4ËK4Ë$K4Ë-K4Ë3K4c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   rÓ   rŽ   r�   r@   r   rA   )rB   s   "rC   rD   rÃ   t  s$   € ÷ ñ ØðØ'4ðà	ñrE   c                	ó   € R # r‘   rA   r’   s   &&rC   r”   ÚHMACAlgorithm.to_jwkr  ó   € ñ rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   rÓ   rŽ   r—   r@   r˜   rA   )rB   s   "rC   rD   rÃ   z  s$   € ÷ ñ ØðØ'5ðà	ñrE   c                	ó   € R # r‘   rA   r’   s   &&rC   r”   rý   x  s   € ñ rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   rÓ   rŽ   rˆ   r@   r›   rA   )rB   s   "rC   rD   rÃ     s!   € ÷ 	#ñ 	#˜ð 	#¨dð 	#¸}ñ 	#rE   c                	óŽ   € R \        \        V 4      4      P                  4       RR/pV'       d   V# \        P                  ! V4      # )Úkrß   Úoct)r   r   ræ   rã   Údumps)r“   rŽ   rž   s   && rC   r”   rý   ~  sA   € ð Ô!¤+¨gÓ"6Ó7×>Ñ>Ó@Ø�5ð
ˆ÷
 ØˆJä—:’:˜c“?Ð"rE   c               ó    € V ^8„  d   QhRRRR/# )r?   rž   rŸ   r@   rh   rA   )rB   s   "rC   rD   rÃ   ‹  s   € ÷ *ñ *�mð *¨ñ *rE   c                	ó8  €  \        V \        4      '       d   \        P                  ! V 4      pM\        V \        4      '       d   T pM\
        hVP                  R4      R8w  d   \        R4      h\        VR,          4      #   \
         d    \        R 4      Rhi ; i)úKey is not valid JSONNrß   r  zNot an HMAC keyr  )	ro   r˜   rã   rä   rì   rÎ   r   Úgetr   )rž   rù   s   & rC   r¢   ÚHMACAlgorithm.from_jwkŠ  sˆ   € ð	EÜ˜#œs×#Ò#Ü#Ÿzšz¨#›‘Ü˜C¤×&Ò&Ø‘ä Ð ð �7‰7�5‹>˜UÔ"Ü!Ð"3Ó4Ð4ä  C¥Ó)Ð)øô ô 	EÜ!Ð"9Ó:ÀÐDð	Eús   ‚,B ¯B ÁB ÂBc               ó$   € V ^8„  d   QhRRRRRR/# )r?   r�   rh   rz   r@   rA   )rB   s   "rC   rD   rÃ   ›  s!   € ÷ :ñ :˜ð : Eð :¨eñ :rE   c                	ó`   € \         P                  ! W!V P                  4      P                  4       # r‘   )ÚhmacÚnewrk   ru   rƒ   s   &&&rC   r„   ÚHMACAlgorithm.sign›  s    € Ü�xŠx˜ $§-¡-Ó0×7Ñ7Ó9Ð9rE   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r?   r�   rh   rz   r‡   r@   rˆ   rA   )rB   s   "rC   rD   rÃ   ž  s(   € ÷ =ñ =˜%ð = eð =°%ð =¸Dñ =rE   c                	óL   € \         P                  ! W0P                  W4      4      # r‘   )r  Úcompare_digestr„   rŠ   s   &&&&rC   r‹   ÚHMACAlgorithm.verifyž  s   € Ü×"Ò" 3¯	©	°#Ó(;Ó<Ð<rE   rÅ   Nr¤   )r¥   r¦   r§   r¨   r©   ÚhashlibÚsha256rY   Ú__annotations__Úsha384rZ   Úsha512r[   rÇ   rª   rÐ   r}   r   r”   r¢   r„   r‹   r«   rA   rE   rC   rX   rX   ô   sÅ   ‡ ñð
 %,§N¡N€FÐ!Ó2Ø$+§N¡N€FÐ!Ó2Ø$+§N¡N€FÐ!Ó2õ!ð ôó ðõ$\ð| Øôó ó ðð Øöó ó ðð ö	#ó ð	#ð ô*ó ð*õ :÷=ñ =rE   rX   c                  ó&  € ] tR tRt$ Rt]P                  tR]R&   ]P                  tR]R&   ]P                  t	R]R&   R R lt
R	 R
 lt]]R R l4       4       t]]RR R ll4       4       t]RR R ll4       t]R R l4       tR R ltR R ltRtR# )r^   i¤  zf
Performs signing and verification operations using
RSASSA-PKCS-v1_5 and the specified hash function.
ú$ClassVar[type[hashes.HashAlgorithm]]rY   rZ   r[   c               ó    € V ^8„  d   QhRRRR/# ©r?   rk   ztype[hashes.HashAlgorithm]r@   r®   rA   )rB   s   "rC   rD   ÚRSAAlgorithm.__annotate__®  ó   € ÷ 	%ñ 	%Ð%?ð 	%ÀDñ 	%rE   c                	ó   € Wn         R # r‘   rÅ   rÆ   s   &&rC   rÇ   ÚRSAAlgorithm.__init__®  ó   € Ø$ŽMrE   c               ó    € V ^8„  d   QhRRRR/# )r?   rz   zAllowedRSAKeys | str | bytesr@   ÚAllowedRSAKeysrA   )rB   s   "rC   rD   r  ±  s   € ÷ 	 ñ 	 Ð#?ð 	 ÀNñ 	 rE   c                	óÒ  € \        V\        \        34      '       d   V# \        V\        \        34      '       g   \        R 4      h\        V4      p VP                  R4      '       d   \        \        \        V4      4      # \        \        \        VRR7      4      #   \         d?     \        \        \        T4      4      u #   \        \        3 d    \        R4      Rhi ; ii ; i)úExpecting a PEM-formatted key.s   ssh-rsaN©Úpasswordz(Could not parse the provided public key.)ro   r.   r0   rh   r˜   rÍ   r   rê   r   r=   r;   rÎ   r<   r   r   )rv   rz   rÊ   s   && rC   r}   ÚRSAAlgorithm.prepare_key±  sÕ   € Ü˜#¤¬|Ð<×=Ò=Ø�
ä˜c¤E¬3 <×0Ò0ÜÐ @ÓAÐAä# CÓ(ˆIð Ø×'Ñ'¨
×3Ò3Ü¤Ô.AÀ)Ó.LÓMÐMäÜ%Ô';¸IÐPTÔ'Uóð øô ô  ð Ü¤Ô.AÀ)Ó.LÓMÒMøÜ"Ô$8Ð9ô  Ü)ØBóàð ð úð ús*   Á/B ÂB ÂC&Â)CÃC&ÃC"Ã"C&c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   r#  rŽ   r�   r@   r   rA   )rB   s   "rC   rD   r  Ë  s$   € ÷ 	ñ 	Ø#ð	Ø.;ð	àñ	rE   c                	ó   € R # r‘   rA   r’   s   &&rC   r”   ÚRSAAlgorithm.to_jwkÉ  ó   € ñ rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   r#  rŽ   r—   r@   r˜   rA   )rB   s   "rC   rD   r  Ñ  s$   € ÷ 	ñ 	Ø#ð	Ø.<ð	àñ	rE   c                	ó   € R # r‘   rA   r’   s   &&rC   r”   r+  Ï  rþ   rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   r#  rŽ   rˆ   r@   r›   rA   )rB   s   "rC   rD   r  Ö  s!   € ÷ $	'ñ $	'˜Nð $	'°Tð $	'Àmñ $	'rE   c                	óê  € R p\        V R4      '       EdE   V P                  4       pRRRR.R\        VP                  P                  4      P                  4       R\        VP                  P                  4      P                  4       R\        VP                  4      P                  4       R	\        VP                  4      P                  4       R
\        VP                  4      P                  4       R\        VP                  4      P                  4       R\        VP                  4      P                  4       R\        VP                  4      P                  4       /
pM{\        V R4      '       d_   V P                  4       pRRRR.R\        VP                  4      P                  4       R\        VP                  4      P                  4       /pM\        R4      hV'       d   V# \        P                  ! V4      # )NÚprivate_numbersrß   ÚRSAÚkey_opsr„   ÚnÚeÚdÚpÚqÚdpÚdqÚqir‹   úNot a public or private key)Úhasattrr1  r   Úpublic_numbersr4  ræ   r5  r6  r7  r8  Údmp1Údmq1Úiqmpr   rã   r  )r“   rŽ   rù   Únumberss   &&  rC   r”   r+  Õ  sŽ  € à)-ˆCä�wÐ 1×2Ó2à!×1Ñ1Ó3�ð ˜5Ø ˜xØÔ*¨7×+AÑ+A×+CÑ+CÓD×KÑKÓMØÔ*¨7×+AÑ+A×+CÑ+CÓD×KÑKÓMØÔ*¨7¯9©9Ó5×<Ñ<Ó>ØÔ*¨7¯9©9Ó5×<Ñ<Ó>ØÔ*¨7¯9©9Ó5×<Ñ<Ó>ØÔ+¨G¯L©LÓ9×@Ñ@ÓBØÔ+¨G¯L©LÓ9×@Ñ@ÓBØÔ+¨G¯L©LÓ9×@Ñ@ÓBð‘ô ˜ (×+Ò+à!×0Ñ0Ó2�ð ˜5Ø ˜zØÔ*¨7¯9©9Ó5×<Ñ<Ó>ØÔ*¨7¯9©9Ó5×<Ñ<Ó>ð	‘ô &Ð&CÓDÐDçØ�
ä—z’z #“Ð&rE   c               ó    € V ^8„  d   QhRRRR/# )r?   rž   rŸ   r@   r#  rA   )rB   s   "rC   rD   r  ý  s"   € ÷ E	Eñ E	E˜-ð E	E¨Nñ E	ErE   c                	óö  €  \        V \        4      '       d   \        P                  ! V 4      pM\        V \        4      '       d   T pM\
        hVP                  R4      R8w  d   \        R4      RhRV9   Ed‘   RV9   Ed‰   RV9   Ed�   RV9   d   \        R	4      h. ROpV Uu. uF  q3V9   NK	  	  pp\        V4      pV'       d   \        V4      '       g   \        R4      Rh\        \        VR,          4      \        VR,          4      4      pV'       dƒ   \        \        VR,          4      \        VR
,          4      \        VR,          4      \        VR,          4      \        VR,          4      \        VR,          4      VR7      pVP'                  4       # \        VR,          4      p\        VP                  W†P                  4      w  rš\        VV	V
\!        W‰4      \#        WŠ4      \%        Wš4      VR7      pVP'                  4       # RV9   dB   RV9   d;   \        \        VR,          4      \        VR,          4      4      P)                  4       # \        R4      h  \
         d    \        R 4      Rhi ; iu upi )r  Nrß   r2  zNot an RSA keyr6  r5  r4  Úothz5Unsupported RSA private key: > 2 primes not supportedr7  r8  r9  r:  r;  z@RSA key must include all parameters if any are present besides d)r6  r7  r8  r?  r@  rA  r>  r<  )r7  r8  r9  r:  r;  )ro   r˜   rã   rä   rì   rÎ   r   r	  ÚanyÚallr1   r   r/   r5   r4  r5  r2   r3   r4   Úprivate_keyÚ
public_key)rž   rù   Úother_propsÚpropÚprops_foundÚany_props_foundr>  rB  r6  r7  r8  s   &          rC   r¢   ÚRSAAlgorithm.from_jwkü  s8  € ðIÜ˜c¤3×'Ò'ÜŸ*š* S›/‘CÜ ¤T×*Ò*Ø‘Cä$Ð$ð �w‰w�u‹~ Ô&Ü%Ð&6Ó7¸TÐAà�c�z˜c S�j¨S°C­Zà˜C”<Ü)ØOóð ò ;�Ù7BÓC±{¨t sœ{±{�ÐCÜ"% kÓ"2�ç"¬3¨{×+;Ò+;Ü)ØZóàð ô "2Ü'¨¨C­Ó1Ü'¨¨C­Ó1ó"�÷
 #Ü/Ü-¨c°#­hÓ7Ü-¨c°#­hÓ7Ü-¨c°#­hÓ7Ü0°°TµÓ;Ü0°°TµÓ;Ü0°°TµÓ;Ø'5ô�Gð2 ×*Ñ*Ó,Ð,ô ,¨C°­HÓ5�AÜ4Ø&×(Ñ(¨!×-=Ñ-=ó‘D�Aô 0ØØØÜ)¨!Ó/Ü)¨!Ó/Ü)¨!Ó/Ø'5ô�Gð ×*Ñ*Ó,Ð,Ø˜”  s¤
ä'Ü'¨¨C­Ó1Ü'¨¨C­Ó1ó÷ ‘*“,ðô
 &Ð&CÓDÐDøô{ ô IÜ%Ð&=Ó>ÀDÐHðIüò Ds   ‚,I ¯I ÁI Â"I6ÉI3c               ó$   € V ^8„  d   QhRRRRRR/# ©r?   r�   rh   rz   r.   r@   rA   )rB   s   "rC   rD   r  D  s&   € ÷ 	Fñ 	F˜Eð 	F¨ð 	F¸%ñ 	FrE   c                	ój   € VP                  V\        P                  ! 4       V P                  4       4      # r‘   )r„   r   ÚPKCS1v15rk   rƒ   s   &&&rC   r„   ÚRSAAlgorithm.signD  s$   € Ø—8‘8˜C¤×!1Ò!1Ó!3°T·]±]³_ÓEÐErE   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r?   r�   rh   rz   r0   r‡   r@   rˆ   rA   )rB   s   "rC   rD   r  G  s(   € ÷ 	ñ 	˜eð 	¨,ð 	¸Uð 	Àtñ 	rE   c                	ó”   €  VP                  W1\        P                  ! 4       V P                  4       4       R #   \         d     R# i ; i)TF)r‹   r   rR  rk   r   rŠ   s   &&&&rC   r‹   ÚRSAAlgorithm.verifyG  s;   € ðØ—
‘
˜3¤W×%5Ò%5Ó%7¸¿¹»ÔIÙøÜ#ô Úðús   ‚48 ¸AÁArÅ   Nr¤   )r¥   r¦   r§   r¨   r©   r   rY   r  rZ   r[   rÇ   r}   r   rª   r”   r¢   r„   r‹   r«   rA   rE   rC   r^   r^   ¤  s¶   ‡ ñ	ð
 8>·}±}ˆÐ4ÓDØ7=·}±}ˆÐ4ÓDØ7=·}±}ˆÐ4ÓDõ	%õ	 ð0 
Ø	ô	ó 
ó 
ð	ð 
Ø	ö	ó 
ó 
ð	ð 
ö$	'ó 
ð$	'ðL 
ôE	Eó 
ðE	EõN	F÷	ñ 	rE   r^   c                  ó&  € ] tR tRt$ Rt]P                  tR]R&   ]P                  tR]R&   ]P                  t	R]R&   R R lt
R	 R
 ltR R ltR R lt]]R R l4       4       t]]RR R ll4       4       t]RR R ll4       t]R R l4       tRtR# )r_   iN  zZ
Performs signing and verification operations using
ECDSA and the specified hash function
r  rY   rZ   r[   c               ó    € V ^8„  d   QhRRRR/# r  rA   )rB   s   "rC   rD   ÚECAlgorithm.__annotate__X  r  rE   c                	ó   € Wn         R # r‘   rÅ   rÆ   s   &&rC   rÇ   ÚECAlgorithm.__init__X  r!  rE   c               ó    € V ^8„  d   QhRRRR/# )r?   rz   zAllowedECKeys | str | bytesr@   ÚAllowedECKeysrA   )rB   s   "rC   rD   rZ  [  s   € ÷ 	ñ 	Ð#>ð 	À=ñ 	rE   c                	ó’  € \        V\        \        34      '       d   V# \        V\        \        34      '       g   \        R 4      h\        V4      p VP                  R4      '       d   \        V4      pM\        V4      p \        V\        \        34      '       g   \        R4      RhV#   \         d    \        TRR7      p LDi ; i)r%  s   ecdsa-sha2-Nr&  zcExpecting a EllipticCurvePrivateKey/EllipticCurvePublicKey. Wrong key provided for ECDSA algorithms)ro   r&   r(   rh   r˜   rÍ   r   rê   r=   r<   rÎ   r;   r   )rv   rz   rÊ   Ú
crypto_keys   &&  rC   r}   ÚECAlgorithm.prepare_key[  sÄ   € Ü˜#Ô 7Ô9OÐP×QÒQØ�
ä˜c¤E¬3 <×0Ò0ÜÐ @ÓAÐAä# CÓ(ˆIð
LØ×'Ñ'¨×7Ò7Ü!4°YÓ!?‘Jä!4°YÓ!?‘Jô
 ØÔ4Ô6LÐM÷ò ô &Øyóàðð Ðøô ô LÜ1°)ÀdÔK’
ðLús   Á"B+ Á5B+ Â+CÃCc               ó$   € V ^8„  d   QhRRRRRR/# )r?   r�   rh   rz   r&   r@   rA   )rB   s   "rC   rD   rZ  y  s"   € ÷ 	<ñ 	<˜Eð 	<Ð(?ð 	<ÀEñ 	<rE   c                	ó~   € VP                  V\        V P                  4       4      4      p\        W2P                  4      # r‘   )r„   r    rk   r   Úcurve)rv   r�   rz   Úder_sigs   &&& rC   r„   ÚECAlgorithm.signy  s,   € Ø—h‘h˜s¤E¨$¯-©-«/Ó$:Ó;ˆGä'¨·±Ó;Ð;rE   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r?   r�   rh   rz   r^  r‡   r@   rˆ   rA   )rB   s   "rC   rD   rZ  ~  s(   € ÷ 	ñ 	˜eð 	¨-ð 	¸eð 	Èñ 	rE   c                	ó  €  \        W2P                  4      p \        T\        4      '       d   TP                  4       MTpTP                  YA\        T P                  4       4      4       R#   \         d     R # i ; i  \         d     R # i ; irÌ   )
r   rd  rÎ   ro   r&   rI  r‹   r    rk   r   )rv   r�   rz   r‡   re  rI  s   &&&&  rC   r‹   ÚECAlgorithm.verify~  s…   € ðÜ.¨s·I±IÓ>�ð	ô " #Ô'>×?Ò?ð —N‘NÔ$àð ð
 ×!Ñ! '´°d·m±m³oÓ0FÔGÙøô ô Úðûô $ô Úðús#   ‚A+ ˜AA= Á+A:Á9A:Á=BÂBc               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   r^  rŽ   r�   r@   r   rA   )rB   s   "rC   rD   rZ  ‘  s$   € ÷ 	ñ 	Ø"ð	Ø-:ð	àñ	rE   c                	ó   € R # r‘   rA   r’   s   &&rC   r”   ÚECAlgorithm.to_jwk�  r,  rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   r^  rŽ   r—   r@   r˜   rA   )rB   s   "rC   rD   rZ  —  s$   € ÷ 	ñ 	Ø"ð	Ø-;ð	àñ	rE   c                	ó   € R # r‘   rA   r’   s   &&rC   r”   rl  •  rþ   rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r“   r^  rŽ   rˆ   r@   r›   rA   )rB   s   "rC   rD   rZ  œ  s!   € ÷ )	'ñ )	'˜Mð )	'°Dð )	'À]ñ )	'rE   c                	ó  € \        V \        4      '       d    V P                  4       P                  4       pM2\        V \        4      '       d   V P                  4       pM\        R 4      h\        V P                  \        4      '       d   RpM�\        V P                  \        4      '       d   RpM^\        V P                  \        4      '       d   RpM;\        V P                  \        4      '       d   RpM\        RV P                   24      hRRRVR	\        VP                  V P                  P                  R
7      P                  4       R\        VP                  V P                  P                  R
7      P                  4       /p\        V \        4      '       dK   \        V P!                  4       P"                  V P                  P                  R
7      P                  4       VR&   V'       d   V# \$        P&                  ! V4      # )r<  úP-256úP-384úP-521Ú	secp256k1úInvalid curve: rß   ÚECÚcrvÚx)Ú
bit_lengthÚyr6  )ro   r&   rI  r>  r(   r   rd  r"   r#   r$   r!   r   rx  Úkey_sizeræ   rz  r1  Úprivate_valuerã   r  )r“   rŽ   r>  rw  rù   s   &&   rC   r”   rl  ›  s…  € ä˜'Ô#:×;Ò;Ø!(×!3Ñ!3Ó!5×!DÑ!DÓ!F‘Ü˜GÔ%;×<Ò<Ø!(×!7Ñ!7Ó!9‘ä%Ð&CÓDÐDä˜'Ÿ-™-¬×3Ò3Ø‘Ü˜GŸM™M¬9×5Ò5Ø‘Ü˜GŸM™M¬9×5Ò5Ø‘Ü˜GŸM™M¬9×5Ò5Ø!‘ä%¨¸¿¹°Ð&GÓHÐHð �tØ�sØÔ&Ø"×$Ñ$Ø&Ÿ}™}×5Ñ5ô÷ ‘&“(ØÔ&Ø"×$Ñ$Ø&Ÿ}™}×5Ñ5ô÷ ‘&“(ð#ˆCô ˜'Ô#:×;Ò;Ü,Ø×+Ñ+Ó-×;Ñ;Ø&Ÿ}™}×5Ñ5ô÷ ‘&“(ð �C‘÷
 Ø�
ä—z’z #“Ð&rE   c               ó    € V ^8„  d   QhRRRR/# )r?   rž   rŸ   r@   r^  rA   )rB   s   "rC   rD   rZ  È  s   € ÷ G	ñ G	˜-ð G	¨Mñ G	rE   c                	óŒ  €  \        V \        4      '       d   \        P                  ! V 4      pM\        V \        4      '       d   T pM\
        hVP                  R4      R8w  d   \        R4      RhRV9  g   RV9  d   \        R4      Rh\        VP                  R4      4      p\        VP                  R4      4      pVP                  R4      pVR8X  d<   \        V4      \        V4      u;8X  d   ^ 8X  d   M M\        4       pMß\        R	4      RhVR
8X  d<   \        V4      \        V4      u;8X  d   ^08X  d   M M\        4       pM�\        R4      RhVR8X  d<   \        V4      \        V4      u;8X  d   ^B8X  d   M M\        4       pM[\        R4      RhVR8X  d;   \        V4      \        V4      u;8X  d   ^ 8X  d   M M\        4       pM\        R4      h\        RV 24      h\        \        P!                  VRR7      \        P!                  VRR7      VR7      pRV9  d   VP#                  4       # \        VP                  R4      4      p\        V4      \        V4      8w  d   \        R\        V4      V4      h\%        \        P!                  VRR7      V4      P'                  4       #   \
         d    \        R 4      Rhi ; i)r  Nrß   rv  zNot an Elliptic curve keyrx  rz  rw  rq  z)Coords should be 32 bytes for curve P-256rr  z)Coords should be 48 bytes for curve P-384rs  z)Coords should be 66 bytes for curve P-521rt  z-Coords should be 32 bytes for curve secp256k1ru  Úbig)Ú	byteorder)rx  rz  rd  r6  z!D should be {} bytes for curve {})ro   r˜   rã   rä   rì   rÎ   r   r	  r   râ   r"   r#   r$   r!   r)   ÚintÚ
from_bytesrI  r'   rH  )rž   rù   rx  rz  rd  Ú	curve_objr>  r6  s   &       rC   r¢   ÚECAlgorithm.from_jwkÇ  sd  € ðIÜ˜c¤3×'Ò'ÜŸ*š* S›/‘CÜ ¤T×*Ò*Ø‘Cä$Ð$ð �w‰w�u‹~ Ô%Ü%Ð&AÓBÈÐLà˜#Œ~ ¨C¤Ü%Ð&AÓBÈÐLä  §¡¨£Ó.ˆAÜ  §¡¨£Ó.ˆAà—G‘G˜E“NˆEð ˜ÔÜ�q“6œS ›VÖ) r×)Ü )£‘Iä)ØCóàð ð ˜'Ô!Ü�q“6œS ›VÖ) r×)Ü )£‘Iä)ØCóàð ð ˜'Ô!Ü�q“6œS ›VÖ) r×)Ü )£‘Iä)ØCóàð ð ˜+Ô%Ü�q“6œS ›VÖ) r×)Ü )£‘Iä)ØGóð ô &¨¸°wÐ&?Ó@Ð@ä7Ü—.‘. ¨e�.Ó4Ü—.‘. ¨e�.Ó4ØôˆNð ˜#Œ~Ø%×0Ñ0Ó2Ð2ä  §¡¨£Ó.ˆAÜ�1‹vœ˜Q›ÔÜ%Ø7¼¸Q»Àóð ô /Ü—‘˜q¨E�Ó2°Nóç‰k‹mðøô{ ô IÜ%Ð&=Ó>ÀDÐHðIús   ‚,J+ ¯J+ ÁJ+ Ê+KrÅ   Nr¤   )r¥   r¦   r§   r¨   r©   r   rY   r  rZ   r[   rÇ   r}   r„   r‹   r   rª   r”   r¢   r«   rA   rE   rC   r_   r_   N  s­   ‡ ñ	ð
 8>·}±}ˆÐ4ÓDØ7=·}±}ˆÐ4ÓDØ7=·}±}ˆÐ4ÓDõ	%õ	õ<	<õ
	ð" 
Ø	ô	ó 
ó 
ð	ð 
Ø	ö	ó 
ó 
ð	ð 
ö)	'ó 
ð)	'ðV 
ôG	ó 
ôG	rE   r_   c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	r`   i  z1
Performs a signature using RSASSA-PSS with MGF1
c               ó$   € V ^8„  d   QhRRRRRR/# rP  rA   )rB   s   "rC   rD   ÚRSAPSSAlgorithm.__annotate__  s!   € ÷ 	ñ 	˜Eð 	¨ð 	¸%ñ 	rE   c           	     	óä   € VP                  V\        P                  ! \        P                  ! V P	                  4       4      V P	                  4       P
                  R 7      V P	                  4       4      # )©ÚmgfÚsalt_length)r„   r   ÚPSSÚMGF1rk   Údigest_sizerƒ   s   &&&rC   r„   ÚRSAPSSAlgorithm.sign  sN   € Ø—8‘8ØÜ—’ÜŸš T§]¡]£_Ó5Ø $§¡£× ;Ñ ;ôð —‘“óð rE   c               ó(   € V ^8„  d   QhRRRRRRRR/# rU  rA   )rB   s   "rC   rD   r‡     s(   € ÷ 	ñ 	˜eð 	¨,ð 	¸Uð 	Àtñ 	rE   c           
     	ó  €  VP                  VV\        P                  ! \        P                  ! V P	                  4       4      V P	                  4       P
                  R 7      V P	                  4       4       R#   \         d     R# i ; i)r‰  TF)r‹   r   rŒ  r�  rk   rŽ  r   rŠ   s   &&&&rC   r‹   ÚRSAPSSAlgorithm.verify   sh   € ðØ—
‘
ØØÜ—K’KÜ#ŸLšL¨¯©«Ó9Ø$(§M¡M£O×$?Ñ$?ôð —M‘M“Oôñ øÜ#ô Úðús   ‚A2A6 Á6BÂBrA   N)r¥   r¦   r§   r¨   r©   r„   r‹   r«   rA   rE   rC   r`   r`     s   † ñ	õ	÷	ñ 	rE   r`   c                  ó¾   € ] tR tRtRtR R ltR R ltR R ltR	 R
 lt]	]
R R l4       4       t]	]
RR R ll4       4       t]
RR R ll4       t]
R R l4       tRtR# )ra   i/  zv
Performs signing and verification operations using EdDSA

This class requires ``cryptography>=2.6`` to be installed.
c               ó    € V ^8„  d   QhRRRR/# )r?   Úkwargsr   r@   r®   rA   )rB   s   "rC   rD   ÚOKPAlgorithm.__annotate__6  s   € ÷ 	ñ 	 Sð 	¨Tñ 	rE   c                	ó   € R # r‘   rA   )rv   r•  s   &,rC   rÇ   ÚOKPAlgorithm.__init__6  s   € ÙrE   c               ó    € V ^8„  d   QhRRRR/# )r?   rz   zAllowedOKPKeys | str | bytesr@   ÚAllowedOKPKeysrA   )rB   s   "rC   rD   r–  9  s   € ÷ 	ñ 	Ð#?ð 	ÀNñ 	rE   c                	óÆ  € \        V\        \        34      '       d”   \        V\        4      '       d   VP                  R 4      MTp\        V\        4      '       d   VP	                  R 4      MTpRV9   d   \        V4      pM.RV9   d   \        VRR7      pMVR,          R8X  d   \        V4      p\        V\        \        \        \        34      '       g   \        R4      hV# )úutf-8z-----BEGIN PUBLICz-----BEGIN PRIVATENr&  :r   é   Nzssh-zcExpecting a EllipticCurvePrivateKey/EllipticCurvePublicKey. Wrong key provided for EdDSA algorithms)ro   rh   r˜   ræ   Úencoder<   r;   r=   r,   r-   r*   r+   r   )rv   rz   Úkey_strrÊ   s   &&  rC   r}   ÚOKPAlgorithm.prepare_key9  s¿   € Ü˜#¤¤s˜|×,Ò,Ü1;¸CÄ×1GÒ1G˜#Ÿ*™* WÔ-ÈS�Ü3=¸cÄ3×3GÒ3G˜CŸJ™J wÔ/ÈS�	à&¨'Ô1Ü-¨iÓ8‘CØ)¨WÔ4Ü.¨yÀ4ÔH‘CØ˜S•\ VÔ+Ü-¨iÓ8�Cô ØÜ"Ô$4´oÄ~ÐV÷ò ô &Øyóð ð ˆJrE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r�   rÓ   rz   z#Ed25519PrivateKey | Ed448PrivateKeyr@   rh   rA   )rB   s   "rC   rD   r–  P  s$   € ÷ 	'ñ 	'Ø"ð	'Ø)Lð	'àñ	'rE   c                óv   € \        V\        4      '       d   VP                  R4      MTpVP                  V4      # )a  
Sign a message ``msg`` using the EdDSA private key ``key``
:param str|bytes msg: Message to sign
:param Ed25519PrivateKey}Ed448PrivateKey key: A :class:`.Ed25519PrivateKey`
    or :class:`.Ed448PrivateKey` isinstance
:return bytes signature: The signature, as bytes
rœ  )ro   r˜   rž  r„   )rv   r�   rz   Ú	msg_bytess   &&& rC   r„   ÚOKPAlgorithm.signP  s/   € ô 0:¸#¼s×/CÒ/C˜Ÿ
™
 7Ô+ÈˆIØ—8‘8˜IÓ&Ð&rE   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r?   r�   rÓ   rz   rš  r‡   r@   rˆ   rA   )rB   s   "rC   rD   r–  ]  s,   € ÷ 	ñ 	Ø"ð	Ø)7ð	Ø>Ið	àñ	rE   c                óN  €  \        V\        4      '       d   VP                  R4      MTp\        V\        4      '       d   VP                  R4      MTp\        V\        \        34      '       d   VP                  4       MTpVP                  WT4       R#   \         d     R# i ; i)ap  
Verify a given ``msg`` against a signature ``sig`` using the EdDSA key ``key``

:param str|bytes sig: EdDSA signature to check ``msg`` against
:param str|bytes msg: Message to sign
:param Ed25519PrivateKey|Ed25519PublicKey|Ed448PrivateKey|Ed448PublicKey key:
    A private or public EdDSA key instance
:return bool verified: True if signature is valid, False if not.
rœ  TF)ro   r˜   rž  r,   r*   rI  r‹   r   )rv   r�   rz   r‡   r£  Ú	sig_bytesrI  s   &&&&   rC   r‹   ÚOKPAlgorithm.verify]  s�   € ðÜ3=¸cÄ3×3GÒ3G˜CŸJ™J wÔ/ÈS�	Ü3=¸cÄ3×3GÒ3G˜CŸJ™J wÔ/ÈS�	ô " #Ô(9¼?Ð'K×LÒLð —N‘NÔ$àð ð
 ×!Ñ! )Ô7ÙøÜ#ô Úðús   ‚BB ÂB$Â#B$c               ó$   € V ^8„  d   QhRRRRRR/# )r?   rz   rš  rŽ   r�   r@   r   rA   )rB   s   "rC   rD   r–  y  s$   € ÷ 	ñ 	Øð	Ø*7ð	àñ	rE   c                	ó   € R # r‘   rA   ©rz   rŽ   s   &&rC   r”   ÚOKPAlgorithm.to_jwkw  r,  rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   rz   rš  rŽ   r—   r@   r˜   rA   )rB   s   "rC   rD   r–    s$   € ÷ 	ñ 	Øð	Ø*8ð	àñ	rE   c                	ó   € R # r‘   rA   r«  s   &&rC   r”   r¬  }  rþ   rE   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   rz   rš  rŽ   rˆ   r@   r›   rA   )rB   s   "rC   rD   r–  „  s&   € ÷ ,	Añ ,	A˜ð ,	A°ð ,	AÀ-ñ ,	ArE   c                	óœ  € \        V \        \        34      '       d’   V P                  \        P
                  \        P
                  R 7      p\        V \        4      '       d   RMRpR\        \        V4      4      P                  4       RRRV/pV'       d   V# \        P                  ! V4      # \        V \        \        34      '       dú   V P                  \        P
                  \        P
                  \!        4       R7      pV P#                  4       P                  \        P
                  \        P
                  R 7      p\        V \        4      '       d   RMRpR\        \        V4      4      P                  4       R\        \        V4      4      P                  4       RRRV/pV'       d   V# \        P                  ! V4      # \%        R	4      h)
©ÚencodingrB   ÚEd25519ÚEd448rx  rß   ÚOKPrw  )r²  rB   Úencryption_algorithmr6  r<  )ro   r-   r+   Úpublic_bytesr6   ÚRawr9   r   r   ræ   rã   r  r,   r*   Úprivate_bytesr8   r7   rI  r   )rz   rŽ   rx  rw  rù   r6  s   &&    rC   r”   r¬  ƒ  sy  € ä˜#Ô 0´.ÐA×BÒBØ×$Ñ$Ü%Ÿ\™\Ü'×+Ñ+ð %ó �ô $.¨cÔ3C×#DÒ#D‘iÈ'�ð Ô)¬+°a«.Ó9×@Ñ@ÓBØ˜5Ø˜3ð�÷ Ø�JäŸ:š: c›?Ð*ä˜#Ô 1´?ÐC×DÒDØ×%Ñ%Ü%Ÿ\™\Ü(×,Ñ,Ü)5«ð &ó �ð —N‘NÓ$×1Ñ1Ü%Ÿ\™\Ü'×+Ñ+ð 2ó �ô
 $.¨cÔ3D×#EÒ#E‘iÈ7�àÔ)¬+°a«.Ó9×@Ñ@ÓBØÔ)¬+°a«.Ó9×@Ñ@ÓBØ˜5Ø˜3ð	�÷ Ø�JäŸ:š: c›?Ð*ä!Ð"?Ó@Ð@rE   c               ó    € V ^8„  d   QhRRRR/# )r?   rž   rŸ   r@   rš  rA   )rB   s   "rC   rD   r–  ³  s   € ÷ *	Hñ *	H˜-ð *	H¨Nñ *	HrE   c                	ó´  €  \        V \        4      '       d   \        P                  ! V 4      pM\        V \        4      '       d   T pM\
        hVP                  R4      R8w  d   \        R4      hVP                  R4      pVR8w  d   VR8w  d   \        RV 24      hR	V9  d   \        R
4      h\        VP                  R	4      4      p RV9  d4   VR8X  d   \        P                  ! V4      # \        P                  ! V4      # \        VP                  R4      4      pVR8X  d   \        P                  ! V4      pM\        P                  ! V4      pVP                  4       P!                  \"        P$                  \&        P$                  R7      V8w  d   \        R4      hV#   \
         d    \        R 4      Rhi ; i  \
         d   p\        R4      ThRp?ii ; i)r  Nrß   rµ  zNot an Octet Key Pairrw  r³  r´  ru  rx  zOKP should have "x" parameterr6  r±  z%Public key does not match private keyzInvalid key parameter)ro   r˜   rã   rä   rì   rÎ   r   r	  r   r-   Úfrom_public_bytesr+   r,   Úfrom_private_bytesr*   rI  r·  r6   r¸  r9   )rž   rù   rd  rx  r6  rH  Úerrs   &      rC   r¢   ÚOKPAlgorithm.from_jwk²  s©  € ðIÜ˜c¤3×'Ò'ÜŸ*š* S›/‘CÜ ¤T×*Ò*Ø‘Cä$Ð$ð �w‰w�u‹~ Ô&Ü%Ð&=Ó>Ð>à—G‘G˜E“NˆEØ˜	Ô! e¨wÔ&6Ü%¨¸°wÐ&?Ó@Ð@à˜#Œ~Ü%Ð&EÓFÐFÜ  §¡¨£Ó.ˆAðHØ˜c”>Ø 	Ô)Ü/×AÒAÀ!ÓDÐDÜ)×;Ò;¸AÓ>Ð>Ü$ S§W¡W¨S£\Ó2�à˜IÔ%Ü"3×"FÒ"FÀqÓ"I‘Kä"1×"DÒ"DÀQÓ"G�Kà×*Ñ*Ó,×9Ñ9Ü!)§¡´l×6FÑ6Fð :ó ð ôô
 *Ð*QÓRÐRØ"Ð"øôA ô IÜ%Ð&=Ó>ÀDÐHðIûôB ô HÜ%Ð&=Ó>ÀCÐGûðHús;   ‚,F  ¯F  ÁF  Ã	#F; Ã-F; ÄBF; Æ F8Æ;GÇGÇGrA   Nr¤   )r¥   r¦   r§   r¨   r©   rÇ   r}   r„   r‹   r   rª   r”   r¢   r«   rA   rE   rC   ra   ra   /  s€   † ñ	õ	õ	õ.	'õ	ð4 
Ø	ô	ó 
ó 
ð	ð 
Ø	ö	ó 
ó 
ð	ð 
ö,	Aó 
ð,	Að\ 
ô*	Hó 
ô*	HrE   ra   >   rN   rP   rR   rQ   rV   rS   rT   rU   rK   rL   rM   rO   )^Ú
__future__r   r  r  rã   Úabcr   r   Útypingr   r   r   r	   r
   r   r   Ú
exceptionsr   Útypesr   r   Úutilsr   r   r   r   r   r   r   r   r   Úcryptographyr   Úcryptography.exceptionsr   r   Úcryptography.hazmat.backendsr   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   Ú,cryptography.hazmat.primitives.asymmetric.ecr    r!   r"   r#   r$   r%   r&   r'   r(   r)   Ú/cryptography.hazmat.primitives.asymmetric.ed448r*   r+   Ú1cryptography.hazmat.primitives.asymmetric.ed25519r,   r-   Ú-cryptography.hazmat.primitives.asymmetric.rsar.   r/   r0   r1   r2   r3   r4   r5   Ú,cryptography.hazmat.primitives.serializationr6   r7   r8   r9   r:   r;   r<   r=   r\   ÚModuleNotFoundErrorr#  r^  rš  ÚAllowedKeysÚAllowedPrivateKeysÚAllowedPublicKeysÚrequires_cryptographyrc   re   rW   rX   r^   r_   r`   ra   rA   rE   rC   Ú<module>rÕ     s�  ðÝ "ã Û Û ß #ß R× RÑ Rå 'ß '÷
÷ 
õ 
ð1Ý!ßNÝ<Ý5ÝA÷÷ ÷ ÷÷÷	÷ 	ó 	÷	÷ 	ó 	ð €J÷
 à" \Õ1€NØ+Ð.DÕD€MàÐ,Õ,¨Õ>ÀÕOð ð ! =Õ0°>ÕA€KàÐ/Õ/Ð2CÕCÀoÕUð ð 	Ð-Õ-Ð0@Õ@À>ÕQð ò
Ð õ ôDF�ô FôR$�Iô $ô<k=�Iô k=÷\ ôh�yô hôTA�iô AôF˜,ô ô<nH�yö nHñ[ øðw
 ô Ø‚Jðús   ÁA2F Æ	F"Æ!F"