
     h              	          d dl Z d dlZd dlmZ dZ	 ddededej        ddfd	Z G d
 d          Z G d d          Z	 G d d          Z
 G d de j                  ZeZ G d de j                  ZeZ G d de j                  ZeZdS )    N)_serializationi   	generatorkey_sizebackendreturnDHParametersc                 :    ddl m} |                    | |          S Nr   )r   ),cryptography.hazmat.backends.openssl.backendr   generate_dh_parameters)r   r   r   ossls       h/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/asymmetric/dh.pygenerate_parametersr      s-     MLLLLL&&y(;;;    c            	           e Zd Zddededej        e         ddfdZdedefdZ	dd	ej
        dd
fdZedefd            Zedefd            Zedej        e         fd            ZdS )DHParameterNumbersNpgqr   c                    t          |t                    rt          |t                    st          d          |$t          |t                    st          d          |dk     rt          d          |                                t
          k     rt          dt
           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)	
isinstanceint	TypeError
ValueError
bit_length_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<<>>---G0AGGG   r   otherc                     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   c                 8    ddl m} |                    |           S r
   )r   r   load_dh_parameter_numbersr!   r   r   s      r   
parameterszDHParameterNumbers.parameters1   s6    	
 	
 	
 	
 	
 	
 --d333r   c                     | j         S r%   )r   r!   s    r   r   zDHParameterNumbers.p8   	    wr   c                     | j         S r%   )r   r.   s    r   r   zDHParameterNumbers.g<   r/   r   c                     | j         S r%   )r    r.   s    r   r   zDHParameterNumbers.q@   r/   r   r%   )__name__
__module____qualname__r   typingOptionalr"   objectboolr(   Anyr,   propertyr   r   r    r   r   r   r      s        # # &/#*> $    $
F 
t 
 
 
 
4 4&* 4 4 4 4 4 3    X 3    X 6?3'    X  r   r   c                       e Zd ZdededdfdZdedefdZdde	j
        dd	fd
Zedefd            Zedefd            ZdS )DHPublicNumbersyparameter_numbersr   Nc                     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!   r>   r?   s      r   r"   zDHPublicNumbers.__init__F   sc    !S!! 	53444+-?@@ 	G   "3r   r#   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r   r=   r&   rA   rB   r'   s     r   r(   zDHPublicNumbers.__eq__R   sA    %11 	"!! Gux D'5+CC	
r   r   DHPublicKeyc                 8    ddl m} |                    |           S r
   )r   r   load_dh_public_numbersr+   s      r   
public_keyzDHPublicNumbers.public_key[   s6    	
 	
 	
 	
 	
 	
 **4000r   c                     | j         S r%   )rA   r.   s    r   r>   zDHPublicNumbers.yb   r/   r   c                     | j         S r%   )rB   r.   s    r   r?   z!DHPublicNumbers.parameter_numbersf   s    &&r   r%   )r2   r3   r4   r   r   r"   r7   r8   r(   r5   r9   rG   r:   r>   r?   r;   r   r   r=   r=   E   s        
4# 
42D 
4 
4 
4 
4 
4
F 
t 
 
 
 
1 1&* 1 1 1 1 1 3    X '#5 ' ' ' X' ' 'r   r=   c                       e Zd ZdededdfdZdedefdZdde	j
        dd	fd
Zedefd            Zedefd            ZdS )DHPrivateNumbersxpublic_numbersr   Nc                     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   r=   _x_public_numbers)r!   rL   rM   s      r   r"   zDHPrivateNumbers.__init__l   sa    !S!! 	53444./:: 	K   -r   r#   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r%   )r   rK   r&   rO   rP   r'   s     r   r(   zDHPrivateNumbers.__eq__x   sA    %!122 	"!! Gux >$(==	
r   r   DHPrivateKeyc                 8    ddl m} |                    |           S r
   )r   r   load_dh_private_numbersr+   s      r   private_keyzDHPrivateNumbers.private_key   s6    	
 	
 	
 	
 	
 	
 ++D111r   c                     | j         S r%   )rP   r.   s    r   rM   zDHPrivateNumbers.public_numbers   s    ##r   c                     | j         S r%   )rO   r.   s    r   rL   zDHPrivateNumbers.x   r/   r   r%   )r2   r3   r4   r   r=   r"   r7   r8   r(   r5   r9   rU   r:   rM   rL   r;   r   r   rK   rK   k   s        
.# 
. 
.4 
. 
. 
. 
.
F 
t 
 
 
 
2 26: 2 2 2 2 2 $ $ $ $ X$ 3    X  r   rK   c                       e Zd Zej        d	d            Zej        dej        dej        de	fd            Z
ej        defd            ZdS )
r   r   rR   c                     dS )z7
        Generates and returns a DHPrivateKey.
        Nr;   r.   s    r   generate_private_keyz!DHParameters.generate_private_key         r   encodingformatc                     dS )z=
        Returns the parameters serialized as bytes.
        Nr;   r!   r\   r]   s      r   parameter_byteszDHParameters.parameter_bytes   r[   r   c                     dS )z/
        Returns a DHParameterNumbers.
        Nr;   r.   s    r   r?   zDHParameters.parameter_numbers   r[   r   N)r   rR   )r2   r3   r4   abcabstractmethodrZ   r   EncodingParameterFormatbytesr`   r   r?   r;   r   r   r   r      s           
 	 ) . 
	    	#5      r   )	metaclassc                       e Zd Zeej        defd                        Zej        defd            Z	ej        de
fd            Zej        dej        dej        defd            ZdS )	rD   r   c                     dS z6
        The bit length of the prime modulus.
        Nr;   r.   s    r   r   zDHPublicKey.key_size   r[   r   c                     dS )zJ
        The DHParameters object associated with this public key.
        Nr;   r.   s    r   r,   zDHPublicKey.parameters   r[   r   c                     dS )z,
        Returns a DHPublicNumbers.
        Nr;   r.   s    r   rM   zDHPublicKey.public_numbers   r[   r   r\   r]   c                     dS z6
        Returns the key serialized as bytes.
        Nr;   r_   s      r   public_byteszDHPublicKey.public_bytes   r[   r   N)r2   r3   r4   r:   rb   rc   r   r   r   r,   r=   rM   r   rd   PublicFormatrf   ro   r;   r   r   rD   rD      s        #     X
 	L    
 	    
 	 ) + 
	     r   rD   c            	       0   e Zd Zeej        defd                        Zej        defd            Z	ej        de
fd            Zej        dedefd            Zej        defd            Zej        dej        d	ej        d
ej        defd            ZdS )rR   r   c                     dS rj   r;   r.   s    r   r   zDHPrivateKey.key_size   r[   r   c                     dS )zC
        The DHPublicKey associated with this private key.
        Nr;   r.   s    r   rG   zDHPrivateKey.public_key   r[   r   c                     dS )zK
        The DHParameters object associated with this private key.
        Nr;   r.   s    r   r,   zDHPrivateKey.parameters   r[   r   peer_public_keyc                     dS )zn
        Given peer's DHPublicKey, carry out the key exchange and
        return shared key as bytes.
        Nr;   )r!   ru   s     r   exchangezDHPrivateKey.exchange   r[   r   c                     dS )z-
        Returns a DHPrivateNumbers.
        Nr;   r.   s    r   private_numberszDHPrivateKey.private_numbers   r[   r   r\   r]   encryption_algorithmc                     dS rn   r;   )r!   r\   r]   rz   s       r   private_byteszDHPrivateKey.private_bytes   r[   r   N)r2   r3   r4   r:   rb   rc   r   r   rD   rG   r   r,   rf   rw   rK   ry   r   rd   PrivateFormatKeySerializationEncryptionr|   r;   r   r   rR   rR      sN       #     X
 	K    
 	L    
 	      	!1    
 	 ) , -G	
 
     r   rR   r%   )rb   r5   cryptography.hazmat.primitivesr   r   r   r9   r   r   r=   rK   ABCMetar   DHParametersWithSerializationrD   DHPublicKeyWithSerializationrR   DHPrivateKeyWithSerializationr;   r   r   <module>r      s   


  9 9 9 9 9 9  :>< <<!<,2J<< < < <, , , , , , , ,^#' #' #' #' #' #' #' #'L# # # # # # # #L    S[    0 !-     CK    >  + * * * * *S[ * * * *Z !-   r   