Fix error handling in psa_driver_wrapper_xxx_hash_get_num_ops

Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
This commit is contained in:
Dave Rodgman 2023-09-28 18:07:06 +01:00
parent 7f288566c3
commit 321c7e9ed9
2 changed files with 19 additions and 12 deletions

View file

@ -3470,7 +3470,9 @@ psa_status_t psa_sign_hash_complete(
signature_length);
/* Update ops count with work done. */
operation->num_ops = psa_driver_wrapper_sign_hash_get_num_ops(operation);
if (status == PSA_SUCCESS) {
status = psa_driver_wrapper_sign_hash_get_num_ops(operation, &operation->num_ops);
}
exit:
@ -3601,8 +3603,9 @@ psa_status_t psa_verify_hash_complete(
status = psa_driver_wrapper_verify_hash_complete(operation);
/* Update ops count with work done. */
operation->num_ops = psa_driver_wrapper_verify_hash_get_num_ops(
operation);
if (status == PSA_SUCCESS) {
status = psa_driver_wrapper_verify_hash_get_num_ops(operation, &operation->num_ops);
}
exit:

View file

@ -472,17 +472,19 @@ static inline psa_status_t psa_driver_wrapper_verify_hash(
}
}
static inline uint32_t psa_driver_wrapper_sign_hash_get_num_ops(
psa_sign_hash_interruptible_operation_t *operation )
static inline int psa_driver_wrapper_sign_hash_get_num_ops(
psa_sign_hash_interruptible_operation_t *operation, uint32_t *num_ops )
{
switch( operation->id )
{
/* If uninitialised, return 0, as no work can have been done. */
case 0:
return 0;
*num_ops = 0;
return PSA_SUCCESS;
case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
return(mbedtls_psa_sign_hash_get_num_ops(&operation->ctx.mbedtls_ctx));
*num_ops = mbedtls_psa_sign_hash_get_num_ops(&operation->ctx.mbedtls_ctx);
return PSA_SUCCESS;
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
#if defined(PSA_CRYPTO_DRIVER_TEST)
@ -495,17 +497,19 @@ static inline uint32_t psa_driver_wrapper_sign_hash_get_num_ops(
return( PSA_ERROR_INVALID_ARGUMENT );
}
static inline uint32_t psa_driver_wrapper_verify_hash_get_num_ops(
psa_verify_hash_interruptible_operation_t *operation )
static inline int psa_driver_wrapper_verify_hash_get_num_ops(
psa_verify_hash_interruptible_operation_t *operation, uint32_t *num_ops )
{
switch( operation->id )
{
/* If uninitialised, return 0, as no work can have been done. */
case 0:
return 0;
*num_ops = 0;
return PSA_SUCCESS;
case PSA_CRYPTO_MBED_TLS_DRIVER_ID:
return (mbedtls_psa_verify_hash_get_num_ops(&operation->ctx.mbedtls_ctx));
*num_ops = mbedtls_psa_verify_hash_get_num_ops(&operation->ctx.mbedtls_ctx);
return PSA_SUCCESS;
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
#if defined(PSA_CRYPTO_DRIVER_TEST)
@ -516,7 +520,7 @@ static inline uint32_t psa_driver_wrapper_verify_hash_get_num_ops(
}
return( PSA_ERROR_INVALID_ARGUMENT );
return ( PSA_ERROR_INVALID_ARGUMENT );
}
static inline psa_status_t psa_driver_wrapper_sign_hash_start(