void test_signature_file(const char * read_filepath, mpz_t hash)
{
    signature_attr attr;
    gen_signature_attr(&attr);
    gen_keys_pair(&attr);

    signature sign;
    mpz_init(sign.r);
    mpz_init(sign.s);

    FILE * stream = open_wrapper(read_filepath, "rb");
    mpz_inp_wrapper(sign.r, stream);
    mpz_inp_wrapper(sign.s, stream);
    close_wrapper(stream);

    printf("Signature verification...");

    if (test_signature(&sign, &attr, hash))
    {
        printf(" [Ok]\n");
    }
    else
    {
        printf(" [Failed]\n");
    }

    mpz_clear(sign.r);
    mpz_clear(sign.s);

    free_signature_attr(&attr);
    free_keys_pair(&attr);
}
int main()
{

	if (set_up() < 0) {
		print_error("Test set_up() error");
		goto error;
	}

	if (test_signature() < 0) {
		goto error;
	}

	tear_down();

	return 0;

error:
	return EXIT_FAILURE;
}
int main(int argc, const char *argv[])
{
    test_signature();
    return 0;
}