B
    .¸h>  ã               @   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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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¡e e¡G d$d%„ d%eƒƒƒZ!e e¡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   s   dS )zH
        A string naming this algorithm (e.g. "sha256", "md5").
        N© )Úselfr   r   úbC:\Users\sanjo\AppData\Local\Qlobot\Launcher\ext_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_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   s   dS )zD
        A HashAlgorithm that will be used by this context.
        Nr   )r   r   r   r   Ú	algorithm#   s    zHashContext.algorithmc             C   s   dS )z@
        Processes the provided bytes through the hash.
        Nr   )r   Údatar   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   Úfinalize/   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   Úcopy5   s    zHashContext.copyN)
r   r   r   r   r   r   Úabstractmethodr   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               @   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   sX   t |tƒstdtjƒ‚t |tƒs(tdƒ‚|| _|| _|d krN| j 	| j
¡| _n|| _d S )Nz.Backend object does not implement HashBackend.z*Expected instance of hashes.HashAlgorithm.)Ú
isinstancer	   r   r   ZBACKEND_MISSING_INTERFACEr
   Ú	TypeErrorÚ
_algorithmÚ_backendZcreate_hash_ctxr   Ú_ctx)r   r   ÚbackendÚctxr   r   r   Ú__init__E   s    

zHash.__init__r!   c             C   s.   | j d krtdƒ‚t d|¡ | j  |¡ d S )NzContext was already finalized.r   )r#   r   r   Z_check_bytesliker   )r   r   r   r   r   r   Y   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   r   r   _   s    
z	Hash.copyc             C   s&   | j d krtdƒ‚| j  ¡ }d | _ |S )NzContext was already finalized.)r#   r   r   )r   Údigestr   r   r   r   f   s
    

zHash.finalize)N)
r   r   r   r&   r   Úread_only_propertyr   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   Ú
block_sizer   r   r   r   r)   n   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.   u   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S )ÚSHA3_224zsha3-224r/   N)r   r   r   r   r   r   r   r   r   r<   Ÿ   s   r<   c               @   s   e Zd ZdZdZdS )ÚSHA3_256zsha3-256r2   N)r   r   r   r   r   r   r   r   r   r=   ¥   s   r=   c               @   s   e Zd ZdZdZdS )ÚSHA3_384zsha3-384r9   N)r   r   r   r   r   r   r   r   r   r>   «   s   r>   c               @   s   e Zd ZdZdZdS )ÚSHA3_512zsha3-512r,   N)r   r   r   r   r   r   r   r   r   r?   ±   s   r?   c               @   s"   e Zd ZdZdd„ Ze d¡ZdS )ÚSHAKE128Zshake128c             C   s.   t |tjƒ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   ÚsixÚinteger_typesr    Ú
ValueErrorÚ_digest_size)r   r   r   r   r   r&   ¼   s
    zSHAKE128.__init__rE   N)r   r   r   r   r&   r   r(   r   r   r   r   r   r@   ·   s   	r@   c               @   s"   e Zd ZdZdd„ Ze d¡ZdS )ÚSHAKE256Zshake256c             C   s.   t |tjƒ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   rB   rC   r    rD   rE   )r   r   r   r   r   r&   Í   s
    zSHAKE256.__init__rE   N)r   r   r   r   r&   r   r(   r   r   r   r   r   rF   È   s   	rF   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   rG   Ù   s   rG   c               @   s.   e Zd ZdZdZdZdZdd„ Ze 	d¡Z
dS )	ÚBLAKE2bÚblake2br,   rA   r0   c             C   s   |dkrt dƒ‚|| _d S )Nr,   zDigest size must be 64)rD   rE   )r   r   r   r   r   r&   ç   s    zBLAKE2b.__init__rE   N)r   r   r   r   Ú_max_digest_sizeÚ_min_digest_sizer-   r&   r   r(   r   r   r   r   r   rJ   à   s   rJ   c               @   s.   e Zd ZdZdZdZdZdd„ Ze 	d¡Z
dS )	ÚBLAKE2sÚblake2sr,   r2   rA   c             C   s   |dkrt dƒ‚|| _d S )Nr2   zDigest size must be 32)rD   rE   )r   r   r   r   r   r&   ø   s    zBLAKE2s.__init__rE   N)r   r   r   r   r-   rL   rM   r&   r   r(   r   r   r   r   r   rN   ñ   s   rN   )&Ú
__future__r   r   r   r   rB   Úcryptographyr   Zcryptography.exceptionsr   r   r   Z'cryptography.hazmat.backends.interfacesr	   Úadd_metaclassÚABCMetaÚobjectr
   r   r   Zregister_interfacer   r)   r.   r1   r3   r5   r7   r:   r<   r=   r>   r?   r@   rF   rG   rJ   rN   r   r   r   r   Ú<module>   s^   *

