From 1d52368e85f534816ae13cc37aa7970acde1b303 Mon Sep 17 00:00:00 2001 From: Dave Rodgman Date: Wed, 20 Sep 2023 16:26:49 +0100 Subject: [PATCH] build fixes Signed-off-by: Dave Rodgman --- library/cipher.c | 5 +++-- library/constant_time.c | 6 ++++-- library/constant_time_internal.h | 6 ++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/library/cipher.c b/library/cipher.c index 5470dcfac0..2fba758342 100644 --- a/library/cipher.c +++ b/library/cipher.c @@ -798,7 +798,8 @@ static int get_one_and_zeros_padding(unsigned char *input, size_t input_len, *data_len = (*data_len & ~hit_first_nonzero) | ((size_t) i & hit_first_nonzero); - bad = mbedtls_ct_uint_if(hit_first_nonzero, !mbedtls_ct_size_bool_eq(input[i], 0x80), bad); + bad = mbedtls_ct_uint_if((unsigned int) hit_first_nonzero, + !mbedtls_ct_size_bool_eq(input[i], 0x80), bad); in_padding = in_padding & ~is_nonzero; } @@ -843,7 +844,7 @@ static int get_zeros_and_len_padding(unsigned char *input, size_t input_len, /* The number of bytes checked must be independent of padding_len */ pad_idx = input_len - padding_len; for (i = 0; i < input_len - 1; i++) { - unsigned int mask = mbedtls_ct_size_mask_ge(i, pad_idx); + size_t mask = mbedtls_ct_size_mask_ge(i, pad_idx); bad |= input[i] & mask; } diff --git a/library/constant_time.c b/library/constant_time.c index c0f53bbe77..2a9f674261 100644 --- a/library/constant_time.c +++ b/library/constant_time.c @@ -116,7 +116,8 @@ mbedtls_mpi_uint mbedtls_ct_mpi_uint_mask(mbedtls_mpi_uint value) #endif /* MBEDTLS_BIGNUM_C */ -#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) || defined(MBEDTLS_NIST_KW_C) || \ + defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) /** Constant-flow mask generation for "less than" comparison: * - if \p x < \p y, return all-bits 1, that is (size_t) -1 @@ -151,7 +152,8 @@ size_t mbedtls_ct_size_mask_ge(size_t x, return ~mbedtls_ct_size_mask_lt(x, y); } -#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */ +#endif /* defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) || defined(MBEDTLS_NIST_KW_C) || + defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) */ #if defined(MBEDTLS_BASE64_C) diff --git a/library/constant_time_internal.h b/library/constant_time_internal.h index 402cf148b8..9d93733bc8 100644 --- a/library/constant_time_internal.h +++ b/library/constant_time_internal.h @@ -79,7 +79,8 @@ mbedtls_mpi_uint mbedtls_ct_mpi_uint_mask(mbedtls_mpi_uint value); #endif /* MBEDTLS_BIGNUM_C */ -#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) +#if defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) || defined(MBEDTLS_NIST_KW_C) || \ + defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) /** Constant-flow mask generation for "greater or equal" comparison: * - if \p x >= \p y, return all-bits 1, that is (size_t) -1 @@ -97,7 +98,8 @@ mbedtls_mpi_uint mbedtls_ct_mpi_uint_mask(mbedtls_mpi_uint value); size_t mbedtls_ct_size_mask_ge(size_t x, size_t y); -#endif /* MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC */ +#endif /* defined(MBEDTLS_SSL_SOME_SUITES_USE_TLS_CBC) || defined(MBEDTLS_NIST_KW_C) || + defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) */ /** Constant-flow boolean "equal" comparison: * return x == y