U
    ʹh@                     @  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   K./venv/lib/python3.8/site-packages/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   Z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      Nr7   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    r9   Nr7   r   r   r   r!   r   q   s   c                   @  s   e Zd ZdZdZdZdS )r   Zsha224r8   r6   Nr7   r   r   r   r!   r   w   s   c                   @  s   e Zd ZdZdZdZdS )r   Zsha256r:   r6   Nr7   r   r   r   r!   r   }   s   c                   @  s   e Zd ZdZdZdZdS )r   Zsha3840   r9   Nr7   r   r   r   r!   r      s   c                   @  s   e Zd ZdZdZdZdS )r   Zsha512r6   r9   Nr7   r   r   r   r!   r      s   c                   @  s   e Zd ZdZdZdZdS )r   zsha3-224r8   Nr7   r   r   r   r!   r      s   c                   @  s   e Zd ZdZdZdZdS )r   zsha3-256r:   Nr7   r   r   r   r!   r      s   c                   @  s   e Zd ZdZdZdZdS )r	   zsha3-384r;   Nr7   r   r   r   r!   r	      s   c                   @  s   e Zd ZdZdZdZdS )r
   zsha3-512r6   Nr7   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rC   r   r   r   r!   r$      s    zSHAKE128.digest_sizer&   r'   r(   r"   r%   rE   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#   r<   c                 C  s,   t |tstd|dk r"td|| _d S r=   r?   rD   r   r   r!   rE      s
    
zSHAKE256.__init__r   c                 C  s   | j S rF   rG   r   r   r   r!   r$      s    zSHAKE256.digest_sizerH   r   r   r   r!   r      s
   	c                   @  s   e Zd ZdZdZdZdS )r   Zmd5   r6   Nr7   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   Zblake2br6   r>   r9   r#   r<   c                 C  s   |dkrt d|| _d S )Nr6   zDigest size must be 64rB   rC   rD   r   r   r!   rE      s    zBLAKE2b.__init__r   c                 C  s   | j S rF   rG   r   r   r   r!   r$      s    zBLAKE2b.digest_sizeN)
r&   r'   r(   r"   _max_digest_size_min_digest_sizer%   rE   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   Zblake2sr6   r:   r>   r#   r<   c                 C  s   |dkrt d|| _d S )Nr:   zDigest size must be 32rJ   rD   r   r   r!   rE      s    zBLAKE2s.__init__r   c                 C  s   | j S rF   rG   r   r   r   r!   r$      s    zBLAKE2s.digest_sizeN)
r&   r'   r(   r"   r%   rK   rL   rE   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:   r6   Nr7   r   r   r   r!   r      s   )"Z
__future__r   r*   Z"cryptography.hazmat.bindings._rustr   Zrust_opensslZcryptography.utilsr   __all__ABCMetar   r   Z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   
