diff --git a/demos/timing.c b/demos/timing.c index 4da09026..3788094a 100644 --- a/demos/timing.c +++ b/demos/timing.c @@ -1399,45 +1399,6 @@ static void time_encmacs(void) time_encmacs_(32); } -static void init_mpi(const char* mpi) -{ - switch (mpi[0]) { -#ifdef LTM_DESC - case 'l': - init_LTM(); - break; -#endif -#ifdef TFM_DESC - case 't': - init_TFM(); - break; -#endif -#ifdef GMP_DESC - case 'g': - init_GMP(); - break; -#endif -#ifdef EXT_MATH_LIB - case 'e': - { - extern ltc_math_descriptor EXT_MATH_LIB; - ltc_mp = EXT_MATH_LIB; - } - -#define NAME_VALUE(s) #s"="NAME(s) -#define NAME(s) #s - printf("EXT_MATH_LIB = %s\n", NAME_VALUE(EXT_MATH_LIB)); -#undef NAME_VALUE -#undef NAME - - break; -#endif - default: - printf("Unknown/Invalid MPI provider: %s\n", mpi); - break; - } -} - #define LTC_TEST_FN(f) { f, #f } int main(int argc, char **argv) { @@ -1488,7 +1449,7 @@ register_all_prngs(); mpi_provider = argv[2]; } - init_mpi(mpi_provider); + crypt_mp_init(mpi_provider); if ((err = rng_make_prng(128, find_prng("yarrow"), &yarrow_prng, NULL)) != CRYPT_OK) { fprintf(stderr, "rng_make_prng failed: %s\n", error_to_string(err)); diff --git a/src/headers/tomcrypt_misc.h b/src/headers/tomcrypt_misc.h index f21f30b3..1a9d7cda 100644 --- a/src/headers/tomcrypt_misc.h +++ b/src/headers/tomcrypt_misc.h @@ -81,6 +81,7 @@ void init_TFM(void); #ifdef GMP_DESC void init_GMP(void); #endif +int crypt_mp_init(const char* mpi); #ifdef LTC_ADLER32 typedef struct adler32_state_s diff --git a/src/misc/crypt/crypt_inits.c b/src/misc/crypt/crypt_inits.c index 8042f38d..6940eb2a 100644 --- a/src/misc/crypt/crypt_inits.c +++ b/src/misc/crypt/crypt_inits.c @@ -37,6 +37,54 @@ void init_GMP(void) } #endif +int crypt_mp_init(const char* mpi) +{ + if (mpi == NULL) return CRYPT_ERROR; + switch (mpi[0]) { +#ifdef LTM_DESC + case 'l': + case 'L': + init_LTM(); + return CRYPT_OK; +#endif +#ifdef TFM_DESC + case 't': + case 'T': + init_TFM(); + return CRYPT_OK; +#endif +#ifdef GMP_DESC + case 'g': + case 'G': + init_GMP(); + return CRYPT_OK; +#endif +#ifdef EXT_MATH_LIB + case 'e': + case 'E': + { + extern ltc_math_descriptor EXT_MATH_LIB; + ltc_mp = EXT_MATH_LIB; + } + +#if defined(LTC_TEST_DBG) +#define NAME_VALUE(s) #s"="NAME(s) +#define NAME(s) #s + printf("EXT_MATH_LIB = %s\n", NAME_VALUE(EXT_MATH_LIB)); +#undef NAME_VALUE +#undef NAME +#endif + + return CRYPT_OK; +#endif + default: +#if defined(LTC_TEST_DBG) + printf("Unknown/Invalid MPI provider: %s\n", mpi); +#endif + return CRYPT_ERROR; + } +} + /* ref: $Format:%D$ */ /* git commit: $Format:%H$ */ diff --git a/tests/test.c b/tests/test.c index e125d523..0ce81d22 100644 --- a/tests/test.c +++ b/tests/test.c @@ -292,45 +292,6 @@ static void register_algs(void) } } -static void init_mpi(const char* mpi) -{ - switch (mpi[0]) { -#ifdef LTM_DESC - case 'l': - init_LTM(); - break; -#endif -#ifdef TFM_DESC - case 't': - init_TFM(); - break; -#endif -#ifdef GMP_DESC - case 'g': - init_GMP(); - break; -#endif -#ifdef EXT_MATH_LIB - case 'e': - { - extern ltc_math_descriptor EXT_MATH_LIB; - ltc_mp = EXT_MATH_LIB; - } - -#define NAME_VALUE(s) #s"="NAME(s) -#define NAME(s) #s - printf("EXT_MATH_LIB = %s\n", NAME_VALUE(EXT_MATH_LIB)); -#undef NAME_VALUE -#undef NAME - - break; -#endif - default: - printf("Unknown/Invalid MPI provider: %s\n", mpi); - break; - } -} - int main(int argc, char **argv) { #ifdef LTC_PTHREAD @@ -360,7 +321,7 @@ int main(int argc, char **argv) mpi_provider = argv[2]; } - init_mpi(mpi_provider); + crypt_mp_init(mpi_provider); if (ltc_mp.name != NULL) { printf("MP_PROVIDER = %s\n", ltc_mp.name);