a
    kÄ#dâ  ã                   @   sò   d Z ddlmZmZmZmZmZmZ ddlm	Z
 ddlm  mZ i ZG dd„ deƒZG dd„ de 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dS )z
Hash classes.
é    )Úmd5Úsha1Úsha224Úsha256Úsha384Úsha512)ÚMD4Nc                       s    e Zd ZdZ‡ fdd„Z‡  ZS )Ú_GenericHashMetaclassz•
    Hash classes are automatically registered through this metaclass.
    Furthermore, their name attribute is extracted from their class name.
    c                    sJ   |dkr|dd … |d< t t| ƒ | |||¡}|dkrF|t|dd … < |S )NÚ_GenericHashé   Úname)Úsuperr	   Ú__new__Ú_tls_hash_algs)ÚclsÚ	hash_nameÚbasesÚdctZ	the_class©Ú	__class__© úS/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/layers/tls/crypto/hash.pyr      s    ÿz_GenericHashMetaclass.__new__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__classcell__r   r   r   r   r	      s   r	   c                   @   s   e Zd Zdd„ ZdS )r
   c                 C   s   |   |¡ ¡ S )N)Úhash_clsÚdigest©ÚselfZtbdr   r   r   r   $   s    z_GenericHash.digestN)r   r   r   r   r   r   r   r   r
   #   s   r
   c                   @   s   e Zd ZdZdd„ ZdS )Ú	Hash_NULLr   c                 C   s   dS )Nó    r   r   r   r   r   r   +   s    zHash_NULL.digestN)r   r   r   Úhash_lenr   r   r   r   r   r!   (   s   r!   c                   @   s   e Zd ZeZdZdS )ÚHash_MD4é   N)r   r   r   Úmd4r   r#   r   r   r   r   r$   /   s   r$   c                   @   s   e Zd ZeZdZdS )ÚHash_MD5r%   N)r   r   r   r   r   r#   r   r   r   r   r'   4   s   r'   c                   @   s   e Zd ZeZdZdS )ÚHash_SHAé   N)r   r   r   r   r   r#   r   r   r   r   r(   9   s   r(   c                   @   s   e Zd ZeZdZdS )ÚHash_SHA224é   N)r   r   r   r   r   r#   r   r   r   r   r*   >   s   r*   c                   @   s   e Zd ZeZdZdS )ÚHash_SHA256é    N)r   r   r   r   r   r#   r   r   r   r   r,   C   s   r,   c                   @   s   e Zd ZeZdZdS )ÚHash_SHA384é0   N)r   r   r   r   r   r#   r   r   r   r   r.   H   s   r.   c                   @   s   e Zd ZeZdZdS )ÚHash_SHA512é@   N)r   r   r   r   r   r#   r   r   r   r   r0   M   s   r0   )r   Úhashlibr   r   r   r   r   r   Zscapy.layers.tls.crypto.md4r   r&   Zscapy.libs.sixZlibsÚsixr   Útyper	   Úwith_metaclassÚobjectr
   r!   r$   r'   r(   r*   r,   r.   r0   r   r   r   r   Ú<module>   s    