o
    ™¨ÊhN  ã                   @   sä   d dl mZmZmZ d dlZd dlZd dlmZ dd„ ZG dd„ de	ƒZ
G dd	„ d	e	ƒZG d
d„ de	ƒZe ej¡G dd„ de	ƒƒZeZe ej¡G dd„ de	ƒƒZe ej¡G dd„ deƒƒZe ej¡G dd„ de	ƒƒZeZdS )é    )Úabsolute_importÚdivisionÚprint_functionN)Úutilsc                 C   s   |  | |¡S ©N)Úgenerate_dh_parameters)Ú	generatorÚkey_sizeÚbackend© r   ú^/var/www/html/env/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/dh.pyÚgenerate_parameters   s   r   c                   @   ó@   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Ze d	¡Z	e d
¡Z
dS )ÚDHPrivateNumbersc                 C   ó6   t |tjƒs
tdƒ‚t |tƒstdƒ‚|| _|| _d S )Nzx must be an integer.z6public_numbers must be an instance of DHPublicNumbers.)Ú
isinstanceÚsixÚinteger_typesÚ	TypeErrorÚDHPublicNumbersÚ_xÚ_public_numbers)ÚselfÚxÚpublic_numbersr   r   r   Ú__init__   s   

zDHPrivateNumbers.__init__c                 C   ó&   t |tƒstS | j|jko| j|jkS r   )r   r   ÚNotImplementedr   r   ©r   Úotherr   r   r   Ú__eq__   ó
   

þzDHPrivateNumbers.__eq__c                 C   ó
   | |k S r   r   r   r   r   r   Ú__ne__'   ó   
zDHPrivateNumbers.__ne__c                 C   ó
   |  | ¡S r   )Úload_dh_private_numbers©r   r
   r   r   r   Úprivate_key*   r$   zDHPrivateNumbers.private_keyr   r   N)Ú__name__Ú
__module__Ú__qualname__r   r    r#   r(   r   Úread_only_propertyr   r   r   r   r   r   r      ó    	
r   c                   @   r   )r   c                 C   r   )Nzy must be an integer.z5parameters must be an instance of DHParameterNumbers.)r   r   r   r   ÚDHParameterNumbersÚ_yÚ_parameter_numbers)r   ÚyÚparameter_numbersr   r   r   r   2   s   
ÿ
zDHPublicNumbers.__init__c                 C   r   r   )r   r   r   r/   r0   r   r   r   r   r    =   r!   zDHPublicNumbers.__eq__c                 C   r"   r   r   r   r   r   r   r#   F   r$   zDHPublicNumbers.__ne__c                 C   r%   r   )Úload_dh_public_numbersr'   r   r   r   Ú
public_keyI   r$   zDHPublicNumbers.public_keyr/   r0   N)r)   r*   r+   r   r    r#   r4   r   r,   r1   r2   r   r   r   r   r   1   r-   r   c                   @   sL   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Ze d
¡Z	e d¡Z
e d¡ZdS )r.   Nc                 C   sb   t |tjƒrt |tjƒstdƒ‚|d urt |tjƒstdƒ‚|dk r&tdƒ‚|| _|| _|| _d S )Nzp and g must be integerszq must be integer or Noneé   z!DH generator must be 2 or greater)r   r   r   r   Ú
ValueErrorÚ_pÚ_gÚ_q)r   ÚpÚgÚqr   r   r   r   Q   s   
ÿ
þ
zDHParameterNumbers.__init__c                 C   s2   t |tƒstS | j|jko| j|jko| j|jkS r   )r   r.   r   r7   r8   r9   r   r   r   r   r    a   s   

ÿ
ýzDHParameterNumbers.__eq__c                 C   r"   r   r   r   r   r   r   r#   k   r$   zDHParameterNumbers.__ne__c                 C   r%   r   )Úload_dh_parameter_numbersr'   r   r   r   Ú
parametersn   r$   zDHParameterNumbers.parametersr7   r8   r9   r   )r)   r*   r+   r   r    r#   r>   r   r,   r:   r;   r<   r   r   r   r   r.   P   s    



r.   c                   @   s6   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZdS )ÚDHParametersc                 C   ó   dS )z7
        Generates and returns a DHPrivateKey.
        Nr   ©r   r   r   r   Úgenerate_private_keyx   ó    z!DHParameters.generate_private_keyc                 C   r@   )z=
        Returns the parameters serialized as bytes.
        Nr   ©r   ÚencodingÚformatr   r   r   Úparameter_bytes~   rC   zDHParameters.parameter_bytesc                 C   r@   )z/
        Returns a DHParameterNumbers.
        Nr   rA   r   r   r   r2   „   rC   zDHParameters.parameter_numbersN)r)   r*   r+   ÚabcÚabstractmethodrB   rG   r2   r   r   r   r   r?   v   s    

r?   c                   @   óD   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZ	d	S )
ÚDHPrivateKeyc                 C   r@   ©z6
        The bit length of the prime modulus.
        Nr   rA   r   r   r   r	   �   rC   zDHPrivateKey.key_sizec                 C   r@   )zC
        The DHPublicKey associated with this private key.
        Nr   rA   r   r   r   r4   –   rC   zDHPrivateKey.public_keyc                 C   r@   )zK
        The DHParameters object associated with this private key.
        Nr   rA   r   r   r   r>   œ   rC   zDHPrivateKey.parametersc                 C   r@   )zn
        Given peer's DHPublicKey, carry out the key exchange and
        return shared key as bytes.
        Nr   )r   Úpeer_public_keyr   r   r   Úexchange¢   rC   zDHPrivateKey.exchangeN)
r)   r*   r+   rH   Úabstractpropertyr	   rI   r4   r>   rN   r   r   r   r   rK   Ž   ó    


rK   c                   @   s(   e Zd Zejdd„ ƒZejdd„ ƒZdS )ÚDHPrivateKeyWithSerializationc                 C   r@   )z-
        Returns a DHPrivateNumbers.
        Nr   rA   r   r   r   Úprivate_numbers¬   rC   z-DHPrivateKeyWithSerialization.private_numbersc                 C   r@   ©z6
        Returns the key serialized as bytes.
        Nr   )r   rE   rF   Úencryption_algorithmr   r   r   Úprivate_bytes²   rC   z+DHPrivateKeyWithSerialization.private_bytesN)r)   r*   r+   rH   rI   rR   rU   r   r   r   r   rQ   ª   s
    
rQ   c                   @   rJ   )
ÚDHPublicKeyc                 C   r@   rL   r   rA   r   r   r   r	   »   rC   zDHPublicKey.key_sizec                 C   r@   )zJ
        The DHParameters object associated with this public key.
        Nr   rA   r   r   r   r>   Á   rC   zDHPublicKey.parametersc                 C   r@   )z,
        Returns a DHPublicNumbers.
        Nr   rA   r   r   r   r   Ç   rC   zDHPublicKey.public_numbersc                 C   r@   rS   r   rD   r   r   r   Úpublic_bytesÍ   rC   zDHPublicKey.public_bytesN)
r)   r*   r+   rH   rO   r	   rI   r>   r   rW   r   r   r   r   rV   ¹   rP   rV   )Ú
__future__r   r   r   rH   r   Úcryptographyr   r   Úobjectr   r   r.   Úadd_metaclassÚABCMetar?   ÚDHParametersWithSerializationrK   rQ   rV   ÚDHPublicKeyWithSerializationr   r   r   r   Ú<module>   s$   
&


