
    _fe                       d dl mZ d dlZd dlZd dlmZ d dlmZ 	 dddZ	 G d d          Z
 G d d          Z G d d          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                    G d dej                  ZeZe                    ej        j                   dS )    )annotationsN)openssl)_serialization	generatorintkey_sizebackend
typing.AnyreturnDHParametersc                :    ddl m} |                    | |          S Nr   )r	   ),cryptography.hazmat.backends.openssl.backendr	   generate_dh_parameters)r   r   r	   ossls       ^/var/www/html/env/lib/python3.11/site-packages/cryptography/hazmat/primitives/asymmetric/dh.pygenerate_parametersr      s-     MLLLLL&&y(;;;    c                  r    e Zd Zddd	ZddZdddZedd            Zedd            Zedd            Z	dS )DHParameterNumbersNpr   gqtyping.Optional[int]r   Nonec                   t          |t                    rt          |t                    st          d          |$t          |t                    st          d          |dk     rt          d          |                                t
          j        j        k     r"t          dt
          j        j         d          || _        || _	        || _
        d S )Nzp and g must be integerszq must be integer or None   z!DH generator must be 2 or greaterzp (modulus) must be at least z-bit)
isinstancer   	TypeError
ValueError
bit_lengthrust_openssldhMIN_MODULUS_SIZE_p_g_q)selfr   r   r   s       r   __init__zDHParameterNumbers.__init__   s    !S!! 	8As);); 	86777=As!3!3=7888q55@AAA<<>>LO<<<:?3: : :  
 r   otherobjectboolc                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S N)r   r   NotImplementedr%   r&   r'   r(   r*   s     r   __eq__zDHParameterNumbers.__eq__*   sJ    %!344 	"!! GuxODGux$7ODGux<O	
r   r	   r
   r   c                8    ddl m} |                    |           S r   )r   r	   load_dh_parameter_numbersr(   r	   r   s      r   
parameterszDHParameterNumbers.parameters2   s6    	
 	
 	
 	
 	
 	
 --d333r   c                    | j         S r.   )r%   r(   s    r   r   zDHParameterNumbers.p9   	    wr   c                    | j         S r.   )r&   r7   s    r   r   zDHParameterNumbers.g=   r8   r   c                    | j         S r.   )r'   r7   s    r   r   zDHParameterNumbers.qA   r8   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__r)   r1   r5   propertyr   r   r    r   r   r   r      s            &
 
 
 
4 4 4 4 4    X    X    X  r   r   c                  X    e Zd ZddZddZdddZedd            Zedd            ZdS )DHPublicNumbersyr   parameter_numbersr   r   r   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        d S )Nzy must be an integer.z5parameters must be an instance of DHParameterNumbers.)r   r   r   r   _y_parameter_numbers)r(   rD   rE   s      r   r)   zDHPublicNumbers.__init__G   sc    !S!! 	53444+-?@@ 	G   "3r   r*   r+   r,   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r.   )r   rC   r/   rG   rH   r0   s     r   r1   zDHPublicNumbers.__eq__S   sA    %11 	"!! Gux D'5+CC	
r   Nr	   r
   DHPublicKeyc                8    ddl m} |                    |           S r   )r   r	   load_dh_public_numbersr4   s      r   
public_keyzDHPublicNumbers.public_key\   s6    	
 	
 	
 	
 	
 	
 **4000r   c                    | j         S r.   )rG   r7   s    r   rD   zDHPublicNumbers.yc   r8   r   c                    | j         S r.   )rH   r7   s    r   rE   z!DHPublicNumbers.parameter_numbersg   s    &&r   )rD   r   rE   r   r   r   r;   r.   )r	   r
   r   rJ   r<   r   r   )	r=   r>   r?   r)   r1   rM   r@   rD   rE   rA   r   r   rC   rC   F   s        
4 
4 
4 
4
 
 
 
1 1 1 1 1    X ' ' ' X' ' 'r   rC   c                  X    e Zd ZddZddZdddZedd            Zedd            ZdS )DHPrivateNumbersxr   public_numbersrC   r   r   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        d S )Nzx must be an integer.z6public_numbers must be an instance of DHPublicNumbers.)r   r   r   rC   _x_public_numbers)r(   rS   rT   s      r   r)   zDHPrivateNumbers.__init__m   sa    !S!! 	53444./:: 	K   -r   r*   r+   r,   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r.   )r   rR   r/   rV   rW   r0   s     r   r1   zDHPrivateNumbers.__eq__y   sA    %!122 	"!! Gux >$(==	
r   Nr	   r
   DHPrivateKeyc                8    ddl m} |                    |           S r   )r   r	   load_dh_private_numbersr4   s      r   private_keyzDHPrivateNumbers.private_key   s6    	
 	
 	
 	
 	
 	
 ++D111r   c                    | j         S r.   )rW   r7   s    r   rT   zDHPrivateNumbers.public_numbers   s    ##r   c                    | j         S r.   )rV   r7   s    r   rS   zDHPrivateNumbers.x   r8   r   )rS   r   rT   rC   r   r   r;   r.   )r	   r
   r   rY   r   rC   r<   )	r=   r>   r?   r)   r1   r\   r@   rT   rS   rA   r   r   rR   rR   l   s        
. 
. 
. 
.
 
 
 
2 2 2 2 2 $ $ $ X$    X  r   rR   c                  t    e Zd Zej        dd            Zej        dd	            Zej        dd            ZdS )r   r   rY   c                    dS )z7
        Generates and returns a DHPrivateKey.
        NrA   r7   s    r   generate_private_keyz!DHParameters.generate_private_key         r   encoding_serialization.Encodingformat_serialization.ParameterFormatbytesc                    dS )z=
        Returns the parameters serialized as bytes.
        NrA   r(   rd   rf   s      r   parameter_byteszDHParameters.parameter_bytes   rc   r   r   c                    dS )z/
        Returns a DHParameterNumbers.
        NrA   r7   s    r   rE   zDHParameters.parameter_numbers   rc   r   N)r   rY   )rd   re   rf   rg   r   rh   rP   )r=   r>   r?   abcabstractmethodrb   rk   rE   rA   r   r   r   r      s~           
 	    	     r   )	metaclassc                      e Z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 )rJ   r   r   c                    dS z6
        The bit length of the prime modulus.
        NrA   r7   s    r   r   zDHPublicKey.key_size   rc   r   r   c                    dS )zJ
        The DHParameters object associated with this public key.
        NrA   r7   s    r   r5   zDHPublicKey.parameters   rc   r   rC   c                    dS )z,
        Returns a DHPublicNumbers.
        NrA   r7   s    r   rT   zDHPublicKey.public_numbers   rc   r   rd   re   rf   _serialization.PublicFormatrh   c                    dS z6
        Returns the key serialized as bytes.
        NrA   rj   s      r   public_byteszDHPublicKey.public_bytes   rc   r   r*   r+   r,   c                    dS )z"
        Checks equality.
        NrA   r0   s     r   r1   zDHPublicKey.__eq__   rc   r   Nr<   r   r   r_   )rd   re   rf   ru   r   rh   r;   )r=   r>   r?   r@   rm   rn   r   r5   rT   rx   r1   rA   r   r   rJ   rJ      s            X
 	   
 	   
 	    	     r   rJ   c                      e Z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 )rY   r   r   c                    dS rr   rA   r7   s    r   r   zDHPrivateKey.key_size   rc   r   rJ   c                    dS )zC
        The DHPublicKey associated with this private key.
        NrA   r7   s    r   rM   zDHPrivateKey.public_key   rc   r   r   c                    dS )zK
        The DHParameters object associated with this private key.
        NrA   r7   s    r   r5   zDHPrivateKey.parameters   rc   r   peer_public_keyrh   c                    dS )zn
        Given peer's DHPublicKey, carry out the key exchange and
        return shared key as bytes.
        NrA   )r(   r   s     r   exchangezDHPrivateKey.exchange   rc   r   rR   c                    dS )z-
        Returns a DHPrivateNumbers.
        NrA   r7   s    r   private_numberszDHPrivateKey.private_numbers   rc   r   rd   re   rf   _serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                    dS rw   rA   )r(   rd   rf   r   s       r   private_byteszDHPrivateKey.private_bytes   rc   r   Nr<   )r   rJ   rz   )r   rJ   r   rh   )r   rR   )rd   re   rf   r   r   r   r   rh   )r=   r>   r?   r@   rm   rn   r   rM   r5   r   r   r   rA   r   r   rY   rY      s            X
 	   
 	   
 	    	   
 	     r   rY   r.   )r   r   r   r   r	   r
   r   r   )
__future__r   rm   typing"cryptography.hazmat.bindings._rustr   r"   cryptography.hazmat.primitivesr   r   r   rC   rR   ABCMetar   DHParametersWithSerializationregisterr#   rJ   DHPublicKeyWithSerializationrY   DHPrivateKeyWithSerializationrA   r   r   <module>r      s  
 # " " " " " 



  F F F F F F 9 9 9 9 9 9 :>< < < < <- - - - - - - -`#' #' #' #' #' #' #' #'L# # # # # # # #L    S[    0 !-    lo2 3 3 3" " " " "CK " " " "J  +    \_0 1 1 1* * * * *S[ * * * *Z !-    lo2 3 3 3 3 3r   