o
    Ç `«  ã                   @   s‚  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 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)Ú_get_backend)Ú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   ú{home/ych/rk3568/buildroot/output/rockchip_rk3568/host/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   Úfinalize2   r   zHashContext.finalizec                 C   r   )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r   Úcopy8   r   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   sb   t |ƒ}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.)r	   Ú
isinstancer
   r   r   ZBACKEND_MISSING_INTERFACEr   Ú	TypeErrorÚ
_algorithmÚ_backendZcreate_hash_ctxr   Ú_ctx)r   r   ÚbackendÚctxr   r   r   Ú__init__H   s   
þ

zHash.__init__r&   c                 C   s.   | j d u 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 u r	tdƒ‚t| j| j| j  ¡ dS )Nr,   )r)   r*   )r(   r   r#   r   r'   r   r   r   r   r   r   c   s
   
ÿz	Hash.copyc                 C   s&   | j d u r	tdƒ‚| j  ¡ }d | _ |S )Nr,   )r(   r   r   )r   Údigestr   r   r   r   j   s
   

zHash.finalize)NN)
r   r   r   r+   r   Úread_only_propertyr   r   r   r   r   r   r   r   r#   F   s    

r#   c                   @   ó   e Zd ZdZdZdZdS )ÚSHA1Zsha1é   é@   N©r   r   r   r   r   Ú
block_sizer   r   r   r   r0   r   ó    r0   c                   @   r/   )Ú
SHA512_224z
sha512-224é   é€   Nr3   r   r   r   r   r6   y   r5   r6   c                   @   r/   )Ú
SHA512_256z
sha512-256é    r8   Nr3   r   r   r   r   r9   €   r5   r9   c                   @   r/   )ÚSHA224Zsha224r7   r2   Nr3   r   r   r   r   r;   ‡   r5   r;   c                   @   r/   )ÚSHA256Zsha256r:   r2   Nr3   r   r   r   r   r<   Ž   r5   r<   c                   @   r/   )ÚSHA384Úsha384é0   r8   Nr3   r   r   r   r   r=   •   r5   r=   c                   @   r/   )ÚSHA512Úsha512r2   r8   Nr3   r   r   r   r   r@   œ   r5   r@   c                   @   ó   e Zd ZdZdZdS )ÚSHA3_224zsha3-224r7   N©r   r   r   r   r   r   r   r   r   rC   £   ó    rC   c                   @   rB   )ÚSHA3_256zsha3-256r:   NrD   r   r   r   r   rF   ©   rE   rF   c                   @   rB   )ÚSHA3_384zsha3-384r?   NrD   r   r   r   r   rG   ¯   rE   rG   c                   @   rB   )ÚSHA3_512zsha3-512r2   NrD   r   r   r   r   rH   µ   rE   rH   c                   @   ó"   e Zd ZdZdd„ Ze d¡ZdS )ÚSHAKE128Zshake128c                 C   ó.   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$   ÚsixZinteger_typesr%   Ú
ValueErrorÚ_digest_size©r   r   r   r   r   r+   À   ó
   
zSHAKE128.__init__rQ   N©r   r   r   r   r+   r   r.   r   r   r   r   r   rJ   »   ó    	rJ   c                   @   rI   )ÚSHAKE256Zshake256c                 C   rK   rL   rN   rR   r   r   r   r+   Ñ   rS   zSHAKE256.__init__rQ   NrT   r   r   r   r   rV   Ì   rU   rV   c                   @   r/   )ÚMD5Zmd5é   r2   Nr3   r   r   r   r   rW   Ý   r5   rW   c                   @   ó.   e Zd ZdZdZdZdZdd„ Ze 	d¡Z
dS )	ÚBLAKE2bZblake2br2   rM   r8   c                 C   ó   |dkrt dƒ‚|| _d S )Nr2   zDigest size must be 64©rP   rQ   rR   r   r   r   r+   ë   ó   
zBLAKE2b.__init__rQ   N)r   r   r   r   Ú_max_digest_sizeÚ_min_digest_sizer4   r+   r   r.   r   r   r   r   r   rZ   ä   ó    rZ   c                   @   rY   )	ÚBLAKE2sZblake2sr2   r:   rM   c                 C   r[   )Nr:   zDigest size must be 32r\   rR   r   r   r   r+   ü   r]   zBLAKE2s.__init__rQ   N)r   r   r   r   r4   r^   r_   r+   r   r.   r   r   r   r   r   ra   õ   r`   ra   )(Ú
__future__r   r   r   r   rO   Úcryptographyr   Zcryptography.exceptionsr   r   r   Zcryptography.hazmat.backendsr	   Z'cryptography.hazmat.backends.interfacesr
   Zadd_metaclassÚABCMetaÚobjectr   r   r!   Zregister_interfacer#   r0   r6   r9   r;   r<   r=   r@   rC   rF   rG   rH   rJ   rV   rW   rZ   ra   r   r   r   r   Ú<module>   sb   


+