o
    pkj                     @  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   c/home/djax/ivt_ai_plugin/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   sha3840   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:   
