o
    Th@                     @  s  d dl mZ d dlZd dlmZ d dlmZ g d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 )/    )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                   @  sH   e Zd ZeejdddZeejdddZeejdd	d
ZdS )r   returnstrc                 C     dS )zH
        A string naming this algorithm (e.g. "sha256", "md5").
        N selfr   r   e/home/air/segue/gpt/backup/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/hashes.pyname'       zHashAlgorithm.nameintc                 C  r   )z<
        The size of the resulting digest in bytes.
        Nr   r   r   r   r!   digest_size.   r#   zHashAlgorithm.digest_size
int | Nonec                 C  r   )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   r#   zHashAlgorithm.block_sizeN)r   r   r   r$   )r   r&   )	__name__
__module____qualname__propertyabcabstractmethodr"   r%   r'   r   r   r   r!   r   &   s    r   )	metaclassc                   @  sP   e Zd ZeejdddZejddd	ZejdddZejdddZ	dS )r   r   r   c                 C  r   )zD
        A HashAlgorithm that will be used by this context.
        Nr   r   r   r   r!   	algorithm?   r#   zHashContext.algorithmdatar   Nonec                 C  r   )z@
        Processes the provided bytes through the hash.
        Nr   )r    r1   r   r   r!   updateF   r#   zHashContext.updatebytesc                 C  r   )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr   r   r   r   r!   finalizeL   r#   zHashContext.finalizec                 C  r   )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r!   copyR   r#   zHashContext.copyN)r   r   )r1   r   r   r2   )r   r4   )r   r   )
r)   r*   r+   r,   r-   r.   r0   r3   r5   r6   r   r   r   r!   r   >   s    r   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    r   c                   @     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       r   c                   @  r8   )r   z
sha512-224      Nr<   r   r   r   r!   r   k   r=   r   c                   @  r8   )r   z
sha512-256    r?   Nr<   r   r   r   r!   r   q   r=   r   c                   @  r8   )r   sha224r>   r;   Nr<   r   r   r   r!   r   w   r=   r   c                   @  r8   )r   sha256r@   r;   Nr<   r   r   r   r!   r   }   r=   r   c                   @  r8   )r   sha3840   r?   Nr<   r   r   r   r!   r      r=   r   c                   @  r8   )r   sha512r;   r?   Nr<   r   r   r   r!   r      r=   r   c                   @     e Zd ZdZdZdZdS )r   zsha3-224r>   Nr<   r   r   r   r!   r      r=   r   c                   @  rF   )r   zsha3-256r@   Nr<   r   r   r   r!   r      r=   r   c                   @  rF   )r	   zsha3-384rD   Nr<   r   r   r   r!   r	      r=   r	   c                   @  rF   )r
   zsha3-512r;   Nr<   r   r   r   r!   r
      r=   r
   c                   @  ,   e Zd ZdZdZd
ddZeddd	ZdS )r   shake128Nr%   r$   c                 C  ,   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__   
   

zSHAKE128.__init__r   c                 C     | j S NrP   r   r   r   r!   r%         zSHAKE128.digest_sizer%   r$   r(   r)   r*   r+   r"   r'   rR   r,   r%   r   r   r   r!   r          
	r   c                   @  rG   )r   shake256Nr%   r$   c                 C  rI   rJ   rL   rQ   r   r   r!   rR      rS   zSHAKE256.__init__r   c                 C  rT   rU   rV   r   r   r   r!   r%      rW   zSHAKE256.digest_sizerX   r(   rY   r   r   r   r!   r      rZ   r   c                   @  r8   )r   md5   r;   Nr<   r   r   r   r!   r      r=   r   c                   @  4   e Zd ZdZdZdZdZdddZedd
dZ	dS )r   blake2br;   rK   r?   r%   r$   c                 C     |dkrt d|| _d S )Nr;   zDigest size must be 64rO   rP   rQ   r   r   r!   rR         
zBLAKE2b.__init__r   c                 C  rT   rU   rV   r   r   r   r!   r%      rW   zBLAKE2b.digest_sizeNrX   r(   )
r)   r*   r+   r"   _max_digest_size_min_digest_sizer'   rR   r,   r%   r   r   r   r!   r          
r   c                   @  r^   )r   blake2sr;   r@   rK   r%   r$   c                 C  r`   )Nr@   zDigest size must be 32ra   rQ   r   r   r!   rR      rb   zBLAKE2s.__init__r   c                 C  rT   rU   rV   r   r   r   r!   r%      rW   zBLAKE2s.digest_sizeNrX   r(   )
r)   r*   r+   r"   r'   rc   rd   rR   r,   r%   r   r   r   r!   r      re   r   c                   @  r8   )r   sm3r@   r;   Nr<   r   r   r   r!   r      r=   r   )"
__future__r   r-   "cryptography.hazmat.bindings._rustr   rust_openssl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>   s8   
