o
    9f                     @  s  d dl mZ d dl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 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)HashAlgorithmHashContextHashExtendableOutputFunctionSHA1
SHA512_224
SHA512_256SHA224SHA256SHA384SHA512SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256MD5BLAKE2bBLAKE2sSM3c                   @  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   Elib/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_size3   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databytesNonec                 C  r   )z@
        Processes the provided bytes through the hash.
        Nr   )r   r/   r   r   r   updateD   r!   zHashContext.updatec                 C  r   )zR
        Finalizes the hash context and returns the hash digest as bytes.
        Nr   r   r   r   r   finalizeJ   r!   zHashContext.finalizec                 C  r   )zM
        Return a HashContext that is a copy of the current context.
        Nr   r   r   r   r   copyP   r!   zHashContext.copyN)r   r   )r/   r0   r   r1   )r   r0   )r   r   )
r'   r(   r)   r*   r+   r,   r.   r2   r3   r4   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S )r   Zsha1   @   Nr'   r(   r)   r    r#   r%   r   r   r   r   r   a       r   c                   @  r6   )r	   z
sha512-224      Nr9   r   r   r   r   r	   g   r:   r	   c                   @  r6   )r
   z
sha512-256    r<   Nr9   r   r   r   r   r
   m   r:   r
   c                   @  r6   )r   Zsha224r;   r8   Nr9   r   r   r   r   r   s   r:   r   c                   @  r6   )r   Zsha256r=   r8   Nr9   r   r   r   r   r   y   r:   r   c                   @  r6   )r   Zsha3840   r<   Nr9   r   r   r   r   r      r:   r   c                   @  r6   )r   Zsha512r8   r<   Nr9   r   r   r   r   r      r:   r   c                   @     e Zd ZdZdZdZdS )r   zsha3-224r;   Nr9   r   r   r   r   r      r:   r   c                   @  r?   )r   zsha3-256r=   Nr9   r   r   r   r   r      r:   r   c                   @  r?   )r   zsha3-384r>   Nr9   r   r   r   r   r      r:   r   c                   @  r?   )r   zsha3-512r8   Nr9   r   r   r   r   r      r:   r   c                   @  ,   e Zd ZdZdZd
ddZeddd	ZdS )r   Z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
isinstancer"   	TypeError
ValueError_digest_sizer   r#   r   r   r   __init__   
   

zSHAKE128.__init__r   c                 C     | j S NrH   r   r   r   r   r#         zSHAKE128.digest_sizer#   r"   r&   r'   r(   r)   r    r%   rJ   r*   r#   r   r   r   r   r          
	r   c                   @  r@   )r   Zshake256Nr#   r"   c                 C  rA   rB   rD   rI   r   r   r   rJ      rK   zSHAKE256.__init__r   c                 C  rL   rM   rN   r   r   r   r   r#      rO   zSHAKE256.digest_sizerP   r&   rQ   r   r   r   r   r      rR   r   c                   @  r6   )r   Zmd5   r8   Nr9   r   r   r   r   r      r:   r   c                   @  4   e Zd ZdZdZdZdZdddZedd
dZ	dS )r   Zblake2br8   rC   r<   r#   r"   c                 C     |dkrt d|| _d S )Nr8   zDigest size must be 64rG   rH   rI   r   r   r   rJ         
zBLAKE2b.__init__r   c                 C  rL   rM   rN   r   r   r   r   r#      rO   zBLAKE2b.digest_sizeNrP   r&   )
r'   r(   r)   r    _max_digest_size_min_digest_sizer%   rJ   r*   r#   r   r   r   r   r          
r   c                   @  rT   )r   Zblake2sr8   r=   rC   r#   r"   c                 C  rU   )Nr=   zDigest size must be 32rV   rI   r   r   r   rJ      rW   zBLAKE2s.__init__r   c                 C  rL   rM   rN   r   r   r   r   r#      rO   zBLAKE2s.digest_sizeNrP   r&   )
r'   r(   r)   r    r%   rX   rY   rJ   r*   r#   r   r   r   r   r      rZ   r   c                   @  r6   )r   Zsm3r=   r8   Nr9   r   r   r   r   r      r:   r   )Z
__future__r   r+   Z"cryptography.hazmat.bindings._rustr   Zrust_openssl__all__ABCMetar   r   Zhashesr   registerr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s4   
