Convert tests to configurable max_ops

Signed-off-by: Paul Elliott <paul.elliott@arm.com>
diff --git a/tests/suites/test_suite_psa_crypto.function b/tests/suites/test_suite_psa_crypto.function
index d514179..ce5a240 100644
--- a/tests/suites/test_suite_psa_crypto.function
+++ b/tests/suites/test_suite_psa_crypto.function
@@ -6447,7 +6447,8 @@
 /* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE */
 void sign_hash_interruptible(int key_type_arg, data_t *key_data,
                              int alg_arg, data_t *input_data,
-                             data_t *output_data)
+                             data_t *output_data, int max_ops,
+                             int min_completes, int max_completes)
 {
     mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
     psa_key_type_t key_type = key_type_arg;
@@ -6460,6 +6461,7 @@
     psa_status_t status = PSA_OPERATION_INCOMPLETE;
     size_t num_ops = 0;
     size_t num_ops_prior = 0;
+    size_t num_completes = 0;
     psa_sign_hash_interruptible_operation_t operation =
         psa_sign_hash_interruptible_operation_init();
 
@@ -6482,6 +6484,8 @@
     TEST_LE_U(signature_size, PSA_SIGNATURE_MAX_SIZE);
     ASSERT_ALLOC(signature, signature_size);
 
+    psa_interruptible_set_max_ops(max_ops);
+
     num_ops_prior = psa_sign_hash_get_num_ops(&operation);
     TEST_ASSERT(num_ops_prior == 0);
 
@@ -6497,16 +6501,21 @@
         status = psa_sign_hash_complete(&operation, signature, signature_size,
                                         &signature_length);
 
+        num_completes++;
+
         if (status == PSA_SUCCESS || status == PSA_OPERATION_INCOMPLETE) {
             num_ops = psa_sign_hash_get_num_ops(&operation);
-
             TEST_ASSERT(num_ops > num_ops_prior);
+
             num_ops_prior = num_ops;
         }
     }
 
     TEST_ASSERT(status == PSA_SUCCESS);
 
+    TEST_LE_U(min_completes, num_completes);
+    TEST_LE_U(num_completes, max_completes);
+
     /* Verify that the signature is what is expected. */
     ASSERT_COMPARE(output_data->x, output_data->len,
                    signature, signature_length);
@@ -6577,7 +6586,9 @@
                                   int alg_arg, data_t *input_data,
                                   int signature_size_arg,
                                   int expected_start_status_arg,
-                                  int expected_complete_status_arg)
+                                  int expected_complete_status_arg,
+                                  int max_ops, int min_completes,
+                                  int max_completes)
 {
     mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
     psa_key_type_t key_type = key_type_arg;
@@ -6590,6 +6601,7 @@
     size_t signature_length = 0xdeadbeef;
     size_t num_ops = 0;
     size_t num_ops_prior = 0;
+    size_t num_completes = 0;
     psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_sign_hash_interruptible_operation_t operation =
         psa_sign_hash_interruptible_operation_init();
@@ -6605,6 +6617,8 @@
     PSA_ASSERT(psa_import_key(&attributes, key_data->x, key_data->len,
                               &key));
 
+    psa_interruptible_set_max_ops(max_ops);
+
     num_ops_prior = psa_sign_hash_get_num_ops(&operation);
     TEST_ASSERT(num_ops_prior == 0);
 
@@ -6625,6 +6639,8 @@
                                                signature_size,
                                                &signature_length);
 
+        num_completes++;
+
         /* If the psa_sign_hash_start() failed, psa_sign_hash_complete()
          * should also fail with bad state. */
         if (expected_start_status != PSA_SUCCESS) {
@@ -6633,8 +6649,8 @@
             TEST_EQUAL(actual_status, expected_complete_status);
         } else {
             num_ops = psa_sign_hash_get_num_ops(&operation);
-
             TEST_ASSERT(num_ops > num_ops_prior);
+
             num_ops_prior = num_ops;
         }
     }
@@ -6647,6 +6663,9 @@
      * checking the error code then they don't overflow a buffer. */
     TEST_LE_U(signature_length, signature_size);
 
+    TEST_LE_U(min_completes, num_completes);
+    TEST_LE_U(num_completes, max_completes);
+
 exit:
     psa_reset_key_attributes(&attributes);
     psa_destroy_key(key);
@@ -6727,7 +6746,9 @@
 
 /* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE */
 void sign_verify_hash_interruptible(int key_type_arg, data_t *key_data,
-                                    int alg_arg, data_t *input_data)
+                                    int alg_arg, data_t *input_data,
+                                    int max_ops, int min_completes,
+                                    int max_completes)
 {
     mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
     psa_key_type_t key_type = key_type_arg;
@@ -6738,6 +6759,7 @@
     size_t signature_length = 0xdeadbeef;
     psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_status_t status = PSA_OPERATION_INCOMPLETE;
+    size_t num_completes = 0;
     psa_sign_hash_interruptible_operation_t sign_operation =
         psa_sign_hash_interruptible_operation_init();
     psa_verify_hash_interruptible_operation_t verify_operation =
@@ -6745,7 +6767,8 @@
 
     PSA_ASSERT(psa_crypto_init());
 
-    psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH);
+    psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH |
+                            PSA_KEY_USAGE_VERIFY_HASH);
     psa_set_key_algorithm(&attributes, alg);
     psa_set_key_type(&attributes, key_type);
 
@@ -6762,6 +6785,8 @@
     TEST_LE_U(signature_size, PSA_SIGNATURE_MAX_SIZE);
     ASSERT_ALLOC(signature, signature_size);
 
+    psa_interruptible_set_max_ops(max_ops);
+
     /* Start performing the signature. */
     PSA_ASSERT(psa_sign_hash_start(&sign_operation, key, alg,
                                    input_data->x, input_data->len));
@@ -6769,18 +6794,25 @@
     /* Continue performing the signature until complete. */
     while (status == PSA_OPERATION_INCOMPLETE) {
 
-        status = psa_sign_hash_complete(&sign_operation, signature, signature_size,
+        status = psa_sign_hash_complete(&sign_operation, signature,
+                                        signature_size,
                                         &signature_length);
+
+        num_completes++;
     }
 
     TEST_ASSERT(status == PSA_SUCCESS);
 
+    TEST_LE_U(min_completes, num_completes);
+    TEST_LE_U(num_completes, max_completes);
+
     PSA_ASSERT(psa_sign_hash_abort(&sign_operation));
 
     /* Check that the signature length looks sensible. */
     TEST_LE_U(signature_length, signature_size);
     TEST_ASSERT(signature_length > 0);
 
+    num_completes = 0;
     status = PSA_OPERATION_INCOMPLETE;
 
     /* Start verification. */
@@ -6791,10 +6823,15 @@
     /* Continue performing the signature until complete. */
     while (status == PSA_OPERATION_INCOMPLETE) {
         status = psa_verify_hash_complete(&verify_operation);
+
+        num_completes++;
     }
 
     TEST_ASSERT(status == PSA_SUCCESS);
 
+    TEST_LE_U(min_completes, num_completes);
+    TEST_LE_U(num_completes, max_completes);
+
     PSA_ASSERT(psa_verify_hash_abort(&verify_operation));
 
     verify_operation = psa_verify_hash_interruptible_operation_init();
@@ -6870,7 +6907,8 @@
 /* BEGIN_CASE depends_on:MBEDTLS_ECP_RESTARTABLE */
 void verify_hash_interruptible(int key_type_arg, data_t *key_data,
                                int alg_arg, data_t *hash_data,
-                               data_t *signature_data)
+                               data_t *signature_data, int max_ops,
+                               int min_completes, int max_completes)
 {
     mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
     psa_key_type_t key_type = key_type_arg;
@@ -6879,6 +6917,7 @@
     psa_status_t status = PSA_OPERATION_INCOMPLETE;
     size_t num_ops = 0;
     size_t num_ops_prior = 0;
+    size_t num_completes = 0;
     psa_verify_hash_interruptible_operation_t operation =
         psa_verify_hash_interruptible_operation_init();
 
@@ -6893,6 +6932,8 @@
     PSA_ASSERT(psa_import_key(&attributes, key_data->x, key_data->len,
                               &key));
 
+    psa_interruptible_set_max_ops(max_ops);
+
     num_ops_prior = psa_verify_hash_get_num_ops(&operation);
 
     TEST_ASSERT(num_ops_prior == 0);
@@ -6911,16 +6952,21 @@
     while (status == PSA_OPERATION_INCOMPLETE) {
         status = psa_verify_hash_complete(&operation);
 
+        num_completes++;
+
         if (status == PSA_SUCCESS || status == PSA_OPERATION_INCOMPLETE) {
             num_ops = psa_verify_hash_get_num_ops(&operation);
-
             TEST_ASSERT(num_ops > num_ops_prior);
+
             num_ops_prior = num_ops;
         }
     }
 
     TEST_ASSERT(status == PSA_SUCCESS);
 
+    TEST_LE_U(min_completes, num_completes);
+    TEST_LE_U(num_completes, max_completes);
+
     PSA_ASSERT(psa_verify_hash_abort(&operation));
 
 exit:
@@ -6969,7 +7015,9 @@
                                     int alg_arg, data_t *hash_data,
                                     data_t *signature_data,
                                     int expected_start_status_arg,
-                                    int expected_complete_status_arg)
+                                    int expected_complete_status_arg,
+                                    int max_ops, int min_completes,
+                                    int max_completes)
 {
     mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT;
     psa_key_type_t key_type = key_type_arg;
@@ -6980,6 +7028,7 @@
     psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
     size_t num_ops = 0;
     size_t num_ops_prior = 0;
+    size_t num_completes = 0;
     psa_verify_hash_interruptible_operation_t operation =
         psa_verify_hash_interruptible_operation_init();
 
@@ -6992,6 +7041,8 @@
     PSA_ASSERT(psa_import_key(&attributes, key_data->x, key_data->len,
                               &key));
 
+    psa_interruptible_set_max_ops(max_ops);
+
     num_ops_prior = psa_verify_hash_get_num_ops(&operation);
     TEST_ASSERT(num_ops_prior == 0);
 
@@ -7012,6 +7063,8 @@
     while (actual_status == PSA_OPERATION_INCOMPLETE) {
         actual_status = psa_verify_hash_complete(&operation);
 
+        num_completes++;
+
         /* If the psa_verify_hash_start() failed,
          * psa_verify_hash_complete() should also fail with bad state.*/
         if (expected_start_status != PSA_SUCCESS) {
@@ -7020,12 +7073,15 @@
             TEST_EQUAL(actual_status, expected_complete_status);
         } else {
             num_ops = psa_verify_hash_get_num_ops(&operation);
-
             TEST_ASSERT(num_ops > num_ops_prior);
+
             num_ops_prior = num_ops;
         }
     }
 
+    TEST_LE_U(min_completes, num_completes);
+    TEST_LE_U(num_completes, max_completes);
+
     PSA_ASSERT(psa_verify_hash_abort(&operation));
 
 exit: