Add help to test binary.

Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
This commit is contained in:
Steffen Jaeckel 2026-05-11 11:34:54 +02:00 committed by Karel Miko
parent 429d07e388
commit 7978822b69

View file

@ -6,7 +6,7 @@
#define GIT_VERSION "Undefined version"
#endif
#define LTC_TEST_FN(f) { f, #f }
#define LTC_TEST_FN(f) { f ## _test, #f }
typedef struct {
int (*fn)(void);
@ -15,41 +15,41 @@ typedef struct {
static const test_function test_functions[] =
{
LTC_TEST_FN(store_test),
LTC_TEST_FN(rotate_test),
LTC_TEST_FN(cipher_hash_test),
LTC_TEST_FN(misc_test),
LTC_TEST_FN(mpi_test),
LTC_TEST_FN(mac_test),
LTC_TEST_FN(modes_test),
LTC_TEST_FN(der_test),
LTC_TEST_FN(pkcs_1_test),
LTC_TEST_FN(pkcs_1_pss_test),
LTC_TEST_FN(pkcs_1_oaep_test),
LTC_TEST_FN(pkcs_1_emsa_test),
LTC_TEST_FN(pkcs_1_eme_test),
LTC_TEST_FN(rsa_test),
LTC_TEST_FN(dh_test),
LTC_TEST_FN(ecc_test),
LTC_TEST_FN(dsa_test),
LTC_TEST_FN(ed25519_test),
LTC_TEST_FN(ed25519_mpi_test),
LTC_TEST_FN(x25519_test),
LTC_TEST_FN(x25519_mpi_test),
LTC_TEST_FN(ed448_test),
LTC_TEST_FN(ed448_mpi_test),
LTC_TEST_FN(x448_test),
LTC_TEST_FN(x448_mpi_test),
LTC_TEST_FN(file_test),
LTC_TEST_FN(multi_test),
LTC_TEST_FN(pem_test),
LTC_TEST_FN(deprecated_test),
LTC_TEST_FN(nop_test),
LTC_TEST_FN(store),
LTC_TEST_FN(rotate),
LTC_TEST_FN(cipher_hash),
LTC_TEST_FN(misc),
LTC_TEST_FN(mpi),
LTC_TEST_FN(mac),
LTC_TEST_FN(modes),
LTC_TEST_FN(der),
LTC_TEST_FN(pkcs_1),
LTC_TEST_FN(pkcs_1_pss),
LTC_TEST_FN(pkcs_1_oaep),
LTC_TEST_FN(pkcs_1_emsa),
LTC_TEST_FN(pkcs_1_eme),
LTC_TEST_FN(rsa),
LTC_TEST_FN(dh),
LTC_TEST_FN(ecc),
LTC_TEST_FN(dsa),
LTC_TEST_FN(ed25519),
LTC_TEST_FN(ed25519_mpi),
LTC_TEST_FN(x25519),
LTC_TEST_FN(x25519_mpi),
LTC_TEST_FN(ed448),
LTC_TEST_FN(ed448_mpi),
LTC_TEST_FN(x448),
LTC_TEST_FN(x448_mpi),
LTC_TEST_FN(file),
LTC_TEST_FN(multi),
LTC_TEST_FN(pem),
LTC_TEST_FN(deprecated),
LTC_TEST_FN(nop),
/* keep the prng_test always at the end as
* it has to be handled specially when
* testing with LTC_PTHREAD enabled
*/
LTC_TEST_FN(prng_test),
LTC_TEST_FN(prng),
};
@ -343,6 +343,21 @@ static void register_algs(void)
exit(EXIT_FAILURE);
}
}
static void LTC_NORETURN die(int status)
{
FILE* o = status == EXIT_SUCCESS ? stdout : stderr;
fprintf(o,
"Usage: test [<-h|-l|case>] [mpi]\n\n"
"Run all built-in tests, or only the one given in <case>.\n\n"
"\tcase\tThe algorithms to test. Use the '-l' option to check for valid values.\n"
"\tmpi\tThe MPI provider to use.\n"
"\t-l\tList all tests that can be executed.\n"
"\t-h\tThe help you're looking at.\n\n"
"Examples:\n"
"\ttest rsa tfm\t\tWill run only the RSA tests with TomsFastMath as MPI provider.\n"
);
exit(status);
}
int main(int argc, char **argv)
{
@ -355,6 +370,23 @@ int main(int argc, char **argv)
char *single_test = NULL;
ulong64 ts;
long delta, dur, real = 0;
if (argc > 1) {
if (strstr(argv[1], "-h")) {
die(EXIT_SUCCESS);
} else if (strstr(argv[1], "-l")) {
printf("The following tests are available:\n");
for (i = 0; i < LTC_ARRAY_SIZE(test_functions); ++i) {
if (i % 4 == 0)
putchar('\n');
printf(" %-13s", test_functions[i].name);
}
putchar('\n');
exit(0);
}
}
register_algs();
printf("LTC_VERSION = %s\n%s\n\n", GIT_VERSION, crypt_build_settings);
@ -412,7 +444,7 @@ int main(int argc, char **argv)
#endif
}
fn_len = fn_len + (4 - (fn_len % 4));
fn_len = fn_len + (8 - (fn_len % 8));
/* single test name from commandline */
if (argc > 1) single_test = argv[1];