'Return a number of secure random bytes.
@param nbytes: number of bytes to generate.
@type nbytes: C{int}
@param fallback: Whether the function should fallback on non-secure
random or not.  Default to C{False}.
@type fallback: C{bool}
@return: a string of random bytes.
@rtype: C{str}'

def secureRandom(self, nbytes, fallback=False):

    try:
        return self._osUrandom(nbytes)
    except SourceNotAvailable:
        pass
    if fallback:
        warnings.warn('urandom    unavailable    -    proceeding    with    non-cryptographically    secure    random    source', category=RuntimeWarning, stacklevel=2)
        return self.insecureRandom(nbytes)
    else:
        raise SecureRandomNotAvailable('No    secure    random    source    available')
