o
    Â/¾O  ã                   @   sŽ   d Z dZddgZddlZejd dkrejd dkrddlT ddlT dd	lmZ dd
l	m
Z
 e
jdks5J ‚G dd„ deƒZejZddd„ZdS )zQSHA_d-256 hash function implementation.

This module should comply with PEP 247.
z$Id$ÚnewÚdigest_sizeé    Né   é   )Ú*)Úb2a_hex)ÚSHA256é    c                   @   sD   e Zd ZdZejZeƒ Zdd„ Zdd„ Z	dd„ Z
dd	„ Zd
d„ ZdS )Ú_SHAd256z;SHA-256, doubled.

    Returns SHA-256(SHA-256(data)).
    c                 C   s"   || j urtdtf ƒ‚|| _d S )Nz5Do not instantiate this class directly.  Use %s.new())Ú	_internalÚAssertionErrorÚ__name__Ú_h)ÚselfÚinternal_api_checkÚsha256_hash_obj© r   úO/var/www/html/env/lib/python3.10/site-packages/Crypto/Random/Fortuna/SHAd256.pyÚ__init__7   s   

z_SHAd256.__init__c                 C   s   t tj| j ¡ ƒS )z$Return a copy of this hashing object)r
   ÚSHAd256r   r   Úcopy)r   r   r   r   r   =   s   z_SHAd256.copyc                 C   s(   t  | j ¡ ¡ ¡ }t|ƒdksJ ‚|S )z7Return the hash value of this object as a binary stringr	   )r   r   r   ÚdigestÚlen©r   Úretvalr   r   r   r   B   s   z_SHAd256.digestc                 C   s6   t |  ¡ ƒ}t|ƒdksJ ‚tjd dkr|S | ¡ S )zHReturn the hash value of this object as a (lowercase) hexadecimal stringé@   r   r   )r   r   r   ÚsysÚversion_infoÚdecoder   r   r   r   Ú	hexdigestI   s
   z_SHAd256.hexdigestc                 C   s   | j  |¡ d S ©N)r   Úupdate)r   Údatar   r   r   r!   S   s   z_SHAd256.updateN)r   Ú
__module__Ú__qualname__Ú__doc__r   r   Úobjectr   r   r   r   r   r!   r   r   r   r   r
   -   s    
r
   c                 C   s.   | st dƒ} ttjt | ¡ƒ}tƒ d |_|S )z#Return a new SHAd256 hashing objectÚ r   )Úbr
   r   r   r   Úglobals)r"   Úshar   r   r   r   Z   s
   r    )r%   Ú__revision__Ú__all__r   r   ÚCrypto.Util.py21compatÚCrypto.Util.py3compatÚbinasciir   ÚCrypto.Hashr   r   r&   r
   r   r   r   r   r   Ú<module>   s   *