a
    kÄ#dú  ã                   @   s0  d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
m  mZ i ZG dd„ deƒZG dd„ de e¡ƒZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZdS )!z�
Key Exchange algorithms as listed in appendix C of RFC 4346.

XXX No support yet for PSK (also, no static DH, DSS, SRP or KRB).
é    )Úabsolute_import)ÚServerDHParamsÚServerRSAParamsÚClientDiffieHellmanPublicÚClientECDiffieHellmanPublicÚ_tls_server_ecdh_cls_guessÚEncryptedPreMasterSecretNc                       s    e Zd ZdZ‡ fdd„Z‡  ZS )Ú_GenericKXMetaclasszd
    We could try to set server_kx_msg and client_kx_msg while parsing
    the class name... :)
    c                    s†   |dkr|dd … |d< t t| ƒ | |||¡}|dkr‚| d¡|_d|v |_d|v pZd|v  |_| j|j M  _|t|dd … < |S )NÚ
_GenericKXé   ÚnameZ_EXPORTZ_anonZDHE)Úsuperr	   Ú__new__ÚendswithZexportZ	anonymousZno_skeÚ_tls_kx_algs)ÚclsZkx_nameÚbasesÚdctZ	the_class©Ú	__class__© úV/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/layers/tls/crypto/kx_algs.pyr      s    ÿ
z_GenericKXMetaclass.__new__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__classcell__r   r   r   r   r	      s   r	   c                   @   s   e Zd ZdS )r
   N)r   r   r   r   r   r   r   r
   -   s   r
   c                   @   s   e Zd ZdZdd„ ZdZdS )ÚKX_NULLzNo key exchangec                 C   s   d S ©Nr   ©Ú_Úmr   r   r   Ú<lambda>3   ó    zKX_NULL.<lambda>N©r   r   r   ÚdescrÚserver_kx_msg_clsÚclient_kx_msg_clsr   r   r   r   r   1   s   r   c                   @   s   e Zd ZdZdd„ ZdZdS )ÚKX_SSLv2zSSLv2 dummy key exchange classc                 C   s   d S r   r   r   r   r   r   r"   9   r#   zKX_SSLv2.<lambda>Nr$   r   r   r   r   r(   7   s   r(   c                   @   s   e Zd ZdZdd„ ZdZdS )ÚKX_TLS13z TLS 1.3 dummy key exchange classc                 C   s   d S r   r   r   r   r   r   r"   ?   r#   zKX_TLS13.<lambda>Nr$   r   r   r   r   r)   =   s   r)   c                   @   s   e Zd ZdZdd„ ZeZdS )ÚKX_RSAzRSA encryptionc                 C   s   d S r   r   r   r   r   r   r"   G   r#   zKX_RSA.<lambda>N)r   r   r   r%   r&   r   r'   r   r   r   r   r*   E   s   r*   c                   @   s   e Zd ZdZdd„ ZeZdS )Ú
KX_DHE_RSAzEphemeral DH with RSA signaturec                 C   s   t S r   ©r   r   r   r   r   r"   R   r#   zKX_DHE_RSA.<lambda>N©r   r   r   r%   r&   r   r'   r   r   r   r   r+   P   s   r+   c                   @   s   e Zd ZdZdd„ ZeZdS )ÚKX_ECDHE_RSAz!Ephemeral ECDH with RSA signaturec                 C   s   t |ƒS r   ©r   r   r   r   r   r"   ]   r#   zKX_ECDHE_RSA.<lambda>N©r   r   r   r%   r&   r   r'   r   r   r   r   r.   [   s   r.   c                   @   s   e Zd ZdZdd„ ZdS )ÚKX_RSA_EXPORTzRSA encryption, export versionc                 C   s   t S r   )r   r   r   r   r   r"   c   r#   zKX_RSA_EXPORT.<lambda>N)r   r   r   r%   r&   r   r   r   r   r1   a   s   r1   c                   @   s   e Zd ZdZdS )ÚKX_DHE_RSA_EXPORTz/Ephemeral DH with RSA signature, export versionN©r   r   r   r%   r   r   r   r   r2   i   s   r2   c                   @   s   e Zd ZdZdd„ ZeZdS )ÚKX_ECDHE_ECDSAz#Ephemeral ECDH with ECDSA signaturec                 C   s   t |ƒS r   r/   r   r   r   r   r"   v   r#   zKX_ECDHE_ECDSA.<lambda>Nr0   r   r   r   r   r4   t   s   r4   c                   @   s   e Zd ZdZdd„ ZeZdS )Ú
KX_DH_anonzAnonymous DH, no signaturesc                 C   s   t S r   r,   r   r   r   r   r"   ½   r#   zKX_DH_anon.<lambda>Nr-   r   r   r   r   r5   »   s   r5   c                   @   s   e Zd ZdZdd„ ZeZdS )ÚKX_ECDH_anonzECDH anonymous key exchangec                 C   s   t |ƒS r   r/   r   r   r   r   r"   Ã   r#   zKX_ECDH_anon.<lambda>Nr0   r   r   r   r   r6   Á   s   r6   c                   @   s   e Zd ZdZdS )ÚKX_DH_anon_EXPORTz,Anonymous DH, no signatures - Export versionNr3   r   r   r   r   r7   Ç   s   r7   )r   Ú
__future__r   Zscapy.layers.tls.keyexchanger   r   r   r   r   r   Zscapy.libs.sixZlibsÚsixr   Útyper	   Úwith_metaclassr
   r   r(   r)   r*   r+   r.   r1   r2   r4   r5   r6   r7   r   r   r   r   Ú<module>   s$    G