o
    'h                     @   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mZ G dd dZe Z	ee 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)AnyOptionalc                   @   s   e Zd Zddee fddZdeddfddZde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   G/var/www/html/olx_land/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   )r3   r   r   r   r   	random_16X      zEntropyPool.random_16c                 C   r4   )N   )r7   r6   r   r   r   	random_32[   r8   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 bigr9   l    r5   i  r   )
ValueErrorr:   r7   r3   )r   r;   r<   sizerandmaxr   r   r   random_between^   s   zEntropyPool.random_betweenr#   )r   N)__name__
__module____qualname__r   r1   r   r   r$   r/   intr3   r7   r:   rA   r   r   r   r   r      s    
r   system_randomr   c                   C   s   t d ur
t ddS t S )Nr   r9   )rF   	randranger   r7   r   r   r   r   r7   w   s   r7   r;   r<   c                 C   s$   t d urt | |d S t| |S )Nr    )rF   rG   r   rA   )r;   r<   r   r   r   between~   s   rH   )r   r   randomr   r,   typingr   r   r   r   __annotations__SystemRandomrF   r(   rE   r7   rH   r   r   r   r   <module>   s    
T