ó
Â/¾Oc           @   sv   d  Z  d g Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d e f d „  ƒ  YZ	 d „  Z
 d S(   s   $Id$t   DevURandomRNGiÿÿÿÿN(   t   BaseRNG(   t   bc           B   s&   e  Z d d  „ Z d „  Z d „  Z RS(   c         C   sž   | d  k r d |  _ n	 | |  _ t |  j d d ƒ } t j | j ƒ  ƒ t j } t j | ƒ s„ | j	 ƒ  t
 d |  j f ƒ ‚ n  | |  _ t j |  ƒ d  S(   Ns   /dev/urandomt   rbi    s$   %r is not a character special device(   t   Nonet   namet   opent   ost   fstatt   filenot   statt   ST_MODEt   S_ISCHRt   closet	   TypeErrort   _DevURandomRNG__fileR   t   __init__(   t   selft   devnamet   ft   fmode(    (    s8   lib/python2.7/site-packages/Crypto/Random/OSRNG/posix.pyR   %   s    	
	c         C   s   |  j  j ƒ  d  S(   N(   R   R   (   R   (    (    s8   lib/python2.7/site-packages/Crypto/Random/OSRNG/posix.pyt   _close6   s    c         C   sª   t  d ƒ } x— t | ƒ | k  r¥ y  |  j j | t | ƒ ƒ } Wn. t k
 rq } | j t j k rk q n  ‚  n X| d  k r‚ | St | ƒ d k r˜ | S| | 7} q W| S(   Nt    i    (   R   t   lenR   t   readt   IOErrort   errnot   EINTRR   (   R   t   Nt   datat   dt   e(    (    s8   lib/python2.7/site-packages/Crypto/Random/OSRNG/posix.pyt   _read9   s     N(   t   __name__t
   __module__R   R   R   R    (    (    (    s8   lib/python2.7/site-packages/Crypto/Random/OSRNG/posix.pyR    #   s   	c          O   s   t  |  | Ž  S(   N(   R    (   t   argst   kwargs(    (    s8   lib/python2.7/site-packages/Crypto/Random/OSRNG/posix.pyt   newR   s    (   t   __revision__t   __all__R   R   R
   t   rng_baseR   t   Crypto.Util.py3compatR   R    R%   (    (    (    s8   lib/python2.7/site-packages/Crypto/Random/OSRNG/posix.pyt   <module>   s   	/