File: //lib/python2.7/site-packages/dns/entropy.pyo
�
�b�Wc @ s� d d l Z d d l Z d d l Z d d l m Z m Z y d d l Z Wn e k
ri d d l Z n Xd e
f d � � YZ e � Z y e j
� Z Wn e k
r� d Z n Xd � Z d � Z d S( i����Ni ( t longt binary_typet EntropyPoolc B sM e Z d d � Z e d � Z d � Z d � Z d � Z d � Z d � Z
RS( c C s, d | _ d | _ d | _ t j � | _ y( d d l } | j � | _ d | _
Wnq t k
r� y( d d l } | j
� | _ d | _
Wq� t k
r� d d l } | j
� | _ d | _
q� Xn Xt d | j
� | _ | d k r| j t | � � t | _ t j � | _ n t | _ d | _ d S( Ni i����i i s ( t
pool_indext Nonet digestt next_bytet
_threadingt Lockt lockt hashlibt sha1t hasht hash_lent ImportErrort shat newt md5t bytearrayt poolt stirt Truet seededt ost getpidt seed_pidt False( t selft seedR
R R ( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyt __init__ s0
c C s� | s | j j � n zb x[ | D]S } | j | j k rD d | _ n | d @} | j | j c | N<| j d 7_ q WWd | s� | j j � n Xd S( Ni i� i ( R t acquireR R
R t release( R t entropyt already_lockedt ct b( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyR 7 s
c C s� | j s | j t j � k r� y t j d � } Wnn t k
r� y7 t d d d � } z | j d � } Wd | j � XWq� t k
r� t t
j
� � } q� Xn Xt | _ t j � | _ d | _
t | � } | j | t � n d S( Ni s /dev/urandomt rbi ( R R R R t urandomt Exceptiont opent readt closet strt timeR R R R R ( R R t r( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyt _maybe_seedE s
c C s� | j j � z� | j � | j d k s; | j | j k r� | j j t | j
� � t | j j � � | _ | j | j t
� d | _ n | j | j } | j d 7_ Wd | j j � X| S( Ni i ( R R R- R R R R
R t updateR R R R R R ( R t value( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyt random_8X s
!c C s | j � d | j � S( Ni ( R0 ( R ( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyt random_16g s c C s | j � d | j � S( Ni ( R1 ( R ( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyt random_32j s c C s� | | d } | t d � k r/ t d � � n | d k rS | j } t d � } n- | d k rq | j } d } n | j } d } | | | � | d S( Ni I s too bigi I���� i i�� i� ( R t
ValueErrorR2 R1 R0 ( R t firstt lastt sizet randt max( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyt random_betweenm s N( t __name__t
__module__R R R R R- R0 R1 R2 R9 ( ( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyR s c C s* t d k r t j d d � St j � Sd S( Ni i ( t
system_randomR t randrangeR R1 ( ( ( s/ /usr/lib/python2.7/site-packages/dns/entropy.pyR1 � s c C s4 t d k r t j | | d � St j | | � Sd S( Ni ( R<