
    +he                       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j!                  ej"                  j                          G d dej                        ZeZej!                  ej"                  j$                          G d dej                        ZeZej!                  ej"                  j(                         y)    )annotationsN)openssl)_serializationDHParametersc                2    ddl m} |j                  | |      S Nr   )backend),cryptography.hazmat.backends.openssl.backendr	   generate_dh_parameters)	generatorkey_sizer	   ossls       _/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dh.pygenerate_parametersr      s     M&&y(;;    c                  ^    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	y)DHParameterNumbersNc                   t        |t              rt        |t              st        d      |t        |t              st        d      |dk  rt        d      |j	                         t
        j                  j                  k  r't        dt
        j                  j                   d      || _        || _	        || _
        y )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rust_openssldhMIN_MODULUS_SIZE_p_g_q)selfpgqs       r   __init__zDHParameterNumbers.__init__   s    !S!As);677=As!3788q5@AA<<>LOO<<</??334D: 
 r   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S N)r   r   NotImplementedr   r   r    r!   others     r   __eq__zDHParameterNumbers.__eq__*   sN    %!34!! GGuxxODGGuxx$7ODGGuxx<O	
r   c                0    ddl m} |j                  |       S r   )r
   r	   load_dh_parameter_numbersr!   r	   r   s      r   
parameterszDHParameterNumbers.parameters2   s    	
 --d33r   c                    | j                   S r'   )r   r!   s    r   r"   zDHParameterNumbers.p9       wwr   c                    | j                   S r'   )r   r1   s    r   r#   zDHParameterNumbers.g=   r2   r   c                    | j                   S r'   )r    r1   s    r   r$   zDHParameterNumbers.qA   r2   r   r'   )r"   r   r#   r   r$   typing.Optional[int]returnNoner*   objectr6   bool)r	   
typing.Anyr6   r   r6   r   )r6   r5   )
__name__
__module____qualname__r%   r+   r/   propertyr"   r#   r$    r   r   r   r      sM    &
4      r   r   c                  J    e Zd ZddZddZd	d
dZedd       Zedd       Zy)DHPublicNumbersc                    t        |t              st        d      t        |t              st        d      || _        || _        y )Nzy must be an integer.z5parameters must be an instance of DHParameterNumbers.)r   r   r   r   _y_parameter_numbers)r!   yparameter_numberss      r   r%   zDHPublicNumbers.__init__G   sE    !S!344+-?@G  "3r   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r'   )r   rC   r(   rE   rF   r)   s     r   r+   zDHPublicNumbers.__eq__S   sC    %1!! GGuxx D''5+C+CC	
r   Nc                0    ddl m} |j                  |       S r   )r
   r	   load_dh_public_numbersr.   s      r   
public_keyzDHPublicNumbers.public_key\   s    	
 **400r   c                    | j                   S r'   )rE   r1   s    r   rG   zDHPublicNumbers.yc   r2   r   c                    | j                   S r'   )rF   r1   s    r   rH   z!DHPublicNumbers.parameter_numbersg   s    &&&r   )rG   r   rH   r   r6   r7   r8   r'   )r	   r;   r6   DHPublicKeyr<   r6   r   )	r=   r>   r?   r%   r+   rL   r@   rG   rH   rA   r   r   rC   rC   F   s9    
4
1   ' 'r   rC   c                  J    e Zd ZddZddZd	d
dZedd       Zedd       Zy)DHPrivateNumbersc                    t        |t              st        d      t        |t              st        d      || _        || _        y )Nzx must be an integer.z6public_numbers must be an instance of DHPublicNumbers.)r   r   r   rC   _x_public_numbers)r!   xpublic_numberss      r   r%   zDHPrivateNumbers.__init__m   sC    !S!344./:K  -r   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r'   )r   rR   r(   rT   rU   r)   s     r   r+   zDHPrivateNumbers.__eq__y   sC    %!12!! GGuxx >$$(=(==	
r   Nc                0    ddl m} |j                  |       S r   )r
   r	   load_dh_private_numbersr.   s      r   private_keyzDHPrivateNumbers.private_key   s    	
 ++D11r   c                    | j                   S r'   )rU   r1   s    r   rW   zDHPrivateNumbers.public_numbers   s    ###r   c                    | j                   S r'   )rT   r1   s    r   rV   zDHPrivateNumbers.x   r2   r   )rV   r   rW   rC   r6   r7   r8   r'   )r	   r;   r6   DHPrivateKeyr6   rC   r<   )	r=   r>   r?   r%   r+   r[   r@   rW   rV   rA   r   r   rR   rR   l   s9    
.
2 $ $  r   rR   c                      e Zd Zej                  dd       Zej                  	 	 	 	 	 	 dd       Zej                  dd       Zy)r   c                     y)z7
        Generates and returns a DHPrivateKey.
        NrA   r1   s    r   generate_private_keyz!DHParameters.generate_private_key       r   c                     y)z=
        Returns the parameters serialized as bytes.
        NrA   r!   encodingformats      r   parameter_byteszDHParameters.parameter_bytes   rc   r   c                     y)z/
        Returns a DHParameterNumbers.
        NrA   r1   s    r   rH   zDHParameters.parameter_numbers   rc   r   N)r6   r^   )rf   _serialization.Encodingrg   z_serialization.ParameterFormatr6   bytesrP   )r=   r>   r?   abcabstractmethodrb   rh   rH   rA   r   r   r   r      sj     
 	) / 
	  	 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
y)rO   c                     yz6
        The bit length of the prime modulus.
        NrA   r1   s    r   r   zDHPublicKey.key_size   rc   r   c                     y)zJ
        The DHParameters object associated with this public key.
        NrA   r1   s    r   r/   zDHPublicKey.parameters   rc   r   c                     y)z,
        Returns a DHPublicNumbers.
        NrA   r1   s    r   rW   zDHPublicKey.public_numbers   rc   r   c                     yz6
        Returns the key serialized as bytes.
        NrA   re   s      r   public_byteszDHPublicKey.public_bytes   rc   r   c                     y)z"
        Checks equality.
        NrA   r)   s     r   r+   zDHPublicKey.__eq__   rc   r   Nr<   r6   r   r_   )rf   rj   rg   z_serialization.PublicFormatr6   rk   r8   )r=   r>   r?   r@   rl   rm   r   r/   rW   rv   r+   rA   r   r   rO   rO      s      
 	 
 	 
 	) , 
	  	 r   rO   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y)r^   c                     yrq   rA   r1   s    r   r   zDHPrivateKey.key_size   rc   r   c                     y)zC
        The DHPublicKey associated with this private key.
        NrA   r1   s    r   rL   zDHPrivateKey.public_key   rc   r   c                     y)zK
        The DHParameters object associated with this private key.
        NrA   r1   s    r   r/   zDHPrivateKey.parameters   rc   r   c                     y)zn
        Given peer's DHPublicKey, carry out the key exchange and
        return shared key as bytes.
        NrA   )r!   peer_public_keys     r   exchangezDHPrivateKey.exchange   rc   r   c                     y)z-
        Returns a DHPrivateNumbers.
        NrA   r1   s    r   private_numberszDHPrivateKey.private_numbers   rc   r   c                     yru   rA   )r!   rf   rg   encryption_algorithms       r   private_byteszDHPrivateKey.private_bytes   rc   r   Nr<   )r6   rO   rx   )r~   rO   r6   rk   )r6   rR   )rf   rj   rg   z_serialization.PrivateFormatr   z)_serialization.KeySerializationEncryptionr6   rk   )r=   r>   r?   r@   rl   rm   r   rL   r/   r   r   r   rA   r   r   r^   r^      s      
 	 
 	 
 	  	 
 	) - H	
 
 r   r^   r'   )r   r   r   r   r	   r;   r6   r   )
__future__r   rl   typing"cryptography.hazmat.bindings._rustr   r   cryptography.hazmat.primitivesr   r   r   rC   rR   ABCMetar   DHParametersWithSerializationregisterr   rO   DHPublicKeyWithSerializationr^   DHPrivateKeyWithSerializationrA   r   r   <module>r      s   
 # 
  F 9 :><<!<,6<<- -`#' #'L# #LS[[ 0 !-    loo22 3"CKK "J  +    \__00 1*S[[ *Z !-    loo22 3r   