o
    i                     @   s   U d dl Z d dlZd dlZd dlZd dlZd dlmZ G dd dZe ZedB e	d< ze
 ZW n ey<   dZY nw defddZd	ed
edefddZdS )    N)Anyc                   @   s   e Zd ZddedB fddZdeeB ddfddZdeeB ddfd	d
ZdddZde	fddZ
de	fddZde	fddZde	de	de	fddZdS )EntropyPoolNseedc                 C   sr   d| _ d | _d| _t | _t | _d| _	t
d| j	 | _|d ur1| | d| _t | _d S d| _d| _d S )Nr          TF)
pool_indexdigest	next_byte	threadingLocklockhashlibsha1hashhash_len	bytearraypool_stirseededosgetpidseed_pid)selfr    r   Q/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/dns/entropy.py__init__    s   



zEntropyPool.__init__entropyreturnc                 C   sJ   |D ] }| j | jkrd| _ |d@ }| j| j   |N  < |  j d7  _ qd S )Nr         )r   r   r   )r   r   cbr   r   r   r   0   s   zEntropyPool._stirc                 C   s6   | j  | | W d    d S 1 sw   Y  d S N)r   r   )r   r   r   r   r   stir8   s   "zEntropyPool.stirc                 C   s   | j r
| jt kr`ztd}W n8 tyI   ztddd}|d}W d    n1 s/w   Y  W n tyF   tt		 
 }Y nw Y nw d| _ t | _d | _t|}| | d S d S )N   z/dev/urandomrbr   T)r   r   r   r   urandom	Exceptionopenreadstrtimeencoder   r   r   )r   r   rr   r   r   _maybe_seed<   s(   
zEntropyPool._maybe_seedc                 C   s   | j ? |   | jd u s| j| jkr-| jt| j t	| j | _| 
| j d| _| j| j }|  jd7  _W d    |S 1 sEw   Y  |S )Nr   r   )r   r.   r   r	   r   r   updatebytesr   r   r   )r   valuer   r   r   random_8L   s   
		zEntropyPool.random_8c                 C      |   d |    S )N   )r2   r   r   r   r   	random_16X      zEntropyPool.random_16c                 C   r3   )N   )r6   r5   r   r   r   	random_32[   r7   zEntropyPool.random_32firstlastc                 C   sd   || d }|dkrt d|dkr| j}d}n|dkr"| j}d}n| j}d}|||  |d   S )	Nr   l        ztoo bigr8   l    r4   i  r   )
ValueErrorr9   r6   r2   )r   r:   r;   sizerandmaxr   r   r   random_between^   s   zEntropyPool.random_betweenr"   )r   N)__name__
__module____qualname__r0   r   r   r   r#   r.   intr2   r6   r9   r@   r   r   r   r   r      s    
r   system_randomr   c                   C   s   t d ur
t ddS t S )Nr   r8   )rE   	randranger   r6   r   r   r   r   r6   w   s   r6   r:   r;   c                 C   s$   t d urt | |d S t| |S )Nr   )rE   rF   r   r@   )r:   r;   r   r   r   between~   s   rG   )r   r   randomr
   r+   typingr   r   r   __annotations__SystemRandomrE   r'   rD   r6   rG   r   r   r   r   <module>   s    
T