From 3572bde9c9dd9a631b09b5bfdb05d09dfb2d129a Mon Sep 17 00:00:00 2001 From: Dave Rodgman Date: Thu, 28 Sep 2023 19:33:15 +0100 Subject: [PATCH] Assume get_num_ops cannot fail Signed-off-by: Dave Rodgman --- library/psa_crypto.c | 13 +++------- .../psa_crypto_driver_wrappers.h.jinja | 26 +++++++++---------- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/library/psa_crypto.c b/library/psa_crypto.c index 0bb9e8e650..1faf1dd6ca 100644 --- a/library/psa_crypto.c +++ b/library/psa_crypto.c @@ -3448,7 +3448,6 @@ psa_status_t psa_sign_hash_complete( size_t *signature_length) { psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; - psa_status_t numops_status = PSA_ERROR_CORRUPTION_DETECTED; *signature_length = 0; @@ -3471,10 +3470,7 @@ psa_status_t psa_sign_hash_complete( signature_length); /* Update ops count with work done. */ - numops_status = psa_driver_wrapper_sign_hash_get_num_ops(operation, &operation->num_ops); - if (status == PSA_SUCCESS) { - status = numops_status; - } + operation->num_ops = psa_driver_wrapper_sign_hash_get_num_ops(operation); exit: @@ -3594,7 +3590,6 @@ psa_status_t psa_verify_hash_complete( psa_verify_hash_interruptible_operation_t *operation) { psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; - psa_status_t numops_status = PSA_ERROR_CORRUPTION_DETECTED; /* Check that start has been called first, and that operation has not * previously errored. */ @@ -3606,10 +3601,8 @@ psa_status_t psa_verify_hash_complete( status = psa_driver_wrapper_verify_hash_complete(operation); /* Update ops count with work done. */ - numops_status = psa_driver_wrapper_verify_hash_get_num_ops(operation, &operation->num_ops); - if (status == PSA_SUCCESS) { - status = numops_status; - } + operation->num_ops = psa_driver_wrapper_verify_hash_get_num_ops( + operation); exit: diff --git a/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja b/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja index 282dd7bf77..ded5c041a2 100644 --- a/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja +++ b/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja @@ -472,19 +472,17 @@ static inline psa_status_t psa_driver_wrapper_verify_hash( } } -static inline psa_status_t psa_driver_wrapper_sign_hash_get_num_ops( - psa_sign_hash_interruptible_operation_t *operation, uint32_t *num_ops ) +static inline uint32_t psa_driver_wrapper_sign_hash_get_num_ops( + psa_sign_hash_interruptible_operation_t *operation ) { switch( operation->id ) { /* If uninitialised, return 0, as no work can have been done. */ case 0: - *num_ops = 0; - return PSA_SUCCESS; + return 0; case PSA_CRYPTO_MBED_TLS_DRIVER_ID: - *num_ops = mbedtls_psa_sign_hash_get_num_ops(&operation->ctx.mbedtls_ctx); - return PSA_SUCCESS; + return(mbedtls_psa_sign_hash_get_num_ops(&operation->ctx.mbedtls_ctx)); #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) #if defined(PSA_CRYPTO_DRIVER_TEST) @@ -494,22 +492,21 @@ static inline psa_status_t psa_driver_wrapper_sign_hash_get_num_ops( #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */ } - return( PSA_ERROR_INVALID_ARGUMENT ); + /* Can't happen (see discussion in #8271) */ + return 0; } -static inline psa_status_t psa_driver_wrapper_verify_hash_get_num_ops( - psa_verify_hash_interruptible_operation_t *operation, uint32_t *num_ops ) +static inline uint32_t psa_driver_wrapper_verify_hash_get_num_ops( + psa_verify_hash_interruptible_operation_t *operation ) { switch( operation->id ) { /* If uninitialised, return 0, as no work can have been done. */ case 0: - *num_ops = 0; - return PSA_SUCCESS; + return 0; case PSA_CRYPTO_MBED_TLS_DRIVER_ID: - *num_ops = mbedtls_psa_verify_hash_get_num_ops(&operation->ctx.mbedtls_ctx); - return PSA_SUCCESS; + return (mbedtls_psa_verify_hash_get_num_ops(&operation->ctx.mbedtls_ctx)); #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT) #if defined(PSA_CRYPTO_DRIVER_TEST) @@ -520,7 +517,8 @@ static inline psa_status_t psa_driver_wrapper_verify_hash_get_num_ops( } - return ( PSA_ERROR_INVALID_ARGUMENT ); + /* Can't happen (see discussion in #8271) */ + return 0; } static inline psa_status_t psa_driver_wrapper_sign_hash_start(