+
    šh©j…-  ã                   óÌ   € R t ^ RIHtHt ^ RIHt ^ RI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 ^ R
IHt  ! R R4      t ! R R4      t ! R R]4      tR# )z
ECDSA keys
)ÚInvalidSignatureÚUnsupportedAlgorithm)Údefault_backend)ÚhashesÚserialization)Úec)Údecode_dss_signatureÚencode_dss_signature)Ú	four_byte)ÚMessage)ÚPKey)ÚSSHException)Údeflate_longc                   ó*   a € ] tR t^'t o RtR tRtV tR# )Ú_ECDSACurvezØ
Represents a specific ECDSA Curve (nistp256, nistp384, etc).

Handles the generation of the key format identifier and the selection of
the proper hash function. Also grabs the proper curve from the 'ecdsa'
package.
c                ó6  € W n         VP                  V n        R V P                   ,           V n        V P                  R8:  d   \        P
                  V n        M<V P                  R8:  d   \        P                  V n        M\        P                  V n        Wn	        R# )úecdsa-sha2-é   i€  N)
Ú	nist_nameÚkey_sizeÚ
key_lengthÚkey_format_identifierr   ÚSHA256Úhash_objectÚSHA384ÚSHA512Úcurve_class)Úselfr   r   s   &&&ÚL/var/www/html/bestweb/venv/lib/python3.14/site-packages/paramiko/ecdsakey.pyÚ__init__Ú_ECDSACurve.__init__0   sk   € Ø"ŒØ%×.Ñ.ˆŒð &3°T·^±^Õ%CˆÔ"ð �?‰?˜cÔ!Ü%Ÿ}™}ˆDÕØ�_‰_ Ô#Ü%Ÿ}™}ˆDÕä%Ÿ}™}ˆDÔà&Öó    )r   r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   '   s   ø‡ € ñ÷'ð 'r!   r   c                   óB   a € ] tR t^Bt o RtR tR tR tR tR t	Rt
V tR# )	Ú_ECDSACurveSetz 
A collection to hold the ECDSA curves. Allows querying by oid and by key
format identifier. The two ways in which ECDSAKey needs to be able to look
up curves.
c                ó   € Wn         R # ©N©Úecdsa_curves)r   r0   s   &&r   r   Ú_ECDSACurveSet.__init__I   s   € Ø(Ör!   c                óV   € V P                    Uu. uF  qP                  NK  	  up# u upi r.   ©r0   r   )r   Úcurves   & r   Úget_key_format_identifier_listÚ-_ECDSACurveSet.get_key_format_identifier_listL   s&   € Ø9=×9JÒ9JÓKÑ9J°×+Ô+Ñ9JÑKÐKùÒKs   �&c                óV   € V P                    F  pVP                  V8X  g   K  Vu # 	  R # r.   )r0   r   )r   r   r4   s   && r   Úget_by_curve_classÚ!_ECDSACurveSet.get_by_curve_classO   s%   € Ø×&Ô&ˆEØ× Ñ  KÖ/Ø’ó 'r!   c                óV   € V P                    F  pVP                  V8X  g   K  Vu # 	  R # r.   r3   )r   r   r4   s   && r   Úget_by_key_format_identifierÚ+_ECDSACurveSet.get_by_key_format_identifierT   s&   € Ø×&Ô&ˆEØ×*Ñ*Ð.CÖCØ’ó 'r!   c                óV   € V P                    F  pVP                  V8X  g   K  Vu # 	  R # r.   )r0   r   )r   r   r4   s   && r   Úget_by_key_lengthÚ _ECDSACurveSet.get_by_key_lengthY   s%   € Ø×&Ô&ˆEØ×Ñ :Ö-Ø’ó 'r!   r/   N)r"   r#   r$   r%   r&   r   r5   r8   r;   r>   r'   r(   r)   s   @r   r,   r,   B   s)   ø‡ € ñò)òLòò
÷
ð r!   r,   c                   ór  a € ] tR t^_t o Rt]! ]! ]P                  R4      ]! ]P                  R4      ]! ]P                  R4      .4      tRR lt]R 4       t]R 4       tR	 tR
 t]R 4       tR tR tR tRR ltR tRR ltRR lt]]P                  ! 4       RR3R l4       tR tR tR tR tR t Rt!V t"R# )ÚECDSAKeyzP
Representation of an ECDSA key which can be used to sign and verify SSH2
data.
Únistp256Únistp384Únistp521Nc                ó  € R V n         R V n        R V n        Ve   V P                  Wd4       R # Ve   V P	                  W44       R # Vf   Ve   \        V4      pVeR   Vw  V n        V n         V P                  P                  P                  pV P                  P                  V4      V n
        R # VP                  4       p	Rp
V	P                  V
4      '       d   V	R \        V
4      )  p	V P                  P                  V	4      V n
        V P                  P                  4       pV Uu. uF  pRP!                  V4      NK  	  ppV P#                  WVR7       VP                  4       pWàP                  P$                  8w  d   \'        RP!                  V4      4      hVP)                  4       p \*        P,                  P/                  V P                  P1                  4       V4      pVV n         R # u upi   \2         d    \'        R4      hi ; i)Nz-cert-v01@openssh.comz{}-cert-v01@openssh.com)ÚmsgÚkey_typeÚ	cert_typezCan't handle curve of type {}zInvalid public key)Úverifying_keyÚsigning_keyÚpublic_blobÚ_from_private_keyÚ_from_private_key_filer   r4   Ú	__class__Ú_ECDSA_CURVESr8   Úecdsa_curveÚget_textÚendswithÚlenr;   r5   ÚformatÚ_check_type_and_load_certr   r   Ú
get_binaryr   ÚEllipticCurvePublicKeyÚfrom_encoded_pointr   Ú
ValueError)r   rF   ÚdataÚfilenameÚpasswordÚvalsÚfile_objÚvalidate_pointÚc_classrG   ÚsuffixÚ	key_typesÚxÚ
cert_typesÚ	curvenameÚ	pointinfoÚkeys   &&&&&&&&         r   r   ÚECDSAKey.__init__m   sñ  € ð "ˆÔØˆÔØˆÔØÒØ×"Ñ" 8Ô6ÙØÒØ×'Ñ'¨Ô;ÙØŠK˜dÒ.Ü˜$“-ˆCØÒØ37Ñ0ˆDÔ˜dÔ0Ø×&Ñ&×,Ñ,×6Ñ6ˆGØ#×1Ñ1×DÑDÀWÓMˆDÖð —|‘|“~ˆHð
 -ˆFØ× Ñ  ×(Ò(Ø# N¤s¨6£{ lÐ3�Ø#×1Ñ1×NÑNØó ˆDÔð ×*Ñ*×IÑIÓKˆIá=FóÙ=F¸Ð)×0Ñ0°Ö3¹Yð ð ð ×*Ñ*Ø°zð +ô ð Ÿ™›ˆIØ×,Ñ,×6Ñ6Ô6Ü"Ø3×:Ñ:¸9ÓEóð ð Ÿ™Ó(ˆIð9Ü×/Ñ/×BÑBØ×$Ñ$×0Ñ0Ó2°Ió�ð &)�Ö"ùò#øô$ ô 9Ü"Ð#7Ó8Ð8ð9ús   Ä"G'Æ&?G, Ç,Hc                ó6   € V P                   P                  4       # r.   )rO   r5   ©Úclss   &r   ÚidentifiersÚECDSAKey.identifiers«   s   € à× Ñ ×?Ñ?ÓAÐAr!   c                ó"   € V P                  4       # r.   )rl   rj   s   &r   Ú supported_key_format_identifiersÚ)ECDSAKey.supported_key_format_identifiers°   s   € à�‰Ó Ð r!   c                óp  € V P                   p\        4       pVP                  V P                  P                  4       VP                  V P                  P
                  4       VP                  4       pVP                  P                  ^,           ^,          p\        VP                  RR7      pRV\        V4      ,
          ,          V,           p\        VP                  RR7      pRV\        V4      ,
          ,          V,           p\        V,           V,           pVP                  V4       VP                  4       # )é   F)Úadd_sign_paddingó    )rI   r   Ú
add_stringrP   r   r   Úpublic_numbersr4   r   r   rc   rS   Úyr
   Úasbytes)r   rg   ÚmÚnumbersÚkey_size_bytesÚx_bytesÚy_bytesÚ	point_strs   &       r   rx   ÚECDSAKey.asbytes´   sâ   € Ø× Ñ ˆÜ‹IˆØ	�‰�T×%Ñ%×;Ñ;Ô<Ø	�‰�T×%Ñ%×/Ñ/Ô0à×$Ñ$Ó&ˆàŸ)™)×,Ñ,¨qÕ0°QÕ6ˆä˜wŸy™y¸5ÔAˆØ˜^¬c°'«lÕ:Õ;¸gÕEˆä˜wŸy™y¸5ÔAˆØ˜^¬c°'«lÕ:Õ;¸gÕEˆä Õ'¨'Õ1ˆ	Ø	�‰�YÔØ�y‰y‹{Ðr!   c                ó"   € V P                  4       # r.   )rx   ©r   s   &r   Ú__str__ÚECDSAKey.__str__È   s   € Ø�|‰|‹~Ðr!   c                ó°   € V P                  4       V P                  P                  4       P                  V P                  P                  4       P                  3# r.   )Úget_namerI   rv   rc   rw   r�   s   &r   Ú_fieldsÚECDSAKey._fieldsË   sG   € ð �M‰M‹OØ×Ñ×-Ñ-Ó/×1Ñ1Ø×Ñ×-Ñ-Ó/×1Ñ1ð
ð 	
r!   c                ó.   € V P                   P                  # r.   )rP   r   r�   s   &r   r…   ÚECDSAKey.get_nameÓ   s   € Ø×Ñ×5Ñ5Ð5r!   c                ó.   € V P                   P                  # r.   )rP   r   r�   s   &r   Úget_bitsÚECDSAKey.get_bitsÖ   s   € Ø×Ñ×*Ñ*Ð*r!   c                ó   € V P                   R J# r.   )rJ   r�   s   &r   Úcan_signÚECDSAKey.can_signÙ   s   € Ø×Ñ tÐ+Ð+r!   c                óP  € \         P                  ! V P                  P                  4       4      pV P                  P                  W4      p\        V4      w  rV\        4       pVP                  V P                  P                  4       VP                  V P                  WV4      4       V# r.   )r   ÚECDSArP   r   rJ   Úsignr   r   ru   r   Ú
_sigencode)r   rZ   Ú	algorithmÚecdsaÚsigÚrÚsry   s   &&&     r   Úsign_ssh_dataÚECDSAKey.sign_ssh_dataÜ   sz   € Ü—’˜×)Ñ)×5Ñ5Ó7Ó8ˆØ×Ñ×#Ñ# DÓ0ˆÜ# CÓ(‰ˆä‹IˆØ	�‰�T×%Ñ%×;Ñ;Ô<Ø	�‰�T—_‘_ QÓ*Ô+Øˆr!   c                ón  € VP                  4       V P                  P                  8w  d   R # VP                  4       pV P	                  V4      w  rE\        WE4      p V P                  P                  Wa\        P                  ! V P                  P                  4       4      4       R#   \         d     R # i ; i)FT)rQ   rP   r   rV   Ú
_sigdecoder	   rI   Úverifyr   r‘   r   r   )r   rZ   rF   r–   ÚsigRÚsigSÚ	signatures   &&&    r   Úverify_ssh_sigÚECDSAKey.verify_ssh_sigæ   s”   € Ø�<‰<‹>˜T×-Ñ-×CÑCÔCÙØ�n‰nÓˆØ—_‘_ SÓ)‰
ˆÜ(¨Ó4ˆ	ð	Ø×Ñ×%Ñ%Ø¤§¢¨$×*:Ñ*:×*FÑ*FÓ*HÓ!Iôñ øô  ô 	Úð	ús   ÁAB% Â%B4Â3B4c                ót   € V P                  VV P                  \        P                  P                  VR 7       R# ©)r\   N)Ú_write_private_key_filerJ   r   ÚPrivateFormatÚTraditionalOpenSSL)r   r[   r\   s   &&&r   Úwrite_private_key_fileÚECDSAKey.write_private_key_fileö   s3   € Ø×$Ñ$ØØ×ÑÜ×'Ñ'×:Ñ:Øð	 	%ö 	
r!   c                ót   € V P                  VV P                  \        P                  P                  VR 7       R# r¤   )Ú_write_private_keyrJ   r   r¦   r§   )r   r^   r\   s   &&&r   Úwrite_private_keyÚECDSAKey.write_private_keyþ   s3   € Ø×ÑØØ×ÑÜ×'Ñ'×:Ñ:Øð	 	 ö 	
r!   c                ó  € VeJ   V P                   P                  V4      pVf   \        RP                  V4      4      hVP	                  4       p\
        P                  ! V\        4       R7      p\        WDP                  4       3R7      # )zß
Generate a new private ECDSA key.  This factory function can be used to
generate a new host key or authentication key.

:param progress_func: Not used for this type of key.
:returns: A new private key (`.ECDSAKey`) object
zUnsupported key length: {:d})Úbackend)r]   )
rO   r>   rY   rT   r   r   Úgenerate_private_keyr   rA   Ú
public_key)rk   r4   Úprogress_funcÚbitsÚprivate_keys   &&&& r   ÚgenerateÚECDSAKey.generate  sv   € ð ÒØ×%Ñ%×7Ñ7¸Ó=ˆEØŠ}Ü Ð!?×!FÑ!FÀtÓ!LÓMÐMØ×%Ñ%Ó'ˆEä×-Ò-¨e¼_Ó=NÔOˆÜ˜k×+AÑ+AÓ+CÐDÔEÐEr!   c                óL   € V P                  R W4      pV P                  V4       R# ©ÚECN)Ú_read_private_key_fileÚ_decode_key)r   r[   r\   rZ   s   &&& r   rM   ÚECDSAKey._from_private_key_file  s"   € Ø×*Ñ*¨4°ÓDˆØ×Ñ˜Ör!   c                óL   € V P                  R W4      pV P                  V4       R# r¸   )Ú_read_private_keyr»   )r   r^   r\   rZ   s   &&& r   rL   ÚECDSAKey._from_private_key  s"   € Ø×%Ñ% d¨HÓ?ˆØ×Ñ˜Ör!   c                óX  € Vw  r!W P                   8X  d$    \        P                  ! VR \        4       R7      pMÂW P                  8X  d¢    \        V4      pVP                  4       pVP                  4       pVP                  4       pRV,           p	V P                  P!                  V	4      p
V
'       g   \        R4      h\"        P$                  ! WŠP'                  4       \        4       4      pMV P+                  V4       XV n        VP/                  4       V n        VP2                  P4                  pV P                  P7                  V4      V n        R #   \        \
        \        \        3 d   p\        \        T4      4      hR p?ii ; i  \(         d   p\        \        T4      4      hR p?ii ; i)N)r\   r¯   r   zInvalid key curve identifier)Ú_PRIVATE_KEY_FORMAT_ORIGINALr   Úload_der_private_keyr   rY   ÚAssertionErrorÚ	TypeErrorr   r   ÚstrÚ_PRIVATE_KEY_FORMAT_OPENSSHr   rQ   rV   Ú	get_mpintrO   r;   r   Úderive_private_keyr   Ú	ExceptionÚ_got_bad_key_format_idrJ   r±   rI   r4   rN   r8   rP   )r   rZ   Úpkformatrg   ÚerF   Ú
curve_nameÚverkeyÚsigkeyÚnamer4   r   s   &&          r   r»   ÚECDSAKey._decode_key"  sd  € Ø‰ˆØ×8Ñ8Ô8ð
+Ü#×8Ò8Ø 4´Ó1Bô‘ð ×9Ñ9Ô9ð+Ü˜d“m�Ø Ÿ\™\›^�
ØŸ™Ó)�ØŸ™›�Ø$ zÕ1�Ø×*Ñ*×GÑGÈÓM�ßÜ&Ð'EÓFÐFÜ×+Ò+Ø×-Ñ-Ó/´Ó1Bó‘ð ×'Ñ'¨Ô1àˆÔØ Ÿ^™^Ó-ˆÔØ—i‘i×)Ñ)ˆØ×-Ñ-×@Ñ@ÀÓMˆÖøô; ÜÜÜ$ð	ô +ô #¤3 q£6Ó*Ð*ûð+ûô( ô +ô #¤3 q£6Ó*Ð*ûð+ús0   –!E Á	BF ÅFÅ)E=Å=FÆF)ÆF$Æ$F)c                óz   € \        4       pVP                  V4       VP                  V4       VP                  4       # r.   )r   Ú	add_mpintrx   )r   r—   r˜   rF   s   &&& r   r“   ÚECDSAKey._sigencodeI  s-   € Ü‹iˆØ�‰�aÔØ�‰�aÔØ�{‰{‹}Ðr!   c                ó^   € \        V4      pVP                  4       pVP                  4       pW43# r.   )r   rÇ   )r   r–   rF   r—   r˜   s   &&   r   rœ   ÚECDSAKey._sigdecodeO  s(   € Ü�c‹lˆØ�M‰M‹OˆØ�M‰M‹OˆØˆtˆr!   )rP   rK   rJ   rI   )NNNNNNTr.   )#r"   r#   r$   r%   r&   r,   r   r   Ú	SECP256R1Ú	SECP384R1Ú	SECP521R1rO   r   Úclassmethodrl   ro   rx   r‚   Úpropertyr†   r…   r‹   rŽ   r™   r¡   r¨   r¬   rµ   rM   rL   r»   r“   rœ   r'   r(   r)   s   @r   rA   rA   _   sù   ø‡ € ññ
 #á˜Ÿ™ jÓ1Ù˜Ÿ™ jÓ1Ù˜Ÿ™ jÓ1ð	
ó€Mô<9ð| ñBó ðBð ñ!ó ð!òò(ð ñ
ó ð
ò6ò+ò,ôòô 
ô
ð ØŸLšL›N¸$ÀTó Fó ðFò&òò%NòN÷ð r!   rA   N)r&   Úcryptography.exceptionsr   r   Úcryptography.hazmat.backendsr   Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr   Ú/cryptography.hazmat.primitives.asymmetric.utilsr   r	   Úparamiko.commonr
   Úparamiko.messager   Úparamiko.pkeyr   Úparamiko.ssh_exceptionr   Úparamiko.utilr   r   r,   rA   © r!   r   Ú<module>rç      sQ   ðñ&÷ KÝ 8ß @Ý 8÷õ
 &Ý $Ý Ý /Ý &÷'ñ '÷6ñ ô:tˆtö tr!   