diff --git a/library/constant_time.c b/library/constant_time.c index 9ddd21d19..aa291d75c 100644 --- a/library/constant_time.c +++ b/library/constant_time.c @@ -295,6 +295,12 @@ unsigned mbedtls_cf_uint_if( unsigned cond, unsigned if1, unsigned if0 ) return( ( mask & if1 ) | (~mask & if0 ) ); } +size_t mbedtls_cf_size_if( unsigned cond, size_t if1, size_t if0 ) +{ + size_t mask = mbedtls_cf_size_mask( cond ); + return( ( mask & if1 ) | (~mask & if0 ) ); +} + /** * Select between two sign values in constant-time. * diff --git a/library/constant_time.h b/library/constant_time.h index a8d142b85..fdbaf1fb1 100644 --- a/library/constant_time.h +++ b/library/constant_time.h @@ -59,6 +59,8 @@ unsigned mbedtls_cf_mpi_uint_lt( const mbedtls_mpi_uint x, unsigned mbedtls_cf_uint_if( unsigned cond, unsigned if1, unsigned if0 ); +size_t mbedtls_cf_size_if( unsigned cond, size_t if1, size_t if0 ); + int mbedtls_cf_cond_select_sign( int a, int b, unsigned char second ); #if defined(MBEDTLS_BIGNUM_C)