def verify_multi_sig(multi_sig: MultiSignature, message: bytes, ver_keys: [VerKey], gen: Generator) -> bool:
        """
        Verifies the message multi signature and returns true - if signature valid or false otherwise.

        :param: multi_sig - Multi signature to verify
        :param: message - Message to verify
        :param: ver_keys - List of verification keys
        :param: gen - Generator point
        :return: true if multi signature valid.
        """

        logger = logging.getLogger(__name__)
        logger.debug("Bls::verify_multi_sig: >>> multi_sig: %r, message: %r, ver_keys: %r, gen: %r",
                     multi_sig, message, ver_keys, gen)

        # noinspection PyCallingNonCallable,PyTypeChecker
        ver_key_c_instances = (c_void_p * len(ver_keys))()
        for i in range(len(ver_keys)):
            ver_key_c_instances[i] = ver_keys[i].c_instance

        valid = c_bool()
        do_call('indy_crypto_bls_verify_multi_sig',
                multi_sig.c_instance,
                message, len(message),
                ver_key_c_instances, len(ver_keys),
                gen.c_instance,
                byref(valid))

        res = valid

        logger.debug("Bls::verify_multi_sig: <<< res: %r", res)
        return res
Verifies the message multi signature and returns true - if signature valid or false otherwise.

        :param: multi_sig - Multi signature to verify
        :param: message - Message to verify
        :param: ver_keys - List of verification keys
        :param: gen - Generator point
        :return: true if multi signature valid.