From 4429c7241f7164dbda1cd3e038f4f75e2334583a Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Wed, 6 Sep 2017 15:06:57 +1000 Subject: [PATCH] mbedtls: Re-apply MBEDTLS_BIGNUM_ALT & related macros for custom bignum functions (IDF-specific patch.) (cherry picked from commit f859b9bc7579246703446c158270ae038442351c) --- include/mbedtls/bignum.h | 5 +++++ library/bignum.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/include/mbedtls/bignum.h b/include/mbedtls/bignum.h index 931e06d2c3..21466c2d45 100644 --- a/include/mbedtls/bignum.h +++ b/include/mbedtls/bignum.h @@ -99,6 +99,8 @@ MBEDTLS_LN_2_DIV_LN_10_SCALE100 - 1) / \ MBEDTLS_LN_2_DIV_LN_10_SCALE100) + 10 + 6) +#if !defined(MBEDTLS_BIGNUM_ALT) + /* * Define the base integer type, architecture-wise. * @@ -1065,6 +1067,9 @@ typedef enum { int mbedtls_mpi_gen_prime(mbedtls_mpi *X, size_t nbits, int flags, int (*f_rng)(void *, unsigned char *, size_t), void *p_rng); +#else /* MBEDTLS_BIGNUM_ALT */ +#include "bignum_alt.h" +#endif /* MBEDTLS_BIGNUM_ALT */ #if defined(MBEDTLS_SELF_TEST) diff --git a/library/bignum.c b/library/bignum.c index 09ce0301f0..3df37c4b8c 100644 --- a/library/bignum.c +++ b/library/bignum.c @@ -37,6 +37,8 @@ #include "mbedtls/platform.h" +#if !defined(MBEDTLS_BIGNUM_ALT) + #define MPI_VALIDATE_RET(cond) \ MBEDTLS_INTERNAL_VALIDATE_RET(cond, MBEDTLS_ERR_MPI_BAD_INPUT_DATA) #define MPI_VALIDATE(cond) \ @@ -1231,6 +1233,7 @@ int mbedtls_mpi_sub_int(mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_sint b return mbedtls_mpi_sub_mpi(X, A, &B); } +#if !defined(MBEDTLS_MPI_MUL_MPI_ALT) /* * Baseline multiplication: X = A * B (HAC 14.12) */ @@ -1332,6 +1335,7 @@ int mbedtls_mpi_mul_int(mbedtls_mpi *X, const mbedtls_mpi *A, mbedtls_mpi_uint b cleanup: return ret; } +#endif /* * Unsigned integer divide - double mbedtls_mpi_uint dividend, u1/u0, and @@ -1669,6 +1673,8 @@ int mbedtls_mpi_mod_int(mbedtls_mpi_uint *r, const mbedtls_mpi *A, mbedtls_mpi_s return 0; } +#if !defined(MBEDTLS_MPI_EXP_MOD_ALT) + static void mpi_montg_init(mbedtls_mpi_uint *mm, const mbedtls_mpi *N) { *mm = mbedtls_mpi_core_montmul_init(N->p); @@ -2043,6 +2049,7 @@ cleanup: return ret; } +#endif /* * Greatest common divisor: G = gcd(A, B) (HAC 14.54) @@ -2617,6 +2624,7 @@ cleanup: } #endif /* MBEDTLS_GENPRIME */ +#endif /* MBEDTLS_BIGNUM_ALT */ #if defined(MBEDTLS_SELF_TEST)