fix(mbedtls): fix error return code for calc_hash

Make this function return values from crypto_ret_value.
The previous method of returning the mbedtls error code
on failure meant that the authentication module couldn't
correctly parse failures from this function.

Change-Id: I9fe6eba1fc79e8f81004f8cd202781aea907e963
Signed-off-by: Ryan Everett <ryan.everett@arm.com>
This commit is contained in:
Ryan Everett 2024-11-08 15:03:15 +00:00
parent 7ea8852ea5
commit 885bd91f27

View File

@ -275,6 +275,7 @@ static int calc_hash(enum crypto_md_algo md_algo, void *data_ptr,
unsigned char output[CRYPTO_MD_MAX_SIZE]) unsigned char output[CRYPTO_MD_MAX_SIZE])
{ {
const mbedtls_md_info_t *md_info; const mbedtls_md_info_t *md_info;
int rc;
md_info = mbedtls_md_info_from_type(md_type(md_algo)); md_info = mbedtls_md_info_from_type(md_type(md_algo));
if (md_info == NULL) { if (md_info == NULL) {
@ -286,7 +287,12 @@ static int calc_hash(enum crypto_md_algo md_algo, void *data_ptr,
* 'output' hash buffer pointer considering its size is always * 'output' hash buffer pointer considering its size is always
* bigger than or equal to MBEDTLS_MD_MAX_SIZE. * bigger than or equal to MBEDTLS_MD_MAX_SIZE.
*/ */
return mbedtls_md(md_info, data_ptr, data_len, output); rc = mbedtls_md(md_info, data_ptr, data_len, output);
if (rc != 0) {
return CRYPTO_ERR_HASH;
}
return CRYPTO_SUCCESS;
} }
#endif /* CRYPTO_SUPPORT == CRYPTO_HASH_CALC_ONLY || \ #endif /* CRYPTO_SUPPORT == CRYPTO_HASH_CALC_ONLY || \
CRYPTO_SUPPORT == CRYPTO_AUTH_VERIFY_AND_HASH_CALC */ CRYPTO_SUPPORT == CRYPTO_AUTH_VERIFY_AND_HASH_CALC */