3
ãde™  ã               @   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               @   sZ   e Zd Zeejedœdd„ƒƒZeejedœdd„ƒƒZ	e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   ú\/var/www/agendate/envp3/lib/python3.6/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__ÚpropertyÚabcÚabstractmethodÚstrr	   Úintr
   ÚtypingÚOptionalr   r   r   r   r   r      s   r   )Ú	metaclassc               @   sb   e Zd Ze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 )ÚHashContext)r   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   Úfinalize2   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   Úcopy8   s    zHashContext.copy)r   r   r   r   r   r   r   r   Ú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               @   st   e Zd ZU eje deejejd 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 )ÚHashNr   )r   ÚbackendÚctxr   c             C   sF   t |tƒstdƒ‚|| _|d kr<ddlm} |j| jƒ| _n|| _d S )Nz*Expected instance of hashes.HashAlgorithm.r   )r!   )	Ú
isinstancer   Ú	TypeErrorÚ
_algorithmZ,cryptography.hazmat.backends.openssl.backendr!   Zcreate_hash_ctxr   Ú_ctx)r   r   r!   r"   Zosslr   r   r   Ú__init__H   s    
zHash.__init__)r   c             C   s   | j S )N)r%   )r   r   r   r   r   [   s    zHash.algorithm)r   r   c             C   s.   | j d krtdƒ‚tjd|ƒ | j j|ƒ d S )NzContext was already finalized.r   )r&   r   r   Z_check_bytesliker   )r   r   r   r   r   r   _   s    
zHash.updatec             C   s&   | j d krtdƒ‚t| j| j jƒ d�S )NzContext was already finalized.)r"   )r&   r   r    r   r   )r   r   r   r   r   e   s    
z	Hash.copyc             C   s&   | j d krtdƒ‚| j jƒ }d | _ |S )NzContext was already finalized.)r&   r   r   )r   Údigestr   r   r   r   j   s
    

zHash.finalize)NN)r   r   r   r   r   r   r&   r   ÚAnyr'   r   r   r   r   r   r   r   r   r   r   r    E   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   r*   r   s   r*   c               @   s   e Zd ZdZdZdZdS )Ú
SHA512_224z
sha512-224é   é€   N)r   r   r   r	   r
   r   r   r   r   r   r.   x   s   r.   c               @   s   e Zd ZdZdZdZdS )Ú
SHA512_256z
sha512-256é    r0   N)r   r   r   r	   r
   r   r   r   r   r   r1   ~   s   r1   c               @   s   e Zd ZdZdZdZdS )ÚSHA224Úsha224r/   r-   N)r   r   r   r	   r
   r   r   r   r   r   r3   „   s   r3   c               @   s   e Zd ZdZdZdZdS )ÚSHA256Úsha256r2   r-   N)r   r   r   r	   r
   r   r   r   r   r   r5   Š   s   r5   c               @   s   e Zd ZdZdZdZdS )ÚSHA384Úsha384é0   r0   N)r   r   r   r	   r
   r   r   r   r   r   r7   �   s   r7   c               @   s   e Zd ZdZdZdZdS )ÚSHA512Úsha512r-   r0   N)r   r   r   r	   r
   r   r   r   r   r   r:   –   s   r:   c               @   s   e Zd ZdZdZdZdS )ÚSHA3_224zsha3-224r/   N)r   r   r   r	   r
   r   r   r   r   r   r<   œ   s   r<   c               @   s   e Zd ZdZdZdZdS )ÚSHA3_256zsha3-256r2   N)r   r   r   r	   r
   r   r   r   r   r   r=   ¢   s   r=   c               @   s   e Zd ZdZdZdZdS )ÚSHA3_384zsha3-384r9   N)r   r   r   r	   r
   r   r   r   r   r   r>   ¨   s   r>   c               @   s   e Zd ZdZdZdZdS )ÚSHA3_512zsha3-512r-   N)r   r   r   r	   r
   r   r   r   r   r   r?   ®   s   r?   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 )N)rC   )r   r   r   r   r
   Á   s    zSHAKE128.digest_size)	r   r   r   r	   r   r   r'   r   r
   r   r   r   r   r@   ´   s
   	r@   c               @   s4   e Zd ZdZdZedœdd„Zeedœdd„ƒZdS )	ÚSHAKE256Zshake256N)r
   c             C   s,   t |tƒstdƒ‚|dk r"tdƒ‚|| _d S )Nzdigest_size must be an integerrA   z&digest_size must be a positive integer)r#   r   r$   rB   rC   )r   r
   r   r   r   r'   Ê   s
    
zSHAKE256.__init__)r   c             C   s   | j S )N)rC   )r   r   r   r   r
   Ó   s    zSHAKE256.digest_size)	r   r   r   r	   r   r   r'   r   r
   r   r   r   r   rD   Æ   s
   	rD   c               @   s   e Zd ZdZdZdZdS )ÚMD5Úmd5é   r-   N)r   r   r   r	   r
   r   r   r   r   r   rE   Ø   s   rE   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Úblake2br-   rA   r0   )r
   c             C   s   |dkrt dƒ‚|| _d S )Nr-   zDigest size must be 64)rB   rC   )r   r
   r   r   r   r'   ä   s    zBLAKE2b.__init__)r   c             C   s   | j S )N)rC   )r   r   r   r   r
   ê   s    zBLAKE2b.digest_sizeN)r   r   r   r	   Ú_max_digest_sizeÚ_min_digest_sizer   r   r'   r   r
   r   r   r   r   rH   Þ   s   rH   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Úblake2sr-   r2   rA   )r
   c             C   s   |dkrt dƒ‚|| _d S )Nr2   zDigest size must be 32)rB   rC   )r   r
   r   r   r   r'   õ   s    zBLAKE2s.__init__)r   c             C   s   | j S )N)rC   )r   r   r   r   r
   û   s    zBLAKE2s.digest_sizeN)r   r   r   r	   r   rJ   rK   r   r'   r   r
   r   r   r   r   rL   ï   s   rL   c               @   s   e Zd ZdZdZdZdS )ÚSM3Zsm3r2   r-   N)r   r   r   r	   r
   r   r   r   r   r   rN      s   rN   )r   r   Zcryptographyr   Zcryptography.exceptionsr   ÚABCMetar   r   r   r    r*   r.   r1   r3   r5   r7   r:   r<   r=   r>   r?   r@   rD   rE   rH   rL   rN   r   r   r   r   Ú<module>   s0   -