/* LibTomCrypt, modular cryptographic library -- Tom St Denis */ /* SPDX-License-Identifier: Unlicense */ #include "tomcrypt_private.h" /** @file crypt_inits.c Provide math library functions for dynamic languages like Python - Larry Bugbee, February 2013 */ #ifdef LTM_DESC void init_LTM(void) { ltc_mp = ltm_desc; } #endif #ifdef TFM_DESC void init_TFM(void) { ltc_mp = tfm_desc; } #endif #ifdef GMP_DESC void init_GMP(void) { ltc_mp = gmp_desc; } #endif int crypt_mp_init(const char* mpi) { if (mpi == NULL) return CRYPT_ERROR; switch (mpi[0]) { #ifdef LTM_DESC case 'l': case 'L': ltc_mp = ltm_desc; return CRYPT_OK; #endif #ifdef TFM_DESC case 't': case 'T': ltc_mp = tfm_desc; return CRYPT_OK; #endif #ifdef GMP_DESC case 'g': case 'G': ltc_mp = gmp_desc; 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; } }