o
    ™¨ÊhD  ã                   @   sv  d dl mZmZmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
mZ d dlmZ e ej¡G dd„ deƒƒZe ej¡G dd	„ d	eƒƒZe e¡G d
d„ deƒƒZe e¡G dd„ deƒƒZe e¡G dd„ deƒƒZe e¡G dd„ deƒƒZe e¡G dd„ deƒƒZe e¡G dd„ deƒƒZe e¡G dd„ deƒƒZe e¡G dd„ deƒƒZe e¡G dd„ deƒƒZdS )é    )Úabsolute_importÚdivisionÚprint_functionN)Úutils)ÚAlreadyFinalizedÚUnsupportedAlgorithmÚ_Reasons)ÚHashBackendc                   @   s(   e Zd Zejdd„ ƒZejdd„ ƒZdS )ÚHashAlgorithmc                 C   ó   dS )zH
        A string naming this algorithm (e.g. "sha256", "md5").
        N© ©Úselfr   r   úW/var/www/html/env/lib/python3.10/site-packages/cryptography/hazmat/primitives/hashes.pyÚname   ó    zHashAlgorithm.namec                 C   r   )z<
        The size of the resulting digest in bytes.
        Nr   r   r   r   r   Údigest_size   r   zHashAlgorithm.digest_sizeN)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractpropertyr   r   r   r   r   r   r
      s
    
r
   c                   @   sD   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZ	d	S )
ÚHashContextc                 C   r   )zD
        A HashAlgorithm that will be used by this context.
        Nr   r   r   r   r   Ú	algorithm#   r   zHashContext.algorithmc                 C   r   )z@
        Processes the provided bytes through the hash.
        Nr   ©r   Údatar   r   r   Úupdate)   r   zHashContext.updatec                 C   r   )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr   r   r   r   r   Úfinalize/   r   zHashContext.finalizec                 C   r   )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r   Úcopy5   r   zHashContext.copyN)
r   r   r   r   r   r   Úabstractmethodr   r   r   r   r   r   r   r   !   s    


r   c                   @   s8   e Zd Zddd„Ze d¡Zdd„ Zdd„ Zd	d
„ Z	dS )ÚHashNc                 C   sZ   t |tƒstdtjƒ‚t |tƒstdƒ‚|| _|| _|d u r(| j 	| j
¡| _d S || _d S )Nz.Backend object does not implement HashBackend.z*Expected instance of hashes.HashAlgorithm.)Ú
isinstancer	   r   r   ÚBACKEND_MISSING_INTERFACEr
   Ú	TypeErrorÚ
_algorithmÚ_backendÚcreate_hash_ctxr   Ú_ctx)r   r   ÚbackendÚctxr   r   r   Ú__init__>   s   
þ

zHash.__init__r$   c                 C   s4   | j d u r	tdƒ‚t|tƒstdƒ‚| j  |¡ d S )NúContext was already finalized.zdata must be bytes.)r'   r   r!   Úbytesr#   r   r   r   r   r   r   R   s
   

zHash.updatec                 C   s*   | j d u r	tdƒ‚t| j| j| j  ¡ d�S )Nr+   )r(   r)   )r'   r   r    r   r%   r   r   r   r   r   r   Y   s
   
ÿz	Hash.copyc                 C   s&   | j d u r	tdƒ‚| j  ¡ }d | _ |S )Nr+   )r'   r   r   )r   Údigestr   r   r   r   `   s
   

zHash.finalize)N)
r   r   r   r*   r   Úread_only_propertyr   r   r   r   r   r   r   r   r    <   s    

r    c                   @   ó   e Zd ZdZdZdZdS )ÚSHA1Úsha1é   é@   N©r   r   r   r   r   Ú
block_sizer   r   r   r   r0   h   ó    r0   c                   @   r/   )ÚSHA224Úsha224é   r3   Nr4   r   r   r   r   r7   o   r6   r7   c                   @   r/   )ÚSHA256Úsha256é    r3   Nr4   r   r   r   r   r:   v   r6   r:   c                   @   r/   )ÚSHA384Úsha384é0   é€   Nr4   r   r   r   r   r=   }   r6   r=   c                   @   r/   )ÚSHA512Úsha512r3   r@   Nr4   r   r   r   r   rA   „   r6   rA   c                   @   r/   )ÚMD5Úmd5é   r3   Nr4   r   r   r   r   rC   ‹   r6   rC   c                   @   ó.   e Zd ZdZdZdZdZdd„ Ze 	d¡Z
dS )	ÚBLAKE2bÚblake2br3   é   r@   c                 C   ó2   || j ks
|| jk rtd | j| j ¡ƒ‚|| _d S ©NzDigest size must be {0}-{1}©Ú_max_digest_sizeÚ_min_digest_sizeÚ
ValueErrorÚformatÚ_digest_size©r   r   r   r   r   r*   ™   ó   

ÿ
zBLAKE2b.__init__rQ   N)r   r   r   r   rM   rN   r5   r*   r   r.   r   r   r   r   r   rG   ’   ó    rG   c                   @   rF   )	ÚBLAKE2sÚblake2sr3   r<   rI   c                 C   rJ   rK   rL   rR   r   r   r   r*   ®   rS   zBLAKE2s.__init__rQ   N)r   r   r   r   r5   rM   rN   r*   r   r.   r   r   r   r   r   rU   §   rT   rU   )Ú
__future__r   r   r   r   ÚsixÚcryptographyr   Úcryptography.exceptionsr   r   r   Ú'cryptography.hazmat.backends.interfacesr	   Úadd_metaclassÚABCMetaÚobjectr
   r   Úregister_interfacer    r0   r7   r:   r=   rA   rC   rG   rU   r   r   r   r   Ú<module>   s8   

+