§
    cÒ³gô  ã                  ó¶  — d dl mZ d dlZd dlZd dlZd dl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)Ú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dS )ÚRSAPrivateKeyÚ
ciphertextÚbytesÚpaddingr   Úreturnc                ó   — dS )z3
        Decrypts the provided ciphertext.
        N© )Úselfr   r   s      úk/var/www/html/mpstechhub/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ú+asym_utils.Prehashed | hashes.HashAlgorithmc                ó   — 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_numbers1   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_bytes7   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   )Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   Úpropertyr   r   r#   r&   r/   r   r   r   r   r      sô   € € € € € ØÔðð ð ñ Ôðð
 ØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð 	Ôðð ð ñ Ôðð
 	Ôðð ð ñ Ôðð ð r   r   )Ú	metaclassc                  ó  — 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dS )$r   Ú	plaintextr   r   r   r   c                ó   — dS )z/
        Encrypts the given plaintext.
        Nr   )r   r9   r   s      r   ÚencryptzRSAPublicKey.encryptH   r   r   r   c                ó   — dS r   r   r   s    r   r   zRSAPublicKey.key_sizeN   r   r   ÚRSAPublicNumbersc                ó   — dS )z-
        Returns an RSAPublicNumbers
        Nr   r   s    r   Úpublic_numberszRSAPublicKey.public_numbersU   r   r   r'   r(   r)   ú_serialization.PublicFormatc                ó   — dS r.   r   )r   r'   r)   s      r   Úpublic_byteszRSAPublicKey.public_bytes[   r   r   Ú	signaturer   r    r!   ÚNonec                ó   — dS )z5
        Verifies the signature of the data.
        Nr   )r   rC   r   r   r    s        r   ÚverifyzRSAPublicKey.verifye   r   r   úhashes.HashAlgorithm | Nonec                ó   — dS )z@
        Recovers the original data from the signature.
        Nr   )r   rC   r   r    s       r   Úrecover_data_from_signaturez(RSAPublicKey.recover_data_from_signatureq   r   r   ÚotherÚobjectÚboolc                ó   — dS )z"
        Checks equality.
        Nr   )r   rJ   s     r   Ú__eq__zRSAPublicKey.__eq__|   r   r   N)r9   r   r   r   r   r   r0   )r   r=   )r'   r(   r)   r@   r   r   )
rC   r   r   r   r   r   r    r!   r   rD   )rC   r   r   r   r    rG   r   r   )rJ   rK   r   rL   )r1   r2   r3   r4   r5   r;   r6   r   r?   rB   rF   rI   rN   r   r   r   r   r   G   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)rO   r   rP   s      r   rW   rW   Š   s-   € õ
 ˜?¨HÑ5Ô5Ð5ÝÔ×0Ò0°À(ÑKÔKÐKr   rD   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)rO   r   s     r   rT   rT   “   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)	r[   r\   Úx1Úx2ÚaÚbÚqÚrÚxns	            r   Ú_modinvrg   ž   sh   € ð �F€BˆØˆa€q€AØ
ˆaŠ%ˆ%Ý�a˜‰|Œ|‰ˆˆ1Ø�!�b‘&‰[ˆØ˜!˜R �|‰ˆˆ1ˆb�"ð ˆaŠ%ˆ%ð �‰6€Mr   Úprd   c                ó"   — t          || ¦  «        S )zF
    Compute the CRT (q ** -1) % p value from RSA primes p and q.
    )rg   )rh   rd   s     r   Úrsa_crt_iqmprj   «   s   € õ �1�a‰=Œ=Ðr   Úprivate_exponentc                ó   — | |dz
  z  S )zg
    Compute the CRT private_exponent % (p - 1) value from the RSA
    private_exponent (d) and p.
    r^   r   )rk   rh   s     r   Úrsa_crt_dmp1rm   ²   ó   € ð
 ˜q 1™uÑ%Ð%r   c                ó   — | |dz
  z  S )zg
    Compute the CRT private_exponent % (q - 1) value from the RSA
    private_exponent (d) and q.
    r^   r   )rk   rd   s     r   Úrsa_crt_dmq1rp   º   rn   r   c                óf   — |dz
  |dz
  z  t          |dz
  |dz
  ¦  «        z  }t          | |¦  «        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.
    r^   )r   rg   )r[   rh   rd   Úlambda_ns       r   Úrsa_recover_private_exponentrs   Â   s=   € ð" �A‘˜!˜a™%Ñ ¥C¨¨A©¨q°1©uÑ$5Ô$5Ñ5€HÝ�1�hÑÔÐr   iô  ÚnÚdútuple[int, int]c                óP  — 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.
    é   zn, d, e don't matchr^   é   r   FTz2Unable to compute factors p and q from exponent d.)Úreverse)ÚpowrZ   Ú_MAX_RECOVERY_ATTEMPTSÚrandomÚrandintr   r_   Úsorted)rt   r[   ru   ÚktotÚtÚspottedÚtriesrb   ÚkÚcandrh   rd   re   s                r   Úrsa_recover_prime_factorsr†   Ü   s‹  € ð 
�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   rS   )rO   r   r   r   rP   rQ   r   r   )rO   r   r   r   r   rD   )r[   r   r\   r   r   r   )rh   r   rd   r   r   r   )rk   r   rh   r   r   r   )rk   r   rd   r   r   r   )r[   r   rh   r   rd   r   r   r   )rt   r   r[   r   ru   r   r   rv   )$Ú
__future__r   r4   r}   ÚtypingÚmathr   Ú"cryptography.hazmat.bindings._rustr   rU   Úcryptography.hazmat.primitivesr   r   Ú*cryptography.hazmat.primitives._asymmetricr   Ú)cryptography.hazmat.primitives.asymmetricr	   Ú
asym_utilsÚABCMetar   ÚRSAPrivateKeyWithSerializationÚregisterrV   r   ÚRSAPublicKeyWithSerializationr$   r=   rW   rT   rg   rj   rm   rp   rs   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ð .ñ .ô .ð .ðb "/Ð Ø × Ò �|Ô'Ô5Ñ 6Ô 6Ð 6ð9ð 9ð 9ð 9ð 9˜Sœ[ð 9ñ 9ô 9ð 9ðx !-Ð Ø × Ò �lÔ&Ô3Ñ 4Ô 4Ð 4à Ô$Ô6Ð ØÔ#Ô4Ð ð ðLð Lð Lð Lð LðAð Að Að Að
ð 
ð 
ð 
ðð ð ð ð&ð &ð &ð &ð&ð &ð &ð &ð ð  ð  ð  ð. Ð ð+ð +ð +ð +ð +ð +r   