Generalise mbedtls_ct_error_if to mbedtls_ct_int_if

Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
This commit is contained in:
Dave Rodgman 2023-09-21 19:22:43 +01:00
parent cc3c670670
commit f81b2a14f2
2 changed files with 10 additions and 11 deletions

View file

@ -397,15 +397,15 @@ static inline mbedtls_mpi_uint mbedtls_ct_mpi_uint_if_else_0(mbedtls_ct_conditio
#endif /* MBEDTLS_BIGNUM_C */ #endif /* MBEDTLS_BIGNUM_C */
static inline int mbedtls_ct_error_if(mbedtls_ct_condition_t condition, int if1, int if0) static inline int mbedtls_ct_int_if(mbedtls_ct_condition_t condition, int if1, int if0)
{ {
return -((int) mbedtls_ct_if(condition, (mbedtls_ct_uint_t) (-if1), int a[2] = {if0, if1};
(mbedtls_ct_uint_t) (-if0))); return a[mbedtls_ct_uint_if_else_0(condition, 1)];
} }
static inline int mbedtls_ct_error_if_else_0(mbedtls_ct_condition_t condition, int if1) static inline int mbedtls_ct_int_if_else_0(mbedtls_ct_condition_t condition, int if1)
{ {
return -((int) (condition & (-if1))); return mbedtls_ct_int_if(condition, if1, 0);
} }
static inline mbedtls_ct_condition_t mbedtls_ct_uint_eq(mbedtls_ct_uint_t x, static inline mbedtls_ct_condition_t mbedtls_ct_uint_eq(mbedtls_ct_uint_t x,

View file

@ -411,7 +411,7 @@ static inline unsigned char mbedtls_ct_uchar_in_range_if(unsigned char low,
unsigned char c, unsigned char c,
unsigned char t); unsigned char t);
/** Choose between two error values. The values must be zero or negative. /** Choose between two int values.
* *
* Functionally equivalent to: * Functionally equivalent to:
* *
@ -423,23 +423,22 @@ static inline unsigned char mbedtls_ct_uchar_in_range_if(unsigned char low,
* *
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise \c if0. * \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise \c if0.
*/ */
static inline int mbedtls_ct_error_if(mbedtls_ct_condition_t condition, int if1, int if0); static inline int mbedtls_ct_int_if(mbedtls_ct_condition_t condition, int if1, int if0);
/** Choose between an error value and 0. The error value must be zero or negative. /** Choose between an int value and 0.
* *
* Functionally equivalent to: * Functionally equivalent to:
* *
* condition ? if1 : 0. * condition ? if1 : 0.
* *
* Functionally equivalent to mbedtls_ct_error_if(condition, if1, 0) but * Functionally equivalent to mbedtls_ct_int_if(condition, if1, 0).
* results in smaller code size.
* *
* \param condition Condition to test. * \param condition Condition to test.
* \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE. * \param if1 Value to use if \p condition == MBEDTLS_CT_TRUE.
* *
* \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise 0. * \return \c if1 if \p condition == MBEDTLS_CT_TRUE, otherwise 0.
*/ */
static inline int mbedtls_ct_error_if_else_0(mbedtls_ct_condition_t condition, int if1); static inline int mbedtls_ct_int_if_else_0(mbedtls_ct_condition_t condition, int if1);
/* ============================================================================ /* ============================================================================
* Block memory operations * Block memory operations