o
    Vh                     @  s  d dl mZ d dl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 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)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HashContextc                   @  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   y/var/www/html/construction_image-detection-poc/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_size3   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databytesNonec                 C  r   )z@
        Processes the provided bytes through the hash.
        Nr   )r   r/   r   r   r   updateD   r!   zHashContext.updatec                 C  r   )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr   r   r   r   r   finalizeJ   r!   zHashContext.finalizec                 C  r   )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r   copyP   r!   zHashContext.copyN)r   r   )r/   r0   r   r1   )r   r0   )r   r   )
r'   r(   r)   r*   r+   r,   r.   r2   r3   r4   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   a       r   c                   @  r6   )r   z
sha512-224      Nr:   r   r   r   r   r   g   r;   r   c                   @  r6   )r   z
sha512-256    r=   Nr:   r   r   r   r   r   m   r;   r   c                   @  r6   )r
   sha224r<   r9   Nr:   r   r   r   r   r
   s   r;   r
   c                   @  r6   )r   sha256r>   r9   Nr:   r   r   r   r   r   y   r;   r   c                   @  r6   )r   sha3840   r=   Nr:   r   r   r   r   r      r;   r   c                   @  r6   )r   sha512r9   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                   @  rD   )r   zsha3-256r>   Nr:   r   r   r   r   r      r;   r   c                   @  rD   )r   zsha3-384rB   Nr:   r   r   r   r   r      r;   r   c                   @  rD   )r	   zsha3-512r9   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rN   r   r   r   r   r#         zSHAKE128.digest_sizer#   r"   r&   r'   r(   r)   r    r%   rP   r*   r#   r   r   r   r   r          
	r   c                   @  rE   )r   shake256Nr#   r"   c                 C  rG   rH   rJ   rO   r   r   r   rP      rQ   zSHAKE256.__init__r   c                 C  rR   rS   rT   r   r   r   r   r#      rU   zSHAKE256.digest_sizerV   r&   rW   r   r   r   r   r      rX   r   c                   @  r6   )r   md5   r9   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   blake2br9   rI   r=   r#   r"   c                 C     |dkrt d|| _d S )Nr9   zDigest size must be 64rM   rN   rO   r   r   r   rP         
zBLAKE2b.__init__r   c                 C  rR   rS   rT   r   r   r   r   r#      rU   zBLAKE2b.digest_sizeNrV   r&   )
r'   r(   r)   r    _max_digest_size_min_digest_sizer%   rP   r*   r#   r   r   r   r   r          
r   c                   @  r\   )r   blake2sr9   r>   rI   r#   r"   c                 C  r^   )Nr>   zDigest size must be 32r_   rO   r   r   r   rP      r`   zBLAKE2s.__init__r   c                 C  rR   rS   rT   r   r   r   r   r#      rU   zBLAKE2s.digest_sizeNrV   r&   )
r'   r(   r)   r    r%   ra   rb   rP   r*   r#   r   r   r   r   r      rc   r   c                   @  r6   )r   sm3r>   r9   Nr:   r   r   r   r   r      r;   r   )
__future__r   r+   "cryptography.hazmat.bindings._rustr   rust_openssl__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   <module>   s4   
