
    i                         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          Z e            Zedz  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)Anyc                       e Zd Zddedz  fdZdeez  ddfdZdeez  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/Pagina-Ingenieria-Requisitos/venv/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   r4   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   )r9   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"   )
ValueErrorr@   r=   r9   )r   rA   rB   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__r7   r   r   r   r(   r4   intr9   r=   r@   rH    r   r   r   r      s        UT\     !UY. !4 ! ! ! ! EI-  $            
# 
 
 
 
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?   )rN   	randranger   r=   rM   r   r   r=   r=   w   s.     &&q%000~~r   rA   rB   c                     t           t                               | |dz             S t                              | |          S )Nr#   )rN   rP   r   rH   )rA   rB   s     r   betweenrR   ~   s8     &&udQh777""5$///r   )r   r   randomr   r1   typingr   r   r   __annotations__SystemRandomrN   r-   rL   r=   rR   rM   r   r   <module>rW      s"  $  				            Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2h {}}Tz   'F'))MM   MMM 3        03 0c 0c 0 0 0 0 0 0s   A AA