mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-03-29 13:20:21 +00:00
Improve use of ct interface in mbedtls_ssl_decrypt_buf
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
This commit is contained in:
parent
31beb2d449
commit
7d52f2a0d9
@ -1504,7 +1504,8 @@ int mbedtls_ssl_decrypt_buf(mbedtls_ssl_context const *ssl,
|
|||||||
|
|
||||||
int auth_done = 0;
|
int auth_done = 0;
|
||||||
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
|
#if defined(MBEDTLS_SSL_SOME_SUITES_USE_MAC)
|
||||||
size_t padlen = 0, correct = 1;
|
size_t padlen = 0;
|
||||||
|
mbedtls_ct_condition_t correct = MBEDTLS_CT_TRUE;
|
||||||
#endif
|
#endif
|
||||||
unsigned char *data;
|
unsigned char *data;
|
||||||
/* For an explanation of the additional data length see
|
/* For an explanation of the additional data length see
|
||||||
@ -1921,7 +1922,7 @@ hmac_failed_etm_enabled:
|
|||||||
const mbedtls_ct_condition_t ge = mbedtls_ct_uint_ge(
|
const mbedtls_ct_condition_t ge = mbedtls_ct_uint_ge(
|
||||||
rec->data_len,
|
rec->data_len,
|
||||||
padlen + 1);
|
padlen + 1);
|
||||||
correct = mbedtls_ct_size_if_else_0(ge, correct);
|
correct = mbedtls_ct_bool_and(ge, correct);
|
||||||
padlen = mbedtls_ct_size_if_else_0(ge, padlen);
|
padlen = mbedtls_ct_size_if_else_0(ge, padlen);
|
||||||
} else {
|
} else {
|
||||||
#if defined(MBEDTLS_SSL_DEBUG_ALL)
|
#if defined(MBEDTLS_SSL_DEBUG_ALL)
|
||||||
@ -1937,7 +1938,7 @@ hmac_failed_etm_enabled:
|
|||||||
const mbedtls_ct_condition_t ge = mbedtls_ct_uint_ge(
|
const mbedtls_ct_condition_t ge = mbedtls_ct_uint_ge(
|
||||||
rec->data_len,
|
rec->data_len,
|
||||||
transform->maclen + padlen + 1);
|
transform->maclen + padlen + 1);
|
||||||
correct = mbedtls_ct_size_if_else_0(ge, correct);
|
correct = mbedtls_ct_bool_and(ge, correct);
|
||||||
padlen = mbedtls_ct_size_if_else_0(ge, padlen);
|
padlen = mbedtls_ct_size_if_else_0(ge, padlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1973,14 +1974,14 @@ hmac_failed_etm_enabled:
|
|||||||
increment = mbedtls_ct_size_if_else_0(b, increment);
|
increment = mbedtls_ct_size_if_else_0(b, increment);
|
||||||
pad_count += increment;
|
pad_count += increment;
|
||||||
}
|
}
|
||||||
correct = mbedtls_ct_size_if_else_0(mbedtls_ct_uint_eq(pad_count, padlen), correct);
|
correct = mbedtls_ct_bool_and(mbedtls_ct_uint_eq(pad_count, padlen), correct);
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_DEBUG_ALL)
|
#if defined(MBEDTLS_SSL_DEBUG_ALL)
|
||||||
if (padlen > 0 && correct == 0) {
|
if (padlen > 0 && correct == MBEDTLS_CT_FALSE) {
|
||||||
MBEDTLS_SSL_DEBUG_MSG(1, ("bad padding byte detected"));
|
MBEDTLS_SSL_DEBUG_MSG(1, ("bad padding byte detected"));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
padlen = mbedtls_ct_size_if_else_0(mbedtls_ct_bool(correct), padlen);
|
padlen = mbedtls_ct_size_if_else_0(correct, padlen);
|
||||||
|
|
||||||
#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
|
#endif /* MBEDTLS_SSL_PROTO_TLS1_2 */
|
||||||
|
|
||||||
@ -2075,7 +2076,7 @@ hmac_failed_etm_enabled:
|
|||||||
#if defined(MBEDTLS_SSL_DEBUG_ALL)
|
#if defined(MBEDTLS_SSL_DEBUG_ALL)
|
||||||
MBEDTLS_SSL_DEBUG_MSG(1, ("message mac does not match"));
|
MBEDTLS_SSL_DEBUG_MSG(1, ("message mac does not match"));
|
||||||
#endif
|
#endif
|
||||||
correct = 0;
|
correct = MBEDTLS_CT_FALSE;
|
||||||
}
|
}
|
||||||
auth_done++;
|
auth_done++;
|
||||||
|
|
||||||
@ -2090,7 +2091,7 @@ hmac_failed_etm_disabled:
|
|||||||
/*
|
/*
|
||||||
* Finally check the correct flag
|
* Finally check the correct flag
|
||||||
*/
|
*/
|
||||||
if (correct == 0) {
|
if (correct == MBEDTLS_CT_FALSE) {
|
||||||
return MBEDTLS_ERR_SSL_INVALID_MAC;
|
return MBEDTLS_ERR_SSL_INVALID_MAC;
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
|
#endif /* MBEDTLS_SSL_SOME_SUITES_USE_MAC */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user