
     h                        d dl Z d dlZd dlmZ d dlmZ  G d de j                  Z G d de j                  Z G d	 d
e j                  Z	 G d de          Z
 G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$ee	          Z G d% d&ee	          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          ZdS )/    N)utils)AlreadyFinalizedc                       e Zd Zeej        defd                        Zeej        defd                        Z	eej        de
j        e         fd                        ZdS )HashAlgorithmreturnc                     dS )zH
        A string naming this algorithm (e.g. "sha256", "md5").
        N selfs    a/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/hashes.pynamezHashAlgorithm.name             c                     dS )z<
        The size of the resulting digest in bytes.
        Nr	   r
   s    r   digest_sizezHashAlgorithm.digest_size   r   r   c                     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
   s    r   
block_sizezHashAlgorithm.block_size   r   r   N)__name__
__module____qualname__propertyabcabstractmethodstrr   intr   typingOptionalr   r	   r   r   r   r      s        c     X
 S     X
 FOC0     X  r   r   )	metaclassc                       e Zd Zeej        defd                        Zej        deddfd            Z	ej        defd            Z
ej        dd            ZdS )	HashContextr   c                     dS )zD
        A HashAlgorithm that will be used by this context.
        Nr	   r
   s    r   	algorithmzHashContext.algorithm%   r   r   dataNc                     dS )z@
        Processes the provided bytes through the hash.
        Nr	   r   r#   s     r   updatezHashContext.update,   r   r   c                     dS )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr	   r
   s    r   finalizezHashContext.finalize2   r   r   c                     dS )zM
        Return a HashContext that is a copy of the current context.
        Nr	   r
   s    r   copyzHashContext.copy8   r   r   )r   r    )r   r   r   r   r   r   r   r"   bytesr&   r(   r*   r	   r   r   r    r    $   s        =     X
 	5 T    
 	%    
 	     r   r    c                       e Zd ZdZdS )ExtendableOutputFunctionz7
    An interface for extendable output functions.
    N)r   r   r   __doc__r	   r   r   r-   r-   ?   s           r   r-   c            	           e Zd ZU ej        e         ed<   	 	 ddedej        dej        d         ddfdZ	e
defd	            Zd
eddfdZddZdefdZdS )Hash_ctxNr"   backendctxr    r   c                     t          |t                    st          d          || _        |'ddlm} |                    | j                  | _        d S || _        d S )Nz*Expected instance of hashes.HashAlgorithm.r   )r2   )	
isinstancer   	TypeError
_algorithm,cryptography.hazmat.backends.openssl.backendr2   create_hash_ctxr"   r1   )r   r"   r2   r3   ossls        r   __init__zHash.__init__H   sx     )]33 	JHIII#;      ,,T^<<DIIIDIIIr   c                     | j         S N)r7   r
   s    r   r"   zHash.algorithm[   s
    r   r#   c                     | j         t          d          t          j        d|           | j                             |           d S )NContext was already finalized.r#   )r1   r   r   _check_bytesliker&   r%   s     r   r&   zHash.update_   sH    9"#CDDDvt,,,	r   c                     | j         t          d          t          | j        | j                                                   S )Nr?   )r3   )r1   r   r0   r"   r*   r
   s    r   r*   z	Hash.copye   s:    9"#CDDDDN	(8(89999r   c                 r    | j         t          d          | j                                         }d | _         |S )Nr?   )r1   r   r(   )r   digests     r   r(   zHash.finalizej   s8    9"#CDDD##%%	r   )NN)r   r0   )r   r   r   r   r   r    __annotations__r   Anyr;   r   r"   r+   r&   r*   r(   r	   r   r   r0   r0   E   s         
/+
&&&&
 #.2	    _]+	
 
   & =    X5 T    : : : :
%      r   r0   c                       e Zd ZdZdZdZdS )SHA1sha1   @   Nr   r   r   r   r   r   r	   r   r   rG   rG   r   s        DKJJJr   rG   c                       e Zd ZdZdZdZdS )
SHA512_224z
sha512-224      NrK   r	   r   r   rM   rM   x           DKJJJr   rM   c                       e Zd ZdZdZdZdS )
SHA512_256z
sha512-256    rO   NrK   r	   r   r   rR   rR   ~   rP   r   rR   c                       e Zd ZdZdZdZdS )SHA224sha224rN   rJ   NrK   r	   r   r   rU   rU              DKJJJr   rU   c                       e Zd ZdZdZdZdS )SHA256sha256rS   rJ   NrK   r	   r   r   rY   rY      rW   r   rY   c                       e Zd ZdZdZdZdS )SHA384sha3840   rO   NrK   r	   r   r   r\   r\              DKJJJr   r\   c                       e Zd ZdZdZdZdS )SHA512sha512rJ   rO   NrK   r	   r   r   ra   ra      r_   r   ra   c                       e Zd ZdZdZdZdS )SHA3_224zsha3-224rN   NrK   r	   r   r   rd   rd              DKJJJr   rd   c                       e Zd ZdZdZdZdS )SHA3_256zsha3-256rS   NrK   r	   r   r   rg   rg      re   r   rg   c                       e Zd ZdZdZdZdS )SHA3_384zsha3-384r^   NrK   r	   r   r   ri   ri      re   r   ri   c                       e Zd ZdZdZdZdS )SHA3_512zsha3-512rJ   NrK   r	   r   r   rk   rk      re   r   rk   c                   >    e Zd ZdZdZdefdZedefd            ZdS )SHAKE128shake128Nr   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r5   r   r6   
ValueError_digest_sizer   r   s     r   r;   zSHAKE128.__init__   I    +s++ 	><===??EFFF'r   r   c                     | j         S r=   rt   r
   s    r   r   zSHAKE128.digest_size         r   	r   r   r   r   r   r   r;   r   r   r	   r   r   rm   rm      `        DJ(C ( ( ( ( !S ! ! ! X! ! !r   rm   c                   >    e Zd ZdZdZdefdZedefd            ZdS )SHAKE256shake256Nr   c                     t          |t                    st          d          |dk     rt          d          || _        d S rp   rr   ru   s     r   r;   zSHAKE256.__init__   rv   r   r   c                     | j         S r=   rx   r
   s    r   r   zSHAKE256.digest_size   ry   r   rz   r	   r   r   r}   r}      r{   r   r}   c                       e Zd ZdZdZdZdS )MD5md5   rJ   NrK   r	   r   r   r   r              DKJJJr   r   c                   F    e Zd ZdZdZdZdZdefdZe	defd            Z
d	S )
BLAKE2bblake2brJ   rq   rO   r   c                 >    |dk    rt          d          || _        d S )NrJ   zDigest size must be 64rs   rt   ru   s     r   r;   zBLAKE2b.__init__   *    "5666'r   r   c                     | j         S r=   rx   r
   s    r   r   zBLAKE2b.digest_size   ry   r   N)r   r   r   r   _max_digest_size_min_digest_sizer   r   r;   r   r   r	   r   r   r   r      sl        DJ(C ( ( ( ( !S ! ! ! X! ! !r   r   c                   F    e Zd ZdZdZdZdZdefdZe	defd            Z
d	S )
BLAKE2sblake2srJ   rS   rq   r   c                 >    |dk    rt          d          || _        d S )NrS   zDigest size must be 32r   ru   s     r   r;   zBLAKE2s.__init__   r   r   r   c                     | j         S r=   rx   r
   s    r   r   zBLAKE2s.digest_size   ry   r   N)r   r   r   r   r   r   r   r   r;   r   r   r	   r   r   r   r      sl        DJ(C ( ( ( ( !S ! ! ! X! ! !r   r   c                       e Zd ZdZdZdZdS )SM3sm3rS   rJ   NrK   r	   r   r   r   r      r   r   r   )r   r   cryptographyr   cryptography.exceptionsr   ABCMetar   r    r-   r0   rG   rM   rR   rU   rY   r\   ra   rd   rg   ri   rk   rm   r}   r   r   r   r   r	   r   r   <module>r      s  
 


        4 4 4 4 4 4    ck    0    CK    6        * * * * *; * * *Z    =                     ]       ]       ]       ]       }       }       }       }   ! ! ! ! !}6 ! ! !$! ! ! ! !}6 ! ! !$    -   ! ! ! ! !m ! ! !"! ! ! ! !m ! ! !"    -     r   