Ë
    zñ�jz  ã                   ó~   — d Z ddlmZmZ ddlmZ ddlmZmZ ddl	m
Z
mZ ddlmZ ddlmZ ddlmZ  G d	„ d
e«      Zy)z
RSA keys.
é    )ÚInvalidSignatureÚUnsupportedAlgorithm)Údefault_backend)ÚhashesÚserialization)ÚrsaÚpadding)ÚMessage)ÚPKey)ÚSSHExceptionc                   óR  — e Zd ZdZdZej                  ej                  ej                  ej                  ej                  ej                  dœZ		 	 	 	 	 	 dd„Z
ed„ «       Zed„ «       Zed„ «       Zd	„ Zd
„ Zed„ «       Zd„ Zd„ Zd„ Zdd„Zd„ Zdd„Zdd„Zedd„«       Zd„ Zd„ Zd„ Zy)ÚRSAKeyzZ
    Representation of an RSA key which can be used to sign and verify SSH2
    data.
    ússh-rsa)r   ússh-rsa-cert-v01@openssh.comzrsa-sha2-256z!rsa-sha2-256-cert-v01@openssh.comzrsa-sha2-512z!rsa-sha2-512-cert-v01@openssh.comNc                 ó€  — d | _         d | _        |�| j                  ||«       y |�| j                  ||«       y |€|�t	        |«      }|�|| _         y | j                  || j                  d¬«       t        j                  |j                  «       |j                  «       ¬«      j                  t        «       «      | _         y )Nr   )ÚmsgÚkey_typeÚ	cert_type©ÚeÚn)ÚkeyÚpublic_blobÚ_from_private_keyÚ_from_private_key_filer
   Ú_check_type_and_load_certÚnamer   ÚRSAPublicNumbersÚ	get_mpintÚ
public_keyr   )Úselfr   ÚdataÚfilenameÚpasswordr   Úfile_objs          úP/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/paramiko/rsakey.pyÚ__init__zRSAKey.__init__1   s»   € ð ˆŒØˆÔØÐØ×"Ñ" 8¨XÔ6ØØÐØ×'Ñ'¨°(Ô;ØØˆK˜dÐ.Ü˜$“-ˆCØˆ?ØˆD�Hà×*Ñ*Øð Ÿ™Ø8ð +ô ô ×+Ñ+Ø—-‘-“/ S§]¡]£_ôç‰jœÓ*Ó+ð �Hó    c                 óH   — t        | j                  j                  «       «      S ©N)ÚlistÚHASHESÚkeys)Úclss    r&   ÚidentifierszRSAKey.identifiersR   s   € ä�C—J‘J—O‘OÓ%Ó&Ð&r(   c                 ó.   — | j                   j                  S r*   )r   Úkey_size©r!   s    r&   ÚsizezRSAKey.sizeV   s   € à�x‰x× Ñ Ð r(   c                 óÆ   — t        | j                  t        j                  «      r$| j                  j	                  «       j
                  S | j                  j                  «       S r*   )Ú
isinstancer   r   ÚRSAPrivateKeyÚprivate_numbersÚpublic_numbersr2   s    r&   r8   zRSAKey.public_numbersZ   sB   € ä�d—h‘h¤× 1Ñ 1Ô2Ø—8‘8×+Ñ+Ó-×<Ñ<Ð<à—8‘8×*Ñ*Ó,Ð,r(   c                 ó   — t        «       }|j                  | j                  «       |j                  | j                  j
                  «       |j                  | j                  j                  «       |j                  «       S r*   )r
   Ú
add_stringr   Ú	add_mpintr8   r   r   Úasbytes)r!   Úms     r&   r<   zRSAKey.asbytesa   sU   € Ü‹IˆØ	�‰�T—Y‘YÔØ	�‰�D×'Ñ'×)Ñ)Ô*Ø	�‰�D×'Ñ'×)Ñ)Ô*Ø�y‰y‹{Ðr(   c                 óD   — | j                  «       j                  dd¬«      S )NÚutf8Úignore)Úerrors)r<   Údecoder2   s    r&   Ú__str__zRSAKey.__str__h   s    € ð �|‰|‹~×$Ñ$ V°HÐ$Ó=Ð=r(   c                 óx   — | j                  «       | j                  j                  | j                  j                  fS r*   )Úget_namer8   r   r   r2   s    r&   Ú_fieldszRSAKey._fieldsm   s-   € à—‘“ ×!4Ñ!4×!6Ñ!6¸×8KÑ8K×8MÑ8MÐNÐNr(   c                 ó   — | j                   S r*   )r   r2   s    r&   rE   zRSAKey.get_nameq   ó   € Ø�y‰yÐr(   c                 ó   — | j                   S r*   )r3   r2   s    r&   Úget_bitszRSAKey.get_bitst   rH   r(   c                 óJ   — t        | j                  t        j                  «      S r*   )r5   r   r   r6   r2   s    r&   Úcan_signzRSAKey.can_signw   s   € Ü˜$Ÿ(™(¤C×$5Ñ$5Ó6Ð6r(   c                 ó  — |€| j                   }| j                  j                  |t        j                  «        | j
                  |   «       ¬«      }t        «       }|j                  |j                  dd«      «       |j                  |«       |S )N)r	   Ú	algorithmz-cert-v01@openssh.comÚ )	r   r   Úsignr	   ÚPKCS1v15r,   r
   r:   Úreplace)r!   r"   rN   Úsigr=   s        r&   Úsign_ssh_datazRSAKey.sign_ssh_dataz   s~   € ØÐØŸ	™	ˆIØ�h‰h�m‰mØÜ×$Ñ$Ó&ð -�d—k‘k )Ñ,Ó.ð ó 
ˆô ‹Iˆà	�‰�Y×&Ñ&Ð'>ÀÓCÔDØ	�‰�SÔØˆr(   c                 óº  — |j                  «       }|| j                  vry| j                  }t        |t        j
                  «      r|j                  «       }|j                  «       }|j                  t        |«      dz  z
  }|dkD  rd|dz   dz  z  |z   }	 |j                  ||t        j                  «        | j                  |   «       «       y# t        $ r Y yw xY w)NFé   r   ó    é   T)Úget_textr,   r   r5   r   r6   r    Ú
get_binaryr1   ÚlenÚverifyr	   rQ   r   )r!   r"   r   Úsig_algorithmr   rP   Údiffs          r&   Úverify_ssh_sigzRSAKey.verify_ssh_sigŠ   sÎ   € ØŸ™›ˆØ §¡Ñ+ØØ�h‰hˆÜ�cœ3×,Ñ,Ô-Ø—.‘.Ó"ˆCð �~‰~ÓˆØ�|‰|œc $›i¨!™mÑ+ˆØ�!Š8Ø˜t a™x¨A™oÑ.°Ñ5ˆDð	Ø�J‰JØ�dœG×,Ñ,Ó.Ð0J°·±¸MÑ0JÓ0Lôð øô  ò 	Ùð	ús   Â8C Ã	CÃCc                 ór   — | j                  || j                  t        j                  j                  |¬«       y ©N)r$   )Ú_write_private_key_filer   r   ÚPrivateFormatÚTraditionalOpenSSL)r!   r#   r$   s      r&   Úwrite_private_key_filezRSAKey.write_private_key_file¢   s1   € Ø×$Ñ$ØØ�H‰HÜ×'Ñ'×:Ñ:Øð	 	%õ 	
r(   c                 ór   — | j                  || j                  t        j                  j                  |¬«       y ra   )Ú_write_private_keyr   r   rc   rd   )r!   r%   r$   s      r&   Úwrite_private_keyzRSAKey.write_private_keyª   s1   € Ø×ÑØØ�H‰HÜ×'Ñ'×:Ñ:Øð	 	 õ 	
r(   c                 óZ   — t        j                  d| t        «       ¬«      }t        |¬«      S )a$  
        Generate a new private RSA key.  This factory function can be used to
        generate a new host key or authentication key.

        :param int bits: number of bits the generated key should be.
        :param progress_func: Unused
        :return: new `.RSAKey` private key
        i  )Úpublic_exponentr1   Úbackend)r   )r   Úgenerate_private_keyr   r   )ÚbitsÚprogress_funcr   s      r&   ÚgeneratezRSAKey.generate²   s*   € ô ×&Ñ&Ø!¨D¼/Ó:Kô
ˆô ˜#ŒÐr(   c                 óL   — | j                  d||«      }| j                  |«       y ©NÚRSA)Ú_read_private_key_fileÚ_decode_key)r!   r#   r$   r"   s       r&   r   zRSAKey._from_private_key_fileÃ   s$   € Ø×*Ñ*¨5°(¸HÓEˆØ×Ñ˜Õr(   c                 óL   — | j                  d||«      }| j                  |«       y rq   )Ú_read_private_keyrt   )r!   r%   r$   r"   s       r&   r   zRSAKey._from_private_keyÇ   s$   € Ø×%Ñ% e¨X°xÓ@ˆØ×Ñ˜Õr(   c           	      ó6  — |\  }}|| j                   k(  r"	 t        j                  |d t        «       ¬«      }n�|| j                  k(  rp| j                  |d«      \  }}}}}}	t        j                  ||¬«      }
t        j                  ||	|||dz
  z  ||	dz
  z  ||
¬«      j                  t        «       «      }n| j                  |«       t!        t        j"                  «      sJ ‚|| _        y # t        t
        t        f$ r}t        t        |«      «      ‚d }~ww xY w)N)r$   rk   Úiiiiiir   é   )ÚpÚqÚdÚdmp1Údmq1Úiqmpr8   )Ú_PRIVATE_KEY_FORMAT_ORIGINALr   Úload_der_private_keyr   Ú
ValueErrorÚ	TypeErrorr   r   ÚstrÚ_PRIVATE_KEY_FORMAT_OPENSSHÚ_uint32_cstruct_unpackr   r   ÚRSAPrivateNumbersÚprivate_keyÚ_got_bad_key_format_idr5   r6   r   )r!   r"   Úpkformatr   r   r   r|   r   rz   r{   r8   s              r&   rt   zRSAKey._decode_keyË   s  € Ø‰ˆ�$Ø�t×8Ñ8Ò8ð+Ü#×8Ñ8Ø 4´Ó1Bô‘ð
 ˜×9Ñ9Ò9Ø"&×"=Ñ"=¸dÀHÓ"MÑˆAˆq�!�T˜1˜aÜ ×1Ñ1°A¸Ô;ˆNÜ×'Ñ'ØØØØ˜!˜a™%‘[Ø˜!˜a™%‘[ØØ-ô÷ ‰kœ/Ó+Ó,ñ ð ×'Ñ'¨Ô1Ü˜#œs×0Ñ0Ô1Ð1Ð1Øˆ�øô# ¤	Ô+?Ð@ò +Ü"¤3 q£6Ó*Ð*ûð+ús   – C+ Ã+DÃ?DÄD)NNNNNNr*   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚSHA1ÚSHA256ÚSHA512r,   r'   Úclassmethodr/   Úpropertyr3   r8   r<   rC   rF   rE   rJ   rL   rT   r_   re   rh   Ústaticmethodro   r   r   rt   © r(   r&   r   r   !   sû   „ ñð
 €Dà—;‘;Ø(.¯©ØŸ™Ø-3¯]©]ØŸ™Ø-3¯]©]ñ€Fð ØØØØØó,ðB ñ'ó ð'ð ñ!ó ð!ð ñ-ó ð-òò>ð
 ñOó ðOòòò7óò ó0
ó
ð òó ðò òór(   r   N)rŽ   Úcryptography.exceptionsr   r   Úcryptography.hazmat.backendsr   Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr   r	   Úparamiko.messager
   Úparamiko.pkeyr   Úparamiko.ssh_exceptionr   r   r•   r(   r&   ú<module>r�      s0   ðñ&÷ KÝ 8ß @ß Bå $Ý Ý /ôBˆTõ Br(   