ó
Â/¾Oc           @   s_   d  Z  d d l Z e j d d k rE e j d d k rE d d l Tn  d e f d „  ƒ  YZ d S(	   s   $Id$iÿÿÿÿNi    i   i   (   t   *t   BaseRNGc           B   se   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 d	 „  Z
 d
 „  Z RS(   c         C   s   t  |  _ |  j ƒ  d  S(   N(   t   Falset   closedt	   _selftest(   t   self(    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyt   __init__    s    	c         C   s   |  j  ƒ  d  S(   N(   t   close(   R   (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyt   __del__$   s    c         C   s^   |  j  d ƒ } t | ƒ d k r0 t d ƒ ‚ n  |  j  d ƒ } | | k rZ t d ƒ ‚ n  d  S(   Ni   s   read truncateds   OS RNG returned duplicate data(   t   readt   lent   AssertionError(   R   t   datat   data2(    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyR   '   s    c         C   s   d  S(   N(    (   R   (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyt	   __enter__4   s    c         C   s   |  j  ƒ  d S(   s   PEP 343 supportN(   R   (   R   (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyt   __exit__6   s    c         C   s#   |  j  s |  j ƒ  n  t |  _  d  S(   N(   R   t   _closet   True(   R   (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyR   :   s    	c         C   s   d  S(   N(    (   R   (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyt   flush?   s    iÿÿÿÿc         C   s±   |  j  r t d ƒ ‚ n  t | t t f ƒ s< t d ƒ ‚ n  | d k  rW t d ƒ ‚ n | d k rg d S|  j | ƒ } t | ƒ | k r­ t d |  j	 | t | ƒ f ƒ ‚ n  | S(   s   Return N bytes from the RNG.s   I/O operation on closed files   an integer is requiredi    s%   cannot read to end of infinite streamt    s3   %s produced truncated output (requested %d, got %d)(
   R   t
   ValueErrort
   isinstancet   longt   intt	   TypeErrort   _readR
   R   t   name(   R   t   NR   (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyR	   B   s    	%c         C   s   t  d ƒ ‚ d  S(   Ns   child class must implement this(   t   NotImplementedError(   R   (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyR   Q   s    c         C   s   t  d ƒ ‚ d  S(   Ns   child class must implement this(   R   (   R   R   (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyR   T   s    (   t   __name__t
   __module__R   R   R   R   R   R   R   R	   R   R   (    (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyR      s   								(   t   __revision__t   syst   version_infot   Crypto.Util.py21compatt   objectR   (    (    (    s;   lib/python2.7/site-packages/Crypto/Random/OSRNG/rng_base.pyt   <module>   s   &