import secrets


def randint(upper_bound: int = 2**64):
    """
    Generate a cryptographically secure random int between 0 and `upper_bound`
    It uses the nacl library to do so

    Args:
        upper_bound(int): the upper bound of the generated number (default 2**64)
    Returns:
        a random number
    """
    return secrets.randbelow(upper_bound)