U
    ÒZjl  ã                   @   sŒ  d dl Z d dlZd dlmZ d dlmZ G dd„ de jd�ZG dd„ de jd�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ƒ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 )/é    N)Úutils)ÚAlreadyFinalizedc                   @   sN   e Zd Zejedœdd„ƒZejedœdd„ƒZeje	j
e dœdd„ƒZdS )	ÚHashAlgorithm©Úreturnc                 C   s   dS )zH
        A string naming this algorithm (e.g. "sha256", "md5").
        N© ©Úselfr   r   úh/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/hashes.pyÚname   s    zHashAlgorithm.namec                 C   s   dS )z<
        The size of the resulting digest in bytes.
        Nr   r   r   r   r
   Údigest_size   s    zHashAlgorithm.digest_sizec                 C   s   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   r   r   r
   Ú
block_size   s    zHashAlgorithm.block_sizeN)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractpropertyÚstrr   Úintr   ÚtypingÚOptionalr   r   r   r   r
   r      s   r   )Ú	metaclassc                   @   s^   e Zd Zejedœdd„ƒZejeddœdd„ƒZ	ejedœdd	„ƒZ
ejd dœd
d„ƒZdS )ÚHashContextr   c                 C   s   dS )zD
        A HashAlgorithm that will be used by this context.
        Nr   r   r   r   r
   Ú	algorithm$   s    zHashContext.algorithmN©Údatar   c                 C   s   dS )z@
        Processes the provided bytes through the hash.
        Nr   ©r	   r   r   r   r
   Úupdate*   s    zHashContext.updatec                 C   s   dS )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr   r   r   r   r
   Úfinalize0   s    zHashContext.finalizec                 C   s   dS )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r
   Úcopy6   s    zHashContext.copy)r   r   r   r   r   r   r   ÚabstractmethodÚbytesr   r   r   r   r   r   r
   r   #   s   r   c                   @   s   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"   c                   @   sv   e Zd ZU eje ed< deejejd dœdd„Z	e
edœdd	„ƒZedd
œdd„Zd dœdd„Zedœdd„ZdS )ÚHashÚ_ctxNr   )r   ÚbackendÚctxc                 C   sF   t |tƒstdƒ‚|| _|d kr<ddlm} | | j¡| _n|| _d S )Nz*Expected instance of hashes.HashAlgorithm.r   )r&   )	Ú
isinstancer   Ú	TypeErrorÚ
_algorithmZ,cryptography.hazmat.backends.openssl.backendr&   Zcreate_hash_ctxr   r%   )r	   r   r&   r'   Zosslr   r   r
   Ú__init__F   s    
zHash.__init__r   c                 C   s   | j S ©N)r*   r   r   r   r
   r   Y   s    zHash.algorithmr   c                 C   s.   | j d krtdƒ‚t d|¡ | j  |¡ d S )NúContext was already finalized.r   )r%   r   r   Z_check_bytesliker   r   r   r   r
   r   ]   s    
zHash.updatec                 C   s&   | j d krtdƒ‚t| j| j  ¡ d�S )Nr-   )r'   )r%   r   r$   r   r   r   r   r   r
   r   c   s    
z	Hash.copyc                 C   s&   | j d krtdƒ‚| j  ¡ }d | _ |S )Nr-   )r%   r   r   )r	   Údigestr   r   r
   r   h   s
    

zHash.finalize)NN)r   r   r   r   r   r   Ú__annotations__r   ÚAnyr+   Úpropertyr   r!   r   r   r   r   r   r   r
   r$   C   s   
  üür$   c                   @   s   e Zd ZdZdZdZdS )ÚSHA1Úsha1é   é@   N©r   r   r   r   r   r   r   r   r   r
   r2   p   s   r2   c                   @   s   e Zd ZdZdZdZdS )Ú
SHA512_224z
sha512-224é   é€   Nr6   r   r   r   r
   r7   v   s   r7   c                   @   s   e Zd ZdZdZdZdS )Ú
SHA512_256z
sha512-256é    r9   Nr6   r   r   r   r
   r:   |   s   r:   c                   @   s   e Zd ZdZdZdZdS )ÚSHA224Úsha224r8   r5   Nr6   r   r   r   r
   r<   ‚   s   r<   c                   @   s   e Zd ZdZdZdZdS )ÚSHA256Úsha256r;   r5   Nr6   r   r   r   r
   r>   ˆ   s   r>   c                   @   s   e Zd ZdZdZdZdS )ÚSHA384Úsha384é0   r9   Nr6   r   r   r   r
   r@   Ž   s   r@   c                   @   s   e Zd ZdZdZdZdS )ÚSHA512Úsha512r5   r9   Nr6   r   r   r   r
   rC   ”   s   rC   c                   @   s   e Zd ZdZdZdZdS )ÚSHA3_224zsha3-224r8   Nr6   r   r   r   r
   rE   š   s   rE   c                   @   s   e Zd ZdZdZdZdS )ÚSHA3_256zsha3-256r;   Nr6   r   r   r   r
   rF       s   rF   c                   @   s   e Zd ZdZdZdZdS )ÚSHA3_384zsha3-384rB   Nr6   r   r   r   r
   rG   ¦   s   rG   c                   @   s   e Zd ZdZdZdZdS )ÚSHA3_512zsha3-512r5   Nr6   r   r   r   r
   rH   ¬   s   rH   c                   @   s4   e Zd ZdZdZedœdd„Zeedœdd„ƒZdS )	ÚSHAKE128Zshake128N©r   c                 C   s,   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©r(   r   r)   Ú
ValueErrorÚ_digest_size©r	   r   r   r   r
   r+   ¶   s
    
zSHAKE128.__init__r   c                 C   s   | j S r,   ©rO   r   r   r   r
   r   ¿   s    zSHAKE128.digest_size©	r   r   r   r   r   r   r+   r1   r   r   r   r   r
   rI   ²   s
   	rI   c                   @   s4   e Zd ZdZdZedœdd„Zeedœdd„ƒZdS )	ÚSHAKE256Zshake256NrJ   c                 C   s,   t |tƒstdƒ‚|dk r"tdƒ‚|| _d S rK   rM   rP   r   r   r
   r+   È   s
    
zSHAKE256.__init__r   c                 C   s   | j S r,   rQ   r   r   r   r
   r   Ñ   s    zSHAKE256.digest_sizerR   r   r   r   r
   rS   Ä   s
   	rS   c                   @   s   e Zd ZdZdZdZdS )ÚMD5Úmd5é   r5   Nr6   r   r   r   r
   rT   Ö   s   rT   c                   @   s<   e Zd ZdZdZdZdZedœdd„Ze	edœd	d
„ƒZ
dS )ÚBLAKE2bÚblake2br5   rL   r9   rJ   c                 C   s   |dkrt dƒ‚|| _d S )Nr5   zDigest size must be 64©rN   rO   rP   r   r   r
   r+   â   s    zBLAKE2b.__init__r   c                 C   s   | j S r,   rQ   r   r   r   r
   r   é   s    zBLAKE2b.digest_sizeN)r   r   r   r   Ú_max_digest_sizeÚ_min_digest_sizer   r   r+   r1   r   r   r   r   r
   rW   Ü   s   rW   c                   @   s<   e Zd ZdZdZdZdZedœdd„Ze	edœd	d
„ƒZ
dS )ÚBLAKE2sÚblake2sr5   r;   rL   rJ   c                 C   s   |dkrt dƒ‚|| _d S )Nr;   zDigest size must be 32rY   rP   r   r   r
   r+   ô   s    zBLAKE2s.__init__r   c                 C   s   | j S r,   rQ   r   r   r   r
   r   û   s    zBLAKE2s.digest_sizeN)r   r   r   r   r   rZ   r[   r   r+   r1   r   r   r   r   r
   r\   î   s   r\   c                   @   s   e Zd ZdZdZdZdS )ÚSM3Zsm3r;   r5   Nr6   r   r   r   r
   r^      s   r^   )r   r   Zcryptographyr   Zcryptography.exceptionsr   ÚABCMetar   r   r"   r$   r2   r7   r:   r<   r>   r@   rC   rE   rF   rG   rH   rI   rS   rT   rW   r\   r^   r   r   r   r
   Ú<module>   s0   -