3
ãdeÛ  ã               @   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} |j| |ƒS )Nr   )r   )Ú,cryptography.hazmat.backends.openssl.backendr   Zgenerate_dh_parameters)r   r   r   Úossl© r
   úc/var/www/agendate/envp3/lib/python3.6/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   s~   t |tƒ st |tƒ r tdƒ‚|d k	r<t |tƒ r<tdƒ‚|dk rLtdƒ‚|jƒ tk rht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   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} |j| ƒS )Nr   )r   )r   r   Zload_dh_parameter_numbers)r   r   r	   r
   r
   r   Ú
parameters1   s    zDHParameterNumbers.parameters)r   c             C   s   | j S )N)r   )r   r
   r
   r   r   8   s    zDHParameterNumbers.pc             C   s   | j S )N)r   )r   r
   r
   r   r   <   s    zDHParameterNumbers.gc             C   s   | j S )N)r   )r   r
   r
   r   r   @   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   r+   r,   r
   r
   r   r   F   s    

zDHPublicNumbers.__init__)r   r   c             C   s&   t |tƒstS | j|jko$| j|jkS )N)r   r*   r   r-   r.   )r   r   r
   r
   r   r   R   s    
zDHPublicNumbers.__eq__ÚDHPublicKey)r   r   c             C   s   ddl m} |j| ƒS )Nr   )r   )r   r   Zload_dh_public_numbers)r   r   r	   r
   r
   r   Ú
public_key[   s    zDHPublicNumbers.public_key)r   c             C   s   | j S )N)r-   )r   r
   r
   r   r+   b   s    zDHPublicNumbers.yc             C   s   | j S )N)r.   )r   r
   r
   r   r,   f   s    z!DHPublicNumbers.parameter_numbers)N)r!   r"   r#   r   r   r   r&   r'   r   r$   r(   r0   r)   r+   r,   r
   r
   r
   r   r*   E   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 )Ú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   r*   Ú_xÚ_public_numbers)r   r2   r3   r
   r
   r   r   l   s    

zDHPrivateNumbers.__init__)r   r   c             C   s&   t |tƒstS | j|jko$| j|jkS )N)r   r1   r   r4   r5   )r   r   r
   r
   r   r   x   s    
zDHPrivateNumbers.__eq__ÚDHPrivateKey)r   r   c             C   s   ddl m} |j| ƒS )Nr   )r   )r   r   Zload_dh_private_numbers)r   r   r	   r
   r
   r   Úprivate_key�   s    zDHPrivateNumbers.private_key)r   c             C   s   | j S )N)r5   )r   r
   r
   r   r3   ˆ   s    zDHPrivateNumbers.public_numbersc             C   s   | j S )N)r4   )r   r
   r
   r   r2   Œ   s    zDHPrivateNumbers.x)N)r!   r"   r#   r   r*   r   r&   r'   r   r$   r(   r7   r)   r3   r2   r
   r
   r
   r   r1   k   s   	r1   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   r6   )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)ÚencodingÚformatr   c             C   s   dS )z=
        Returns the parameters serialized as bytes.
        Nr
   )r   r9   r:   r
   r
   r   Úparameter_bytes˜   s    zDHParameters.parameter_bytesc             C   s   dS )z/
        Returns a DHParameterNumbers.
        Nr
   )r   r
   r
   r   r,   ¢   s    zDHParameters.parameter_numbersN)r!   r"   r#   ÚabcÚabstractmethodr8   r   ÚEncodingZParameterFormatÚbytesr;   r   r,   r
   r
   r
   r   r   ‘   s   )Ú	metaclassc               @   sh   e Zd Ze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 )r/   )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   r3   º   s    zDHPublicKey.public_numbers)r9   r:   r   c             C   s   dS )z6
        Returns the key serialized as bytes.
        Nr
   )r   r9   r:   r
   r
   r   Úpublic_bytesÀ   s    zDHPublicKey.public_bytesN)r!   r"   r#   r)   r<   r=   r   r   r   r    r*   r3   r   r>   ZPublicFormatr?   rA   r
   r
   r
   r   r/   ¬   s   r/   c               @   s–   e Zd Ze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 )r6   )r   c             C   s   dS )z6
        The bit length of the prime modulus.
        Nr
   )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   r0   Ö   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   rB   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)r9   r:   Úencryption_algorithmr   c             C   s   dS )z6
        Returns the key serialized as bytes.
        Nr
   )r   r9   r:   rE   r
   r
   r   Úprivate_bytesï   s    zDHPrivateKey.private_bytesN)r!   r"   r#   r)   r<   r=   r   r   r/   r0   r   r    r?   rC   r1   rD   r   r>   ZPrivateFormatZKeySerializationEncryptionrF   r
   r
   r
   r   r6   Î   s    r6   )N)r<   r$   Zcryptography.hazmat.primitivesr   r   r   r(   r   r   r*   r1   ÚABCMetar   ZDHParametersWithSerializationr/   ZDHPublicKeyWithSerializationr6   ZDHPrivateKeyWithSerializationr
   r
   r
   r   Ú<module>   s   
/&&-