§
    ¥”j,!  ã                  óº  — d dl m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
 d dlmZmZ d dlmZ d dlmZ  G d„ d	ej        ¬
¦  «        ZeZe                     e
j        j        ¦  «          G d„ dej        ¬
¦  «        ZeZe                     e
j        j        ¦  «         e
j        j        Ze
j        j        Z	 d%d&d„Zd'd„Zd(d„Zd)d„Zd*d„Z d+d„Z!d,d„Z"d Z#d-d$„Z$dS ).é    )ÚannotationsN)ÚgcdÚlcm)Úopenssl)Ú_serializationÚhashes)ÚAsymmetricPadding)Úutilsc                  ó.  — e Zd Zej        dd„¦   «         Zeej        dd„¦   «         ¦   «         Zej        dd
„¦   «         Zej        d d„¦   «         Z	ej        d!d„¦   «         Z
ej        d"d„¦   «         Zej        d#d„¦   «         Zej        d$d„¦   «         ZdS )%ÚRSAPrivateKeyÚ
ciphertextÚbytesÚpaddingr	   Úreturnc                ó   — dS )z3
        Decrypts the provided ciphertext.
        N© )Úselfr   r   s      ú|/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.pyÚdecryptzRSAPrivateKey.decrypt   ó   € € € ó    Úintc                ó   — dS ©z7
        The bit length of the public modulus.
        Nr   ©r   s    r   Úkey_sizezRSAPrivateKey.key_size   r   r   ÚRSAPublicKeyc                ó   — dS )zD
        The RSAPublicKey associated with this private key.
        Nr   r   s    r   Ú
public_keyzRSAPrivateKey.public_key    r   r   ÚdataÚ	algorithmúEasym_utils.Prehashed | hashes.HashAlgorithm | asym_utils.NoDigestInfoc                ó   — dS )z!
        Signs the data.
        Nr   )r   r    r   r!   s       r   ÚsignzRSAPrivateKey.sign&   r   r   ÚRSAPrivateNumbersc                ó   — dS )z/
        Returns an RSAPrivateNumbers.
        Nr   r   s    r   Úprivate_numberszRSAPrivateKey.private_numbers3   r   r   Úencodingú_serialization.EncodingÚformatú_serialization.PrivateFormatÚencryption_algorithmú)_serialization.KeySerializationEncryptionc                ó   — dS ©z6
        Returns the key serialized as bytes.
        Nr   )r   r(   r*   r,   s       r   Úprivate_byteszRSAPrivateKey.private_bytes9   r   r   c                ó   — dS ©z!
        Returns a copy.
        Nr   r   s    r   Ú__copy__zRSAPrivateKey.__copy__D   r   r   ÚmemoÚdictc                ó   — dS ©z&
        Returns a deep copy.
        Nr   ©r   r4   s     r   Ú__deepcopy__zRSAPrivateKey.__deepcopy__J   r   r   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   )r4   r5   r   r   )Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   Úpropertyr   r   r$   r'   r0   r3   r9   r   r   r   r   r      s<  € € € € € ØÔðð ð ñ Ôðð
 ØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð
 	Ôð
ð 
ð 
ñ Ôð
ð 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ð r   r   )Ú	metaclassc                  óP  — e Zd Zej        d!d„¦   «         Zeej        d"d„¦   «         ¦   «         Zej        d#d
„¦   «         Zej        d$d„¦   «         Z	ej        d%d„¦   «         Z
ej        d&d„¦   «         Zej        d'd„¦   «         Zej        d(d„¦   «         Zej        d)d„¦   «         Zd S )*r   Ú	plaintextr   r   r	   r   c                ó   — dS )z/
        Encrypts the given plaintext.
        Nr   )r   rD   r   s      r   ÚencryptzRSAPublicKey.encryptV   r   r   r   c                ó   — dS r   r   r   s    r   r   zRSAPublicKey.key_size\   r   r   ÚRSAPublicNumbersc                ó   — dS )z-
        Returns an RSAPublicNumbers
        Nr   r   s    r   Úpublic_numberszRSAPublicKey.public_numbersc   r   r   r(   r)   r*   ú_serialization.PublicFormatc                ó   — dS r/   r   )r   r(   r*   s      r   Úpublic_byteszRSAPublicKey.public_bytesi   r   r   Ú	signaturer    r!   ú+asym_utils.Prehashed | hashes.HashAlgorithmÚNonec                ó   — dS )z5
        Verifies the signature of the data.
        Nr   )r   rN   r    r   r!   s        r   ÚverifyzRSAPublicKey.verifys   r   r   ú5hashes.HashAlgorithm | asym_utils.NoDigestInfo | Nonec                ó   — dS )z@
        Recovers the original data from the signature.
        Nr   )r   rN   r   r!   s       r   Úrecover_data_from_signaturez(RSAPublicKey.recover_data_from_signature   r   r   ÚotherÚobjectÚboolc                ó   — dS )z"
        Checks equality.
        Nr   )r   rV   s     r   Ú__eq__zRSAPublicKey.__eq__Š   r   r   c                ó   — dS r2   r   r   s    r   r3   zRSAPublicKey.__copy__�   r   r   r4   r5   c                ó   — dS r7   r   r8   s     r   r9   zRSAPublicKey.__deepcopy__–   r   r   N)rD   r   r   r	   r   r   r:   )r   rH   )r(   r)   r*   rK   r   r   )
rN   r   r    r   r   r	   r!   rO   r   rP   )rN   r   r   r	   r!   rS   r   r   )rV   rW   r   rX   r;   )r4   r5   r   r   )r<   r=   r>   r?   r@   rF   rA   r   rJ   rM   rR   rU   rZ   r3   r9   r   r   r   r   r   U   s`  € € € € € ØÔðð ð ñ Ôðð
 ØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð 	Ôð	ð 	ð 	ñ Ôð	ð 	Ôðð ð ñ Ôðð 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ð r   r   Úpublic_exponentr   r   Úbackendú
typing.Anyr   c                ób   — t          | |¦  «         t          j                             | |¦  «        S ©N)Ú_verify_rsa_parametersÚrust_opensslÚrsaÚgenerate_private_key)r]   r   r^   s      r   re   re   ¤   s-   € õ
 ˜?¨HÑ5Ô5Ð5ÝÔ×0Ò0°À(ÑKÔKÐKr   rP   c                óV   — | dvrt          d¦  «        ‚|dk     rt          d¦  «        ‚d S )N)é   i  zopublic_exponent must be either 3 (for legacy compatibility) or 65537. Almost everyone should choose 65537 here!i   z$key_size must be at least 1024-bits.©Ú
ValueError)r]   r   s     r   rb   rb   ­   sE   € Ø˜jÐ(Ð(Ýð?ñ
ô 
ð 	
ð
 �$‚€ÝÐ?Ñ@Ô@Ð@ð €r   ÚeÚmc                ó‚   — d\  }}| |}}|dk    r,t          ||¦  «        \  }}|||z  z
  }||||f\  }}}}|dk    °,||z  S )zO
    Modular Multiplicative Inverse. Returns x such that: (x*e) mod m == 1
    )é   r   r   )Údivmod)	rj   rk   Úx1Úx2ÚaÚbÚqÚrÚxns	            r   Ú_modinvrv   ¸   sh   € ð �F€BˆØˆa€q€AØ
ˆaŠ%ˆ%Ý�a˜‰|Œ|‰ˆˆ1Ø�!�b‘&‰[ˆØ˜!˜R �|‰ˆˆ1ˆb�"ð ˆaŠ%ˆ%ð �‰6€Mr   Úprs   c                óX   — | dk    s|dk    rt          d¦  «        ‚t          || ¦  «        S )zF
    Compute the CRT (q ** -1) % p value from RSA primes p and q.
    rm   úValues can't be <= 1)ri   rv   )rw   rs   s     r   Úrsa_crt_iqmprz   Å   s2   € ð 	ˆA‚v€v��a’�ÝÐ/Ñ0Ô0Ð0Ý�1�a‰=Œ=Ðr   Úprivate_exponentc                óH   — | dk    s|dk    rt          d¦  «        ‚| |dz
  z  S )zg
    Compute the CRT private_exponent % (p - 1) value from the RSA
    private_exponent (d) and p.
    rm   ry   rh   )r{   rw   s     r   Úrsa_crt_dmp1r}   Î   ó5   € ð
 ˜1ÒÐ  Q¢ ÝÐ/Ñ0Ô0Ð0Ø˜q 1™uÑ%Ð%r   c                óH   — | dk    s|dk    rt          d¦  «        ‚| |dz
  z  S )zg
    Compute the CRT private_exponent % (q - 1) value from the RSA
    private_exponent (d) and q.
    rm   ry   rh   )r{   rs   s     r   Úrsa_crt_dmq1r€   Ø   r~   r   c                óŒ   — | dk    s|dk    s|dk    rt          d¦  «        ‚t          | t          |dz
  |dz
  ¦  «        ¦  «        S )zè
    Compute the RSA private_exponent (d) given the public exponent (e)
    and the RSA primes p and q.

    This uses the Carmichael totient function to generate the
    smallest possible working value of the private exponent.
    rm   ry   )ri   rv   r   )rj   rw   rs   s      r   Úrsa_recover_private_exponentr‚   â   sN   € ð 	ˆA‚v€v��a’�˜1 š6˜6ÝÐ/Ñ0Ô0Ð0Ý�1•c˜!˜a™%  Q¡Ñ'Ô'Ñ(Ô(Ð(r   iô  ÚnÚdútuple[int, int]c                ó†  — |dk    s|dk    rt          d¦  «        ‚dt          d||z  | ¦  «        k    rt          d¦  «        ‚||z  dz
  }|}|dz  dk    r|dz  }|dz  dk    °d}d}|s“|t          k     rˆt          j        d| dz
  ¦  «        }|dz  }|}||k     rVt          ||| ¦  «        }	|	dk    r4|	| dz
  k    r+t          |	d| ¦  «        dk    rt          |	dz   | ¦  «        }
d}n|dz  }||k     °V|s|t          k     °ˆ|st          d	¦  «        ‚t          | |
¦  «        \  }}|dk    sJ ‚t          |
|fd¬
¦  «        \  }
}|
|fS )z¡
    Compute factors p and q from the private exponent d. We assume that n has
    no more than two factors. This function is adapted from code in PyCrypto.
    rm   zd, e can't be <= 1é   zn, d, e don't matché   r   FTz2Unable to compute factors p and q from exponent d.)Úreverse)ri   ÚpowÚ_MAX_RECOVERY_ATTEMPTSÚrandomÚrandintr   rn   Úsorted)rƒ   rj   r„   ÚktotÚtÚspottedÚtriesrq   ÚkÚcandrw   rs   rt   s                r   Úrsa_recover_prime_factorsr•   ú   s«  € ð 	ˆA‚v€v��a’�ÝÐ-Ñ.Ô.Ð.Ø	�S��Q˜‘U˜AÑÔÒÐÝÐ.Ñ/Ô/Ð/àˆq‰5�1‰9€Dð 	€AØ
ˆa‰%�1Š*ˆ*Ø�‰Fˆð ˆa‰%�1Š*ˆ*ð €GØ€EØð ˜%Õ"8Ò8Ð8ÝŒN˜1˜a !™eÑ$Ô$ˆØ�‰
ˆØˆà�$ŠhˆhÝ�q˜!˜Q‘<”<ˆDà�qŠyˆy˜T a¨!¡eš_˜_µ°T¸1¸a±´ÀAÒ1EÐ1Eõ ˜˜q™ !Ñ$Ô$�Ø�ØØ�‰FˆAð �$Šhˆhð ð ˜%Õ"8Ò8Ð8ð ð OÝÐMÑNÔNÐNå�!�Q‰<Œ<�D€A€qØ�Š6ˆ6ˆ6ˆ6Ý�1�a�& $Ð'Ñ'Ô'�D€A€qØˆqˆ6€Mr   ra   )r]   r   r   r   r^   r_   r   r   )r]   r   r   r   r   rP   )rj   r   rk   r   r   r   )rw   r   rs   r   r   r   )r{   r   rw   r   r   r   )r{   r   rs   r   r   r   )rj   r   rw   r   rs   r   r   r   )rƒ   r   rj   r   r„   r   r   r…   )%Ú
__future__r   r?   rŒ   ÚtypingÚmathr   r   Ú"cryptography.hazmat.bindings._rustr   rc   Úcryptography.hazmat.primitivesr   r   Ú*cryptography.hazmat.primitives._asymmetricr	   Ú)cryptography.hazmat.primitives.asymmetricr
   Ú
asym_utilsÚABCMetar   ÚRSAPrivateKeyWithSerializationÚregisterrd   r   ÚRSAPublicKeyWithSerializationr%   rH   re   rb   rv   rz   r}   r€   r‚   r‹   r•   r   r   r   ú<module>r¢      s(  ðð
 #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð à FÐ FÐ FÐ FÐ FÐ FØ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ HÐ HÐ HÐ HÐ HÐ HØ IÐ IÐ IÐ IÐ IÐ Ið<ð <ð <ð <ð <˜cœkð <ñ <ô <ð <ð~ "/Ð Ø × Ò �|Ô'Ô5Ñ 6Ô 6Ð 6ðEð Eð Eð Eð E˜Sœ[ð Eñ Eô Eð EðP !-Ð Ø × Ò �lÔ&Ô3Ñ 4Ô 4Ð 4à Ô$Ô6Ð ØÔ#Ô4Ð ð ðLð Lð Lð Lð LðAð Að Að Að
ð 
ð 
ð 
ðð ð ð ð&ð &ð &ð &ð&ð &ð &ð &ð)ð )ð )ð )ð* Ð ð-ð -ð -ð -ð -ð -r   