o
    àý°jì  ã                   @  sª  d dl mZ d dlZd dlZd dlmZ d dlmZ g d¢Z	G dd„ dej
d�ZG d	d
„ d
ej
d�ZejjZe e¡ ejj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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 )/é    )ÚannotationsN)Úopenssl)ÚBuffer)ÚMD5ÚSHA1ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512ÚSHA224ÚSHA256ÚSHA384ÚSHA512Ú
SHA512_224Ú
SHA512_256ÚSHAKE128ÚSHAKE256ÚSM3ÚBLAKE2bÚBLAKE2sÚExtendableOutputFunctionÚHashÚHashAlgorithmÚHashContextÚXOFHashc                   @  sH   e Zd Zeejddd„ƒƒZeejddd„ƒƒZeejdd	d
„ƒƒZdS )r   ÚreturnÚstrc                 C  ó   dS )zH
        A string naming this algorithm (e.g. "sha256", "md5").
        N© ©Úselfr   r   ú˜/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/hashes.pyÚname(   ó    zHashAlgorithm.nameÚintc                 C  r   )z<
        The size of the resulting digest in bytes.
        Nr   r   r   r   r!   Údigest_size/   r#   zHashAlgorithm.digest_sizeú
int | Nonec                 C  r   )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_size6   r#   zHashAlgorithm.block_sizeN)r   r   ©r   r$   )r   r&   )	Ú__name__Ú
__module__Ú__qualname__ÚpropertyÚabcÚabstractmethodr"   r%   r'   r   r   r   r!   r   '   s    r   )Ú	metaclassc                   @  sP   e Zd Zeejddd„ƒƒZejddd	„ƒZejddd„ƒZejddd„ƒZ	dS )r   r   r   c                 C  r   )zD
        A HashAlgorithm that will be used by this context.
        Nr   r   r   r   r!   Ú	algorithm@   r#   zHashContext.algorithmÚdatar   ÚNonec                 C  r   )z@
        Processes the provided bytes through the hash.
        Nr   )r    r1   r   r   r!   ÚupdateG   r#   zHashContext.updateÚbytesc                 C  r   )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr   r   r   r   r!   ÚfinalizeM   r#   zHashContext.finalizec                 C  r   )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r!   ÚcopyS   r#   zHashContext.copyN)r   r   )r1   r   r   r2   )r   r4   )r   r   )
r)   r*   r+   r,   r-   r.   r0   r3   r5   r6   r   r   r   r!   r   ?   s    r   c                   @  s   e Zd ZdZdS )r   z7
    An interface for extendable output functions.
    N)r)   r*   r+   Ú__doc__r   r   r   r!   r   `   s    r   c                   @  ó"   e Zd ZdZdZdZddd	„Zd
S )r   Úsha1é   é@   ÚotherÚobjectr   Úboolc                 C  ó   t |tƒstS dS ©NT)Ú
isinstancer   ÚNotImplemented©r    r<   r   r   r!   Ú__eq__k   ó   
zSHA1.__eq__N©r<   r=   r   r>   ©r)   r*   r+   r"   r%   r'   rD   r   r   r   r!   r   f   ó
    r   c                   @  r8   )r   z
sha512-224é   é€   r<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   w   rE   zSHA512_224.__eq__NrF   rG   r   r   r   r!   r   r   rH   r   c                   @  r8   )r   z
sha512-256é    rJ   r<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   ƒ   rE   zSHA512_256.__eq__NrF   rG   r   r   r   r!   r   ~   rH   r   c                   @  r8   )r   Úsha224rI   r;   r<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   �   rE   zSHA224.__eq__NrF   rG   r   r   r   r!   r   Š   rH   r   c                   @  r8   )r   Úsha256rK   r;   r<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   ›   rE   zSHA256.__eq__NrF   rG   r   r   r   r!   r   –   rH   r   c                   @  r8   )r   Úsha384é0   rJ   r<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   §   rE   zSHA384.__eq__NrF   rG   r   r   r   r!   r   ¢   rH   r   c                   @  r8   )r   Úsha512r;   rJ   r<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   ³   rE   zSHA512.__eq__NrF   rG   r   r   r   r!   r   ®   rH   r   c                   @  ó"   e Zd ZdZdZdZd
dd	„ZdS )r   zsha3-224rI   Nr<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   ¿   rE   zSHA3_224.__eq__rF   rG   r   r   r   r!   r   º   rH   r   c                   @  rQ   )r   zsha3-256rK   Nr<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   Ë   rE   zSHA3_256.__eq__rF   rG   r   r   r   r!   r   Æ   rH   r   c                   @  rQ   )r	   zsha3-384rO   Nr<   r=   r   r>   c                 C  r?   r@   )rA   r	   rB   rC   r   r   r!   rD   ×   rE   zSHA3_384.__eq__rF   rG   r   r   r   r!   r	   Ò   rH   r	   c                   @  rQ   )r
   zsha3-512r;   Nr<   r=   r   r>   c                 C  r?   r@   )rA   r
   rB   rC   r   r   r!   rD   ã   rE   zSHA3_512.__eq__rF   rG   r   r   r   r!   r
   Þ   rH   r
   c                   @  óB   e Zd ZdZdZddd„Zddd„Zeddd„ƒZe	dd„ ƒZ
dS )r   Úshake128Nr%   r$   c                 C  ó,   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©rA   r$   Ú	TypeErrorÚ
ValueErrorÚ_digest_size©r    r%   r   r   r!   Ú__init__î   ó
   

zSHAKE128.__init__r<   r=   r   r>   c                 C  ó   t |tƒstS | j|jkS ©N)rA   r   rB   rZ   rC   r   r   r!   rD   ÷   ó   
zSHAKE128.__eq__c                 C  ó   | j S r_   ©rZ   r   r   r   r!   r%   ý   ó   zSHAKE128.digest_sizec                 C  ó
   | t jƒS r_   ©ÚsysÚmaxsize©Úclsr   r   r!   Úxof  ó   
zSHAKE128.xof©r%   r$   rF   r(   ©r)   r*   r+   r"   r'   r\   rD   r,   r%   Úclassmethodrj   r   r   r   r!   r   ê   ó    

	r   c                   @  rR   )r   Úshake256Nr%   r$   c                 C  rT   rU   rW   r[   r   r   r!   r\   
  r]   zSHAKE256.__init__r<   r=   r   r>   c                 C  r^   r_   )rA   r   rB   rZ   rC   r   r   r!   rD     r`   zSHAKE256.__eq__c                 C  ra   r_   rb   r   r   r   r!   r%     rc   zSHAKE256.digest_sizec                 C  rd   r_   re   rh   r   r   r!   rj     rk   zSHAKE256.xofrl   rF   r(   rm   r   r   r   r!   r     ro   r   c                   @  r8   )r   Úmd5é   r;   r<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   '  rE   z
MD5.__eq__NrF   rG   r   r   r   r!   r   "  rH   r   c                   @  ó>   e Zd ZdZdZdZdZddd„Zddd„Ze	ddd„ƒZ
dS )r   Úblake2br;   rV   rJ   r%   r$   c                 C  ó   |dkrt dƒ‚|| _d S )Nr;   zDigest size must be 64©rY   rZ   r[   r   r   r!   r\   4  ó   
zBLAKE2b.__init__r<   r=   r   r>   c                 C  r^   r_   )rA   r   rB   rZ   rC   r   r   r!   rD   :  r`   zBLAKE2b.__eq__c                 C  ra   r_   rb   r   r   r   r!   r%   @  rc   zBLAKE2b.digest_sizeNrl   rF   r(   )r)   r*   r+   r"   Ú_max_digest_sizeÚ_min_digest_sizer'   r\   rD   r,   r%   r   r   r   r!   r   .  ó    

r   c                   @  rs   )r   Úblake2sr;   rK   rV   r%   r$   c                 C  ru   )NrK   zDigest size must be 32rv   r[   r   r   r!   r\   K  rw   zBLAKE2s.__init__r<   r=   r   r>   c                 C  r^   r_   )rA   r   rB   rZ   rC   r   r   r!   rD   Q  r`   zBLAKE2s.__eq__c                 C  ra   r_   rb   r   r   r   r!   r%   W  rc   zBLAKE2s.digest_sizeNrl   rF   r(   )r)   r*   r+   r"   r'   rx   ry   r\   rD   r,   r%   r   r   r   r!   r   E  rz   r   c                   @  r8   )r   Úsm3rK   r;   r<   r=   r   r>   c                 C  r?   r@   )rA   r   rB   rC   r   r   r!   rD   a  rE   z
SM3.__eq__NrF   rG   r   r   r   r!   r   \  rH   r   )#Ú
__future__r   r-   rf   Ú"cryptography.hazmat.bindings._rustr   Úrust_opensslÚcryptography.utilsr   Ú__all__ÚABCMetar   r   Úhashesr   Úregisterr   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r!   Ú<module>   s:   
