U
    2ÜŸj@  ã                   @  sÊ  d dl mZ d dlZd dlmZ d dlmZ ddddd	d
ddddddddddddddddgZG dd„ dej	d�Z
G dd„ dej	d�ZejjZe e¡ ejjZG dd„ dej	d�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
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!dS )0é    )ÚannotationsN)Úopenssl)ÚBufferÚMD5ÚSHA1ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512ÚSHA224ÚSHA256ÚSHA384ÚSHA512Ú
SHA512_224Ú
SHA512_256ÚSHAKE128ÚSHAKE256ÚSM3ÚBLAKE2bÚBLAKE2sÚExtendableOutputFunctionÚHashÚHashAlgorithmÚHashContextÚXOFHashc                   @  sT   e Zd Zeejddœdd„ƒƒZeejddœdd„ƒƒZeejddœd	d
„ƒƒZdS )r   Ústr©Úreturnc                 C  s   dS )zH
        A string naming this algorithm (e.g. "sha256", "md5").
        N© ©Úselfr   r   úI/tmp/pip-unpacked-wheel-mmhsgb0a/cryptography/hazmat/primitives/hashes.pyÚname'   s    zHashAlgorithm.nameÚintc                 C  s   dS )z<
        The size of the resulting digest in bytes.
        Nr   r   r   r   r!   Údigest_size.   s    zHashAlgorithm.digest_sizez
int | Nonec                 C  s   dS )z�
        The internal block size of the hash function, or None if the hash
        function does not use blocks internally (e.g. SHA3).
        Nr   r   r   r   r!   Ú
block_size5   s    zHashAlgorithm.block_sizeN)	Ú__name__Ú
__module__Ú__qualname__ÚpropertyÚabcÚabstractmethodr"   r$   r%   r   r   r   r!   r   &   s   )Ú	metaclassc                   @  sb   e Zd Zeejddœdd„ƒƒZejdddœdd	„ƒZejd
dœdd„ƒZejd dœdd„ƒZ	dS )r   r   r   c                 C  s   dS )zD
        A HashAlgorithm that will be used by this context.
        Nr   r   r   r   r!   Ú	algorithm?   s    zHashContext.algorithmr   ÚNone)Údatar   c                 C  s   dS )z@
        Processes the provided bytes through the hash.
        Nr   )r    r/   r   r   r!   ÚupdateF   s    zHashContext.updateÚbytesc                 C  s   dS )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr   r   r   r   r!   ÚfinalizeL   s    zHashContext.finalizec                 C  s   dS )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r!   ÚcopyR   s    zHashContext.copyN)
r&   r'   r(   r)   r*   r+   r-   r0   r2   r3   r   r   r   r!   r   >   s   c                   @  s   e Zd ZdZdS )r   z7
    An interface for extendable output functions.
    N)r&   r'   r(   Ú__doc__r   r   r   r!   r   _   s   c                   @  s   e Zd ZdZdZdZdS )r   Úsha1é   é@   N©r&   r'   r(   r"   r$   r%   r   r   r   r!   r   e   s   c                   @  s   e Zd ZdZdZdZdS )r   z
sha512-224é   é€   Nr8   r   r   r   r!   r   k   s   c                   @  s   e Zd ZdZdZdZdS )r   z
sha512-256é    r:   Nr8   r   r   r   r!   r   q   s   c                   @  s   e Zd ZdZdZdZdS )r   Úsha224r9   r7   Nr8   r   r   r   r!   r   w   s   c                   @  s   e Zd ZdZdZdZdS )r   Úsha256r;   r7   Nr8   r   r   r   r!   r   }   s   c                   @  s   e Zd ZdZdZdZdS )r   Úsha384é0   r:   Nr8   r   r   r   r!   r   ƒ   s   c                   @  s   e Zd ZdZdZdZdS )r   Úsha512r7   r:   Nr8   r   r   r   r!   r   ‰   s   c                   @  s   e Zd ZdZdZdZdS )r   zsha3-224r9   Nr8   r   r   r   r!   r   �   s   c                   @  s   e Zd ZdZdZdZdS )r   zsha3-256r;   Nr8   r   r   r   r!   r   •   s   c                   @  s   e Zd ZdZdZdZdS )r	   zsha3-384r?   Nr8   r   r   r   r!   r	   ›   s   c                   @  s   e Zd ZdZdZdZdS )r
   zsha3-512r7   Nr8   r   r   r   r!   r
   ¡   s   c                   @  s4   e Zd ZdZdZddœdd„Zeddœdd	„ƒZdS )
r   Zshake128Nr#   ©r$   c                 C  s,   t |tƒstdƒ‚|dk r"tdƒ‚|| _d S ©Nzdigest_size must be an integeré   z&digest_size must be a positive integer©Ú
isinstancer#   Ú	TypeErrorÚ
ValueErrorÚ_digest_size©r    r$   r   r   r!   Ú__init__«   s
    
zSHAKE128.__init__r   c                 C  s   | j S ©N©rH   r   r   r   r!   r$   ´   s    zSHAKE128.digest_size©r&   r'   r(   r"   r%   rJ   r)   r$   r   r   r   r!   r   §   s
   	c                   @  s4   e Zd ZdZdZddœdd„Zeddœdd	„ƒZdS )
r   Zshake256Nr#   rA   c                 C  s,   t |tƒstdƒ‚|dk r"tdƒ‚|| _d S rB   rD   rI   r   r   r!   rJ   ½   s
    
zSHAKE256.__init__r   c                 C  s   | j S rK   rL   r   r   r   r!   r$   Æ   s    zSHAKE256.digest_sizerM   r   r   r   r!   r   ¹   s
   	c                   @  s   e Zd ZdZdZdZdS )r   Úmd5é   r7   Nr8   r   r   r   r!   r   Ë   s   c                   @  s<   e Zd ZdZdZdZdZddœdd„Zedd	œd
d„ƒZ	dS )r   Úblake2br7   rC   r:   r#   rA   c                 C  s   |dkrt dƒ‚|| _d S )Nr7   zDigest size must be 64©rG   rH   rI   r   r   r!   rJ   ×   s    zBLAKE2b.__init__r   c                 C  s   | j S rK   rL   r   r   r   r!   r$   Ý   s    zBLAKE2b.digest_sizeN)
r&   r'   r(   r"   Ú_max_digest_sizeÚ_min_digest_sizer%   rJ   r)   r$   r   r   r   r!   r   Ñ   s   c                   @  s<   e Zd ZdZdZdZdZddœdd„Zedd	œd
d„ƒZ	dS )r   Úblake2sr7   r;   rC   r#   rA   c                 C  s   |dkrt dƒ‚|| _d S )Nr;   zDigest size must be 32rQ   rI   r   r   r!   rJ   è   s    zBLAKE2s.__init__r   c                 C  s   | j S rK   rL   r   r   r   r!   r$   î   s    zBLAKE2s.digest_sizeN)
r&   r'   r(   r"   r%   rR   rS   rJ   r)   r$   r   r   r   r!   r   â   s   c                   @  s   e Zd ZdZdZdZdS )r   Zsm3r;   r7   Nr8   r   r   r   r!   r   ó   s   )"Ú
__future__r   r*   Z"cryptography.hazmat.bindings._rustr   Zrust_opensslZcryptography.utilsr   Ú__all__ÚABCMetar   r   Úhashesr   Úregisterr   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r!   Ú<module>   sb   ê
