<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
lá˜_  ã               @   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dd„Z
G dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZejejƒG dd„ deƒƒZeZejejƒG dd„ deƒƒZejejƒG dd„ deƒƒZejejƒG dd„ deƒƒZeZdS )é    )Úabsolute_importÚdivisionÚprint_functionN)Úutils)Ú_get_backendc             C   s   t |ƒ}|j| |ƒS )N)r   Zgenerate_dh_parameters)Ú	generatorÚkey_sizeÚbackend© r
   ú/usr/lib64/python3.6/dh.pyÚgenerate_parameters   s    r   c               @   sB   e Zd Zdd„ Zdd„ Zdd„ Zddd	„Zejd
ƒZ	ejdƒZ
dS )ÚDHPrivateNumbersc             C   s6   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   s&   t |tƒstS | j|jko$| j|jkS )N)r   r   ÚNotImplementedr   r   )r   Úotherr
   r
   r   Ú__eq__!   s    
zDHPrivateNumbers.__eq__c             C   s
   | |k S )Nr
   )r   r   r
   r
   r   Ú__ne__*   s    zDHPrivateNumbers.__ne__Nc             C   s   t |ƒ}|j| ƒS )N)r   Zload_dh_private_numbers)r   r	   r
   r
   r   Úprivate_key-   s    zDHPrivateNumbers.private_keyr   r   )N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   Úread_only_propertyr   r   r
   r
   r
   r   r      s   	

r   c               @   sB   e Zd Zdd„ Zdd„ Zdd„ Zddd	„Zejd
ƒZ	ejdƒZ
dS )r   c             C   s6   t |tjƒ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   ÚDHParameterNumbersÚ_yÚ_parameter_numbers)r   ÚyÚparameter_numbersr
   r
   r   r   6   s    
zDHPublicNumbers.__init__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   B   s    
zDHPublicNumbers.__eq__c             C   s
   | |k S )Nr
   )r   r   r
   r
   r   r   K   s    zDHPublicNumbers.__ne__Nc             C   s   t |ƒ}|j| ƒS )N)r   Zload_dh_public_numbers)r   r	   r
   r
   r   Ú
public_keyN   s    zDHPublicNumbers.public_keyr#   r$   )N)r   r   r    r   r   r   r'   r   r!   r%   r&   r
   r
   r
   r   r   5   s   	

r   c               @   sN   e Zd Zddd„Zdd„ Zdd„ Zddd	„Zejd
ƒZ	ejdƒZ
ejdƒZdS )r"   Nc             C   sh   t |tjƒ st |tjƒ r$tdƒ‚|d k	rBt |tjƒ rBtdƒ‚|dk rRt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   W   s    zDHParameterNumbers.__init__c             C   s2   t |tƒstS | j|jko0| j|jko0| j|jkS )N)r   r"   r   r*   r+   r,   )r   r   r
   r
   r   r   f   s    
zDHParameterNumbers.__eq__c             C   s
   | |k S )Nr
   )r   r   r
   r
   r   r   n   s    zDHParameterNumbers.__ne__c             C   s   t |ƒ}|j| ƒS )N)r   Zload_dh_parameter_numbers)r   r	   r
   r
   r   Ú
parametersq   s    zDHParameterNumbers.parametersr*   r+   r,   )N)N)r   r   r    r   r   r   r0   r   r!   r-   r.   r/   r
   r
   r
   r   r"   V   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   s   dS )z7
        Generates and returns a DHPrivateKey.
        Nr
   )r   r
   r
   r   Úgenerate_private_key|   s    z!DHParameters.generate_private_keyc             C   s   dS )z=
        Returns the parameters serialized as bytes.
        Nr
   )r   ÚencodingÚformatr
   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Úabstractmethodr2   r5   r&   r
   r
   r
   r   r1   z   s   r1   c               @   sD   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   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   r'   š   s    zDHPrivateKey.public_keyc             C   s   dS )zK
        The DHParameters object associated with this private key.
        Nr
   )r   r
   r
   r   r0       s    zDHPrivateKey.parametersc             C   s   dS )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¦   s    zDHPrivateKey.exchangeN)
r   r   r    r6   Úabstractpropertyr   r7   r'   r0   r9   r
   r
   r
   r   r8   ’   s   r8   c               @   s(   e Zd Zejdd„ ƒZejdd„ ƒZdS )ÚDHPrivateKeyWithSerializationc             C   s   dS )z-
        Returns a DHPrivateNumbers.
        Nr
   )r   r
   r
   r   Úprivate_numbers°   s    z-DHPrivateKeyWithSerialization.private_numbersc             C   s   dS )z6
        Returns the key serialized as bytes.
        Nr
   )r   r3   r4   Zencryption_algorithmr
   r
   r   Úprivate_bytes¶   s    z+DHPrivateKeyWithSerialization.private_bytesN)r   r   r    r6   r7   r<   r=   r
   r
   r
   r   r;   ®   s   r;   c               @   sD   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 )
ÚDHPublicKeyc             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   r0   Å   s    zDHPublicKey.parametersc             C   s   dS )z,
        Returns a DHPublicNumbers.
        Nr
   )r   r
   r
   r   r   Ë   s    zDHPublicKey.public_numbersc             C   s   dS )z6
        Returns the key serialized as bytes.
        Nr
   )r   r3   r4   r
   r
   r   Úpublic_bytesÑ   s    zDHPublicKey.public_bytesN)
r   r   r    r6   r:   r   r7   r0   r   r?   r
   r
   r
   r   r>   ½   s   r>   )N)Z
__future__r   r   r   r6   r   Zcryptographyr   Zcryptography.hazmat.backendsr   r   Úobjectr   r   r"   Zadd_metaclassÚABCMetar1   ZDHParametersWithSerializationr8   r;   r>   ZDHPublicKeyWithSerializationr
   r
   r
   r   Ú<module>   s$   
!!$