
    Eh                     R   d Z ddlZej                  d   dk(  rej                  d   dk(  rddl ddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ  G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z ej(                         Zdad Zd Zd Zd Zy)z$Id$    N      )*)floor)OSRNG)FortunaAccumulatorc                       e Zd Zd Zd Zy)_EntropySourcec                 .    || _         || _        d| _        y )Nr   )_fortuna_src_num	_pool_num)selfaccumulatorsrc_nums      _/var/www/html/bid_assistant/venv/lib/python3.12/site-packages/Crypto/Random/_UserFriendlyRNG.py__init__z_EntropySource.__init__)   s    #    c                     | j                   j                  | j                  | j                  |       | j                  dz   dz  | _        y )Nr      )r   add_random_eventr   r   )r   datas     r   feedz_EntropySource.feed.   s5    &&t}}dnndK..1,2r   N)__name__
__module____qualname__r   r    r   r   r
   r
   (   s    
3r   r
   c                       e Zd Zd Zd Zd Zy)_EntropyCollectorc                     t        j                         | _        t        |d      | _        t        |d      | _        t        |d      | _        y )N         )r   new_osrngr
   	_osrng_es_time_es	_clock_es)r   r   s     r   r   z_EntropyCollector.__init__4   s9    iik'S9&{C8'S9r   c                     t        d      D ]V  }| j                  j                  d      }t        d      D ])  }| j                  j	                  ||dz  |dz   dz          + d }X | j                  j                          y )Nr   i       r   )ranger%   readr&   r   flush)r   iblockps       r   reinitz_EntropyCollector.reinit:   sz     q 	AKK$$U+E2Y :##E!B$!Rx$89:E		
 	r   c                    | j                   j                  | j                  j                  d             t	        j                         }| j
                  j                  t        j                  dt        d|t        |      z
  z                     t	        j                         }| j                  j                  t        j                  dt        d|t        |      z
  z                     y )N   z@Ii   @)r&   r   r%   r,   timer'   structpackintr   clockr(   )r   ts     r   collectz_EntropyCollector.collectD   s    DKK,,Q/0 IIK6;;tS!eAh,1G-HIJ JJLFKKc%1uQx<2H.IJKr   N)r   r   r   r   r1   r:   r   r   r   r   r   2   s    :
Lr   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)_UserFriendlyRNGc                     d| _         t        j                         | _        t        | j                        | _        | j                          y NF)closedr   _far   _ecr1   r   s    r   r   z_UserFriendlyRNG.__init__S   s2    %88:$TXX.r   c                     t        j                         | _        | j                  j	                          | j
                  j                          y)zkInitialize the random number generator and seed it with entropy from
        the operating system.
        N)osgetpid_pidrA   r1   r@   _forget_last_reseedrB   s    r   r1   z_UserFriendlyRNG.reinitY   s3     IIK	 	 	$$&r   c                 .    d| _         d | _        d | _        y NT)r?   r%   r@   rB   s    r   closez_UserFriendlyRNG.closeo   s    r   c                      y Nr   rB   s    r   r-   z_UserFriendlyRNG.flusht   s    r   c                     | j                   rt        d      t        |t        t        f      st        d      |dk  rt        d      | j                  j                          | j                  j                  |      }| j                          |S )zReturn N bytes from the RNG.I/O operation on closed filezan integer is requiredr   z%cannot read to end of infinite stream)r?   
ValueError
isinstancelongr7   	TypeErrorrA   r:   r@   random_data
_check_pid)r   Nretvals      r   r,   z_UserFriendlyRNG.readw   s}    ;;;<<!dC[)455q5DEE 	 %%a(
 	 r   c                 \    t        j                         | j                  k7  rt        d      y )NzTPID check failed. RNG must be re-initialized after fork(). Hint: Try Random.atfork())rD   rE   rF   AssertionErrorrB   s    r   rT   z_UserFriendlyRNG._check_pid   s'     99;$))# !wxx $r   N)	r   r   r   r   r1   rJ   r-   r,   rT   r   r   r   r<   r<   Q   s!    ',
.yr   r<   c                   $    e Zd Zd Zd Zd Zd Zy)_LockingUserFriendlyRNGc                 `    t        j                         | _        t        j	                  |        y rL   )	threadingLock_lockr<   r   rB   s    r   r   z _LockingUserFriendlyRNG.__init__   s    ^^%
!!$'r   c                     | j                   j                          	 t        j                  |       | j                   j	                          S # | j                   j	                          w xY wrL   )r^   acquirer<   rJ   releaserB   s    r   rJ   z_LockingUserFriendlyRNG.close   sF    

	!#))$/JJ DJJ    A A'c                     | j                   j                          	 t        j                  |       | j                   j	                          S # | j                   j	                          w xY wrL   )r^   r`   r<   r1   ra   rB   s    r   r1   z_LockingUserFriendlyRNG.reinit   sF    

	!#**40JJ DJJ rb   c                     | j                   j                          	 t        j                  | |      | j                   j	                          S # | j                   j	                          w xY wrL   )r^   r`   r<   r,   ra   r   bytess     r   r,   z_LockingUserFriendlyRNG.read   sH    

	!#((u5JJ DJJ s   A A(N)r   r   r   r   rJ   r1   r,   r   r   r   rZ   rZ      s    (!!!r   rZ   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)RNGFilec                      d| _         || _        y r>   r?   
_singleton)r   	singletons     r   r   zRNGFile.__init__   s    #r   c                      yzPEP 343 supportNr   rB   s    r   	__enter__zRNGFile.__enter__   s    r   c                 $    | j                          yrn   )rJ   rB   s    r   __exit__zRNGFile.__exit__   s    

r   c                      d| _         d | _        y rI   rj   rB   s    r   rJ   zRNGFile.close   s    r   c                 f    | j                   rt        d      | j                  j                  |      S NrN   )r?   rO   rk   r,   re   s     r   r,   zRNGFile.read   s*    ;;;<<##E**r   c                 2    | j                   rt        d      y rt   )r?   rO   rB   s    r   r-   zRNGFile.flush   s    ;;;<< r   N)	r   r   r   r   ro   rq   rJ   r,   r-   r   r   r   rh   rh      s     $

+
=r   rh   c                      t         j                          	 t        
t               at        t         j	                          S # t         j	                          w xY wrL   )_singleton_lockr`   rk   rZ   ra   r   r   r   _get_singletonrx      s=    "02J!!s   A   Ac                  (    t        t                     S rL   )rh   rx   r   r   r   r$   r$      s    >#$$r   c                  4    t               j                          y rL   )rx   r1   r   r   r   r1   r1      s    r   c                 4    t               j                  |       S )zEReturn the specified number of cryptographically-strong random bytes.)rx   r,   )ns    r   get_random_bytesr}      s      ##r   )__revision__sysversion_infoCrypto.Util.py21compatrD   r\   r5   r4   mathr   Crypto.Randomr   Crypto.Random.Fortunar   objectr
   r   r<   rZ   rh   r]   rw   rk   rx   r$   r1   r}   r   r   r   <module>r      s   2  
A! 0 0 3q 8( 	      43V 3L L>Hyv HyV!. !4=f =4 !).."
"%$r   