
    Eqg                         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          Z e            Z	ee         e
d<   	  ej                    Zn# e$ r dZY nw xY wdefdZded	edefd
ZdS )    N)AnyOptionalc                       e Zd Zddee         fdZdeddfdZdeddfdZddZde	fd	Z
de	fd
Zde	fdZde	de	de	fdZdS )EntropyPoolNseedc                 b   d| _         d | _        d| _        t          j                    | _        t          j                    | _        d| _	        t          d| j	        z            | _        |6|                     |           d| _        t          j                    | _        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   s     =/var/www/html/env/lib/python3.11/site-packages/dns/entropy.py__init__zEntropyPool.__init__    s    +/N$$	LNN	edm344	JJtDKIKKDMMMDKDMMM    entropyreturnc                     |D ]H}| j         | j        k    rd| _         |dz  }| j        | j         xx         |z  cc<   | xj         dz  c_         Id S )Nr         )r   r   r   )r   r    cbs       r   r   zEntropyPool._stir0   sl     	! 	!A$-//"#DAIdo&&&!+&&&OOq OOO	! 	!r   c                 p    | j         5  |                     |           d d d            d S # 1 swxY w Y   d S N)r   r   )r   r    s     r   stirzEntropyPool.stir8   s    Y 	  	 JJw	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   +//c                 4   | j         r| j        t          j                    k    r	 t          j        d          }n# t
          $ r 	 t          ddd          5 }|                    d          }d d d            n# 1 swxY w Y   nB# t
          $ r5 t          t          j	                              
                                }Y nw xY wY nw xY wd| _         t          j                    | _        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   rs      r   _maybe_seedzEntropyPool._maybe_seed<   sN   { 	dmry{{::5z"~~ 5 5 55ndA66 *! vvbzz* * * * * * * * * * * * * * *  5 5 5ty{{++2244DDD5	5 DKIKKDMDKT??DJJt ;:sW   : 
C	BA8,B8A<	<B?A<	 BC	<C C	CC	C	c                    | j         5  |                                  | j        | j        | j        k    rx| j                            t          | j                             t          | j                                                  | _        | 
                    | j                   d| _        | j        | j                 }| xj        dz  c_        d d d            n# 1 swxY w Y   |S )Nr   r$   )r   r5   r   r   r   r   updatebytesr   r   r   )r   values     r   random_8zEntropyPool.random_8L   s   Y 	  	 {"dn&E&E	  ty!1!1222'	(8(8(:(:;;

4;'''!"K/ENNaNN	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  s   CCC!Cc                 Z    |                                  dz  |                                  z   S )N   )r:   r   s    r   	random_16zEntropyPool.random_16X   s"    }}$t}}66r   c                 Z    |                                  dz  |                                  z   S )N   )r>   r=   s    r   	random_32zEntropyPool.random_32[   s&    ~~%'$..*:*:::r   firstlastc                     ||z
  dz   }|dk    rt          d          |dk    r
| j        }d}n|dk    r
| j        }d}n	| j        }d}|| |            z  |dz   z  z   S )	Nr$   l        ztoo bigr@   l    r<   i  r#   )
ValueErrorrA   r>   r:   )r   rB   rC   sizerandmaxs         r   random_betweenzEntropyPool.random_between^   s    e|a*Y'''%<<>DCCCZZ>DCC=DCtddff}q111r   r(   )r!   N)__name__
__module____qualname__r   r8   r   r   r)   r5   intr:   r>   rA   rI    r   r   r   r      s
        Xe_     !U !t ! ! ! ! E  d            
# 
 
 
 
73 7 7 7 7;3 ; ; ; ;2C 2s 2s 2 2 2 2 2 2r   r   system_randomr!   c                  x    t           t                               dd          S t                                          S )Nr   r@   )rO   	randranger   r>   rN   r   r   r>   r>   w   s.     &&q%000~~r   rB   rC   c                     t           t                               | |dz             S t                              | |          S )Nr$   )rO   rQ   r   rI   )rB   rC   s     r   betweenrS   ~   s8     &&udQh777""5$///r   )r   r   randomr   r2   typingr   r   r   r   __annotations__SystemRandomrO   r.   rM   r>   rS   rN   r   r   <module>rX      s(  $  				                      Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2h {}}}   'F'))MM   MMM 3        03 0c 0c 0 0 0 0 0 0s   A AA