o
    \¨Êh  ã                   @   sV   d Z dgZddlZddlZddlZddlmZ ddlmZ G dd„ deƒZ	dd	„ Z
dS )
z$Id$ÚDevURandomRNGé    Né   )ÚBaseRNG)Úbc                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	r   Nc                 C   sn   |d u rd| _ n|| _ t| j ddƒ}t | ¡ ¡tj }t |¡s-| ¡  t	d| j f ƒ‚|| _
t | ¡ d S )Nz/dev/urandomÚrbr   z$%r is not a character special device)ÚnameÚopenÚosÚfstatÚfilenoÚstatÚST_MODEÚS_ISCHRÚcloseÚ	TypeErrorÚ_DevURandomRNG__filer   Ú__init__)ÚselfÚdevnameÚfÚfmode© r   úK/var/www/html/env/lib/python3.10/site-packages/Crypto/Random/OSRNG/posix.pyr   %   s   
zDevURandomRNG.__init__c                 C   s   | j  ¡  d S ©N)r   r   )r   r   r   r   Ú_close6   ó   zDevURandomRNG._closec              
   C   s”   t dƒ}t|ƒ|k rHz| j |t|ƒ ¡}W n ty/ } z|jtjkr*W Y d }~q‚ d }~ww |d u r6|S t|ƒdkr>|S ||7 }t|ƒ|k s
|S )NÚ r   )r   Úlenr   ÚreadÚIOErrorÚerrnoÚEINTR)r   ÚNÚdataÚdÚer   r   r   Ú_read9   s"   €üðzDevURandomRNG._readr   )Ú__name__Ú
__module__Ú__qualname__r   r   r&   r   r   r   r   r   #   s    
c                  O   s   t | i |¤ŽS r   )r   )ÚargsÚkwargsr   r   r   ÚnewR   r   r,   )Ú__revision__Ú__all__r    r	   r   Úrng_baser   ÚCrypto.Util.py3compatr   r   r,   r   r   r   r   Ú<module>   s   /