1# -*- coding: utf-8 -*- 
    2# 
    3#  Random/__init__.py : PyCrypto random number generation 
    4# 
    5# =================================================================== 
    6# The contents of this file are dedicated to the public domain.  To 
    7# the extent that dedication to the public domain is not available, 
    8# everyone is granted a worldwide, perpetual, royalty-free, 
    9# non-exclusive license to exercise all rights associated with the 
    10# contents of this file for any purpose whatsoever. 
    11# No rights are reserved. 
    12# 
    13# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
    14# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
    15# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
    16# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 
    17# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 
    18# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 
    19# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
    20# SOFTWARE. 
    21# =================================================================== 
    22 
    23__all__ = ['new', 'get_random_bytes'] 
    24 
    25from os import urandom 
    26 
    27class _UrandomRNG(object): 
    28 
    29    def read(self, n): 
    30        """Return a random byte string of the desired size.""" 
    31        return urandom(n) 
    32 
    33    def flush(self): 
    34        """Method provided for backward compatibility only.""" 
    35        pass 
    36 
    37    def reinit(self): 
    38        """Method provided for backward compatibility only.""" 
    39        pass 
    40 
    41    def close(self): 
    42        """Method provided for backward compatibility only.""" 
    43        pass 
    44 
    45 
    46def new(*args, **kwargs): 
    47    """Return a file-like object that outputs cryptographically random bytes.""" 
    48    return _UrandomRNG() 
    49 
    50 
    51def atfork(): 
    52    pass 
    53 
    54 
    55#: Function that returns a random byte string of the desired size. 
    56get_random_bytes = urandom 
    57