U
    ÒZjÌ  ã                   @   s®   d dl Z d dlZd dlmZ dZdeeejddœdd„ZG dd	„ d	ƒZG d
d„ dƒZ	G dd„ dƒZ
G dd„ de jd�ZeZG dd„ de jd�ZeZG dd„ de jd�ZeZdS )é    N)Ú_serializationi   ÚDHParameters)Ú	generatorÚkey_sizeÚbackendÚreturnc                 C   s   ddl m} | | |¡S ©Nr   )r   )Ú,cryptography.hazmat.backends.openssl.backendr   Zgenerate_dh_parameters)r   r   r   Úossl© r   úo/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/asymmetric/dh.pyÚgenerate_parameters   s    r   c                   @   sˆ   e Zd Zdeeeje ddœdd„Zeedœdd„Z	dej
dd	œd
d„Zeedœdd„ƒZeedœdd„ƒZeeje dœdd„ƒZdS )ÚDHParameterNumbersN)ÚpÚgÚqr   c                 C   sv   t |tƒrt |tƒstdƒ‚|d k	r6t |tƒs6tdƒ‚|dk rFtdƒ‚| ¡ tk r`td t¡ƒ‚|| _|| _|| _	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 {}-bit)
Ú
isinstanceÚintÚ	TypeErrorÚ
ValueErrorÚ
bit_lengthÚ_MIN_MODULUS_SIZEÚformatÚ_pÚ_gÚ_q)Úselfr   r   r   r   r   r   Ú__init__   s    ÿzDHParameterNumbers.__init__©Úotherr   c                 C   s2   t |tƒstS | j|jko0| j|jko0| j|jkS ©N)r   r   ÚNotImplementedr   r   r   ©r   r    r   r   r   Ú__eq__*   s    
"ÿzDHParameterNumbers.__eq__r   ©r   r   c                 C   s   ddl m} | | ¡S r   )r	   r   Zload_dh_parameter_numbers©r   r   r
   r   r   r   Ú
parameters2   s    zDHParameterNumbers.parameters©r   c                 C   s   | j S r!   )r   ©r   r   r   r   r   9   s    zDHParameterNumbers.pc                 C   s   | j S r!   )r   r)   r   r   r   r   =   s    zDHParameterNumbers.gc                 C   s   | j S r!   )r   r)   r   r   r   r   A   s    zDHParameterNumbers.q)N)N)Ú__name__Ú
__module__Ú__qualname__r   ÚtypingÚOptionalr   ÚobjectÚboolr$   ÚAnyr'   Úpropertyr   r   r   r   r   r   r   r      s   r   c                   @   sf   e Zd Zeeddœdd„Zeedœdd„Zde	j
dd	œd
d„Zeedœdd„ƒZeedœdd„ƒZdS )ÚDHPublicNumbersN)ÚyÚparameter_numbersr   c                 C   s4   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   r4   r5   r   r   r   r   G   s    

ÿzDHPublicNumbers.__init__r   c                 C   s&   t |tƒstS | j|jko$| j|jkS r!   )r   r3   r"   r6   r7   r#   r   r   r   r$   S   s
    

þzDHPublicNumbers.__eq__ÚDHPublicKeyr%   c                 C   s   ddl m} | | ¡S r   )r	   r   Zload_dh_public_numbersr&   r   r   r   Ú
public_key\   s    zDHPublicNumbers.public_keyr(   c                 C   s   | j S r!   )r6   r)   r   r   r   r4   c   s    zDHPublicNumbers.yc                 C   s   | j S r!   )r7   r)   r   r   r   r5   g   s    z!DHPublicNumbers.parameter_numbers)N)r*   r+   r,   r   r   r   r/   r0   r$   r-   r1   r9   r2   r4   r5   r   r   r   r   r3   F   s   	r3   c                   @   sf   e Zd Zeeddœdd„Zeedœdd„Zde	j
dd	œd
d„Zeedœdd„ƒZeedœdd„ƒZdS )ÚDHPrivateNumbersN)ÚxÚpublic_numbersr   c                 C   s4   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   r3   Ú_xÚ_public_numbers)r   r;   r<   r   r   r   r   m   s    

ÿzDHPrivateNumbers.__init__r   c                 C   s&   t |tƒstS | j|jko$| j|jkS r!   )r   r:   r"   r=   r>   r#   r   r   r   r$   y   s
    

þzDHPrivateNumbers.__eq__ÚDHPrivateKeyr%   c                 C   s   ddl m} | | ¡S r   )r	   r   Zload_dh_private_numbersr&   r   r   r   Úprivate_key‚   s    zDHPrivateNumbers.private_keyr(   c                 C   s   | j S r!   )r>   r)   r   r   r   r<   ‰   s    zDHPrivateNumbers.public_numbersc                 C   s   | j S r!   )r=   r)   r   r   r   r;   �   s    zDHPrivateNumbers.x)N)r*   r+   r,   r   r3   r   r/   r0   r$   r-   r1   r@   r2   r<   r;   r   r   r   r   r:   l   s   	r:   c                   @   sP   e Zd Zejddœdd„ƒZejejeje	dœdd„ƒZ
ejedœdd	„ƒZd
S )r   r?   r(   c                 C   s   dS )z7
        Generates and returns a DHPrivateKey.
        Nr   r)   r   r   r   Úgenerate_private_key“   s    z!DHParameters.generate_private_key©Úencodingr   r   c                 C   s   dS )z=
        Returns the parameters serialized as bytes.
        Nr   ©r   rC   r   r   r   r   Úparameter_bytes™   s    zDHParameters.parameter_bytesc                 C   s   dS )z/
        Returns a DHParameterNumbers.
        Nr   r)   r   r   r   r5   £   s    zDHParameters.parameter_numbersN)r*   r+   r,   ÚabcÚabstractmethodrA   r   ÚEncodingZParameterFormatÚbytesrE   r   r5   r   r   r   r   r   ’   s   ü	)Ú	metaclassc                   @   sd   e Zd Zejedœdd„ƒZejedœdd„ƒZ	eje
dœdd„ƒZejejejedœd	d
„ƒZdS )r8   r(   c                 C   s   dS ©z6
        The bit length of the prime modulus.
        Nr   r)   r   r   r   r   ®   s    zDHPublicKey.key_sizec                 C   s   dS )zJ
        The DHParameters object associated with this public key.
        Nr   r)   r   r   r   r'   ´   s    zDHPublicKey.parametersc                 C   s   dS )z,
        Returns a DHPublicNumbers.
        Nr   r)   r   r   r   r<   º   s    zDHPublicKey.public_numbersrB   c                 C   s   dS ©z6
        Returns the key serialized as bytes.
        Nr   rD   r   r   r   Úpublic_bytesÀ   s    zDHPublicKey.public_bytesN)r*   r+   r,   rF   Úabstractpropertyr   r   rG   r   r'   r3   r<   r   rH   ZPublicFormatrI   rM   r   r   r   r   r8   ­   s   ür8   c                   @   s’   e Zd Zejedœdd„ƒZejedœdd„ƒZ	eje
dœdd„ƒZejeedœd	d
„ƒZejedœdd„ƒZejejejejedœdd„ƒZdS )r?   r(   c                 C   s   dS rK   r   r)   r   r   r   r   Ï   s    zDHPrivateKey.key_sizec                 C   s   dS )zC
        The DHPublicKey associated with this private key.
        Nr   r)   r   r   r   r9   Õ   s    zDHPrivateKey.public_keyc                 C   s   dS )zK
        The DHParameters object associated with this private key.
        Nr   r)   r   r   r   r'   Û   s    zDHPrivateKey.parameters)Úpeer_public_keyr   c                 C   s   dS )zn
        Given peer's DHPublicKey, carry out the key exchange and
        return shared key as bytes.
        Nr   )r   rO   r   r   r   Úexchangeá   s    zDHPrivateKey.exchangec                 C   s   dS )z-
        Returns a DHPrivateNumbers.
        Nr   r)   r   r   r   Úprivate_numbersè   s    zDHPrivateKey.private_numbers)rC   r   Úencryption_algorithmr   c                 C   s   dS rL   r   )r   rC   r   rR   r   r   r   Úprivate_bytesî   s    zDHPrivateKey.private_bytesN)r*   r+   r,   rF   rN   r   r   rG   r8   r9   r   r'   rI   rP   r:   rQ   r   rH   ZPrivateFormatZKeySerializationEncryptionrS   r   r   r   r   r?   Î   s    ûr?   )N)rF   r-   Zcryptography.hazmat.primitivesr   r   r   r1   r   r   r3   r:   ÚABCMetar   ZDHParametersWithSerializationr8   ZDHPublicKeyWithSerializationr?   ZDHPrivateKeyWithSerializationr   r   r   r   Ú<module>   s&    ÿ  þ/&&,