o
     `                     @   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lm	Z	 dZ
d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)utils)_get_backendi   c                 C   s   t |}|| |S N)r   Zgenerate_dh_parameters)	generatorkey_sizebackend r   home/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/dh.pygenerate_parameters   s   r   c                   @   B   e Zd Zdd Zdd Zdd Zd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__      

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__Nc                 C      t |}|| S r   )r   Zload_dh_private_numbersr   r
   r   r   r   private_key0      
zDHPrivateNumbers.private_keyr   r   r   )__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   9   r   zDHPublicNumbers.__init__c                 C   r   r   )r   r   r   r0   r1   r   r   r   r   r!   E   r"   zDHPublicNumbers.__eq__c                 C   r#   r   r   r   r   r   r   r$   N   r%   zDHPublicNumbers.__ne__Nc                 C   r&   r   )r   Zload_dh_public_numbersr'   r   r   r   
public_keyQ   r)   zDHPublicNumbers.public_keyr0   r1   r   )r*   r+   r,   r   r!   r$   r4   r   r-   r2   r3   r   r   r   r   r   8   r.   r   c                   @   sN   e Zd ZdddZdd Zdd Zddd	Zed
Z	edZ
edZdS )r/   Nc                 C   s|   t |tjrt |tjstd|d urt |tjstd|dk r&td| tk r3t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)r   r   r   r   
ValueError
bit_length_MIN_MODULUS_SIZEformat_p_g_q)r   pgqr   r   r   r   Z   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   r:   r;   r<   r   r   r   r   r!   n   s   
"zDHParameterNumbers.__eq__c                 C   r#   r   r   r   r   r   r   r$   v   r%   zDHParameterNumbers.__ne__c                 C   r&   r   )r   Zload_dh_parameter_numbersr'   r   r   r   
parametersy   r)   zDHParameterNumbers.parametersr:   r;   r<   r   )r*   r+   r,   r   r!   r$   r@   r   r-   r=   r>   r?   r   r   r   r   r/   Y   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_key       z!DHParameters.generate_private_keyc                 C   rB   )z=
        Returns the parameters serialized as bytes.
        Nr   r   encodingr9   r   r   r   parameter_bytes   rE   zDHParameters.parameter_bytesc                 C   rB   )z/
        Returns a DHParameterNumbers.
        Nr   rC   r   r   r   r3      rE   zDHParameters.parameter_numbersN)r*   r+   r,   abcabstractmethodrD   rH   r3   r   r   r   r   rA      s    

rA   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   rB   z6
        The bit length of the prime modulus.
        Nr   rC   r   r   r   r	      rE   zDHPrivateKey.key_sizec                 C   rB   )zC
        The DHPublicKey associated with this private key.
        Nr   rC   r   r   r   r4      rE   zDHPrivateKey.public_keyc                 C   rB   )zK
        The DHParameters object associated with this private key.
        Nr   rC   r   r   r   r@      rE   zDHPrivateKey.parametersc                 C   rB   )zn
        Given peer's DHPublicKey, carry out the key exchange and
        return shared key as bytes.
        Nr   )r   Zpeer_public_keyr   r   r   exchange   rE   zDHPrivateKey.exchangeN)
r*   r+   r,   rI   abstractpropertyr	   rJ   r4   r@   rN   r   r   r   r   rL          


rL   c                   @   s(   e Zd Zejdd Zejdd ZdS )DHPrivateKeyWithSerializationc                 C   rB   )z-
        Returns a DHPrivateNumbers.
        Nr   rC   r   r   r   private_numbers   rE   z-DHPrivateKeyWithSerialization.private_numbersc                 C   rB   z6
        Returns the key serialized as bytes.
        Nr   )r   rG   r9   Zencryption_algorithmr   r   r   private_bytes   rE   z+DHPrivateKeyWithSerialization.private_bytesN)r*   r+   r,   rI   rJ   rR   rT   r   r   r   r   rQ      s
    
rQ   c                   @   rK   )
DHPublicKeyc                 C   rB   rM   r   rC   r   r   r   r	      rE   zDHPublicKey.key_sizec                 C   rB   )zJ
        The DHParameters object associated with this public key.
        Nr   rC   r   r   r   r@      rE   zDHPublicKey.parametersc                 C   rB   )z,
        Returns a DHPublicNumbers.
        Nr   rC   r   r   r   r      rE   zDHPublicKey.public_numbersc                 C   rB   rS   r   rF   r   r   r   public_bytes   rE   zDHPublicKey.public_bytesN)
r*   r+   r,   rI   rO   r	   rJ   r@   r   rV   r   r   r   r   rU      rP   rU   r   )
__future__r   r   r   rI   r   cryptographyr   Zcryptography.hazmat.backendsr   r8   r   objectr   r   r/   Zadd_metaclassABCMetarA   ZDHParametersWithSerializationrL   rQ   rU   ZDHPublicKeyWithSerializationr   r   r   r   <module>   s(   
!!
)


