o
    2cC                     @   s   d dl Z d dlZd dlZd dlZzd dlZW n ey#   d dlZY nw G dd dZe Z	ze
 ZW n ey?   dZY nw dd Zdd ZdS )    Nc                   @   sN   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dS )EntropyPoolNc                 C   sv   d| _ d | _d| _t | _t | _d| _	t
d| j	 | _|d ur3| t
| 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)selfseed r   A/var/www/html/gps/gps/lib/python3.10/site-packages/dns/entropy.py__init__#   s   


zEntropyPool.__init__c                 C   sJ   |D ] }| j | jkrd| _ |d@ }| j| j   |N  < |  j d7  _ qd S )Nr         )r   r   r   )r   entropycbr   r   r   r   3   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   stir;   s   "zEntropyPool.stirc                 C   s   | j r
| jt kr^ztd}W n6 tyG   ztddd}|d}W d    n1 s/w   Y  W n tyD   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timer   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_8O   s   
		zEntropyPool.random_8c                 C      |   d |    S )N   )r/   r   r   r   r   	random_16[      zEntropyPool.random_16c                 C   r0   )N   )r3   r2   r   r   r   	random_32^   r4   zEntropyPool.random_32c                 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 bigr5   l    r1   i  r   )
ValueErrorr6   r3   r/   )r   firstlastsizerandmaxr   r   r   random_betweena   s   zEntropyPool.random_betweenr    )__name__
__module____qualname__r   r   r!   r+   r/   r3   r6   r=   r   r   r   r   r      s    
r   c                   C   s   t d ur
t ddS t S )Nr   r5   )system_random	randranger   r3   r   r   r   r   r3   w   s   r3   c                 C   s$   t d urt | |d S t| |S )Nr   )rA   rB   r   r=   )r8   r9   r   r   r   between}   s   rC   )r   r   randomr)   	threadingr   ImportErrordummy_threadingr   r   SystemRandomrA   r%   r3   rC   r   r   r   r   <module>   s$   T