Ë
    Í—Äjìž  ã                  óÚ  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZm Z m!Z!m"Z" 	 d d	l#m$Z$ d d
l%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG d dlHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP ej¢                  dk\  rd dl
mRZR nd dlSmRZR ee@eBf   ZTdeUd<   ee5e7f   ZVdeUd<   ee=e>e:e;f   ZWdeUd<   eeTeVeWf   ZXdeUd<   ee@e5e=e:f   ZYdeUd<   eeBe7e>e;f   ZZdeUd<   es e[ ej¸                  dd«      «      rd dl]m^Z^m_Z_ dZ`h d#£Zcd3d$„Zd G d%„ d&e«      Ze G d'„ d(ee«      Zf G d)„ d*ee«      Zge`r- G d+„ d,ee«      Zh G d-„ d.ee«      Zi G d/„ d0eh«      Zj G d1„ d2ee«      Zkyy# ea$ r- ej¢                  d k\  rd d!l
mbZb nd d!lSmbZb ebZTebZVebZWebZXebZYebZZd"Z`Y ŒŠw xY w)4é    )ÚannotationsN)ÚABCÚabstractmethod)	ÚTYPE_CHECKINGÚAnyÚClassVarÚLiteralÚNoReturnÚUnionÚcastÚget_argsÚ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_key)é   é
   )Ú	TypeAliasrC   ÚAllowedRSAKeysÚAllowedECKeysÚAllowedOKPKeysÚAllowedKeysÚAllowedPrivateKeysÚAllowedPublicKeysÚSPHINX_BUILDÚ )ÚPrivateKeyTypesÚPublicKeyTypesT)rA   é   )ÚNeverF>   ÚES256ÚES384ÚES512ÚES521ÚEdDSAÚPS256ÚPS384ÚPS512ÚRS256ÚRS384ÚRS512ÚES256Kc                 ó4  — t        «       t        t        j                  «      t        t        j                  «      t        t        j                  «      dœ} t
        �r<| j                  t        t        j                  «      t        t        j                  «      t        t        j                  «      t        t        j                  t        «      t        t        j                  t        «      t        t        j                  t        «      t        t        j                  t        «      t        t        j                  t        «      t        t        j                  «      t        t        j                  «      t        t        j                  «      t        «       dœ«       | S )zE
    Returns the algorithms that are implemented by the library.
    )ÚnoneÚHS256ÚHS384ÚHS512)rX   rY   rZ   rP   r[   rQ   rS   rR   rU   rV   rW   rT   )ÚNoneAlgorithmÚHMACAlgorithmÚSHA256ÚSHA384ÚSHA512Ú
has_cryptoÚupdateÚRSAAlgorithmÚECAlgorithmr%   r$   r&   r'   ÚRSAPSSAlgorithmÚOKPAlgorithm)Údefault_algorithmss    úSC:\Users\pivot\Documents\cueki\casual-preloader\Lib\site-packages\jwt/algorithms.pyÚget_default_algorithmsrn   Ž   s	  € ô
 “Üœ}×3Ñ3Ó4Üœ}×3Ñ3Ó4Üœ}×3Ñ3Ó4ñ	0Ðö Ø×!Ñ!ä%¤l×&9Ñ&9Ó:Ü%¤l×&9Ñ&9Ó:Ü%¤l×&9Ñ&9Ó:Ü$¤[×%7Ñ%7¼ÓCÜ%¤k×&8Ñ&8¼)ÓDÜ$¤[×%7Ñ%7¼ÓCÜ$¤[×%7Ñ%7¼ÓCÜ$Ü×&Ñ&¬	óô )¬×)?Ñ)?Ó@Ü(¬×)?Ñ)?Ó@Ü(¬×)?Ñ)?Ó@Ü%›ñô	
ð& Ðó    c                  ó  — e Zd ZU dZdZded<   dd„Zdd„Zedd„«       Z	edd„«       Z
edd	„«       Zeeedd
„«       «       «       Zeee	 d	 	 	 	 	 dd„«       «       «       Zeeddd„«       «       Zeedd„«       «       Zdd„Zy)Ú	AlgorithmzH
    The interface for an algorithm used to sign and verify tokens.
    Nz$tuple[type[AllowedKeys], ...] | NoneÚ_crypto_key_typesc                óf  — t        | dd«      }|€t        ‚t        rxt        |t        «      rht        |t        j                  «      rNt        j                   |«       t        «       ¬«      }|j                  |«       t        |j                  «       «      S t         ||«      j                  «       «      S )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ÚNotImplementedErrorrf   Ú
isinstanceÚtypeÚ
issubclassr!   ÚHashAlgorithmÚHashr    rg   ÚbytesÚfinalizeÚdigest)ÚselfÚbytestrrt   r   s       rm   Úcompute_hash_digestzAlgorithm.compute_hash_digest¸   s‰   € ô ˜4 ¨TÓ2ˆØÐÜ%Ð%õ Ü˜8¤TÔ*Ü˜8¤V×%9Ñ%9Ô:ä—[‘[¡£´_Ó5FÔGˆFØ�M‰M˜'Ô"Ü˜Ÿ™Ó*Ó+Ð+ä™ 'Ó*×1Ñ1Ó3Ó4Ð4ro   c                ó  — t         r| j                  €t        d«      ‚t        || j                  «      sSd„ | j                  D «       }|j                  j
                  }| j                  j
                  }t        d|› d|› d|› �«      ‚y)ac  Check that the key belongs to the right cryptographic family.

        Note that this method only works when ``cryptography`` is installed.

        :param key: Potentially a cryptography key
        :type key: :py:data:`PublicKeyTypes <cryptography.hazmat.primitives.asymmetric.types.PublicKeyTypes>` | :py:data:`PrivateKeyTypes <cryptography.hazmat.primitives.asymmetric.types.PrivateKeyTypes>`
        :raises ValueError: if ``cryptography`` is not installed, or this method is called by a non-cryptography algorithm
        :raises InvalidKeyError: if the key doesn't match the expected key classes
        NzhThis method requires the cryptography library, and should only be used by cryptography-based algorithms.c              3  ó4   K  — | ]  }|j                   –— Œ y ­w©N)Ú__name__)Ú.0Úclss     rm   Ú	<genexpr>z2Algorithm.check_crypto_key_type.<locals>.<genexpr>Þ   s   è ø€ ÐLÑ5K¨c˜SŸ\�\Ñ5Kùs   ‚zExpected one of z, got: z. Invalid Key type for )rf   rr   Ú
ValueErrorrx   Ú	__class__r†   r   )r€   ÚkeyÚvalid_classesÚactual_classÚ
self_classs        rm   Úcheck_crypto_key_typezAlgorithm.check_crypto_key_typeÎ   s�   € õ ˜T×3Ñ3Ð;ÜØzóð ô ˜#˜t×5Ñ5Ô6ÙL°T×5KÒ5KÓLˆMØŸ=™=×1Ñ1ˆLØŸ™×0Ñ0ˆJÜ!Ø" = /°¸¸ÐF]Ð^hÐ]iÐjóð ð	 7ro   c                 ó   — y)zš
        Performs necessary validation and conversions on the key and returns
        the key value in the proper format for sign() and verify().
        N© ©r€   rŒ   s     rm   Úprepare_keyzAlgorithm.prepare_keyå   ó   � ro   c                 ó   — y)zn
        Returns a digital signature for the specified message
        using the specified key value.
        Nr’   ©r€   ÚmsgrŒ   s      rm   ÚsignzAlgorithm.signì   r•   ro   c                 ó   — y)zz
        Verifies that the specified digital signature is valid
        for the specified message and key values.
        Nr’   ©r€   r˜   rŒ   Úsigs       rm   ÚverifyzAlgorithm.verifyó   r•   ro   c                 ó   — y r…   r’   ©Úkey_objÚas_dicts     rm   Úto_jwkzAlgorithm.to_jwkú   s	   € ð BEro   c                 ó   — y r…   r’   rŸ   s     rm   r¢   zAlgorithm.to_jwkÿ   s   € ð
 ro   c                 ó   — y)z3
        Serializes a given key into a JWK
        Nr’   rŸ   s     rm   r¢   zAlgorithm.to_jwk  r•   ro   c                 ó   — y)zJ
        Deserializes a given key from JWK back into a key object
        Nr’   ©Újwks    rm   Úfrom_jwkzAlgorithm.from_jwk  r•   ro   c                 ó   — y)zŽ
        Return a warning message if the key is below the minimum
        recommended length for this algorithm, or None if adequate.
        Nr’   r“   s     rm   Úcheck_key_lengthzAlgorithm.check_key_length  s   € ð
 ro   )r�   r}   Úreturnr}   )rŒ   z PublicKeyTypes | PrivateKeyTypesr«   ÚNone)rŒ   r   r«   r   )r˜   r}   rŒ   r   r«   r}   )r˜   r}   rŒ   r   rœ   r}   r«   Úbool)r    r   r¡   úLiteral[True]r«   r   ©F)r    r   r¡   úLiteral[False]r«   Ústr)r    r   r¡   r­   r«   úJWKDict | str)r§   ústr | JWKDictr«   r   )rŒ   r   r«   ú
str | None)r†   Ú
__module__Ú__qualname__Ú__doc__rr   Ú__annotations__r‚   r�   r   r”   r™   r�   r   Ústaticmethodr¢   r¨   rª   r’   ro   rm   rq   rq   °   sù   … ñð
 ?CÐÐ;ÓBó5ó,ð. òó ðð òó ðð òó ðð ØØÚDó ó ó ð EàØØà05ðØðØ-ðà	òó ó ó ðð Øóó ó ðð
 Øòó ó ðô
ro   rq   c                  óN   — e Zd ZdZdd„Zd	d„Zd
d„Zeddd„«       Zedd„«       Z	y)ra   zZ
    Placeholder for use when no signing or verification
    operations are required.
    c                ó.   — |dk(  rd }|�t        d«      ‚|S )NrK   z*When alg = "none", key value must be None.r   r“   s     rm   r”   zNoneAlgorithm.prepare_key"  s$   € Ø�"Š9ØˆCàˆ?Ü!Ð"NÓOÐOàˆ
ro   c                 ó   — y)Nro   r’   r—   s      rm   r™   zNoneAlgorithm.sign+  s   € Øro   c                 ó   — y)NFr’   r›   s       rm   r�   zNoneAlgorithm.verify.  s   € Øro   c                ó   — t        «       ‚r…   ©rw   rŸ   s     rm   r¢   zNoneAlgorithm.to_jwk1  ó   € ä!Ó#Ð#ro   c                ó   — t        «       ‚r…   r¿   r¦   s    rm   r¨   zNoneAlgorithm.from_jwk5  rÀ   ro   N)rŒ   r´   r«   r¬   )r˜   r}   rŒ   r¬   r«   r}   )r˜   r}   rŒ   r¬   rœ   r}   r«   r­   r¯   )r    r   r¡   r­   r«   r
   )r§   r³   r«   r
   )
r†   rµ   r¶   r·   r”   r™   r�   r¹   r¢   r¨   r’   ro   rm   ra   ra     s>   „ ñó
óóð ó$ó ð$ð ò$ó ñ$ro   ra   c                  ó  — e Zd ZU dZej
                  Zded<   ej                  Z	ded<   ej                  Zded<   dd„Zedd„«       Zdd„Zeedd	„«       «       Zeeddd
„«       «       Zeddd„«       Zedd„«       Zdd„Zdd„Zdd„Zy)rb   zf
    Performs signing and verification operations using HMAC
    and the specified hash function.
    zClassVar[HashlibHash]rc   rd   re   c                ó   — || _         y r…   ©rt   ©r€   rt   s     rm   Ú__init__zHMACAlgorithm.__init__D  s	   € Ø ˆ�ro   c                óÀ   — t         sy	 t        | «       y# t        t        t        f$ r Y nw xY w	 t        j                  | «       y# t        t        t        f$ r Y yw xY w©NFT)rf   r=   Ú	TypeErrorrŠ   r   r   Úload_der_x509_certificate)Ú	key_bytess    rm   Ú_is_der_keyzHMACAlgorithm._is_der_keyG  sj   € åØð	Ü 	Ô*ð øô œ:Ô';Ð<ò 	Ùð	úð
	Ü×*Ñ*¨9Ô5ð øô œ:Ô';Ð<ò 	Ùð	ús   ‰ •,«,°A ÁAÁAc                ó  — t        |«      }t        |«      dk(  rt        d«      ‚t        |«      st	        |«      s| j                  |«      rt        d«      ‚	 t        j                  |d„ ¬«      }d
}
|g}|rk|j                  «       }t!        |t"        «      r'd|v rd}
nD|j%                  |j'                  «       «       n!t!        |t(        «      r|j%                  |«       |rŒk|
rt        d«      ‚|S # t        $ �r~ 	 |j                  t        j                  |«      d¬«      }n# t        $ r d}Y nw xY w|j                  d	«      }d
}d}|t        |«      k  rì||   dk7  r|dz  }Œ|dz   }|t        |«      k  r+||   dk(  r|dz  }n||   dk(  rn|dz  }|t        |«      k  rŒ+|t        |«      k\  rn‘|dz   }	|	t        |«      k  r"||	   dv r|	dz  }	|	t        |«      k  r||	   dv rŒ|	t        |«      k  r:||	   dk(  r2	 t        j                  |||dz    «      dk(  }n# t        $ r Y nw xY w|rn|dz   }|t        |«      k  rŒì|j                  d«      s|j                  d«      r|rt        d«      d ‚d }Y �Œt        $ r d }Y �Œw xY w)Nr   ú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                 ó   — y)Nr   r’   )Ú_s    rm   Ú<lambda>z+HMACAlgorithm.prepare_key.<locals>.<lambda>r  s   € Àro   )Ú	parse_intÚsurrogatepass)ÚerrorsrK   u   ï»¿ 	
FÚ"r   Ú\é   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.T)r   Úlenr   r   r   rÌ   ÚjsonÚloadsÚRecursionErrorÚdecodeÚdetect_encodingÚUnicodeErrorÚlstriprŠ   Ú
startswithÚpoprx   ÚdictÚextendÚvaluesÚlist)r€   rŒ   rË   Újwk_objÚdecoded_keyÚstripped_keyÚhas_jwk_memberÚindexÚendÚ
next_indexÚcontains_jwk_memberÚobjects_to_checkÚobjs                rm   r”   zHMACAlgorithm.prepare_keyZ  sö  € Ü Ó$ˆ	äˆy‹>˜QÒÜ!Ð"?Ó@Ð@ô ˜)Ô$Ü˜)Ô$Ø×Ñ 	Ô*ä!ð9óð ð4	Ü—j‘j ±kÔBˆGðh $ÐØ#˜9ÐÙØ"×&Ñ&Ó(ˆCÜ˜#œtÔ$Ø˜C‘<Ø*.Ð'ØØ ×'Ñ'¨¯
©
«Õ5Ü˜C¤Ô&Ø ×'Ñ'¨Ô,ò ñ Ü!ð8óð ð ÐøôK ó 0	ð!Ø'×.Ñ.Ü×(Ñ(¨Ó3¸Oð /ó ‘øô  ò !Ø ’ð!úà&×-Ñ-¨oÓ>ˆLØ"ˆNØˆEØœ#˜kÓ*Ò*Ø˜uÑ%¨Ò,Ø˜Q‘J�EØØ˜a‘i�ØœC Ó,Ò,Ø" 3Ñ'¨4Ò/Ø˜q™™Ø$ SÑ)¨SÒ0Øà˜q™˜ð œC Ó,Ó,ð œ#˜kÓ*Ò*ØØ  1™W�
à¤ [Ó!1Ò1Ø# JÑ/°9Ñ<à !‘O�Jð ¤ [Ó!1Ò1Ø# JÑ/°9Ò<ð ¤ KÓ 0Ò0°[ÀÑ5LÐPSÒ5Sðä ŸJ™J {°5¸3À¹7Ð'CÓDÈÑMñ 'øô &ò Ùðúá%ØØ˜a™�ð; œ#˜kÓ*Ó*ð< ×&Ñ& sÔ+Ø×'Ñ'¨Ô,±ä%ð<óð ð	ð
 ‹GÜò 	Ø‹Gð	úst   ÁC1 Ã1
JÃ<&D#Ä"JÄ#D1Ä.JÄ0D1Ä1A1JÆ#AJÇ'JÇ>HÈJÈ	H)È&JÈ(H)È)JÉ2JÉ8
JÊJc                 ó   — y r…   r’   rŸ   s     rm   r¢   zHMACAlgorithm.to_jwkº  s   € àILro   c                 ó   — y r…   r’   rŸ   s     rm   r¢   zHMACAlgorithm.to_jwk¾  s   € àNQro   c                ó~   — t        t        | «      «      j                  «       ddœ}|r|S t        j                  |«      S )NÚoct)ÚkrÙ   )r   r   rà   rÝ   Údumps)r    r¡   r§   s      rm   r¢   zHMACAlgorithm.to_jwkÂ  s<   € ô "¤+¨gÓ"6Ó7×>Ñ>Ó@Øñ
ˆñ
 ØˆJä—:‘:˜c“?Ð"ro   c                óD  — 	 t        | t        «      rt        j                  | «      }nt        | t        «      r| }nt
        ‚|j                  d«      dk7  rt        d«      ‚t        |d   «      }t        |«      dk(  rt        d«      ‚|S # t
        $ r t        d«      d ‚w xY w)NúKey is not valid JSONrÙ   r÷   zNot an HMAC keyrø   r   rÎ   )
rx   r±   rÝ   rÞ   ræ   rŠ   r   Úgetr   rÜ   )r§   ró   rË   s      rm   r¨   zHMACAlgorithm.from_jwkÎ  sŸ   € ð	EÜ˜#œsÔ#Ü#Ÿz™z¨#›‘Ü˜C¤Ô&Ø‘ä Ð ð �7‰7�5‹>˜UÒ"Ü!Ð"3Ó4Ð4ä$ S¨¡XÓ.ˆ	Üˆy‹>˜QÒÜ!Ð"?Ó@Ð@ØÐøô ò 	EÜ!Ð"9Ó:ÀÐDð	Eús   ‚?B	 Â	Bc                óÊ   — | j                  «       j                  }t        |«      |k  r;dt        |«      › d|› d| j                  «       j                  j	                  «       › d�S y )NzThe HMAC key is z> bytes long, which is below the minimum recommended length of z bytes for z. See RFC 7518 Section 3.2.)rt   Údigest_sizerÜ   ÚnameÚupper)r€   rŒ   Ú
min_lengths      rm   rª   zHMACAlgorithm.check_key_lengthâ  se   € Ø—]‘]“_×0Ñ0ˆ
Üˆs‹8�jÒ à"¤3 s£8 *ð -5Ø5?°LÀØ—=‘=“?×'Ñ'×-Ñ-Ó/Ð0ð 1,ð-ðð ro   c                ó`   — t        j                  ||| j                  «      j                  «       S r…   )ÚhmacÚnewrt   r   r—   s      rm   r™   zHMACAlgorithm.signí  s"   € Ü�x‰x˜˜S $§-¡-Ó0×7Ñ7Ó9Ð9ro   c                óN   — t        j                  || j                  ||«      «      S r…   )r  Úcompare_digestr™   r›   s       rm   r�   zHMACAlgorithm.verifyð  s    € Ü×"Ñ" 3¨¯	©	°#°sÓ(;Ó<Ð<ro   N)rt   r   r«   r¬   )rË   r}   r«   r­   )rŒ   ústr | bytesr«   r}   )r    r  r¡   r®   r«   r   r¯   )r    r  r¡   r°   r«   r±   )r    r  r¡   r­   r«   r²   )r§   r³   r«   r}   )rŒ   r}   r«   r´   )r˜   r}   rŒ   r}   r«   r}   )r˜   r}   rŒ   r}   rœ   r}   r«   r­   )r†   rµ   r¶   r·   ÚhashlibÚsha256rc   r¸   Úsha384rd   Úsha512re   rÆ   r¹   rÌ   r”   r   r¢   r¨   rª   r™   r�   r’   ro   rm   rb   rb   :  s¹   … ñð
 %,§N¡N€FÐ!Ó2Ø$+§N¡N€FÐ!Ó2Ø$+§N¡N€FÐ!Ó2ó!ð òó ðó$^ð@ ØÚLó ó àLàØÛQó ó àQàó	#ó ð	#ð òó ðó&	ó:ô=ro   rb   c                  óF  — e Zd ZU dZej
                  Zded<   ej                  Zded<   ej                  Zded<    e	e
ee   df    eeeef   «      «      ZdZded	<   dd
„Zdd„Zdd„Zeedd„«       «       Zeeddd„«       «       Zeddd„«       Zedd„«       Zdd„Zdd„Zy)rh   z~
        Performs signing and verification operations using
        RSASSA-PKCS-v1_5 and the specified hash function.
        ú$ClassVar[type[hashes.HashAlgorithm]]rc   rd   re   .i   zClassVar[int]Ú_MIN_KEY_SIZEc                ó   — || _         y r…   rÄ   rÅ   s     rm   rÆ   zRSAAlgorithm.__init__  s	   € Ø$ˆD�Mro   c                óp   — |j                   | j                  k  rd|j                   › d| j                  › d�S y )NzThe RSA key is z; bits long, which is below the minimum recommended size of z bits. See NIST SP 800-131A.)Úkey_sizer  r“   s     rm   rª   zRSAAlgorithm.check_key_length	  sE   € Ø�|‰|˜d×0Ñ0Ò0à% c§l¡l ^ð 47Ø7;×7IÑ7IÐ6Jð K,ð-ðð
 ro   c                ó4  — t        || j                  «      rt        t        |«      S t        |t        t
        f«      st        d«      ‚t        |«      }	 |j                  d«      r,t        |«      }| j                  |«       t        t        |«      S t        |d ¬«      }| j                  |«       t        t        |«      S # t        $ rO 	 t        |«      }| j                  |«       t        t        |«      cY S # t        t         f$ r t#        d«      d ‚w xY ww xY w)NúExpecting a PEM-formatted key.s   ssh-rsa©Úpasswordz(Could not parse the provided public key.)rx   rr   r   rD   r}   r±   rÉ   r   rä   r@   r�   r3   r>   r1   rŠ   r?   r   r   )r€   rŒ   rË   Ú
public_keyÚprivate_keys        rm   r”   zRSAAlgorithm.prepare_key  s
  € Ü˜#˜t×5Ñ5Ô6ô œN¨CÓ0Ð0ä˜c¤E¬3 <Ô0ÜÐ @ÓAÐAä# CÓ(ˆIð Ø×'Ñ'¨
Ô3Ü1DÀYÓ1O�JØ×.Ñ.¨zÔ:Ü¤¨jÓ9Ð9ä3GØ!¨Dô4�Kð ×.Ñ.¨{Ô;Ü¤¨{Ó;Ð;øÜò  ð Ü!4°YÓ!?�JØ×.Ñ.¨zÔ:Ü¤¨jÓ9Ò9øÜ"Ô$8Ð9ò  Ü)ØBóàð ð úð ús*   Á<B? Â-B? Â?	DÃ	+C7Ã4DÃ7DÄDc                 ó   — y r…   r’   rŸ   s     rm   r¢   zRSAAlgorithm.to_jwk3  s   € àPSro   c                 ó   — y r…   r’   rŸ   s     rm   r¢   zRSAAlgorithm.to_jwk7  s   € àUXro   c                ó¬  — d }t        | d«      �r;| j                  «       }ddgt        |j                  j                  «      j                  «       t        |j                  j                  «      j                  «       t        |j                  «      j                  «       t        |j                  «      j                  «       t        |j                  «      j                  «       t        |j                  «      j                  «       t        |j                  «      j                  «       t        |j                  «      j                  «       dœ
}nrt        | d«      r[| j                  «       }ddgt        |j                  «      j                  «       t        |j                  «      j                  «       dœ}nt        d«      ‚|r|S t        j                  |«      S )NÚprivate_numbersÚRSAr™   )
rÙ   Úkey_opsÚnÚeÚdÚpÚqÚdpÚdqÚqir�   )rÙ   r  r  r  úNot a public or private key)Úhasattrr  r   Úpublic_numbersr  rà   r  r   r!  r"  Údmp1Údmq1Úiqmpr   rÝ   rù   )r    r¡   ró   Únumberss       rm   r¢   zRSAAlgorithm.to_jwk;  sb  € à)-ˆCä�wÐ 1Õ2à!×1Ñ1Ó3�ð !Ø &˜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�ð !Ø (˜zÜ*¨7¯9©9Ó5×<Ñ<Ó>Ü*¨7¯9©9Ó5×<Ñ<Ó>ñ	‘ô &Ð&CÓDÐDáØ�
ä—z‘z #“Ð&ro   c                ó:  — 	 t        | t        «      rt        j                  | «      }nt        | t        «      r| }nt
        ‚|j                  d«      dk7  rt        d«      d ‚d|v �rTd|v �rOd|v �rJd|v rt        d	«      ‚g d
¢}|D �cg c]  }||v ‘Œ }}t        |«      }|rt        |«      st        d«      d ‚t        t        |d   «      t        |d   «      «      }|rjt        t        |d   «      t        |d   «      t        |d   «      t        |d   «      t        |d   «      t        |d   «      |¬«      }|j'                  «       S t        |d   «      }t        |j                  ||j                  «      \  }	}
t        ||	|
t!        ||	«      t#        ||
«      t%        |	|
«      |¬«      }|j'                  «       S d|v r6d|v r2t        t        |d   «      t        |d   «      «      j)                  «       S t        d«      ‚# t
        $ r t        d«      d ‚w xY wc c}w )Nrû   rÙ   r  zNot an RSA keyr   r  r  Úothz5Unsupported RSA private key: > 2 primes not supported)r!  r"  r#  r$  r%  z@RSA key must include all parameters if any are present besides dr!  r"  r#  r$  r%  )r   r!  r"  r)  r*  r+  r(  r&  )rx   r±   rÝ   rÞ   ræ   rŠ   r   rü   ÚanyÚallr4   r   r2   r8   r  r  r5   r6   r7   r  r  )r§   ró   Úother_propsÚpropÚprops_foundÚany_props_foundr(  r,  r   r!  r"  s              rm   r¨   zRSAAlgorithm.from_jwkb  s;  € ð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˜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�qô 0ØØØÜ)¨!¨QÓ/Ü)¨!¨QÓ/Ü)¨!¨QÓ/Ø'5ô�Gð ×*Ñ*Ó,Ð,Ø˜‘  s¡
ä'Ü'¨¨C©Ó1Ü'¨¨C©Ó1ó÷ ‘*“,ðô
 &Ð&CÓDÐDøô{ ò IÜ%Ð&=Ó>ÀDÐHðIüò Ds   ‚?G? ÂHÇ?Hc                ól   — |j                  |t        j                  «       | j                  «       «      }|S r…   )r™   r"   ÚPKCS1v15rt   ©r€   r˜   rŒ   Ú	signatures       rm   r™   zRSAAlgorithm.signª  s)   € Ø"Ÿx™x¨¬W×-=Ñ-=Ó-?ÀÇÁÃÓQˆIØÐro   c                óŒ   — 	 |j                  ||t        j                  «       | j                  «       «       y# t        $ r Y yw xY w)NTF)r�   r"   r6  rt   r   r›   s       rm   r�   zRSAAlgorithm.verify®  s=   € ðØ—
‘
˜3 ¤W×%5Ñ%5Ó%7¸¿¹»ÔIØøÜ#ò Ùðús   ‚47 ·	AÁAN)rt   útype[hashes.HashAlgorithm]r«   r¬   )rŒ   rD   r«   r´   )rŒ   zAllowedRSAKeys | str | bytesr«   rD   )r    rD   r¡   r®   r«   r   r¯   )r    rD   r¡   r°   r«   r±   )r    rD   r¡   r­   r«   r²   )r§   r³   r«   rD   ©r˜   r}   rŒ   r1   r«   r}   ©r˜   r}   rŒ   r3   rœ   r}   r«   r­   )r†   rµ   r¶   r·   r!   rc   r¸   rd   re   r   Útuplery   rG   r   r   r1   r3   rr   r  rÆ   rª   r”   r   r¹   r¢   r¨   r™   r�   r’   ro   rm   rh   rh   ö  så   … ñ	ð
 8>·}±}ˆÐ4ÓDØ7=·}±}ˆÐ4ÓDØ7=·}±}ˆÐ4ÓDá Ø�$�{Ñ# SÐ(Ñ)Ù�U˜=¨,Ð6Ñ7Ó8ó
Ðð (,ˆ�}Ó+ó	%ó	ó	 ðB 
Ø	ÚSó 
ó 
àSà	Ø	ÛXó 
ó 
àXà	ó$	'ó 
ð$	'ðL 
òE	Eó 
ðE	EóN	ô	ro   rh   c                  óF  — e Zd ZU dZej
                  Zded<   ej                  Zded<   ej                  Zded<    e	e
ee   df    eeeef   «      «      Z	 d	 	 	 	 	 dd„Zdd	„Zdd
„Zdd„Zdd„Zeedd„«       «       Zeeddd„«       «       Zeddd„«       Zedd„«       Zy)ri   zr
        Performs signing and verification operations using
        ECDSA and the specified hash function
        r  rc   rd   re   .Nc                ó    — || _         || _        y r…   )rt   Úexpected_curve)r€   rt   r@  s      rm   rÆ   zECAlgorithm.__init__Ä  s   € ð
 %ˆDŒMØ"0ˆDÕro   c                óÒ   — | j                   €yt        |j                  | j                   «      s:t        d|j                  j                  › d| j                   j                  › d�«      ‚y)z9Validate that the key's curve matches the expected curve.NzThe key's curve 'z%' does not match the expected curve 'z' for this algorithm)r@  rx   Úcurver   rÿ   r“   s     rm   Ú_validate_curvezECAlgorithm._validate_curveÌ  sg   € à×"Ñ"Ð*Øä˜cŸi™i¨×)<Ñ)<Ô=Ü%Ø'¨¯	©	¯©Ð'7ð 8Ø"×1Ñ1×6Ñ6Ð7Ð7KðMóð ð >ro   c                ó&  — t        || j                  «      r#t        t        |«      }| j	                  |«       |S t        |t
        t        f«      st        d«      ‚t        |«      }	 |j                  d«      rt        |«      }nt        |«      }| j                  |«       t        t        |«      }| j	                  |«       |S # t        $ rD t        |d ¬«      }| j                  |«       t        t         |«      }| j	                  |«       |cY S w xY w)Nr  s   ecdsa-sha2-r  )rx   rr   r   rE   rC  r}   r±   rÉ   r   rä   r@   r?   r�   r+   rŠ   r>   r)   )r€   rŒ   Úec_keyrË   r  Úec_public_keyr  Úec_private_keys           rm   r”   zECAlgorithm.prepare_key×  s÷   € Ü˜#˜t×5Ñ5Ô6äœm¨SÓ1�Ø×$Ñ$ VÔ,Ø�ä˜c¤E¬3 <Ô0ÜÐ @ÓAÐAä# CÓ(ˆIð
&Ø×'Ñ'¨Ô7Ü1DÀYÓ1O‘Jä!4°YÓ!?�Jð ×*Ñ*¨:Ô6Ü $Ô%;¸ZÓ H�Ø×$Ñ$ ]Ô3Ø$Ð$øÜò &Ü2°9ÀtÔL�Ø×*Ñ*¨;Ô7Ü!%Ô&=¸{Ó!K�Ø×$Ñ$ ^Ô4Ø%Ò%ð&ús   Á'AC ÃA
DÄDc                ó€   — |j                  |t        | j                  «       «      «      }t        ||j                  «      S r…   )r™   r#   rt   r   rB  )r€   r˜   rŒ   Úder_sigs       rm   r™   zECAlgorithm.signø  s.   € Ø—h‘h˜s¤E¨$¯-©-«/Ó$:Ó;ˆGä'¨°·±Ó;Ð;ro   c                ó  — 	 t        ||j                  «      }	 t        |t        «      r|j                  «       n|}|j                  ||t        | j                  «       «      «       y# t        $ r Y yw xY w# t        $ r Y yw xY wrÈ   )
r   rB  rŠ   rx   r)   r  r�   r#   rt   r   )r€   r˜   rŒ   rœ   rI  r  s         rm   r�   zECAlgorithm.verifyý  s†   € ðÜ.¨s°C·I±IÓ>�ð	ô " #Ô'>Ô?ð —N‘NÔ$àð ð
 ×!Ñ! '¨3´°d·m±m³oÓ0FÔGØøô ò Ùðûô $ò Ùðús#   ‚A& ™AA5 Á&	A2Á1A2Á5	BÂ Bc                 ó   — y r…   r’   rŸ   s     rm   r¢   zECAlgorithm.to_jwk  s   € àORro   c                 ó   — y r…   r’   rŸ   s     rm   r¢   zECAlgorithm.to_jwk  s   € àTWro   c                ó   — t        | t        «      r| j                  «       j                  «       }n,t        | t        «      r| j                  «       }nt        d«      ‚t        | j                  t        «      rd}not        | j                  t        «      rd}nRt        | j                  t        «      rd}n5t        | j                  t        «      rd}nt        d| j                  › �«      ‚d|t        |j                  | j                  j                  ¬«      j                  «       t        |j                  | j                  j                  ¬«      j                  «       d	œ}t        | t        «      rJt        | j!                  «       j"                  | j                  j                  ¬«      j                  «       |d
<   |r|S t%        j&                  |«      S )Nr&  úP-256úP-384úP-521Ú	secp256k1úInvalid curve: ÚEC)Ú
bit_length)rÙ   ÚcrvÚxÚyr   )rx   r)   r  r(  r+   r   rB  r%   r&   r'   r$   r   rV  r  rà   rW  r  Úprivate_valuerÝ   rù   )r    r¡   r(  rU  ró   s        rm   r¢   zECAlgorithm.to_jwk  sf  € ä˜'Ô#:Ô;Ø!(×!3Ñ!3Ó!5×!DÑ!DÓ!F‘Ü˜GÔ%;Ô<Ø!(×!7Ñ!7Ó!9‘ä%Ð&CÓDÐDä˜'Ÿ-™-¬Ô3Ø‘Ü˜GŸM™M¬9Ô5Ø‘Ü˜GŸM™M¬9Ô5Ø‘Ü˜GŸM™M¬9Ô5Ø!‘ä%¨¸¿¹°Ð&GÓHÐHð ØÜ&Ø"×$Ñ$Ø&Ÿ}™}×5Ñ5ô÷ ‘&“(Ü&Ø"×$Ñ$Ø&Ÿ}™}×5Ñ5ô÷ ‘&“(ñ#ˆCô ˜'Ô#:Ô;Ü,Ø×+Ñ+Ó-×;Ñ;Ø&Ÿ}™}×5Ñ5ô÷ ‘&“(ð �C‘ñ
 Ø�
ä—z‘z #“Ð&ro   c                ó8  — 	 t        | t        «      rt        j                  | «      }nt        | t        «      r| }nt
        ‚|j                  d«      dk7  rt        d«      d ‚d|vsd|vrt        d«      d ‚t        |j                  d«      «      }t        |j                  d«      «      }|j                  d«      }|dk(  r7t        |«      t        |«      cxk(  rd	k(  rn nt        «       }n×t        d
«      d ‚|dk(  r7t        |«      t        |«      cxk(  rdk(  rn nt        «       }n›t        d«      d ‚|dk(  r7t        |«      t        |«      cxk(  rdk(  rn nt        «       }n_t        d«      d ‚|dk(  r@t        |«      t        |«      cxk(  rd	k(  rn t        d«      ‚t        «       }nt        d«      ‚t        d|› �«      ‚t        t        j!                  |d¬«      t        j!                  |d¬«      |¬«      }d|vr|j#                  «       S t        |j                  d«      «      }t        |«      t        |«      k7  rt        dt        |«      |«      ‚t%        t        j!                  |d¬«      |«      j'                  «       S # t
        $ r t        d«      d ‚w xY w)Nrû   rÙ   rS  zNot an Elliptic curve keyrV  rW  rU  rN  é    z)Coords should be 32 bytes for curve P-256rO  é0   z)Coords should be 48 bytes for curve P-384rP  éB   z)Coords should be 66 bytes for curve P-521rQ  z-Coords should be 32 bytes for curve secp256k1rR  Úbig)Ú	byteorder)rV  rW  rB  r   z!D should be {} bytes for curve {})rx   r±   rÝ   rÞ   ræ   rŠ   r   rü   r   rÜ   r%   r&   r'   r$   r,   ÚintÚ
from_bytesr  r*   r  )r§   ró   rV  rW  rB  Ú	curve_objr(  r   s           rm   r¨   zECAlgorithm.from_jwkB  sr  € ð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Ô)ô *ØGóð ô !*£‘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r…   )rt   r:  r@  ztype[EllipticCurve] | Noner«   r¬   )rŒ   rE   r«   r¬   )rŒ   zAllowedECKeys | str | bytesr«   rE   )r˜   r}   rŒ   r)   r«   r}   )r˜   r}   rŒ   rE   rœ   r}   r«   r­   )r    rE   r¡   r®   r«   r   r¯   )r    rE   r¡   r°   r«   r±   )r    rE   r¡   r­   r«   r²   )r§   r³   r«   rE   )r†   rµ   r¶   r·   r!   rc   r¸   rd   re   r   r=  ry   rG   r   r   r)   r+   rr   rÆ   rC  r”   r™   r�   r   r¹   r¢   r¨   r’   ro   rm   ri   ri   µ  sù   … ñ	ð
 8>·}±}ˆÐ4ÓDØ7=·}±}ˆÐ4ÓDØ7=·}±}ˆÐ4ÓDá Ø�$�{Ñ# SÐ(Ñ)Ù�UÐ2Ð4JÐJÑKÓLó
Ðð :>ð	1à0ð	1ð 7ð	1ð ó		1ó		ó	&óB	<ó
	ð" 
Ø	ÚRó 
ó 
àRà	Ø	ÛWó 
ó 
àWà	ó)	'ó 
ð)	'ðV 
òG	ó 
ñG	ro   ri   c                  ó    — e Zd ZdZdd„Zdd„Zy)rj   zA
        Performs a signature using RSASSA-PSS with MGF1
        c           	     óä   — |j                  |t        j                  t        j                  | j	                  «       «      | j	                  «       j
                  ¬«      | j	                  «       «      }|S )N©ÚmgfÚsalt_length)r™   r"   ÚPSSÚMGF1rt   rþ   r7  s       rm   r™   zRSAPSSAlgorithm.sign‘  sS   € Ø"Ÿx™xØÜ—‘ÜŸ™ T§]¡]£_Ó5Ø $§¡£× ;Ñ ;ôð —‘“ó ˆIð Ðro   c           
     ó  — 	 |j                  ||t        j                  t        j                  | j	                  «       «      | j	                  «       j
                  ¬«      | j	                  «       «       y# t        $ r Y yw xY w)Nrd  TF)r�   r"   rg  rh  rt   rþ   r   r›   s       rm   r�   zRSAPSSAlgorithm.verifyœ  sh   € ðØ—
‘
ØØÜ—K‘KÜ#ŸL™L¨¯©«Ó9Ø$(§M¡M£O×$?Ñ$?ôð —M‘M“Oôð øÜ#ò Ùðús   ‚A0A3 Á3	A?Á>A?Nr;  r<  )r†   rµ   r¶   r·   r™   r�   r’   ro   rm   rj   rj   Œ  s   „ ñ	ó		ô	ro   rj   c            
      óè   — e Zd ZdZ eeee   df    ee	e
eeef   «      «      Zdd„Zdd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zeedd„«       «       Zeeddd„«       «       Zeddd	„«       Zedd
„«       Zy)rk   zŽ
        Performs signing and verification operations using EdDSA

        This class requires ``cryptography>=2.6`` to be installed.
        .c                 ó   — y r…   r’   )r€   Úkwargss     rm   rÆ   zOKPAlgorithm.__init__¾  s   € Øro   c                óœ  — t        |t        t        f«      s| j                  |«       |S t        |t        «      r|j	                  d«      n|}t        |t        «      r|j                  d«      n|}d|v rt        |«      }n1d|v rt        |d ¬«      }n|dd dk(  rt        |«      }nt        d«      ‚| j                  |«       t        d	|«      S )
Núutf-8z-----BEGIN PUBLICz-----BEGIN PRIVATEr  r   é   zssh-r&  rF   )rx   r±   r}   r�   rà   Úencoder?   r>   r@   r   r   )r€   rŒ   Úkey_strrË   Ú
loaded_keys        rm   r”   zOKPAlgorithm.prepare_keyÁ  s¿   € Ü˜c¤C¬ <Ô0Ø×*Ñ*¨3Ô/Ø�
ä-7¸¼UÔ-C�c—j‘j Ô)ÈˆGÜ/9¸#¼sÔ/C˜Ÿ
™
 7Ô+ÈˆIð # gÑ-Ü0°Ó;‘
Ø%¨Ñ0Ü1°)ÀdÔK‘
Ø˜˜1� Ò'Ü0°Ó;‘
ä%Ð&CÓDÐDð ×&Ñ& zÔ2ÜÐ(¨*Ó5Ð5ro   c                ón   — t        |t        «      r|j                  d«      n|}|j                  |«      }|S )aS  
            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
            rn  )rx   r±   rp  r™   )r€   r˜   rŒ   Ú	msg_bytesr8  s        rm   r™   zOKPAlgorithm.sign×  s1   € ô 0:¸#¼sÔ/C˜Ÿ
™
 7Ô+ÈˆIØ"Ÿx™x¨	Ó2ˆIØÐro   c                ó$  — 	 t        |t        «      r|j                  d«      n|}t        |t        «      r|j                  d«      n|}t        |t        t        f«      r|j                  «       n|}|j                  ||«       y# t        $ r Y yw xY w)aÄ  
            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.
            rn  TF)rx   r±   rp  r/   r-   r  r�   r   )r€   r˜   rŒ   rœ   rt  Ú	sig_bytesr  s          rm   r�   zOKPAlgorithm.verifyå  s†   € ðÜ3=¸cÄ3Ô3G˜CŸJ™J wÔ/ÈS�	Ü3=¸cÄ3Ô3G˜CŸJ™J wÔ/ÈS�	ô " #Ô(9¼?Ð'KÔLð —N‘NÔ$àð ð
 ×!Ñ! )¨YÔ7ØøÜ#ò Ùðús   ‚B B Â	BÂBc                 ó   — y r…   r’   ©rŒ   r¡   s     rm   r¢   zOKPAlgorithm.to_jwkÿ  s   € àLOro   c                 ó   — y r…   r’   rx  s     rm   r¢   zOKPAlgorithm.to_jwk  s   € àQTro   c                óF  — t        | t        t        f«      r‚| j                  t        j
                  t        j
                  ¬«      }t        | t        «      rdnd}t        t        |«      «      j                  «       d|dœ}|r|S t        j                  |«      S t        | t        t        f«      ré| j                  t        j
                  t        j
                  t!        «       ¬«      }| j#                  «       j                  t        j
                  t        j
                  ¬«      }t        | t        «      rdnd}t        t        |«      «      j                  «       t        t        |«      «      j                  «       d|dœ}|r|S t        j                  |«      S t%        d«      ‚)	N©ÚencodingÚformatÚEd25519ÚEd448ÚOKP)rV  rÙ   rU  )r|  r}  Úencryption_algorithm)rV  r   rÙ   rU  r&  )rx   r0   r.   Úpublic_bytesr9   ÚRawr<   r   r   rà   rÝ   rù   r/   r-   Úprivate_bytesr;   r:   r  r   )rŒ   r¡   rV  rU  ró   r   s         rm   r¢   zOKPAlgorithm.to_jwk  s\  € ä˜#Ô 0´.ÐAÔBØ×$Ñ$Ü%Ÿ\™\Ü'×+Ñ+ð %ó �ô $.¨cÔ3CÔ#D‘iÈ'�ô *¬+°a«.Ó9×@Ñ@ÓBØ Øñ�ñ Ø�JäŸ:™: c›?Ð*ä˜#Ô 1´?ÐCÔDØ×%Ñ%Ü%Ÿ\™\Ü(×,Ñ,Ü)5«ð &ó �ð —N‘NÓ$×1Ñ1Ü%Ÿ\™\Ü'×+Ñ+ð 2ó �ô
 $.¨cÔ3DÔ#E‘iÈ7�ä)¬+°a«.Ó9×@Ñ@ÓBÜ)¬+°a«.Ó9×@Ñ@ÓBØ Øñ	�ñ Ø�JäŸ:™: c›?Ð*ä!Ð"?Ó@Ð@ro   c                óf  — 	 t        | t        «      rt        j                  | «      }nt        | t        «      r| }nt
        ‚|j                  d«      dk7  rt        d«      ‚|j                  d«      }|dk7  r|dk7  rt        d|› �«      ‚d	|vrt        d
«      ‚t        |j                  d	«      «      }	 d|vr/|dk(  rt        j                  |«      S t        j                  |«      S t        |j                  d«      «      }|dk(  rt        j                  |«      }nt        j                  |«      }|j                  «       j!                  t"        j$                  t&        j$                  ¬«      |k7  rt        d«      ‚|S # t
        $ r t        d«      d ‚w xY w# t
        $ r}t        d«      |‚d }~ww xY w)Nrû   rÙ   r€  zNot an Octet Key PairrU  r~  r  rR  rV  zOKP should have "x" parameterr   r{  z%Public key does not match private keyzInvalid key parameter)rx   r±   rÝ   rÞ   ræ   rŠ   r   rü   r   r0   Úfrom_public_bytesr.   r/   Úfrom_private_bytesr-   r  r‚  r9   rƒ  r<   )r§   ró   rB  rV  r   r  Úerrs          rm   r¨   zOKPAlgorithm.from_jwk6  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ús0   ‚?E= Â3F ÃF Ã&BF Å=FÆ	F0ÆF+Æ+F0N)rl  r   r«   r¬   )rŒ   zAllowedOKPKeys | str | bytesr«   rF   )r˜   r  rŒ   z#Ed25519PrivateKey | Ed448PrivateKeyr«   r}   )r˜   r  rŒ   rF   rœ   r  r«   r­   )rŒ   rF   r¡   r®   r«   r   r¯   )rŒ   rF   r¡   r°   r«   r±   )rŒ   rF   r¡   r­   r«   r²   )r§   r³   r«   rF   )r†   rµ   r¶   r·   r   r=  ry   rG   r   r   r/   r0   r-   r.   rr   rÆ   r”   r™   r�   r   r¹   r¢   r¨   r’   ro   rm   rk   rk   «  sì   „ ñ	ñ !Ø�$�{Ñ# SÐ(Ñ)ÙØØ%Ø$Ø#Ø"ð$ñóó

Ðó	ó	6ð,	Ø"ð	Ø)Lð	àó	ð	Ø"ð	Ø)7ð	Ø>Ið	àó	ð4 
Ø	ÚOó 
ó 
àOà	Ø	ÛTó 
ó 
àTà	ó,	Aó 
ð,	Að\ 
ò*	Hó 
ñ*	Hro   rk   )r«   zdict[str, Algorithm])lÚ
__future__r   r  r  rÝ   ÚosÚsysÚabcr   r   Útypingr   r   r   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/   r0   Ú-cryptography.hazmat.primitives.asymmetric.rsar1   r2   r3   r4   r5   r6   r7   r8   Ú,cryptography.hazmat.primitives.serializationr9   r:   r;   r<   r=   r>   r?   r@   Úversion_inforC   Útyping_extensionsrD   r¸   rE   rF   rG   rH   rI   r­   ÚgetenvÚ/cryptography.hazmat.primitives.asymmetric.typesrL   rM   rf   ÚModuleNotFoundErrorrO   Úrequires_cryptographyrn   rq   ra   rb   rh   ri   rj   rk   r’   ro   rm   Ú<module>r¡     s5  ðÞ "ã Û Û Û 	Û 
ß #÷
÷ 
õ 
õ (ß '÷
÷ 
õ 
ðXÝ!ßNÝ<Ý5ÝA÷÷ ÷ ÷÷÷	÷ 	ó 	÷	÷ 	ó 	ð ×Ñ˜7Ò"Þ$õ 	0ð !& m°\Ð&AÑ B€N�IÓBØ$Ð%<Ð>TÐ%TÑU€M�9ÓUØ %ØÐ+¨_¸nÐLñ!€N�Ió ð # >°=À.Ð#PÑQ€K�ÓQà$)ØÐ.Ð0AÀ?ÐRñ%Ð˜	ó ð $)ØÐ,Ð.>ÀÐNñ$Ð�yó ñ ™˜Y˜RŸY™Y ~°rÓ:Ô;÷	
ð
 €Jò Ð ó ôDi�ô iôX$�Iô $ô<w=�Iô w=ñt ô}�yô }ô~U�iô Uôn˜,ô ô>vH�yõ vHðo øðK ò Ø
×Ñ˜7Ò"Þ å+à€NØ€MØ€NØ€KØÐØÐØ‚Jðús   ÁD F8 Æ8/G*Ç)G*