o
    e                     @  s  d dl mZ d dl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)HashAlgorithmHashContextHashExtendableOutputFunctionSHA1
SHA512_224
SHA512_256SHA224SHA256SHA384SHA512SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256MD5BLAKE2bBLAKE2sSM3c                   @  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   X/var/www/html/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typing.Optional[int]c                 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_size4   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   updateE   r!   zHashContext.updatec                 C  r   )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr   r   r   r   r   finalizeK   r!   zHashContext.finalizec                 C  r   )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r   copyQ   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   b       r   c                   @  r6   )r	   z
sha512-224      Nr:   r   r   r   r   r	   h   r;   r	   c                   @  r6   )r
   z
sha512-256    r=   Nr:   r   r   r   r   r
   n   r;   r
   c                   @  r6   )r   sha224r<   r9   Nr:   r   r   r   r   r   t   r;   r   c                   @  r6   )r   sha256r>   r9   Nr:   r   r   r   r   r   z   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+   typing"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>   s6   
