o
    \¨Êh3  ã                   @   sD   d Z ddlZejd dkrejd dkrddlT G dd„ deƒZdS )z$Id$é    Né   é   )Ú*c                   @   s^   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	ddd„Z
dd„ Zdd„ ZdS )ÚBaseRNGc                 C   s   d| _ |  ¡  d S )NF)ÚclosedÚ	_selftest©Úself© r
   úN/var/www/html/env/lib/python3.10/site-packages/Crypto/Random/OSRNG/rng_base.pyÚ__init__    s   zBaseRNG.__init__c                 C   s   |   ¡  d S ©N©Úcloser   r
   r
   r   Ú__del__$   s   zBaseRNG.__del__c                 C   s<   |   d¡}t|ƒdkrtdƒ‚|   d¡}||krtdƒ‚d S )Né   zread truncatedzOS RNG returned duplicate data)ÚreadÚlenÚAssertionError)r	   ÚdataÚdata2r
   r
   r   r   '   s   

ÿzBaseRNG._selftestc                 C   ó   d S r   r
   r   r
   r
   r   Ú	__enter__4   ó   zBaseRNG.__enter__c                 C   s   |   ¡  dS )zPEP 343 supportNr   r   r
   r
   r   Ú__exit__6   s   zBaseRNG.__exit__c                 C   s   | j s|  ¡  d| _ d S )NT)r   Ú_closer   r
   r
   r   r   :   s   
zBaseRNG.closec                 C   r   r   r
   r   r
   r
   r   Úflush?   r   zBaseRNG.flushéÿÿÿÿc                 C   sn   | j rtdƒ‚t|tƒstdƒ‚|dk rtdƒ‚|dkrdS |  |¡}t|ƒ|kr5td| j|t|ƒf ƒ‚|S )zReturn N bytes from the RNG.zI/O operation on closed filezan integer is requiredr   z%cannot read to end of infinite streamÚ z3%s produced truncated output (requested %d, got %d))	r   Ú
ValueErrorÚ
isinstanceÚintÚ	TypeErrorÚ_readr   r   Úname)r	   ÚNr   r
   r
   r   r   B   s   

zBaseRNG.readc                 C   ó   t dƒ‚©Nzchild class must implement this©ÚNotImplementedErrorr   r
   r
   r   r   Q   ó   zBaseRNG._closec                 C   r&   r'   r(   )r	   r%   r
   r
   r   r#   T   r*   zBaseRNG._readN)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r#   r
   r
   r
   r   r      s    
r   )Ú__revision__ÚsysÚversion_infoÚCrypto.Util.py21compatÚobjectr   r
   r
   r
   r   Ú<module>   s
   