§
    Âeîio   ã                  ó¶  — 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ej        d d„¦   «         ZdS )!ÚRSAPrivateKeyÚ
ciphertextÚbytesÚpaddingr   Úreturnc                ó   — dS )z3
        Decrypts the provided ciphertext.
        N© )Úselfr   r   s      úq/home/div/.hermes/hermes-agent/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   c                ó   — dS ©z!
        Returns a copy.
        Nr   r   s    r   Ú__copy__zRSAPrivateKey.__copy__B   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   )Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   Úpropertyr   r   r#   r&   r/   r2   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ej        d%d„¦   «         ZdS )&r   Ú	plaintextr   r   r   r   c                ó   — dS )z/
        Encrypts the given plaintext.
        Nr   )r   r=   r   s      r   ÚencryptzRSAPublicKey.encryptN   r   r   r   c                ó   — dS r   r   r   s    r   r   zRSAPublicKey.key_sizeT   r   r   ÚRSAPublicNumbersc                ó   — dS )z-
        Returns an RSAPublicNumbers
        Nr   r   s    r   Úpublic_numberszRSAPublicKey.public_numbers[   r   r   r'   r(   r)   ú_serialization.PublicFormatc                ó   — dS r.   r   )r   r'   r)   s      r   Úpublic_byteszRSAPublicKey.public_bytesa   r   r   Ú	signaturer   r    r!   ÚNonec                ó   — dS )z5
        Verifies the signature of the data.
        Nr   )r   rG   r   r   r    s        r   ÚverifyzRSAPublicKey.verifyk   r   r   úhashes.HashAlgorithm | Nonec                ó   — dS )z@
        Recovers the original data from the signature.
        Nr   )r   rG   r   r    s       r   Úrecover_data_from_signaturez(RSAPublicKey.recover_data_from_signaturew   r   r   ÚotherÚobjectÚboolc                ó   — dS )z"
        Checks equality.
        Nr   )r   rN   s     r   Ú__eq__zRSAPublicKey.__eq__‚   r   r   c                ó   — dS r1   r   r   s    r   r2   zRSAPublicKey.__copy__ˆ   r   r   N)r=   r   r   r   r   r   r3   )r   rA   )r'   r(   r)   rD   r   r   )
rG   r   r   r   r   r   r    r!   r   rH   )rG   r   r   r   r    rK   r   r   )rN   rO   r   rP   r4   )r5   r6   r7   r8   r9   r?   r:   r   rC   rF   rJ   rM   rR   r2   r   r   r   r   r   M   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)rT   r   rU   s      r   r\   r\   –   s-   € õ
 ˜?¨HÑ5Ô5Ð5ÝÔ×0Ò0°À(ÑKÔKÐKr   rH   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)rT   r   s     r   rY   rY   Ÿ   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)	ra   rb   Úx1Úx2ÚaÚbÚqÚrÚxns	            r   Ú_modinvrm   ª   sh   € ð �F€BˆØˆa€q€AØ
ˆaŠ%ˆ%Ý�a˜‰|Œ|‰ˆˆ1Ø�!�b‘&‰[ˆØ˜!˜R �|‰ˆˆ1ˆb�"ð ˆaŠ%ˆ%ð �‰6€Mr   Úprj   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.
    rd   úValues can't be <= 1)r`   rm   )rn   rj   s     r   Úrsa_crt_iqmprq   ·   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.
    rd   rp   r_   )rr   rn   s     r   Úrsa_crt_dmp1rt   À   ó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.
    rd   rp   r_   )rr   rj   s     r   Úrsa_crt_dmq1rw   Ê   ru   r   c                ó¨   — | dk    s|dk    s|dk    rt          d¦  «        ‚|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.
    rd   rp   )r`   r   rm   )ra   rn   rj   Úlambda_ns       r   Úrsa_recover_private_exponentrz   Ô   se   € ð" 	ˆA‚v€v��a’�˜1 š6˜6ÝÐ/Ñ0Ô0Ð0Ø�A‘˜!˜a™%Ñ ¥C¨¨A©¨q°1©uÑ$5Ô$5Ñ5€HÝ�1�hÑÔÐ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.
    rd   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)r`   ÚpowÚ_MAX_RECOVERY_ATTEMPTSÚrandomÚrandintr   re   Úsorted)r{   ra   r|   ÚktotÚtÚspottedÚtriesrh   ÚkÚcandrn   rj   rk   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   rX   )rT   r   r   r   rU   rV   r   r   )rT   r   r   r   r   rH   )ra   r   rb   r   r   r   )rn   r   rj   r   r   r   )rr   r   rn   r   r   r   )rr   r   rj   r   r   r   )ra   r   rn   r   rj   r   r   r   )r{   r   ra   r   r|   r   r   r}   )$Ú
__future__r   r8   r„   ÚtypingÚmathr   Ú"cryptography.hazmat.bindings._rustr   rZ   Úcryptography.hazmat.primitivesr   r   Ú*cryptography.hazmat.primitives._asymmetricr   Ú)cryptography.hazmat.primitives.asymmetricr	   Ú
asym_utilsÚABCMetar   ÚRSAPrivateKeyWithSerializationÚregisterr[   r   ÚRSAPublicKeyWithSerializationr$   rA   r\   rY   rm   rq   rt   rw   rz   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ð4ð 4ð 4ð 4ð 4˜cœkð 4ñ 4ô 4ð 4ðn "/Ð Ø × Ò �|Ô'Ô5Ñ 6Ô 6Ð 6ð?ð ?ð ?ð ?ð ?˜Sœ[ð ?ñ ?ô ?ð ?ðD !-Ð Ø × Ò �lÔ&Ô3Ñ 4Ô 4Ð 4à Ô$Ô6Ð ØÔ#Ô4Ð ð ðLð Lð Lð Lð LðAð Að Að Að
ð 
ð 
ð 
ðð ð ð ð&ð &ð &ð &ð&ð &ð &ð &ð ð  ð  ð  ð2 Ð ð-ð -ð -ð -ð -ð -r   