Sindbad~EG File Manager
3
�b�Wq�@s�ddlZddlZddlZddlmZmZyddlZWnek
rPddl ZYnXGdd�de
�Ze�Zyej
�ZWnek
r�dZYnXdd�Zdd �ZdS)
�N�)�long�binary_typec@sHeZdZddd�Zddd�Zdd�Zd d
�Zdd�Zd
d�Zdd�Z dS)�EntropyPoolNcCs�d|_d|_d|_tj�|_yddl}|j�|_d|_ Wn^t
k
r�yddl}|j�|_d|_ Wn,t
k
r�ddl
}|j�|_d|_ YnXYnXtd|j �|_|dk r�|jt|��d|_tj�|_nd|_d|_dS)Nr���TF)�
pool_index�digest� next_byte�
_threadingZLock�lock�hashlibZsha1�hash�hash_len�ImportError�sha�new�md5� bytearray�pool�stir�seeded�os�getpid�seed_pid)�self�seedrrr�r�/usr/lib/python3.6/entropy.py�__init__s0
zEntropyPool.__init__FcCsr|s|jj�zNxH|D]@}|j|jkr,d|_|d@}|j|j|N<|jd7_qWWd|sl|jj�XdS)Nr�r)r
�acquirer rr�release)rZentropyZalready_locked�c�brrrr7s
zEntropyPool.stircCs�|js|jtj�kr�ytjd�}Wn`tk
r�y*tddd�}z|jd�}Wd|j�XWn tk
r~t t
j
��}YnXYnXd|_tj�|_d|_t|�}|j
|d�dS)Nrz/dev/urandom�rbrT)rrrr�urandom� Exception�open�read�close�str�timer
rr)rr�rrrr�_maybe_seedEs
zEntropyPool._maybe_seedc
Cs�|jj�zr|j�|jdks*|j|jkr`|jjt|j ��t
|jj��|_|j|jd�d|_|j|j}|jd7_Wd|jj�X|S)NTrr)
r
r"r/r
rrr�updaterrrrr#)r�valuerrr�random_8Xs
zEntropyPool.random_8cCs|j�d|j�S)N�)r2)rrrr� random_16gszEntropyPool.random_16cCs|j�d|j�S)Ni)r4)rrrr� random_32jszEntropyPool.random_32cCsl||d}|td�kr td��|dkr8|j}td�}n|dkrL|j}d}n
|j}d}|||�|dS) Nrlztoo bigil��r3i��r!)r�
ValueErrorr5r4r2)r�first�last�sizeZrand�maxrrr�random_betweenms
zEntropyPool.random_between)N)F)
�__name__�
__module__�__qualname__r rr/r2r4r5r;rrrrrs
rcCs tdk rtjdd�Stj�SdS)Nri)�
system_random� randrangerr4rrrrr4�sr4cCs(tdk rtj||d�Stj||�SdS)Nr)r?r@rr;)r7r8rrr�between�srA)rZrandomr-Z_compatrrZ threadingrrZdummy_threading�objectrrZSystemRandomr?r(r4rArrrr�<module>sb
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists