ó
    &ÝNj  ã                   óŠ   • S SK Jr  S SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJrJrJr  S SKJrJr  S SKJr   " S	 S
\5      rg)é    )ÚUnionN)Údefault_backend)ÚCipher)ÚMessage)ÚOPENSSH_AUTH_MAGICÚPKeyÚ_unpad_openssh)ÚPasswordRequiredExceptionÚSSHException)Úbc                   ó¶   • \ rS rSrSrSr SS jrS rS r\	S 5       r
S	 rS
 rS rS r\	S\\R"                  R$                  S4   4S j5       rSS jrS rSrg)Ú
Ed25519Keyé   zø
Representation of an `Ed25519 <https://ed25519.cr.yp.to/>`_ key.

.. note::
    Ed25519 key support was added to OpenSSH in version 6.5.

.. versionadded:: 2.2
.. versionchanged:: 2.3
    Added a ``file_obj`` parameter to match other key classes.
zssh-ed25519Nc                 ó2  • S U l         Su  U l        U l        Uc  Ub  [        U5      nUbN  U R	                  UU R
                  SS9  [        R                  R                  UR                  5       5      U l        ODUb*  [        US5       nU R                  SU5      u  prS S S 5        OUb  U R                  SU5      u  prU(       d  U(       a  U R                  X$5      U l        U R                  c  U R                  c  [        S5      eg g ! , (       d  f       NY= f)N)NNz ssh-ed25519-cert-v01@openssh.com)ÚmsgÚkey_typeÚ	cert_typeÚrÚOPENSSHz
need a key)Úpublic_blobÚ_verifying_keyÚ_signing_keyr   Ú_check_type_and_load_certÚnameÚnaclÚsigningÚ	VerifyKeyÚ
get_binaryÚopenÚ_read_private_keyÚ_parse_signing_key_dataÚ
ValueError)Úselfr   ÚdataÚfilenameÚpasswordÚfile_objÚfÚpkformats           ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/paramiko/ed25519key.pyÚ__init__ÚEd25519Key.__init__,   s  € ð  ˆÔØ1;Ñ.ˆÔ˜TÔ.Ø‰;˜4Ñ+Ü˜$“-ˆCØ‰?Ø×*Ñ*ØØŸ™Ø<ð +ñ ô
 #'§,¡,×"8Ñ"8¸¿¹Ó9IÓ"JˆDÕØÑ!Ü�h Ô$¨Ø!%×!7Ñ!7¸	À1Ó!E‘�÷ %Ð$àÑ!Ø!×3Ñ3°I¸xÓH‰NˆHæ–xØ $× <Ñ <¸TÓ LˆDÔà×ÑÑ$¨×)<Ñ)<Ñ)DÜ˜\Ó*Ð*ð *EÐ$÷ %Õ$ús   ÂDÄ
Dc                 óâ  • SSK Jn  [        U5      nUR                  [	        [
        5      5      [
        :w  a  [        S5      eUR                  5       nUR                  5       nUR                  5       nUR                  5       nUS:X  a  U(       d  US:w  a  [        S5      eOOUS:X  a>  U(       d  [        S5      e[        U5      n	U	R                  5       n
U	R                  5       nO[        S5      eUS:w  a  XSR                  ;  a  [        S5      e/ n[        U5       Hd  n[        UR                  5       5      nUR                  5       U R                  :w  a  [        S5      eUR                  UR                  5       5        Mf     UR                  5       nUS:X  a  UnOšUR                  U   n[        R                   " [#        U5      W
US   US   -   WS	S
9n[%        US   " US US    5      US   " UUS   S  5      ['        5       S9R)                  5       nUR+                  U5      UR-                  5       -   n[        [/        U5      5      nUR                  5       UR                  5       :w  a  [        S5      e/ n[        U5       HÇ  nUR                  5       U R                  :w  a  [        S5      eUR                  5       nUR                  5       n[0        R2                  R5                  US S 5      nUR6                  R9                  5       Us=:X  a  UU   s=:X  a  USS  :X  d    e   eUR                  U5        UR                  5         MÉ     [	        U5      S:w  a  [        S5      eUS   $ )Nr   )Ú	TransportzInvalid keyÚnoneÚbcryptzPrivate key file is encryptedzkey-sizez
block-sizeT)r&   ÚsaltÚdesired_key_bytesÚroundsÚignore_few_roundsÚclassÚmode)Úbackendé    é   )Úparamiko.transportr.   r   Ú	get_bytesÚlenr   r   Úget_textr   Úget_intr
   Ú_cipher_infoÚranger   Úappendr0   Úkdfr   r   r   Ú	decryptorÚupdateÚfinalizer	   r   r   Ú
SigningKeyÚ
verify_keyÚencode)r#   r$   r&   r.   ÚmessageÚ
ciphernameÚkdfnameÚ
kdfoptionsÚnum_keysrB   Úbcrypt_saltÚbcrypt_roundsÚpublic_keysÚ_ÚpubkeyÚprivate_ciphertextÚprivate_dataÚcipherÚkeyrC   Úsigning_keysÚiÚpublicÚkey_dataÚsigning_keys                            r*   r!   Ú"Ed25519Key._parse_signing_key_dataF   sN  € Ý0ô ˜$“-ˆØ×ÑœSÔ!3Ó4Ó5Ô9KÓKÜ˜}Ó-Ð-à×%Ñ%Ó'ˆ
Ø×"Ñ"Ó$ˆØ×'Ñ'Ó)ˆ
Ø—?‘?Ó$ˆà�fÓö ˜Z¨6Ó1Ü" =Ó1Ð1ð 2à˜Ó ÞÜ/Ø3óð ô ˜*Ó%ˆCØŸ.™.Ó*ˆKØŸK™K›M‰Mä˜}Ó-Ð-à˜Ó J×6LÑ6LÓ$LÜ˜}Ó-Ð-àˆÜ�x–ˆAÜ˜W×/Ñ/Ó1Ó2ˆFØ�‰Ó  D§I¡IÓ-Ü" =Ó1Ð1Ø×Ñ˜v×0Ñ0Ó2Ö3ñ	 !ð %×/Ñ/Ó1ÐØ˜ÓØ-‰Là×+Ñ+¨JÑ7ˆFÜ—*’*Ü˜8›Ø Ø"(¨Ñ"4°v¸lÑ7KÑ"KØ$ð #'ñˆCô Ø�w’ Ð$8 f¨ZÑ&8Ð 9Ó:Ø�v’˜s 6¨*Ñ#5Ð#7Ð8Ó9Ü'Ó)ñ÷ ‰i‹kð	 ð × Ñ Ð!3Ó4°y×7IÑ7IÓ7KÑKð ô œ.¨Ó6Ó7ˆØ�?‰?Ó §¡Ó 1Ó1Ü˜}Ó-Ð-àˆÜ�x–ˆAØ×ÑÓ! T§Y¡YÓ.Ü" =Ó1Ð1à×'Ñ'Ó)ˆFØ×)Ñ)Ó+ˆHô Ÿ,™,×1Ñ1°(¸3¸B°-Ó@ˆKð ×&Ñ&×-Ñ-Ó/Øõ!à˜q‘>õ!ð ˜B˜C�=ô!ðñ!ðð!ð
 ×Ñ Ô,à×ÑÖ ñ% !ô( ˆ|Ó Ó!Ü˜}Ó-Ð-Ø˜A‰Ðó    c                 óÐ   • U R                   nUb  UR                  5       OSn[        5       nUR                  U R                  5        UR                  U5        UR                  5       $ )Nr]   )Úverifying_keyrH   r   Ú
add_stringr   Úasbytes)r#   ÚvÚmy_bytesÚms       r*   ra   ÚEd25519Key.asbytes¦   sM   € Ø×Ñˆà!"¡�1—8‘8”:°CˆÜ‹IˆØ	�‰�T—Y‘YÔØ	�‰�XÔØ�y‰y‹{Ðr]   c                 ó:   • U R                  5       U R                  4$ ©N)Úget_namer_   ©r#   s    r*   Ú_fieldsÚEd25519Key._fields¯   s   € à—‘“ ×!3Ñ!3Ð4Ð4r]   c                 ó   • U R                   $ rg   )r   ri   s    r*   rh   ÚEd25519Key.get_name´   s   € Ø�y‰yÐr]   c                 ó   • g)Né   © ri   s    r*   Úget_bitsÚEd25519Key.get_bits·   s   € Ør]   c                 ó   • U R                   S L$ rg   )r   ri   s    r*   Úcan_signÚEd25519Key.can_signº   s   € Ø× Ñ ¨Ð,Ð,r]   c                 ó   • U R                   S L$ rg   )r   ri   s    r*   Ú
can_verifyÚEd25519Key.can_verify½   s   € Ø×"Ñ"¨$Ð.Ð.r]   Úreturnc                 óœ   • U R                  5       (       a  U R                  R                  $ U R                  5       (       a  U R                  $ g rg   )rt   r   rG   rw   r   ri   s    r*   r_   ÚEd25519Key.verifying_keyÀ   s;   € à�=‰=�?‰?Ø×$Ñ$×/Ñ/Ð/Ø�_‰_×ÑØ×&Ñ&Ð&Ør]   c                 ó¸   • [        5       nUR                  U R                  5        UR                  U R                  R	                  U5      R
                  5        U$ rg   )r   r`   r   r   ÚsignÚ	signature)r#   r$   Ú	algorithmrd   s       r*   Úsign_ssh_dataÚEd25519Key.sign_ssh_dataÈ   sA   € Ü‹IˆØ	�‰�T—Y‘YÔØ	�‰�T×&Ñ&×+Ñ+¨DÓ1×;Ñ;Ô<Øˆr]   c                 óÞ   • UR                  5       U R                  :w  a  g U R                  R                  XR	                  5       5        g! [
        R                  R                   a     gf = f)NFT)r=   r   r   Úverifyr   r   Ú
exceptionsÚBadSignatureError)r#   r$   r   s      r*   Úverify_ssh_sigÚEd25519Key.verify_ssh_sigÎ   sZ   € Ø�<‰<‹>˜TŸY™YÓ&Øð	Ø×Ñ×&Ñ& t¯^©^Ó-=Ô>ð øô �‰×0Ñ0ó 	Ùð	ús   ¡)A ÁA,Á+A,)r   r   r   )NNNNNrg   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r+   r!   ra   Úpropertyrj   rh   rq   rt   rw   r   r   r   r   r_   r€   r†   Ú__static_attributes__rp   r]   r*   r   r      s‡   † ñ	ð €Dð KOô+ò4^ò@ð ñ5ó ð5òòò-ò/ð ð˜u T§\¡\×%;Ñ%;¸TÐ%AÑBó ó ðôõ	r]   r   )Útypingr   r0   Únacl.signingr   Úcryptography.hazmat.backendsr   Ú&cryptography.hazmat.primitives.ciphersr   Úparamiko.messager   Úparamiko.pkeyr   r   r	   Úparamiko.ssh_exceptionr
   r   Úparamiko.utilr   r   rp   r]   r*   Ú<module>r—      s3   ðõ" ã Û Ý 8Ý 9å $ß BÑ Bß JÝ ôy�õ yr]   