PSA crypto and attestation specification alignment

-Updating Crypto to PSA Crypto 1.0-Beta3
-Updating Attestation to PSA Attestation v1.0.0 Release

Signed-off-by: Gowtham Siddarth <gowtham.siddarth@arm.com>
diff --git a/api-tests/val/common/val.h b/api-tests/val/common/val.h
index 2af2858..3b1a713 100644
--- a/api-tests/val/common/val.h
+++ b/api-tests/val/common/val.h
@@ -186,10 +186,16 @@
     BOOT_EXPECTED_NS                   = 0x3,
     /* Test performs panic check for secure test run and expect reboot */
     BOOT_EXPECTED_S                    = 0x4,
-    /* Test expected reboot but it didn't happen */
+    /* Test expects reboot but it didn't happen */
     BOOT_EXPECTED_BUT_FAILED           = 0x5,
-    /* Test expect reboot for secure/non-secure test run. If reboot happens, re-enter same test */
+    /* Test expects reboot for secure/non-secure test run. If reboot happens,
+     * re-enter the same test and execute the next check function
+     */
     BOOT_EXPECTED_REENTER_TEST         = 0x6,
+    /* Test expect reboot for the test run. If reboot happens,
+     * re-enter the same test and continue executing the same check function
+     */
+    BOOT_EXPECTED_CONT_TEST_EXEC       = 0x7,
 } boot_state_t;
 
 typedef enum {
@@ -197,6 +203,9 @@
     NV_TEST_ID_PREVIOUS = 0x1,
     NV_TEST_ID_CURRENT  = 0x2,
     NV_TEST_CNT         = 0x3,
+    NV_TEST_DATA1       = 0x4,
+    NV_TEST_DATA2       = 0x5,
+    NV_TEST_DATA3       = 0x6,
 } nvmem_index_t;
 
 /* enums to report test sub-state */
@@ -231,6 +240,7 @@
   VAL_STATUS_HEAP_NOT_AVAILABLE          = 0x2A,
   VAL_STATUS_UNSUPPORTED                 = 0x2B,
   VAL_STATUS_DRIVER_FN_FAILED            = 0x2C,
+  VAL_STATUS_NO_TESTS                    = 0X2D,
   VAL_STATUS_ERROR_MAX                   = INT_MAX,
 } val_status_t;
 
diff --git a/api-tests/val/nspe/val_crypto.h b/api-tests/val/nspe/val_crypto.h
index 6fc3f56..8956d56 100644
--- a/api-tests/val/nspe/val_crypto.h
+++ b/api-tests/val/nspe/val_crypto.h
@@ -50,57 +50,86 @@
 #define PSA_KEY_USAGE_INVALID           0xFFFFFFFF
 #define PSA_HASH_ALG_INVALID            0x01FFFFFF
 #define PSA_ALG_INVALID                 0xFFFFFFFF
+#define PSA_KEY_DERIVATION_STEP_INVALID 0x0000FFFF
 
 enum crypto_function_code {
-    VAL_CRYPTO_INIT                     = 0x1,
-    VAL_CRYPTO_GENERATE_RANDOM          = 0x2,
-    VAL_CRYPTO_IMPORT_KEY               = 0x3,
-    VAL_CRYPTO_EXPORT_KEY               = 0x4,
-    VAL_CRYPTO_EXPORT_PUBLIC_KEY        = 0x5,
-    VAL_CRYPTO_DESTROY_KEY              = 0x6,
-    VAL_CRYPTO_GET_KEY_INFO             = 0x7,
-    VAL_CRYPTO_KEY_POLICY_INIT          = 0x8,
-    VAL_CRYPTO_KEY_POLICY_SET_USAGE     = 0x9,
-    VAL_CRYPTO_KEY_POLICY_GET_USAGE     = 0xA,
-    VAL_CRYPTO_KEY_POLICY_GET_ALGORITHM = 0xB,
-    VAL_CRYPTO_SET_KEY_POLICY           = 0xC,
-    VAL_CRYPTO_GET_KEY_POLICY           = 0xD,
-    VAL_CRYPTO_GET_KEY_INFORMATION      = 0xE,
-    VAL_CRYPTO_GET_KEY_LIFETIME         = 0xF,
-    VAL_CRYPTO_HASH_SETUP               = 0x11,
-    VAL_CRYPTO_HASH_UPDATE              = 0x12,
-    VAL_CRYPTO_HASH_VERIFY              = 0x13,
-    VAL_CRYPTO_HASH_FINISH              = 0x14,
-    VAL_CRYPTO_HASH_ABORT               = 0x15,
-    VAL_CRYPTO_GENERATE_KEY             = 0x16,
-    VAL_CRYPTO_GENERATOR_READ           = 0x17,
-    VAL_CRYPTO_KEY_DERIVATION           = 0x18,
-    VAL_CRYPTO_GET_GENERATOR_CAPACITY   = 0x19,
-    VAL_CRYPTO_GENERATOR_IMPORT_KEY     = 0x1A,
-    VAL_CRYPTO_GENERATOR_ABORT          = 0x1B,
-    VAL_CRYPTO_AEAD_ENCRYPT             = 0x1C,
-    VAL_CRYPTO_AEAD_DECRYPT             = 0x1D,
-    VAL_CRYPTO_MAC_SIGN_SETUP           = 0x1E,
-    VAL_CRYPTO_MAC_UPDATE               = 0x1F,
-    VAL_CRYPTO_MAC_SIGN_FINISH          = 0x20,
-    VAL_CRYPTO_MAC_VERIFY_SETUP         = 0x21,
-    VAL_CRYPTO_MAC_VERIFY_FINISH        = 0x22,
-    VAL_CRYPTO_MAC_ABORT                = 0x23,
-    VAL_CRYPTO_ASYMMTERIC_ENCRYPT       = 0x24,
-    VAL_CRYPTO_ASYMMTERIC_DECRYPT       = 0x25,
-    VAL_CRYPTO_CIPHER_ENCRYPT_SETUP     = 0x26,
-    VAL_CRYPTO_CIPHER_DECRYPT_SETUP     = 0x2A,
-    VAL_CRYPTO_CIPHER_GENERATE_IV       = 0x2B,
-    VAL_CRYPTO_CIPHER_SET_IV            = 0x2C,
-    VAL_CRYPTO_CIPHER_UPDATE            = 0x2D,
-    VAL_CRYPTO_CIPHER_FINISH            = 0x2E,
-    VAL_CRYPTO_CIPHER_ABORT             = 0x2F,
-    VAL_CRYPTO_ASYMMTERIC_SIGN          = 0x30,
-    VAL_CRYPTO_ASYMMTERIC_VERIFY        = 0x31,
-    VAL_CRYPTO_KEY_AGREEMENT            = 0x32,
-    VAL_CRYPTO_ALLOCATE_KEY             = 0x33,
-    VAL_CRYPTO_COPY_KEY                 = 0x34,
-    VAL_CRYPTO_FREE                     = 0xFE,
+    VAL_CRYPTO_INIT                          = 0x1,
+    VAL_CRYPTO_GENERATE_RANDOM               = 0x2,
+    VAL_CRYPTO_IMPORT_KEY                    = 0x3,
+    VAL_CRYPTO_EXPORT_KEY                    = 0x4,
+    VAL_CRYPTO_EXPORT_PUBLIC_KEY             = 0x5,
+    VAL_CRYPTO_DESTROY_KEY                   = 0x6,
+    VAL_CRYPTO_HASH_SETUP                    = 0x7,
+    VAL_CRYPTO_HASH_UPDATE                   = 0x8,
+    VAL_CRYPTO_HASH_VERIFY                   = 0x9,
+    VAL_CRYPTO_HASH_FINISH                   = 0xA,
+    VAL_CRYPTO_HASH_ABORT                    = 0xB,
+    VAL_CRYPTO_GENERATE_KEY                  = 0xC,
+    VAL_CRYPTO_AEAD_ENCRYPT                  = 0xD,
+    VAL_CRYPTO_AEAD_DECRYPT                  = 0xE,
+    VAL_CRYPTO_MAC_SIGN_SETUP                = 0xF,
+    VAL_CRYPTO_MAC_UPDATE                    = 0x10,
+    VAL_CRYPTO_MAC_SIGN_FINISH               = 0x11,
+    VAL_CRYPTO_MAC_VERIFY_SETUP              = 0x12,
+    VAL_CRYPTO_MAC_VERIFY_FINISH             = 0x13,
+    VAL_CRYPTO_MAC_ABORT                     = 0x14,
+    VAL_CRYPTO_ASYMMTERIC_ENCRYPT            = 0x15,
+    VAL_CRYPTO_ASYMMTERIC_DECRYPT            = 0x16,
+    VAL_CRYPTO_CIPHER_ENCRYPT_SETUP          = 0x17,
+    VAL_CRYPTO_CIPHER_DECRYPT_SETUP          = 0x18,
+    VAL_CRYPTO_CIPHER_GENERATE_IV            = 0x19,
+    VAL_CRYPTO_CIPHER_SET_IV                 = 0x1A,
+    VAL_CRYPTO_CIPHER_UPDATE                 = 0x1B,
+    VAL_CRYPTO_CIPHER_FINISH                 = 0x1C,
+    VAL_CRYPTO_CIPHER_ABORT                  = 0x1D,
+    VAL_CRYPTO_ASYMMTERIC_SIGN               = 0x1E,
+    VAL_CRYPTO_ASYMMTERIC_VERIFY             = 0x1F,
+    VAL_CRYPTO_COPY_KEY                      = 0x20,
+    VAL_CRYPTO_SET_KEY_TYPE                  = 0x21,
+    VAL_CRYPTO_SET_KEY_BITS                  = 0x22,
+    VAL_CRYPTO_GET_KEY_ATTRIBUTES            = 0x23,
+    VAL_CRYPTO_GET_KEY_TYPE                  = 0x24,
+    VAL_CRYPTO_SET_KEY_USAGE_FLAGS           = 0x25,
+    VAL_CRYPTO_RESET_KEY_ATTRIBUTES          = 0x26,
+    VAL_CRYPTO_SET_KEY_ID                    = 0x27,
+    VAL_CRYPTO_SET_KEY_LIFETIME              = 0x28,
+    VAL_CRYPTO_SET_KEY_ALGORITHM             = 0x29,
+    VAL_CRYPTO_GET_KEY_ID                    = 0x2A,
+    VAL_CRYPTO_GET_KEY_LIFETIME              = 0x2B,
+    VAL_CRYPTO_GET_KEY_USAGE_FLAGS           = 0x2C,
+    VAL_CRYPTO_GET_KEY_ALGORITHM             = 0x2D,
+    VAL_CRYPTO_GET_KEY_BITS                  = 0x2E,
+    VAL_CRYPTO_HASH_COMPUTE                  = 0x2F,
+    VAL_CRYPTO_HASH_COMPARE                  = 0x30,
+    VAL_CRYPTO_KEY_DERIVATION_SETUP          = 0x31,
+    VAL_CRYPTO_KEY_DERIVATION_ABORT          = 0x32,
+    VAL_CRYPTO_RAW_KEY_AGREEMENT             = 0x33,
+    VAL_CRYPTO_KEY_DERIVATION_INPUT_BYTES    = 0x34,
+    VAL_CRYPTO_KEY_DERIVATION_INPUT_KEY      = 0x35,
+    VAL_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT  = 0x36,
+    VAL_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES   = 0x37,
+    VAL_CRYPTO_KEY_DERIVATION_OUTPUT_KEY     = 0x38,
+    VAL_CRYPTO_KEY_DERIVATION_SET_CAPACITY   = 0x39,
+    VAL_CRYPTO_KEY_DERIVATION_GET_CAPACITY   = 0x3A,
+    VAL_CRYPTO_HASH_CLONE                    = 0x3B,
+    VAL_CRYPTO_MAC_COMPUTE                   = 0x3C,
+    VAL_CRYPTO_MAC_VERIFY                    = 0x3D,
+    VAL_CRYPTO_CIPHER_ENCRYPT                = 0x3F,
+    VAL_CRYPTO_CIPHER_DECRYPT                = 0x40,
+    VAL_CRYPTO_OPEN_KEY                      = 0x41,
+    VAL_CRYPTO_CLOSE_KEY                     = 0x42,
+    VAL_CRYPTO_AEAD_ENCRYPT_SETUP            = 0x43,
+    VAL_CRYPTO_AEAD_DECRYPT_SETUP            = 0x44,
+    VAL_CRYPTO_AEAD_GENERATE_NONCE           = 0x45,
+    VAL_CRYPTO_AEAD_SET_NONCE                = 0x46,
+    VAL_CRYPTO_AEAD_SET_LENGTHS              = 0x47,
+    VAL_CRYPTO_AEAD_UPDATE_AD                = 0x48,
+    VAL_CRYPTO_AEAD_UPDATE                   = 0x49,
+    VAL_CRYPTO_AEAD_FINISH                   = 0x4A,
+    VAL_CRYPTO_AEAD_VERIFY                   = 0x4B,
+    VAL_CRYPTO_AEAD_ABORT                    = 0x4C,
+    VAL_CRYPTO_RESET                         = 0xFD,
+    VAL_CRYPTO_FREE                          = 0xFE,
 };
 
 int32_t val_crypto_function(int type, ...);
diff --git a/api-tests/val/nspe/val_framework.c b/api-tests/val/nspe/val_framework.c
index dad52d6..19f8356 100644
--- a/api-tests/val/nspe/val_framework.c
+++ b/api-tests/val/nspe/val_framework.c
@@ -111,7 +111,8 @@
        return status;
     }
 
-    if (boot.state == BOOT_NOT_EXPECTED || boot.state == BOOT_EXPECTED_REENTER_TEST)
+    if (boot.state == BOOT_NOT_EXPECTED || boot.state == BOOT_EXPECTED_REENTER_TEST
+        || boot.state == BOOT_EXPECTED_CONT_TEST_EXEC)
     {
         while (tests_list[i] != NULL)
         {
@@ -127,10 +128,13 @@
                 continue;
             }
 
-            status = val_set_boot_flag(BOOT_NOT_EXPECTED);
-            if (VAL_ERROR(status))
+            if (boot.state != BOOT_EXPECTED_CONT_TEST_EXEC)
             {
-                return status;
+                status = val_set_boot_flag(BOOT_NOT_EXPECTED);
+                if (VAL_ERROR(status))
+                {
+                    return status;
+                }
             }
 
             if (i == 1)
@@ -556,7 +560,8 @@
                                     BOOT_EXPECTED_NS,
                                     BOOT_EXPECTED_S,
                                     BOOT_EXPECTED_BUT_FAILED,
-                                    BOOT_EXPECTED_REENTER_TEST
+                                    BOOT_EXPECTED_REENTER_TEST,
+                                    BOOT_EXPECTED_CONT_TEST_EXEC
                                     };
 
     status = val_get_boot_flag(&boot.state);