diff --git a/tests/suites/test_suite_psa_crypto.function b/tests/suites/test_suite_psa_crypto.function index f3ccac01b3..ce531e1b00 100644 --- a/tests/suites/test_suite_psa_crypto.function +++ b/tests/suites/test_suite_psa_crypto.function @@ -7487,41 +7487,6 @@ void interruptible_signverify_hash_edgecase_tests(int key_type_arg, TEST_LE_U(signature_size, PSA_SIGNATURE_MAX_SIZE); ASSERT_ALLOC(signature, signature_size); - /* --- Ensure changing the max ops mid operation works (operation should - * complete successfully after setting max ops to unlimited --- */ - psa_interruptible_set_max_ops(1); - - PSA_ASSERT(psa_sign_hash_start(&sign_operation, key, alg, - input_data->x, input_data->len)); - - TEST_EQUAL(psa_sign_hash_complete(&sign_operation, signature, - signature_size, - &signature_length), - PSA_OPERATION_INCOMPLETE); - - psa_interruptible_set_max_ops(PSA_INTERRUPTIBLE_MAX_OPS_UNLIMITED); - - PSA_ASSERT(psa_sign_hash_complete(&sign_operation, signature, - signature_size, - &signature_length)); - - PSA_ASSERT(psa_sign_hash_abort(&sign_operation)); - - psa_interruptible_set_max_ops(1); - - PSA_ASSERT(psa_verify_hash_start(&verify_operation, key, alg, - input_data->x, input_data->len, - signature, signature_length)); - - TEST_EQUAL(psa_verify_hash_complete(&verify_operation), - PSA_OPERATION_INCOMPLETE); - - psa_interruptible_set_max_ops(PSA_INTERRUPTIBLE_MAX_OPS_UNLIMITED); - - PSA_ASSERT(psa_verify_hash_complete(&verify_operation)); - - PSA_ASSERT(psa_verify_hash_abort(&verify_operation)); - /* --- Change function inputs mid run, to cause an error (sign only, * verify passes all inputs to start. --- */ @@ -7608,7 +7573,8 @@ exit: * * 1. Test that setting max ops is reflected in both interruptible sign and * verify hash - + * 2. Test that changing the value of max_ops to unlimited during an operation + * causes that operation to complete in the next call. */ void interruptible_signverify_hash_ops_tests(int key_type_arg, data_t *key_data, int alg_arg, @@ -7621,6 +7587,7 @@ void interruptible_signverify_hash_ops_tests(int key_type_arg, size_t key_bits; unsigned char *signature = NULL; size_t signature_size; + size_t signature_length = 0xdeadbeef; psa_sign_hash_interruptible_operation_t sign_operation = psa_sign_hash_interruptible_operation_init(); psa_verify_hash_interruptible_operation_t verify_operation = @@ -7669,6 +7636,41 @@ void interruptible_signverify_hash_ops_tests(int key_type_arg, TEST_EQUAL(psa_interruptible_get_max_ops(), 0xbeef); + /* --- Ensure changing the max ops mid operation works (operation should + * complete successfully after setting max ops to unlimited --- */ + psa_interruptible_set_max_ops(1); + + PSA_ASSERT(psa_sign_hash_start(&sign_operation, key, alg, + input_data->x, input_data->len)); + + TEST_EQUAL(psa_sign_hash_complete(&sign_operation, signature, + signature_size, + &signature_length), + PSA_OPERATION_INCOMPLETE); + + psa_interruptible_set_max_ops(PSA_INTERRUPTIBLE_MAX_OPS_UNLIMITED); + + PSA_ASSERT(psa_sign_hash_complete(&sign_operation, signature, + signature_size, + &signature_length)); + + PSA_ASSERT(psa_sign_hash_abort(&sign_operation)); + + psa_interruptible_set_max_ops(1); + + PSA_ASSERT(psa_verify_hash_start(&verify_operation, key, alg, + input_data->x, input_data->len, + signature, signature_length)); + + TEST_EQUAL(psa_verify_hash_complete(&verify_operation), + PSA_OPERATION_INCOMPLETE); + + psa_interruptible_set_max_ops(PSA_INTERRUPTIBLE_MAX_OPS_UNLIMITED); + + PSA_ASSERT(psa_verify_hash_complete(&verify_operation)); + + PSA_ASSERT(psa_verify_hash_abort(&verify_operation)); + exit: /* * Key attributes may have been returned by psa_get_key_attributes()