Returns num bytes of pseudo random data.  Pseudo- random byte
    sequences generated by pseudo_bytes() will be unique if
    they are of sufficient length, but are not necessarily
    unpredictable. They can be used for non-cryptographic purposes
    and for certain purposes in cryptographic protocols, but usually
    not for key generation etc.

def pseudo_bytes(num):
    """
    Returns num bytes of pseudo random data.  Pseudo- random byte
    sequences generated by pseudo_bytes() will be unique if
    they are of sufficient length, but are not necessarily
    unpredictable. They can be used for non-cryptographic purposes
    and for certain purposes in cryptographic protocols, but usually
    not for key generation etc.
    """
    if num <= 0:
        raise ValueError("'num' should be > 0")
    buf = create_string_buffer(num)
    libcrypto.RAND_pseudo_bytes(buf, num)
    return buf.raw[:num]