Verifies `signature` is correct for a `message` signed with `public_key`

    :param message: message to check
    :type message: bytes

    :param signature: signature to check
    :type signature: bytes

    :param public_key: public_key to check
    :type public_key: bytes

    :return: True if valid, False otherwise
    :rtype: bool

def verify_signature(message, signature, public_key):
    """
    Verifies `signature` is correct for a `message` signed with `public_key`

    :param message: message to check
    :type message: bytes

    :param signature: signature to check
    :type signature: bytes

    :param public_key: public_key to check
    :type public_key: bytes

    :return: True if valid, False otherwise
    :rtype: bool
    """

    try:
        ed25519_blake2.checkvalid(signature, message, public_key)
    except ed25519_blake2.SignatureMismatch:
        return False
    return True