Merge pull request #309 from andvib/fix-i065-i066

ff: Fix server test function names
diff --git a/api-specs/crypto/v1.0.1/doc/IHI0086-PSA_Cryptography_API-1.0.1.pdf b/api-specs/crypto/v1.0.1/doc/IHI0086-PSA_Cryptography_API-1.0.1.pdf
new file mode 100644
index 0000000..8c657a7
--- /dev/null
+++ b/api-specs/crypto/v1.0.1/doc/IHI0086-PSA_Cryptography_API-1.0.1.pdf
Binary files differ
diff --git a/api-tests/dev_apis/README.md b/api-tests/dev_apis/README.md
index 24a5820..30d7b3d 100644
--- a/api-tests/dev_apis/README.md
+++ b/api-tests/dev_apis/README.md
@@ -14,12 +14,12 @@
 For more information on the architecture test suite framework and methodology to run the tests, refer to the [Validation Methodology](../docs/Arm_PSA_APIs_Arch_Test_Validation_Methodology.pdf) document.
 
 ## This release
- - Code Quality : REL v1.3
+ - Code Quality : REL v1.4
  - This release contains following PSA Functional APIs tests: <br />
 
 | Test Category            | Specification Version                |
 |--------------------------|--------------------------------------|
-| Crypto                   | [PSA Crypto API 1.0.0](../../api-specs/crypto/v1.0.0/doc/)     |
+| Crypto                   | [PSA Crypto API 1.0.1](../../api-specs/crypto/v1.0.1/doc/)     |
 | Storage (PS and ITS)     | [PSA Storage API 1.0.0](../../api-specs/storage/v1.0/doc/) |
 | Attestation              | [PSA Attestation API 1.0.2](../../api-specs/attestation/v1.0.2/doc/)  |
 
@@ -30,6 +30,7 @@
 
 | Release version | Release tag  | PSA Crypto API | PSA Storage API | PSA Attestation API |
 |-----------------|---------------|----------------|-----------------|---------------------|
+| REL v1.4 | [v22.01_API1.4_ADAC_BETA](https://github.com/ARM-software/psa-arch-tests/tree/v22.01_API1.4_ADAC_BETA/api-tests/dev_apis) | 1.0.1  | 1.0.0 | 1.0.2 |
 | REL v1.3 | [v21.10_API1.3_ADAC_ALPHA-1](https://github.com/ARM-software/psa-arch-tests/tree/v21.10_API1.3_ADAC_ALPHA-1/api-tests/dev_apis) | 1.0.0  | 1.0.0 | 1.0.2 |
 | REL v1.2 | [v21.07_API1.2_ADAC_ALPHA](https://github.com/ARM-software/psa-arch-tests/tree/v21.07_API1.2_ADAC_ALPHA/api-tests/dev_apis) | 1.0.0  | 1.0.0 | 1.0.2 |
 | REL v1.1 | [v20.11_API1.1](https://github.com/ARM-software/psa-arch-tests/tree/v20.11_API1.1/api-tests/dev_apis) | 1.0-Beta3  | 1.0.0 | 1.0.0 |
@@ -131,4 +132,4 @@
 
 --------------
 
-*Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/dev_apis/crypto/suite.cmake b/api-tests/dev_apis/crypto/suite.cmake
index 48e59ba..7ae598b 100644
--- a/api-tests/dev_apis/crypto/suite.cmake
+++ b/api-tests/dev_apis/crypto/suite.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -33,7 +33,9 @@
 
 add_definitions(${CC_OPTIONS})
 add_definitions(${AS_OPTIONS})
-add_definitions(-DMISSING_CRYPTO_1_0=0)
+
+set(MISSING_CRYPTO_1_0 0 CACHE INTERNAL "Disable calls to crypto functions missing from Mbed TLS 2.x")
+add_definitions(-DMISSING_CRYPTO_1_0=${MISSING_CRYPTO_1_0})
 
 # append common crypto file to list of source collected
 list(APPEND SUITE_CC_SOURCE ${PSA_SUITE_DIR}/common/test_crypto_common.c)
diff --git a/api-tests/dev_apis/crypto/test_c016/test_data.h b/api-tests/dev_apis/crypto/test_c016/test_data.h
index e6c24e0..b4044f9 100644
--- a/api-tests/dev_apis/crypto/test_c016/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c016/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -150,7 +150,7 @@
     .expected_range  = {1, BITS_TO_BYTES(MIN(PSA_EXPORT_KEY_OUTPUT_SIZE(\
 	                    PSA_KEY_TYPE_RSA_PUBLIC_KEY, 2048), \
                         PSA_EXPORT_PUBLIC_KEY_MAX_SIZE))},
-    .expected_status = PSA_ERROR_NOT_SUPPORTED
+    .expected_status = PSA_ERROR_INVALID_ARGUMENT
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/test_c024/test_c024.c b/api-tests/dev_apis/crypto/test_c024/test_c024.c
index 853027b..10630d6 100644
--- a/api-tests/dev_apis/crypto/test_c024/test_c024.c
+++ b/api-tests/dev_apis/crypto/test_c024/test_c024.c
@@ -79,7 +79,10 @@
                                       check1[i].ciphertext,
                                       check1[i].ciphertext_size,
                                       &get_ciphertext_length);
-        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
+        TEST_ASSERT_DUAL(status,
+                         check1[i].expected_status[0],
+                         check1[i].expected_status[1],
+                         TEST_CHECKPOINT_NUM(4));
 
         if (check1[i].expected_status != PSA_SUCCESS)
         {
diff --git a/api-tests/dev_apis/crypto/test_c024/test_data.h b/api-tests/dev_apis/crypto/test_c024/test_data.h
index a1a65b7..e5ab557 100644
--- a/api-tests/dev_apis/crypto/test_c024/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c024/test_data.h
@@ -34,7 +34,7 @@
     const uint8_t          *expected_ciphertext;
     size_t                  ciphertext_size;
     size_t                  expected_ciphertext_length;
-    psa_status_t            expected_status;
+    psa_status_t            expected_status[2];
 } test_data;
 
 static const test_data check1[] = {
@@ -57,7 +57,7 @@
     .expected_ciphertext        = aead_ciphertext_1,
     .ciphertext_size            = BUFFER_SIZE,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_1,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -77,7 +77,7 @@
     .expected_ciphertext        = aead_ciphertext_2,
     .ciphertext_size            = BUFFER_SIZE,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_2,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -97,7 +97,7 @@
     .expected_ciphertext        = aead_ciphertext_3,
     .ciphertext_size            = BUFFER_SIZE,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_3,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -117,7 +117,7 @@
     .expected_ciphertext        = aead_ciphertext_4,
     .ciphertext_size            = BUFFER_SIZE,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_4,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -137,7 +137,7 @@
     .expected_ciphertext        = aead_ciphertext_5,
     .ciphertext_size            = BUFFER_SIZE,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_5,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
@@ -161,7 +161,7 @@
     .expected_ciphertext        = aead_ciphertext_6,
     .ciphertext_size            = BUFFER_SIZE,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_6,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
@@ -185,7 +185,7 @@
     .expected_ciphertext        = NULL,
     .ciphertext_size            = 0,
     .expected_ciphertext_length = 0,
-    .expected_status            = PSA_ERROR_NOT_SUPPORTED
+    .expected_status            = {PSA_ERROR_NOT_SUPPORTED, PSA_ERROR_INVALID_ARGUMENT}
 },
 
 {
@@ -205,7 +205,7 @@
     .expected_ciphertext        = NULL,
     .ciphertext_size            = 0,
     .expected_ciphertext_length = 0,
-    .expected_status            = PSA_ERROR_NOT_PERMITTED
+    .expected_status            = {PSA_ERROR_NOT_PERMITTED, PSA_ERROR_NOT_PERMITTED}
 },
 
 {
@@ -225,7 +225,7 @@
     .expected_ciphertext        = aead_ciphertext_2,
     .ciphertext_size            = AEAD_CIPHERTEXT_LEN_2-1,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_2,
-    .expected_status            = PSA_ERROR_BUFFER_TOO_SMALL
+    .expected_status            = {PSA_ERROR_BUFFER_TOO_SMALL, PSA_ERROR_BUFFER_TOO_SMALL}
 },
 
 {
@@ -245,7 +245,7 @@
     .expected_ciphertext        = aead_ciphertext_2,
     .ciphertext_size            = BUFFER_SIZE,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_2,
-    .expected_status            = PSA_ERROR_INVALID_ARGUMENT
+    .expected_status            = {PSA_ERROR_INVALID_ARGUMENT, PSA_ERROR_INVALID_ARGUMENT}
 },
 
 {
@@ -265,7 +265,7 @@
     .expected_ciphertext        = aead_ciphertext_2,
     .ciphertext_size            = BUFFER_SIZE,
     .expected_ciphertext_length = AEAD_CIPHERTEXT_LEN_2,
-    .expected_status            = PSA_ERROR_INVALID_ARGUMENT
+    .expected_status            = {PSA_ERROR_INVALID_ARGUMENT, PSA_ERROR_INVALID_ARGUMENT}
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/test_c025/test_c025.c b/api-tests/dev_apis/crypto/test_c025/test_c025.c
index bcca35a..b90303d 100644
--- a/api-tests/dev_apis/crypto/test_c025/test_c025.c
+++ b/api-tests/dev_apis/crypto/test_c025/test_c025.c
@@ -70,7 +70,10 @@
                                       check1[i].ciphertext, check1[i].ciphertext_length,
                                       check1[i].plaintext, check1[i].plaintext_size,
                                       &expected_plaintext_length);
-        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
+        TEST_ASSERT_DUAL(status,
+                         check1[i].expected_status[0],
+                         check1[i].expected_status[1],
+                         TEST_CHECKPOINT_NUM(4));
 
         if (check1[i].expected_status != PSA_SUCCESS)
         {
diff --git a/api-tests/dev_apis/crypto/test_c025/test_data.h b/api-tests/dev_apis/crypto/test_c025/test_data.h
index 4b82019..8da895c 100644
--- a/api-tests/dev_apis/crypto/test_c025/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c025/test_data.h
@@ -34,7 +34,7 @@
     const uint8_t          *expected_plaintext;
     size_t                  plaintext_size;
     size_t                  expected_plaintext_length;
-    psa_status_t            expected_status;
+    psa_status_t            expected_status[2];
 } test_data;
 
 static const test_data check1[] = {
@@ -57,7 +57,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 23,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -77,7 +77,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -97,7 +97,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -117,7 +117,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -137,7 +137,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 0,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
@@ -161,7 +161,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_SUCCESS
+    .expected_status            = {PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
@@ -185,7 +185,7 @@
     .expected_plaintext         = NULL,
     .plaintext_size             = 0,
     .expected_plaintext_length  = 0,
-    .expected_status            = PSA_ERROR_NOT_SUPPORTED
+    .expected_status            = {PSA_ERROR_NOT_SUPPORTED, PSA_ERROR_INVALID_ARGUMENT}
 },
 
 {
@@ -205,7 +205,7 @@
     .expected_plaintext         = NULL,
     .plaintext_size             = 0,
     .expected_plaintext_length  = 0,
-    .expected_status            = PSA_ERROR_NOT_PERMITTED
+    .expected_status            = {PSA_ERROR_NOT_PERMITTED, PSA_ERROR_NOT_PERMITTED}
 },
 
 {
@@ -225,7 +225,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = 23,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_ERROR_BUFFER_TOO_SMALL
+    .expected_status            = {PSA_ERROR_BUFFER_TOO_SMALL, PSA_ERROR_BUFFER_TOO_SMALL}
 },
 
 {
@@ -245,7 +245,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_ERROR_INVALID_ARGUMENT
+    .expected_status            = {PSA_ERROR_INVALID_ARGUMENT, PSA_ERROR_INVALID_ARGUMENT}
 },
 
 {
@@ -265,7 +265,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_ERROR_INVALID_SIGNATURE
+    .expected_status            = {PSA_ERROR_INVALID_SIGNATURE, PSA_ERROR_INVALID_SIGNATURE}
 },
 
 {
@@ -285,7 +285,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_ERROR_INVALID_SIGNATURE
+    .expected_status            = {PSA_ERROR_INVALID_SIGNATURE, PSA_ERROR_INVALID_SIGNATURE}
 },
 
 {
@@ -305,7 +305,7 @@
     .expected_plaintext         = plaintext,
     .plaintext_size             = BUFFER_SIZE,
     .expected_plaintext_length  = 24,
-    .expected_status            = PSA_ERROR_INVALID_ARGUMENT
+    .expected_status            = {PSA_ERROR_INVALID_ARGUMENT, PSA_ERROR_INVALID_ARGUMENT}
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/test_c032/test_data.h b/api-tests/dev_apis/crypto/test_c032/test_data.h
index 449542e..64af1c9 100644
--- a/api-tests/dev_apis/crypto/test_c032/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c032/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -152,10 +152,10 @@
 #endif
 
 #ifdef ARCH_TEST_CIPHER_MODE_CTR
-#ifdef ARCH_TEST_ARC4
+#ifdef ARCH_TEST_DES
 {
     .test_desc       = "Test psa_cipher_encrypt_setup - incompatible key ARC4\n",
-    .type            = PSA_KEY_TYPE_ARC4,
+    .type            = PSA_KEY_TYPE_DES,
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
     .bits            = BYTES_TO_BITS(AES_16B_KEY_SIZE),
diff --git a/api-tests/dev_apis/crypto/test_c033/test_data.h b/api-tests/dev_apis/crypto/test_c033/test_data.h
index 8ab59f0..a5a6c94 100644
--- a/api-tests/dev_apis/crypto/test_c033/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c033/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -142,10 +142,10 @@
 #endif
 
 #ifdef ARCH_TEST_CIPHER_MODE_CTR
-#ifdef ARCH_TEST_ARC4
+#ifdef ARCH_TEST_DES
 {
     .test_desc       = "Test psa_cipher_decrypt_setup - incompatible key ARC4\n",
-    .type            = PSA_KEY_TYPE_ARC4,
+    .type            = PSA_KEY_TYPE_DES,
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
diff --git a/api-tests/dev_apis/crypto/test_c048/test_data.h b/api-tests/dev_apis/crypto/test_c048/test_data.h
index 4eefc20..46c19c4 100644
--- a/api-tests/dev_apis/crypto/test_c048/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c048/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -107,7 +107,7 @@
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
 {0xed, 0xa4, 0x01, 0x12, 0x39, 0xbc, 0x3a, 0xc9}, 8,  PSA_CIPHER_ENCRYPT_OUTPUT_MAX_SIZE(8),
-{0x64, 0xf9, 0x17, 0xb0, 0x15, 0x2f, 0x8f, 0x05}, 0, PSA_SUCCESS
+{0x64, 0xf9, 0x17, 0xb0, 0x15, 0x2f, 0x8f, 0x05}, 16, PSA_SUCCESS
 },
 #endif
 
@@ -117,7 +117,7 @@
  0xcb, 0xcd, 0xce}, DES3_2B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
 {0xed, 0xa4, 0x01, 0x12, 0x39, 0xbc, 0x3a, 0xc9}, 8,  PSA_CIPHER_ENCRYPT_OUTPUT_MAX_SIZE(8),
-{0x5d, 0x06, 0x52, 0x42, 0x9c, 0x5b, 0x0a, 0xc7}, 0, PSA_SUCCESS
+{0x5d, 0x06, 0x52, 0x42, 0x9c, 0x5b, 0x0a, 0xc7}, 16, PSA_SUCCESS
 },
 #endif
 
@@ -127,7 +127,7 @@
  0xcb, 0xcd, 0xce, 0x31, 0x32, 0x34, 0x37, 0x38, 0x3b, 0x3d, 0x3e}, DES3_3B_KEY_SIZE,
  PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CBC_NO_PADDING,
 {0xed, 0xa4, 0x01, 0x12, 0x39, 0xbc, 0x3a, 0xc9}, 8,  PSA_CIPHER_ENCRYPT_OUTPUT_MAX_SIZE(16),
-{0x81, 0x7c, 0xa7, 0xd6, 0x9b, 0x80, 0xd8, 0x6a}, 0, PSA_SUCCESS
+{0x81, 0x7c, 0xa7, 0xd6, 0x9b, 0x80, 0xd8, 0x6a}, 16, PSA_SUCCESS
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/test_c049/test_data.h b/api-tests/dev_apis/crypto/test_c049/test_data.h
index 46b5c75..814654b 100644
--- a/api-tests/dev_apis/crypto/test_c049/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c049/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -122,9 +122,8 @@
 {"Test psa_cipher_decrypt - Decrypt - DES CBC (nopad)\n", PSA_KEY_TYPE_DES,
 {0x01, 0x02, 0x04, 0x07, 0x08, 0x0b, 0x0d, 0x0e}, DES_8B_KEY_SIZE,
  PSA_KEY_USAGE_DECRYPT, PSA_ALG_CBC_NO_PADDING,
-{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
-0x64, 0xf9, 0x17, 0xb0, 0x15, 0x2f, 0x8f, 0x05}, 24, SIZE_32B, {0xed, 0xa4, 0x01, 0x12, 0x39, 0xbc,
-0x3a, 0xc9}, 8, PSA_SUCCESS
+{0x64, 0xf9, 0x17, 0xb0, 0x15, 0x2f, 0x8f, 0x05}, 8, SIZE_32B,
+{0xed, 0xa4, 0x01, 0x12, 0x39, 0xbc, 0x3a, 0xc9}, 0, PSA_SUCCESS
 },
 #endif
 
diff --git a/api-tests/dev_apis/crypto/test_c052/test_c052.c b/api-tests/dev_apis/crypto/test_c052/test_c052.c
index 4ba3fa6..ab30ae6 100644
--- a/api-tests/dev_apis/crypto/test_c052/test_c052.c
+++ b/api-tests/dev_apis/crypto/test_c052/test_c052.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -82,19 +82,27 @@
                                       &operation,
                                       key,
                                       check1[i].setup_alg);
-        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
+        TEST_ASSERT_DUAL(status,
+                         check1[i].expected_status[0],
+                         check1[i].expected_status[1],
+                         TEST_CHECKPOINT_NUM(4));
+
+        /* Abort the AEAD operation */
+        status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
+                                      &operation);
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         /* Destroy the key */
         status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
                                       key);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
         /* Setting up aead on destroyed key handle should return an error */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ENCRYPT_SETUP,
                                       &operation,
                                       key,
                                       check1[i].setup_alg);
-        TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(6));
+        TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(7));
 
         /* Reset the key attributes */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
@@ -103,7 +111,7 @@
         /* Abort the AEAD operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
                                       &operation);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
     }
 
     return VAL_STATUS_SUCCESS;
diff --git a/api-tests/dev_apis/crypto/test_c052/test_data.h b/api-tests/dev_apis/crypto/test_c052/test_data.h
index e3b3aa4..4168615 100644
--- a/api-tests/dev_apis/crypto/test_c052/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c052/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
     psa_key_usage_t         usage_flags;
     psa_algorithm_t         alg;
     psa_algorithm_t         setup_alg;
-    psa_status_t            expected_status;
+    psa_status_t            expected_status[2];
 } test_data;
 
 static const test_data check1[] = {
@@ -39,7 +39,7 @@
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_CCM,
-    .expected_status = PSA_SUCCESS
+    .expected_status = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -48,9 +48,20 @@
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
+    .alg             = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
+    .setup_alg       = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
+    .expected_status = {PSA_SUCCESS, PSA_SUCCESS}
+},
+
+{
+    .test_desc       = "Test psa_aead_encrypt_setup - CCM - AES - Mismatched tag length\n",
+    .type            = PSA_KEY_TYPE_AES,
+    .data            = key_data,
+    .data_length     = AES_16B_KEY_SIZE,
+    .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
-    .expected_status = PSA_SUCCESS
+    .expected_status = {PSA_ERROR_NOT_PERMITTED, PSA_ERROR_NOT_PERMITTED}
 },
 
 {
@@ -61,7 +72,7 @@
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .expected_status = PSA_SUCCESS
+    .expected_status = {PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
@@ -76,7 +87,7 @@
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
     .alg             = PSA_ALG_GCM,
     .setup_alg       = PSA_ALG_GCM,
-    .expected_status = PSA_SUCCESS
+    .expected_status = {PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
@@ -91,7 +102,7 @@
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_CCM,
-    .expected_status = PSA_ERROR_INVALID_ARGUMENT
+    .expected_status = {PSA_ERROR_INVALID_ARGUMENT, PSA_ERROR_NOT_SUPPORTED}
 },
 #endif
 #endif
@@ -106,7 +117,7 @@
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
     .alg             = PSA_ALG_CFB,
     .setup_alg       = PSA_ALG_CFB,
-    .expected_status = PSA_ERROR_NOT_SUPPORTED
+    .expected_status = {PSA_ERROR_NOT_SUPPORTED, PSA_ERROR_NOT_SUPPORTED}
 },
 #endif
 
@@ -119,7 +130,7 @@
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
     .alg             = PSA_ALG_GCM,
     .setup_alg       = PSA_ALG_GCM,
-    .expected_status = PSA_ERROR_NOT_PERMITTED
+    .expected_status = {PSA_ERROR_NOT_PERMITTED, PSA_ERROR_NOT_PERMITTED}
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/test_c053/test_c053.c b/api-tests/dev_apis/crypto/test_c053/test_c053.c
index ca546f0..8de8d24 100644
--- a/api-tests/dev_apis/crypto/test_c053/test_c053.c
+++ b/api-tests/dev_apis/crypto/test_c053/test_c053.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -82,19 +82,27 @@
                                       &operation,
                                       key,
                                       check1[i].setup_alg);
-        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(4));
+        TEST_ASSERT_DUAL(status,
+                         check1[i].expected_status[0],
+                         check1[i].expected_status[1],
+                         TEST_CHECKPOINT_NUM(4));
+
+        /* Abort the AEAD operation */
+        status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
+                                      &operation);
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
 
         /* Destroy the key */
         status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
                                       key);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
         /* Setting up aead on destroyed key handle should return an error */
         status = val->crypto_function(VAL_CRYPTO_AEAD_DECRYPT_SETUP,
                                       &operation,
                                       key,
                                       check1[i].setup_alg);
-        TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(6));
+        TEST_ASSERT_EQUAL(status, PSA_ERROR_INVALID_HANDLE, TEST_CHECKPOINT_NUM(7));
 
         /* Reset the key attributes */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
@@ -103,7 +111,7 @@
         /* Abort the AEAD operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
                                       &operation);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
     }
 
     return VAL_STATUS_SUCCESS;
diff --git a/api-tests/dev_apis/crypto/test_c053/test_data.h b/api-tests/dev_apis/crypto/test_c053/test_data.h
index 5df5443..dc7e71d 100644
--- a/api-tests/dev_apis/crypto/test_c053/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c053/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
     psa_key_usage_t         usage_flags;
     psa_algorithm_t         alg;
     psa_algorithm_t         setup_alg;
-    psa_status_t            expected_status;
+    psa_status_t            expected_status[2];
 } test_data;
 
 static const test_data check1[] = {
@@ -39,7 +39,7 @@
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_CCM,
-    .expected_status = PSA_SUCCESS
+    .expected_status = {PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {
@@ -48,9 +48,20 @@
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
+    .alg             = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
+    .setup_alg       = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
+    .expected_status = {PSA_SUCCESS, PSA_SUCCESS}
+},
+
+{
+    .test_desc       = "Test psa_aead_decrypt_setup - CCM - AES - Mismatched tag length\n",
+    .type            = PSA_KEY_TYPE_AES,
+    .data            = key_data,
+    .data_length     = AES_16B_KEY_SIZE,
+    .usage_flags     = PSA_KEY_USAGE_DECRYPT,
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
-    .expected_status = PSA_SUCCESS
+    .expected_status = {PSA_ERROR_NOT_PERMITTED, PSA_ERROR_NOT_PERMITTED}
 },
 
 {
@@ -61,7 +72,7 @@
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .expected_status = PSA_SUCCESS
+    .expected_status = {PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
@@ -76,7 +87,7 @@
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
     .alg             = PSA_ALG_GCM,
     .setup_alg       = PSA_ALG_GCM,
-    .expected_status = PSA_SUCCESS
+    .expected_status = {PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
@@ -91,7 +102,7 @@
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_CCM,
-    .expected_status = PSA_ERROR_INVALID_ARGUMENT
+    .expected_status = {PSA_ERROR_INVALID_ARGUMENT, PSA_ERROR_NOT_SUPPORTED}
 },
 #endif
 #endif
@@ -106,7 +117,7 @@
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
     .alg             = PSA_ALG_CFB,
     .setup_alg       = PSA_ALG_CFB,
-    .expected_status = PSA_ERROR_NOT_SUPPORTED
+    .expected_status = {PSA_ERROR_NOT_SUPPORTED, PSA_ERROR_NOT_SUPPORTED}
 },
 #endif
 
@@ -119,7 +130,7 @@
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
     .alg             = PSA_ALG_GCM,
     .setup_alg       = PSA_ALG_GCM,
-    .expected_status = PSA_ERROR_NOT_PERMITTED
+    .expected_status = {PSA_ERROR_NOT_PERMITTED, PSA_ERROR_NOT_PERMITTED}
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/test_c054/test_c054.c b/api-tests/dev_apis/crypto/test_c054/test_c054.c
index 644fe4c..21d5a33 100644
--- a/api-tests/dev_apis/crypto/test_c054/test_c054.c
+++ b/api-tests/dev_apis/crypto/test_c054/test_c054.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -96,27 +96,36 @@
                                               check1[i].setup_alg);
             }
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
+
+            /* Declare the lengths of the message and additional data for AEAD */
+            status = val->crypto_function(VAL_CRYPTO_AEAD_SET_LENGTHS,
+                                          &operation,
+                                          0,
+                                          0);
+
+            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
         }
 
+
         /* Generate a random nonce for an authenticated encryption operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_GENERATE_NONCE,
                                       &operation,
                                       check1[i].nonce,
                                       check1[i].nonce_size,
                                       &nonce_length);
-        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(5));
+        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(6));
 
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Abort the AEAD operation */
             status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
                                           &operation);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
+            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
             /* Destroy the key */
             status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
                                           key);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
+            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
             /* Reset the key attributes */
             val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
@@ -129,7 +138,7 @@
         for (j = 0; j < (int32_t)nonce_length; j++)
             nonce_sum += check1[i].nonce[j];
 
-        TEST_ASSERT_NOT_EQUAL(nonce_sum, 0, TEST_CHECKPOINT_NUM(8));
+        TEST_ASSERT_NOT_EQUAL(nonce_sum, 0, TEST_CHECKPOINT_NUM(9));
 
         /* Generate a random nonce on an ongoing operation should be an error */
         status = val->crypto_function(VAL_CRYPTO_AEAD_GENERATE_NONCE,
@@ -137,17 +146,17 @@
                                       check1[i].nonce,
                                       check1[i].nonce_size,
                                       &nonce_length);
-        TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE,  TEST_CHECKPOINT_NUM(9));
+        TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE,  TEST_CHECKPOINT_NUM(10));
 
         /* Abort the AEAD operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
                                       &operation);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
         /* Destroy the key */
         status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
                                       key);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
         /* Reset the key attributes */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
diff --git a/api-tests/dev_apis/crypto/test_c054/test_data.h b/api-tests/dev_apis/crypto/test_c054/test_data.h
index 1ffdda3..58876f5 100644
--- a/api-tests/dev_apis/crypto/test_c054/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c054/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,7 +35,7 @@
 #ifdef ARCH_TEST_AES_128
 #ifdef ARCH_TEST_CCM
 {
-    .test_desc       = "Test psa_aead_generate_nonce - Encrypt - CCM\n",
+    .test_desc       = "Test psa_aead_generate_nonce - CCM\n",
     .type            = PSA_KEY_TYPE_AES,
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
@@ -49,12 +49,12 @@
 },
 
 {
-    .test_desc       = "Test psa_aead_generate_nonce - Encrypt - CCM - Tag length = 4\n",
+    .test_desc       = "Test psa_aead_generate_nonce - CCM - Tag length = 4\n",
     .type            = PSA_KEY_TYPE_AES,
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
-    .alg             = PSA_ALG_CCM,
+    .alg             = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg       = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce           = expected_output,
     .nonce_size      = BUFFER_SIZE,
@@ -63,21 +63,7 @@
 },
 
 {
-    .test_desc       = "Test psa_aead_generate_nonce - Encrypt - CCM - Default Tag length\n",
-    .type            = PSA_KEY_TYPE_AES,
-    .data            = key_data,
-    .data_length     = AES_16B_KEY_SIZE,
-    .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
-    .alg             = PSA_ALG_CCM,
-    .setup_alg       = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce           = expected_output,
-    .nonce_size      = BUFFER_SIZE,
-    .operation_state = 1,
-    .expected_status = PSA_SUCCESS
-},
-
-{
-    .test_desc       = "Test psa_aead_generate_nonce - Encrypt - CCM - Small buffer size\n",
+    .test_desc       = "Test psa_aead_generate_nonce - CCM - Small buffer size\n",
     .type            = PSA_KEY_TYPE_AES,
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
@@ -91,7 +77,7 @@
 },
 
 {
-    .test_desc       = "Test psa_aead_generate_nonce - Encrypt - CCM - Invalid operation state\n",
+    .test_desc       = "Test psa_aead_generate_nonce - CCM - Uninitialized operation\n",
     .type            = PSA_KEY_TYPE_AES,
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
@@ -103,11 +89,25 @@
     .operation_state = 0,
     .expected_status = PSA_ERROR_BAD_STATE
 },
+
+{
+    .test_desc       = "Test psa_aead_generate_nonce - CCM - Decrypt operation\n",
+    .type            = PSA_KEY_TYPE_AES,
+    .data            = key_data,
+    .data_length     = AES_16B_KEY_SIZE,
+    .usage_flags     = PSA_KEY_USAGE_DECRYPT,
+    .alg             = PSA_ALG_CCM,
+    .setup_alg       = PSA_ALG_CCM,
+    .nonce           = expected_output,
+    .nonce_size      = BUFFER_SIZE,
+    .operation_state = 1,
+    .expected_status = PSA_ERROR_BAD_STATE
+},
 #endif
 
 #ifdef ARCH_TEST_GCM
 {
-    .test_desc       = "Test psa_aead_generate_nonce - Encrypt - GCM\n",
+    .test_desc       = "Test psa_aead_generate_nonce - GCM\n",
     .type            = PSA_KEY_TYPE_AES,
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
@@ -119,83 +119,9 @@
     .operation_state = 1,
     .expected_status = PSA_SUCCESS
 },
-#endif
-
-#ifdef ARCH_TEST_CCM
-{
-    .test_desc       = "Test psa_aead_generate_nonce - Decrypt - CCM\n",
-    .type            = PSA_KEY_TYPE_AES,
-    .data            = key_data,
-    .data_length     = AES_16B_KEY_SIZE,
-    .usage_flags     = PSA_KEY_USAGE_DECRYPT,
-    .alg             = PSA_ALG_CCM,
-    .setup_alg       = PSA_ALG_CCM,
-    .nonce           = expected_output,
-    .nonce_size      = BUFFER_SIZE,
-    .operation_state = 1,
-    .expected_status = PSA_SUCCESS
-},
 
 {
-    .test_desc       = "Test psa_aead_generate_nonce - Decrypt - CCM - Tag length = 4\n",
-    .type            = PSA_KEY_TYPE_AES,
-    .data            = key_data,
-    .data_length     = AES_16B_KEY_SIZE,
-    .usage_flags     = PSA_KEY_USAGE_DECRYPT,
-    .alg             = PSA_ALG_CCM,
-    .setup_alg       = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
-    .nonce           = expected_output,
-    .nonce_size      = BUFFER_SIZE,
-    .operation_state = 1,
-    .expected_status = PSA_SUCCESS
-},
-
-{
-    .test_desc       = "Test psa_aead_generate_nonce - Decrypt - CCM - Default Tag length\n",
-    .type            = PSA_KEY_TYPE_AES,
-    .data            = key_data,
-    .data_length     = AES_16B_KEY_SIZE,
-    .usage_flags     = PSA_KEY_USAGE_DECRYPT,
-    .alg             = PSA_ALG_CCM,
-    .setup_alg       = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce           = expected_output,
-    .nonce_size      = BUFFER_SIZE,
-    .operation_state = 1,
-    .expected_status = PSA_SUCCESS
-},
-
-{
-    .test_desc       = "Test psa_aead_generate_nonce - Decrypt - CCM - Small buffer size\n",
-    .type            = PSA_KEY_TYPE_AES,
-    .data            = key_data,
-    .data_length     = AES_16B_KEY_SIZE,
-    .usage_flags     = PSA_KEY_USAGE_DECRYPT,
-    .alg             = PSA_ALG_CCM,
-    .setup_alg       = PSA_ALG_CCM,
-    .nonce           = expected_output,
-    .nonce_size      = PSA_AEAD_NONCE_LENGTH(PSA_KEY_TYPE_AES, PSA_ALG_CCM) - 1,
-    .operation_state = 1,
-    .expected_status = PSA_ERROR_BUFFER_TOO_SMALL
-},
-
-{
-    .test_desc       = "Test psa_aead_generate_nonce - Decrypt - CCM - Invalid operation state\n",
-    .type            = PSA_KEY_TYPE_AES,
-    .data            = key_data,
-    .data_length     = AES_16B_KEY_SIZE,
-    .usage_flags     = PSA_KEY_USAGE_DECRYPT,
-    .alg             = PSA_ALG_CCM,
-    .setup_alg       = PSA_ALG_CCM,
-    .nonce           = expected_output,
-    .nonce_size      = BUFFER_SIZE,
-    .operation_state = 0,
-    .expected_status = PSA_ERROR_BAD_STATE
-},
-#endif
-
-#ifdef ARCH_TEST_GCM
-{
-    .test_desc       = "Test psa_aead_generate_nonce - Decrypt - GCM\n",
+    .test_desc       = "Test psa_aead_generate_nonce - GCM - Decrypt operation\n",
     .type            = PSA_KEY_TYPE_AES,
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
@@ -205,7 +131,7 @@
     .nonce           = expected_output,
     .nonce_size      = BUFFER_SIZE,
     .operation_state = 1,
-    .expected_status = PSA_SUCCESS
+    .expected_status = PSA_ERROR_BAD_STATE
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/test_c055/test_c055.c b/api-tests/dev_apis/crypto/test_c055/test_c055.c
index a0d0229..9a93b09 100644
--- a/api-tests/dev_apis/crypto/test_c055/test_c055.c
+++ b/api-tests/dev_apis/crypto/test_c055/test_c055.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -92,6 +92,15 @@
                                               check1[i].setup_alg);
             }
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
+
+            /* Declare the lengths of the message and additional data for AEAD */
+            status = val->crypto_function(VAL_CRYPTO_AEAD_SET_LENGTHS,
+                                          &operation,
+                                          0,
+                                          0);
+
+            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
+
         }
 
         /* Set the nonce for an authenticated encryption operation */
@@ -99,19 +108,19 @@
                                       &operation,
                                       check1[i].nonce,
                                       check1[i].nonce_length);
-        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(5));
+        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(6));
 
         if (check1[i].expected_status != PSA_SUCCESS)
         {
             /* Abort the AEAD operation */
             status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
                                           &operation);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
+            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
             /* Destroy the key */
             status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
                                           key);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
+            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
             /* Reset the key attributes */
             val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
@@ -124,17 +133,17 @@
                                       &operation,
                                       check1[i].nonce,
                                       check1[i].nonce_length);
-        TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE,  TEST_CHECKPOINT_NUM(8));
+        TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE,  TEST_CHECKPOINT_NUM(9));
 
         /* Abort the AEAD operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
                                       &operation);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
 
         /* Destroy the key */
         status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
                                       key);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
 
         /* Reset the key attributes */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
diff --git a/api-tests/dev_apis/crypto/test_c055/test_data.h b/api-tests/dev_apis/crypto/test_c055/test_data.h
index 39535ff..558c11e 100644
--- a/api-tests/dev_apis/crypto/test_c055/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c055/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -54,7 +54,7 @@
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
     .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
-    .alg             = PSA_ALG_CCM,
+    .alg             = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg       = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce           = nonce,
     .nonce_length    = 13,
@@ -63,20 +63,6 @@
 },
 
 {
-    .test_desc       = "Test psa_aead_set_nonce - Encrypt - CCM - Default Tag length\n",
-    .type            = PSA_KEY_TYPE_AES,
-    .data            = key_data,
-    .data_length     = AES_16B_KEY_SIZE,
-    .usage_flags     = PSA_KEY_USAGE_ENCRYPT,
-    .alg             = PSA_ALG_CCM,
-    .setup_alg       = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce           = nonce,
-    .nonce_length    = 13,
-    .operation_state = 1,
-    .expected_status = PSA_SUCCESS
-},
-
-{
     .test_desc       = "Test psa_aead_set_nonce - Encrypt - CCM - Small nonce size\n",
     .type            = PSA_KEY_TYPE_AES,
     .data            = key_data,
@@ -85,7 +71,7 @@
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_CCM,
     .nonce           = nonce,
-    .nonce_length    = PSA_AEAD_NONCE_LENGTH(PSA_KEY_TYPE_AES, PSA_ALG_CCM) - 1,
+    .nonce_length    = 6,
     .operation_state = 1,
     .expected_status = PSA_ERROR_INVALID_ARGUMENT
 },
@@ -99,7 +85,7 @@
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_CCM,
     .nonce           = nonce,
-    .nonce_length    = (PSA_AEAD_NONCE_LENGTH(PSA_KEY_TYPE_AES, PSA_ALG_CCM))*5,
+    .nonce_length    = 14,
     .operation_state = 1,
     .expected_status = PSA_ERROR_INVALID_ARGUMENT
 },
@@ -156,7 +142,7 @@
     .data            = key_data,
     .data_length     = AES_16B_KEY_SIZE,
     .usage_flags     = PSA_KEY_USAGE_DECRYPT,
-    .alg             = PSA_ALG_CCM,
+    .alg             = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg       = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce           = nonce,
     .nonce_length    = 13,
@@ -165,20 +151,6 @@
 },
 
 {
-    .test_desc       = "Test psa_aead_set_nonce - Decrypt - CCM - Default Tag length\n",
-    .type            = PSA_KEY_TYPE_AES,
-    .data            = key_data,
-    .data_length     = AES_16B_KEY_SIZE,
-    .usage_flags     = PSA_KEY_USAGE_DECRYPT,
-    .alg             = PSA_ALG_CCM,
-    .setup_alg       = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce           = nonce,
-    .nonce_length    = 13,
-    .operation_state = 1,
-    .expected_status = PSA_SUCCESS
-},
-
-{
     .test_desc       = "Test psa_aead_set_nonce - Decrypt - CCM - Small nonce size\n",
     .type            = PSA_KEY_TYPE_AES,
     .data            = key_data,
@@ -187,7 +159,7 @@
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_CCM,
     .nonce           = nonce,
-    .nonce_length    = PSA_AEAD_NONCE_LENGTH(PSA_KEY_TYPE_AES, PSA_ALG_CCM) - 1,
+    .nonce_length    = 6,
     .operation_state = 1,
     .expected_status = PSA_ERROR_INVALID_ARGUMENT
 },
@@ -201,7 +173,7 @@
     .alg             = PSA_ALG_CCM,
     .setup_alg       = PSA_ALG_CCM,
     .nonce           = nonce,
-    .nonce_length    = (PSA_AEAD_NONCE_LENGTH(PSA_KEY_TYPE_AES, PSA_ALG_CCM))*5,
+    .nonce_length    = 14,
     .operation_state = 1,
     .expected_status = PSA_ERROR_INVALID_ARGUMENT
 },
diff --git a/api-tests/dev_apis/crypto/test_c056/test_c056.c b/api-tests/dev_apis/crypto/test_c056/test_c056.c
index 46a2094..48956fa 100644
--- a/api-tests/dev_apis/crypto/test_c056/test_c056.c
+++ b/api-tests/dev_apis/crypto/test_c056/test_c056.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -92,13 +92,6 @@
                                               check1[i].setup_alg);
             }
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
-
-            /* Set the nonce for an authenticated encryption operation */
-            status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE,
-                                          &operation,
-                                          check1[i].nonce,
-                                          check1[i].nonce_length);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
         }
 
         /* Declare the lengths of the message and additional data for AEAD */
@@ -106,7 +99,7 @@
                                       &operation,
                                       check1[i].ad_length,
                                       check1[i].plaintext_length);
-        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(6));
+        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(5));
 
         if (check1[i].expected_status != PSA_SUCCESS)
         {
@@ -115,33 +108,18 @@
                                           &operation,
                                           check1[i].ad_length,
                                           check1[i].plaintext_length);
-            TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE, TEST_CHECKPOINT_NUM(7));
-
-            /* Abort the AEAD operation */
-            status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
-                                          &operation);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
-
-            /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
-                                          key);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(9));
-
-            /* Reset the key attributes */
-            val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
-                                 &attributes);
-            continue;
+            TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE, TEST_CHECKPOINT_NUM(6));
         }
 
         /* Abort the AEAD operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
                                       &operation);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(7));
 
         /* Destroy the key */
         status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
                                       key);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Reset the key attributes */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
diff --git a/api-tests/dev_apis/crypto/test_c056/test_data.h b/api-tests/dev_apis/crypto/test_c056/test_data.h
index e2dc9d0..85e44f3 100644
--- a/api-tests/dev_apis/crypto/test_c056/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c056/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -58,7 +58,7 @@
     .data             = key_data,
     .data_length      = AES_16B_KEY_SIZE,
     .usage_flags      = PSA_KEY_USAGE_ENCRYPT,
-    .alg              = PSA_ALG_CCM,
+    .alg              = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg        = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce            = nonce,
     .nonce_length     = 13,
@@ -69,22 +69,6 @@
 },
 
 {
-    .test_desc        = "Test psa_aead_set_lengths - Encrypt - CCM - Default Tag length\n",
-    .type             = PSA_KEY_TYPE_AES,
-    .data             = key_data,
-    .data_length      = AES_16B_KEY_SIZE,
-    .usage_flags      = PSA_KEY_USAGE_ENCRYPT,
-    .alg              = PSA_ALG_CCM,
-    .setup_alg        = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce            = nonce,
-    .nonce_length     = 13,
-    .ad_length        = 8,
-    .plaintext_length = 32,
-    .operation_state  = 1,
-    .expected_status  = PSA_SUCCESS
-},
-
-{
     .test_desc        = "Test psa_aead_set_lengths - Encrypt - CCM - Zero ad_length\n",
     .type             = PSA_KEY_TYPE_AES,
     .data             = key_data,
@@ -174,7 +158,7 @@
     .data             = key_data,
     .data_length      = AES_16B_KEY_SIZE,
     .usage_flags      = PSA_KEY_USAGE_DECRYPT,
-    .alg              = PSA_ALG_CCM,
+    .alg              = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg        = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce            = nonce,
     .nonce_length     = 13,
@@ -185,22 +169,6 @@
 },
 
 {
-    .test_desc        = "Test psa_aead_set_lengths - Decrypt - CCM - Default Tag length\n",
-    .type             = PSA_KEY_TYPE_AES,
-    .data             = key_data,
-    .data_length      = AES_16B_KEY_SIZE,
-    .usage_flags      = PSA_KEY_USAGE_DECRYPT,
-    .alg              = PSA_ALG_CCM,
-    .setup_alg        = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce            = nonce,
-    .nonce_length     = 13,
-    .ad_length        = 8,
-    .plaintext_length = 32,
-    .operation_state  = 1,
-    .expected_status  = PSA_SUCCESS
-},
-
-{
     .test_desc        = "Test psa_aead_set_lengths - Decrypt - CCM - Zero ad_length\n",
     .type             = PSA_KEY_TYPE_AES,
     .data             = key_data,
diff --git a/api-tests/dev_apis/crypto/test_c057/test_c057.c b/api-tests/dev_apis/crypto/test_c057/test_c057.c
index d89dbba..239c727 100644
--- a/api-tests/dev_apis/crypto/test_c057/test_c057.c
+++ b/api-tests/dev_apis/crypto/test_c057/test_c057.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -93,18 +93,18 @@
             }
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
-            /* Set the nonce for an authenticated encryption operation */
-            status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE,
-                                          &operation,
-                                          check1[i].nonce,
-                                          check1[i].nonce_length);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
-
             /* Declare the lengths of the message and additional data for AEAD */
             status = val->crypto_function(VAL_CRYPTO_AEAD_SET_LENGTHS,
                                           &operation,
                                           check1[i].ad_length,
                                           check1[i].plaintext_length);
+            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
+
+            /* Set the nonce for an authenticated encryption operation */
+            status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE,
+                                          &operation,
+                                          check1[i].nonce,
+                                          check1[i].nonce_length);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
         }
 
diff --git a/api-tests/dev_apis/crypto/test_c057/test_data.h b/api-tests/dev_apis/crypto/test_c057/test_data.h
index 9008c62..aff7728 100644
--- a/api-tests/dev_apis/crypto/test_c057/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c057/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -62,7 +62,7 @@
     .data             = key_data,
     .data_length      = AES_16B_KEY_SIZE,
     .usage_flags      = PSA_KEY_USAGE_ENCRYPT,
-    .alg              = PSA_ALG_CCM,
+    .alg              = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg        = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce            = nonce,
     .nonce_length     = 13,
@@ -75,24 +75,6 @@
 },
 
 {
-    .test_desc        = "Test psa_aead_update_ad - Encrypt - CCM - Default length\n",
-    .type             = PSA_KEY_TYPE_AES,
-    .data             = key_data,
-    .data_length      = AES_16B_KEY_SIZE,
-    .usage_flags      = PSA_KEY_USAGE_ENCRYPT,
-    .alg              = PSA_ALG_CCM,
-    .setup_alg        = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce            = nonce,
-    .nonce_length     = 13,
-    .ad_length        = 8,
-    .plaintext_length = 32,
-    .input            = additional_data,
-    .input_length     = 8,
-    .operation_state  = 1,
-    .expected_status  = PSA_SUCCESS
-},
-
-{
     .test_desc        = "Test psa_aead_update_ad - Encrypt - CCM - Zero ad_length\n",
     .type             = PSA_KEY_TYPE_AES,
     .data             = key_data,
@@ -188,7 +170,7 @@
     .data             = key_data,
     .data_length      = AES_16B_KEY_SIZE,
     .usage_flags      = PSA_KEY_USAGE_DECRYPT,
-    .alg              = PSA_ALG_CCM,
+    .alg              = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg        = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce            = nonce,
     .nonce_length     = 13,
@@ -201,24 +183,6 @@
 },
 
 {
-    .test_desc        = "Test psa_aead_update_ad - Decrypt - CCM - Default length\n",
-    .type             = PSA_KEY_TYPE_AES,
-    .data             = key_data,
-    .data_length      = AES_16B_KEY_SIZE,
-    .usage_flags      = PSA_KEY_USAGE_DECRYPT,
-    .alg              = PSA_ALG_CCM,
-    .setup_alg        = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce            = nonce,
-    .nonce_length     = 13,
-    .ad_length        = 8,
-    .plaintext_length = 32,
-    .input            = additional_data,
-    .input_length     = 8,
-    .operation_state  = 1,
-    .expected_status  = PSA_SUCCESS
-},
-
-{
     .test_desc        = "Test psa_aead_update_ad - Decrypt - CCM - Zero ad_length\n",
     .type             = PSA_KEY_TYPE_AES,
     .data             = key_data,
diff --git a/api-tests/dev_apis/crypto/test_c058/test_c058.c b/api-tests/dev_apis/crypto/test_c058/test_c058.c
index 5a467b9..fa4a920 100644
--- a/api-tests/dev_apis/crypto/test_c058/test_c058.c
+++ b/api-tests/dev_apis/crypto/test_c058/test_c058.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -94,18 +94,18 @@
             }
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
-            /* Set the nonce for an authenticated encryption operation */
-            status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE,
-                                          &operation,
-                                          check1[i].nonce,
-                                          check1[i].nonce_length);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
-
             /* Declare the lengths of the message and additional data for AEAD */
             status = val->crypto_function(VAL_CRYPTO_AEAD_SET_LENGTHS,
                                           &operation,
                                           check1[i].ad_length,
                                           check1[i].plaintext_length);
+            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
+
+            /* Set the nonce for an authenticated encryption operation */
+            status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE,
+                                          &operation,
+                                          check1[i].nonce,
+                                          check1[i].nonce_length);
             TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
             /* Pass additional data to an active AEAD operation */
@@ -137,38 +137,23 @@
                                           check1[i].output_size,
                                           &output_length);
             TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE, TEST_CHECKPOINT_NUM(9));
-
-            /* Abort the AEAD operation */
-            status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
-                                          &operation);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(10));
-
-            /* Destroy the key */
-            status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
-                                          key);
-            TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(11));
-
-            /* Reset the key attributes */
-            val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
-                                 &attributes);
-            continue;
+        } else {
+            /* Compare the output and its length with the expected values */
+            TEST_ASSERT_RANGE(output_length, 0, check1[i].expected_output_length,
+                              TEST_CHECKPOINT_NUM(10));
+            TEST_ASSERT_MEMCMP(check1[i].output, check1[i].expected_output, output_length,
+                               TEST_CHECKPOINT_NUM(11));
         }
 
-        /* Compare the output and its length with the expected values */
-        TEST_ASSERT_EQUAL(output_length, check1[i].expected_output_length,
-                          TEST_CHECKPOINT_NUM(12));
-        TEST_ASSERT_MEMCMP(check1[i].output, check1[i].expected_output, output_length,
-                           TEST_CHECKPOINT_NUM(13));
-
         /* Abort the AEAD operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT,
                                       &operation);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(14));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(12));
 
         /* Destroy the key */
         status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY,
                                       key);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(15));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(13));
 
         /* Reset the key attributes */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES,
diff --git a/api-tests/dev_apis/crypto/test_c058/test_data.h b/api-tests/dev_apis/crypto/test_c058/test_data.h
index 587ea9d..2179490 100644
--- a/api-tests/dev_apis/crypto/test_c058/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c058/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -63,7 +63,7 @@
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
     .expected_output        = aead_ciphertext_2,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_2,
+    .expected_output_length = 24,
     .operation_state        = 1,
     .expected_status        = PSA_SUCCESS
 },
@@ -74,7 +74,7 @@
     .data                   = key_data,
     .data_length            = AES_16B_KEY_SIZE,
     .usage_flags            = PSA_KEY_USAGE_ENCRYPT,
-    .alg                    = PSA_ALG_CCM,
+    .alg                    = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg              = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce                  = nonce,
     .nonce_length           = 13,
@@ -87,31 +87,7 @@
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
     .expected_output        = aead_ciphertext_3,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_3,
-    .operation_state        = 1,
-    .expected_status        = PSA_SUCCESS
-},
-
-{
-    .test_desc              = "Test psa_aead_update - Encrypt - CCM - Default Tag length\n",
-    .type                   = PSA_KEY_TYPE_AES,
-    .data                   = key_data,
-    .data_length            = AES_16B_KEY_SIZE,
-    .usage_flags            = PSA_KEY_USAGE_ENCRYPT,
-    .alg                    = PSA_ALG_CCM,
-    .setup_alg              = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce                  = nonce,
-    .nonce_length           = 13,
-    .ad_length              = 32,
-    .plaintext_length       = 24,
-    .additional_data        = additional_data,
-    .ad_input_length        = 32,
-    .input                  = plaintext,
-    .input_length           = 24,
-    .output                 = expected_output,
-    .output_size            = BUFFER_SIZE,
-    .expected_output        = aead_ciphertext_2,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_2,
+    .expected_output_length = 24,
     .operation_state        = 1,
     .expected_status        = PSA_SUCCESS
 },
@@ -135,7 +111,7 @@
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
     .expected_output        = aead_ciphertext_4,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_4,
+    .expected_output_length = 24,
     .operation_state        = 1,
     .expected_status        = PSA_SUCCESS
 },
@@ -158,8 +134,8 @@
     .input_length           = 0,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
-    .expected_output        = aead_ciphertext_5,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_5,
+    .expected_output        = NULL,
+    .expected_output_length = 0,
     .operation_state        = 1,
     .expected_status        = PSA_SUCCESS
 },
@@ -181,7 +157,7 @@
     .input                  = plaintext,
     .input_length           = 24,
     .output                 = expected_output,
-    .output_size            = AEAD_CIPHERTEXT_LEN_2 - 2,
+    .output_size            = 15,
     .expected_output        = NULL,
     .expected_output_length = 0,
     .operation_state        = 1,
@@ -189,7 +165,7 @@
 },
 
 {
-    .test_desc              = "Test psa_aead_update - Encrypt - Less add data than specified\n",
+    .test_desc              = "Test psa_aead_update - Encrypt - CCM - Less add data than specified\n",
     .type                   = PSA_KEY_TYPE_AES,
     .data                   = key_data,
     .data_length            = AES_16B_KEY_SIZE,
@@ -223,11 +199,11 @@
     .nonce                  = nonce,
     .nonce_length           = 13,
     .ad_length              = 32,
-    .plaintext_length       = 24,
+    .plaintext_length       = 23,
     .additional_data        = additional_data,
     .ad_input_length        = 32,
     .input                  = plaintext,
-    .input_length           = 25,
+    .input_length           = 24,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
     .expected_output        = NULL,
@@ -274,12 +250,12 @@
     .plaintext_length       = 24,
     .additional_data        = additional_data,
     .ad_input_length        = 32,
-    .input                  = plaintext,
+    .input                  = aead_ciphertext_2,
     .input_length           = 24,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
-    .expected_output        = aead_ciphertext_2,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_2,
+    .expected_output        = plaintext,
+    .expected_output_length = 24,
     .operation_state        = 1,
     .expected_status        = PSA_SUCCESS
 },
@@ -290,7 +266,7 @@
     .data                   = key_data,
     .data_length            = AES_16B_KEY_SIZE,
     .usage_flags            = PSA_KEY_USAGE_DECRYPT,
-    .alg                    = PSA_ALG_CCM,
+    .alg                    = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .setup_alg              = PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
     .nonce                  = nonce,
     .nonce_length           = 13,
@@ -298,36 +274,12 @@
     .plaintext_length       = 24,
     .additional_data        = additional_data,
     .ad_input_length        = 32,
-    .input                  = plaintext,
+    .input                  = aead_ciphertext_3,
     .input_length           = 24,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
-    .expected_output        = aead_ciphertext_3,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_3,
-    .operation_state        = 1,
-    .expected_status        = PSA_SUCCESS
-},
-
-{
-    .test_desc              = "Test psa_aead_update - Decrypt - CCM - Default Tag length\n",
-    .type                   = PSA_KEY_TYPE_AES,
-    .data                   = key_data,
-    .data_length            = AES_16B_KEY_SIZE,
-    .usage_flags            = PSA_KEY_USAGE_DECRYPT,
-    .alg                    = PSA_ALG_CCM,
-    .setup_alg              = PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(PSA_ALG_CCM),
-    .nonce                  = nonce,
-    .nonce_length           = 13,
-    .ad_length              = 32,
-    .plaintext_length       = 24,
-    .additional_data        = additional_data,
-    .ad_input_length        = 32,
-    .input                  = plaintext,
-    .input_length           = 24,
-    .output                 = expected_output,
-    .output_size            = BUFFER_SIZE,
-    .expected_output        = aead_ciphertext_2,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_2,
+    .expected_output        = plaintext,
+    .expected_output_length = 24,
     .operation_state        = 1,
     .expected_status        = PSA_SUCCESS
 },
@@ -346,12 +298,12 @@
     .plaintext_length       = 24,
     .additional_data        = NULL,
     .ad_input_length        = 0,
-    .input                  = plaintext,
+    .input                  = aead_ciphertext_4,
     .input_length           = 24,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
-    .expected_output        = aead_ciphertext_4,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_4,
+    .expected_output        = plaintext,
+    .expected_output_length = 24,
     .operation_state        = 1,
     .expected_status        = PSA_SUCCESS
 },
@@ -374,8 +326,8 @@
     .input_length           = 0,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
-    .expected_output        = aead_ciphertext_5,
-    .expected_output_length = AEAD_CIPHERTEXT_LEN_5,
+    .expected_output        = NULL,
+    .expected_output_length = 0,
     .operation_state        = 1,
     .expected_status        = PSA_SUCCESS
 },
@@ -394,10 +346,10 @@
     .plaintext_length       = 24,
     .additional_data        = additional_data,
     .ad_input_length        = 32,
-    .input                  = plaintext,
+    .input                  = aead_ciphertext_2,
     .input_length           = 24,
     .output                 = expected_output,
-    .output_size            = AEAD_CIPHERTEXT_LEN_2 - 2,
+    .output_size            = 15,
     .expected_output        = NULL,
     .expected_output_length = 0,
     .operation_state        = 1,
@@ -418,7 +370,7 @@
     .plaintext_length       = 24,
     .additional_data        = additional_data,
     .ad_input_length        = 30,
-    .input                  = plaintext,
+    .input                  = aead_ciphertext_2,
     .input_length           = 24,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
@@ -442,7 +394,7 @@
     .plaintext_length       = 24,
     .additional_data        = additional_data,
     .ad_input_length        = 32,
-    .input                  = plaintext,
+    .input                  = aead_ciphertext_2,
     .input_length           = 25,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
@@ -466,7 +418,7 @@
     .plaintext_length       = 24,
     .additional_data        = additional_data,
     .ad_input_length        = 32,
-    .input                  = plaintext,
+    .input                  = aead_ciphertext_2,
     .input_length           = 24,
     .output                 = expected_output,
     .output_size            = BUFFER_SIZE,
diff --git a/api-tests/dev_apis/crypto/test_c059/test_c059.c b/api-tests/dev_apis/crypto/test_c059/test_c059.c
index f412690..8ad03ed 100644
--- a/api-tests/dev_apis/crypto/test_c059/test_c059.c
+++ b/api-tests/dev_apis/crypto/test_c059/test_c059.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -32,7 +32,7 @@
 int32_t psa_aead_finish_test(caller_security_t caller __UNUSED)
 {
     int32_t               i, status;
-    size_t                length,  tag_length;
+    size_t                length, finish_length, tag_length;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
@@ -72,14 +72,14 @@
                  key, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
-        /* Set the nonce for an authenticated encryption operation */
-        status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE, &operation, check1[i].nonce,
-                 check1[i].nonce_size);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
-
         /* Declare the lengths of the message and additional data for AEAD */
         status = val->crypto_function(VAL_CRYPTO_AEAD_SET_LENGTHS, &operation, check1[i].ad_length,
                  check1[i].input_length);
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
+
+        /* Set the nonce for an authenticated encryption operation */
+        status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE, &operation, check1[i].nonce,
+                 check1[i].nonce_size);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
         /* Pass additional data to an active AEAD operation */
@@ -94,8 +94,8 @@
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Finish encrypting a message in an AEAD operation */
-        status = val->crypto_function(VAL_CRYPTO_AEAD_FINISH, &operation, output,
-                 check1[i].output_size, &length, tag, check1[i].tag_size, &tag_length);
+        status = val->crypto_function(VAL_CRYPTO_AEAD_FINISH, &operation, output + length,
+                 check1[i].output_size, &finish_length, tag, check1[i].tag_size, &tag_length);
         TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(9));
 
         if (check1[i].expected_status != PSA_SUCCESS)
@@ -119,6 +119,7 @@
         }
 
         /* Compare the output and its length with the expected values */
+        length += finish_length;
         TEST_ASSERT_EQUAL(length, check1[i].expected_length, TEST_CHECKPOINT_NUM(13));
         TEST_ASSERT_MEMCMP(output, check1[i].expected_output, length, TEST_CHECKPOINT_NUM(14));
         TEST_ASSERT_EQUAL(tag_length, check1[i].expected_tag_length, TEST_CHECKPOINT_NUM(15));
diff --git a/api-tests/dev_apis/crypto/test_c059/test_data.h b/api-tests/dev_apis/crypto/test_c059/test_data.h
index 9a9f5e8..1cc8d92 100644
--- a/api-tests/dev_apis/crypto/test_c059/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c059/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -56,15 +56,16 @@
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
  13, 32, 24, 24, BUFFER_SIZE,
 {0x26, 0xc5, 0x69, 0x61, 0xc0, 0x35, 0xa7, 0xe4, 0x52, 0xcc, 0xe6, 0x1b, 0xc6,
- 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6, 0xd8, 0x0e,
- 0x8b, 0xf8, 0x0f, 0x4a, 0x46, 0xca, 0xb0, 0x6d, 0x43, 0x13, 0xf0, 0xdb, 0x9b,
- 0xe9}, 40, SIZE_32B, {0}, 0,
+ 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6},
+ 24, SIZE_32B,
+{0xd8, 0x0e, 0x8b, 0xf8, 0x0f, 0x4a, 0x46, 0xca, 0xb0, 0x6d, 0x43, 0x13, 0xf0,
+ 0xdb, 0x9b, 0xe9}, 16,
  PSA_SUCCESS
 },
 
 {"Test psa_aead_finish - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
- 0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_CCM,
+ 0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
  PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
 {0x45, 0x35, 0xd1, 0x2b, 0x43, 0x77, 0x92, 0x8a, 0x7c, 0x0a, 0x61, 0xc9, 0xf8,
  0x25, 0xa4, 0x86, 0x71, 0xea, 0x05, 0x91, 0x07, 0x48, 0xc8, 0xef},
@@ -74,8 +75,8 @@
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
  13, 32, 24, 24, BUFFER_SIZE,
 {0x26, 0xc5, 0x69, 0x61, 0xc0, 0x35, 0xa7, 0xe4, 0x52, 0xcc, 0xe6, 0x1b, 0xc6,
- 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6, 0x64, 0x3b,
- 0x4f, 0x39}, 28, SIZE_32B, {0}, 0,
+ 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6},
+ 24, SIZE_32B, {0x64, 0x3b, 0x4f, 0x39}, 4,
  PSA_SUCCESS
 },
 
@@ -89,7 +90,7 @@
  0x48, 0x61, 0xa4, 0xa2, 0x01, 0xcc, 0xe4, 0x9f, 0x19, 0x99, 0x7d, 0x19, 0x20,
  0x6d, 0x8c, 0x8a, 0x34, 0x39, 0x51},
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
- 13, 32, 24, 24, 10, {0}, 0, SIZE_32B, {0}, 0,
+ 13, 32, 24, 24, BUFFER_SIZE, {0}, 0, 10, {0}, 0,
  PSA_ERROR_BUFFER_TOO_SMALL
 },
 
@@ -111,7 +112,7 @@
 
 #ifdef ARCH_TEST_GCM
 #ifdef ARCH_TEST_AES_128
-{"Test psa_aead_finish - GCM - 16B AES - 12B Nounce & 12B addi data\n", PSA_KEY_TYPE_AES,
+{"Test psa_aead_finish - GCM - 16B AES - 12B Nonce & 12B additional data\n", PSA_KEY_TYPE_AES,
 {0x3d, 0xe0, 0x98, 0x74, 0xb3, 0x88, 0xe6, 0x49, 0x19, 0x88, 0xd0, 0xc3, 0x60,
  0x7e, 0xae, 0x1f}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_ENCRYPT, PSA_ALG_GCM, PSA_ALG_GCM,
 {0x45, 0x00, 0x00, 0x1c, 0x42, 0xa2, 0x00, 0x00, 0x80, 0x01, 0x44, 0x1f, 0x40,
@@ -122,8 +123,9 @@
  12, 12, 28, 28, BUFFER_SIZE,
 {0xFB, 0xA2, 0xCA, 0x84, 0x5E, 0x5D, 0xF9, 0xF0, 0xF2, 0x2C, 0x3E, 0x6E, 0x86,
  0xDD, 0x83, 0x1E, 0x1F, 0xC6, 0x57, 0x92, 0xCD, 0x1A, 0xF9, 0x13, 0x0E, 0x13,
- 0x79, 0xED, 0x36, 0x9F, 0x07, 0x1F, 0x35, 0xE0, 0x34, 0xBE, 0x95, 0xF1, 0x12,
- 0xE4, 0xE7, 0xD0, 0x5D, 0x35}, 44, SIZE_32B, {0}, 0,
+ 0x79, 0xED}, 28, SIZE_32B,
+{0x36, 0x9F, 0x07, 0x1F, 0x35, 0xE0, 0x34, 0xBE, 0x95, 0xF1, 0x12, 0xE4, 0xE7,
+ 0xD0, 0x5D, 0x35}, 16,
  PSA_SUCCESS
 },
 #endif
diff --git a/api-tests/dev_apis/crypto/test_c061/test_c061.c b/api-tests/dev_apis/crypto/test_c061/test_c061.c
index 2378c0f..b9541b8 100644
--- a/api-tests/dev_apis/crypto/test_c061/test_c061.c
+++ b/api-tests/dev_apis/crypto/test_c061/test_c061.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,12 +27,12 @@
 };
 
 extern  uint32_t g_test_count;
-static uint8_t  output[BUFFER_SIZE], tag[SIZE_128B];
+static uint8_t  output[BUFFER_SIZE];
 
 int32_t psa_aead_verify_test(caller_security_t caller __UNUSED)
 {
     int32_t               i, status;
-    size_t                length;
+    size_t                length, verify_length;
     int                   num_checks = sizeof(check1)/sizeof(check1[0]);
     psa_key_attributes_t  attributes = PSA_KEY_ATTRIBUTES_INIT;
     psa_aead_operation_t  operation = PSA_AEAD_OPERATION_INIT;
@@ -72,14 +72,14 @@
                  key, check1[i].alg);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(4));
 
-        /* Set the nonce for an authenticated encryption operation */
-        status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE, &operation, check1[i].nonce,
-                 check1[i].nonce_size);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
-
         /* Declare the lengths of the message and additional data for AEAD */
         status = val->crypto_function(VAL_CRYPTO_AEAD_SET_LENGTHS, &operation, check1[i].ad_length,
                  check1[i].input_length);
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(5));
+
+        /* Set the nonce for an authenticated encryption operation */
+        status = val->crypto_function(VAL_CRYPTO_AEAD_SET_NONCE, &operation, check1[i].nonce,
+                 check1[i].nonce_size);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(6));
 
         /* Pass additional data to an active AEAD operation */
@@ -89,20 +89,23 @@
 
         /* Encrypt or decrypt a message fragment in an active AEAD operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_UPDATE, &operation,
-                 check1[i].plaintext, check1[i].plaintext_length, output,
+                 check1[i].ciphertext, check1[i].ciphertext_length, output,
                  BUFFER_SIZE, &length);
         TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(8));
 
         /* Finish authenticating and decrypting a message in an AEAD operation */
-        status = val->crypto_function(VAL_CRYPTO_AEAD_VERIFY, &operation, output,
-                 check1[i].output_size, &length, tag, check1[i].tag_size);
-        TEST_ASSERT_EQUAL(status, check1[i].expected_status, TEST_CHECKPOINT_NUM(9));
+        status = val->crypto_function(VAL_CRYPTO_AEAD_VERIFY, &operation, output + length,
+                 check1[i].output_size, &verify_length, check1[i].tag, check1[i].tag_length);
+        TEST_ASSERT_DUAL(status,
+                         check1[i].expected_status[0],
+                         check1[i].expected_status[1],
+                         TEST_CHECKPOINT_NUM(9));
 
-        if (check1[i].expected_status != PSA_SUCCESS)
+        if (status != PSA_SUCCESS)
         {
             /* Finish authenticating and decrypting a msg with an inactive operator should fail */
             status = val->crypto_function(VAL_CRYPTO_AEAD_VERIFY, &operation, output,
-                     check1[i].output_size, &length, tag, check1[i].tag_size);
+                     check1[i].output_size, &length, check1[i].tag, check1[i].tag_length);
             TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE, TEST_CHECKPOINT_NUM(10));
 
             /* Abort the AEAD operation */
@@ -119,26 +122,25 @@
         }
 
         /* Compare the output and its length with the expected values */
-        TEST_ASSERT_EQUAL(length, check1[i].expected_length, TEST_CHECKPOINT_NUM(13));
-        TEST_ASSERT_MEMCMP(output, check1[i].expected_output, length, TEST_CHECKPOINT_NUM(14));
-        TEST_ASSERT_MEMCMP(tag, check1[i].expected_tag, check1[i].expected_tag_length,
-        TEST_CHECKPOINT_NUM(15));
+        length += verify_length;
+        TEST_ASSERT_EQUAL(length, check1[i].plaintext_length, TEST_CHECKPOINT_NUM(13));
+        TEST_ASSERT_MEMCMP(output, check1[i].plaintext, length, TEST_CHECKPOINT_NUM(14));
 
         /* Abort the AEAD operation */
         status = val->crypto_function(VAL_CRYPTO_AEAD_ABORT, &operation);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(16));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(15));
 
         /* Destroy the key */
         status = val->crypto_function(VAL_CRYPTO_DESTROY_KEY, key);
-        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(17));
+        TEST_ASSERT_EQUAL(status, PSA_SUCCESS, TEST_CHECKPOINT_NUM(16));
 
         /* Reset the key attributes */
         val->crypto_function(VAL_CRYPTO_RESET_KEY_ATTRIBUTES, &attributes);
 
         /* Finish authenticating and decrypting a message with an inactive operator should fail */
          status = val->crypto_function(VAL_CRYPTO_AEAD_VERIFY, &operation, output,
-                  check1[i].output_size, &length, tag, check1[i].tag_size);
-        TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE, TEST_CHECKPOINT_NUM(18));
+                  check1[i].output_size, &length, check1[i].tag, check1[i].tag_length);
+        TEST_ASSERT_EQUAL(status, PSA_ERROR_BAD_STATE, TEST_CHECKPOINT_NUM(17));
 
     }
 
diff --git a/api-tests/dev_apis/crypto/test_c061/test_data.h b/api-tests/dev_apis/crypto/test_c061/test_data.h
index cefed85..1222513 100644
--- a/api-tests/dev_apis/crypto/test_c061/test_data.h
+++ b/api-tests/dev_apis/crypto/test_c061/test_data.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -33,12 +33,11 @@
     size_t                  plaintext_length;
     size_t                  input_length;
     size_t                  output_size;
-    uint8_t                 expected_output[45];
-    size_t                  expected_length;
-    size_t                  tag_size;
-    uint8_t                 expected_tag[64];
-    size_t                  expected_tag_length;
-    psa_status_t            expected_status;
+    uint8_t                 ciphertext[45];
+    size_t                  ciphertext_length;
+    uint8_t                 tag[64];
+    size_t                  tag_length;
+    psa_status_t            expected_status[2];
 } test_data;
 
 static const test_data check1[] = {
@@ -56,15 +55,16 @@
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
  13, 32, 24, 24, BUFFER_SIZE,
 {0x26, 0xc5, 0x69, 0x61, 0xc0, 0x35, 0xa7, 0xe4, 0x52, 0xcc, 0xe6, 0x1b, 0xc6,
- 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6, 0xd8, 0x0e,
- 0x8b, 0xf8, 0x0f, 0x4a, 0x46, 0xca, 0xb0, 0x6d, 0x43, 0x13, 0xf0, 0xdb, 0x9b,
- 0xe9}, 40, SIZE_32B, {0}, 0,
- PSA_SUCCESS
+ 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6},
+ 24,
+{0xd8, 0x0e, 0x8b, 0xf8, 0x0f, 0x4a, 0x46, 0xca, 0xb0, 0x6d, 0x43, 0x13, 0xf0,
+ 0xdb, 0x9b, 0xe9}, 16,
+{PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {"Test psa_aead_verify - AES-CCM 24 bytes Tag length = 4\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
- 0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM,
+ 0x21, 0xBF, 0x43}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
  PSA_ALG_AEAD_WITH_SHORTENED_TAG(PSA_ALG_CCM, 4),
 {0x45, 0x35, 0xd1, 0x2b, 0x43, 0x77, 0x92, 0x8a, 0x7c, 0x0a, 0x61, 0xc9, 0xf8,
  0x25, 0xa4, 0x86, 0x71, 0xea, 0x05, 0x91, 0x07, 0x48, 0xc8, 0xef},
@@ -74,9 +74,9 @@
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
  13, 32, 24, 24, BUFFER_SIZE,
 {0x26, 0xc5, 0x69, 0x61, 0xc0, 0x35, 0xa7, 0xe4, 0x52, 0xcc, 0xe6, 0x1b, 0xc6,
- 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6, 0x64, 0x3b,
- 0x4f, 0x39}, 28, SIZE_32B, {0}, 0,
- PSA_SUCCESS
+ 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6},
+ 24, {0x64, 0x3b, 0x4f, 0x39}, 4,
+{PSA_SUCCESS, PSA_SUCCESS}
 },
 
 {"Test psa_aead_verify - Small buffer size\n", PSA_KEY_TYPE_AES,
@@ -89,22 +89,31 @@
  0x48, 0x61, 0xa4, 0xa2, 0x01, 0xcc, 0xe4, 0x9f, 0x19, 0x99, 0x7d, 0x19, 0x20,
  0x6d, 0x8c, 0x8a, 0x34, 0x39, 0x51},
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
- 13, 32, 24, 24, 10, {0}, 0, SIZE_32B, {0}, 0,
- PSA_ERROR_BUFFER_TOO_SMALL
+ 13, 32, 24, 24, 0,
+{0x26, 0xc5, 0x69, 0x61, 0xc0, 0x35, 0xa7, 0xe4, 0x52, 0xcc, 0xe6, 0x1b, 0xc6,
+ 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6},
+ 24,
+{0xd8, 0x0e, 0x8b, 0xf8, 0x0f, 0x4a, 0x46, 0xca, 0xb0, 0x6d, 0x43, 0x13, 0xf0,
+ 0xdb, 0x9b, 0xe9}, 16,
+{PSA_ERROR_BUFFER_TOO_SMALL, PSA_SUCCESS}
 },
 
 {"Test psa_aead_verify - Input length is less than plaintext length\n", PSA_KEY_TYPE_AES,
 {0x41, 0x89, 0x35, 0x1B, 0x5C, 0xAE, 0xA3, 0x75, 0xA0, 0x29, 0x9E, 0x81, 0xC6,
  0x21, 0xBF, 0x43},
  AES_16B_KEY_SIZE, PSA_KEY_USAGE_DECRYPT, PSA_ALG_CCM, PSA_ALG_CCM,
-{0x45, 0x35, 0xd1, 0x2b, 0x43, 0x77, 0x92, 0x8a, 0x7c, 0x0a, 0x61, 0xc9, 0xf8,
- 0x25, 0xa4, 0x86, 0x71, 0xea, 0x05, 0x91, 0x07, 0x48, 0xc8, 0xef},
+{0},
 {0x40, 0xa2, 0x7c, 0x1d, 0x1e, 0x23, 0xea, 0x3d, 0xbe, 0x80, 0x56, 0xb2, 0x77,
  0x48, 0x61, 0xa4, 0xa2, 0x01, 0xcc, 0xe4, 0x9f, 0x19, 0x99, 0x7d, 0x19, 0x20,
  0x6d, 0x8c, 0x8a, 0x34, 0x39, 0x51},
 {0x48, 0xc0, 0x90, 0x69, 0x30, 0x56, 0x1e, 0x0a, 0xb0, 0xef, 0x4c, 0xd9, 0x72},
- 13, 32, 24, 30, BUFFER_SIZE, {0}, 0, SIZE_32B, {0}, 0,
- PSA_ERROR_INVALID_ARGUMENT
+ 13, 32, 0, 30, BUFFER_SIZE,
+{0x26, 0xc5, 0x69, 0x61, 0xc0, 0x35, 0xa7, 0xe4, 0x52, 0xcc, 0xe6, 0x1b, 0xc6,
+ 0xee, 0x22, 0x0d, 0x77, 0xb3, 0xf9, 0x4d, 0x18, 0xfd, 0x10, 0xb6},
+ 24,
+{0xd8, 0x0e, 0x8b, 0xf8, 0x0f, 0x4a, 0x46, 0xca, 0xb0, 0x6d, 0x43, 0x13, 0xf0,
+ 0xdb, 0x9b, 0xe9}, 16,
+{PSA_ERROR_INVALID_ARGUMENT, PSA_ERROR_INVALID_ARGUMENT}
 },
 #endif
 #endif
@@ -122,9 +131,10 @@
  12, 12, 28, 28, BUFFER_SIZE,
 {0xFB, 0xA2, 0xCA, 0x84, 0x5E, 0x5D, 0xF9, 0xF0, 0xF2, 0x2C, 0x3E, 0x6E, 0x86,
  0xDD, 0x83, 0x1E, 0x1F, 0xC6, 0x57, 0x92, 0xCD, 0x1A, 0xF9, 0x13, 0x0E, 0x13,
- 0x79, 0xED, 0x36, 0x9F, 0x07, 0x1F, 0x35, 0xE0, 0x34, 0xBE, 0x95, 0xF1, 0x12,
- 0xE4, 0xE7, 0xD0, 0x5D, 0x35}, 44, SIZE_32B, {0}, 0,
- PSA_SUCCESS
+ 0x79, 0xED}, 28,
+{0x36, 0x9F, 0x07, 0x1F, 0x35, 0xE0, 0x34, 0xBE, 0x95, 0xF1, 0x12, 0xE4, 0xE7,
+ 0xD0, 0x5D, 0x35}, 16,
+{PSA_SUCCESS, PSA_SUCCESS}
 },
 #endif
 #endif
diff --git a/api-tests/dev_apis/crypto/testsuite.db b/api-tests/dev_apis/crypto/testsuite.db
index 21a20aa..691f44a 100644
--- a/api-tests/dev_apis/crypto/testsuite.db
+++ b/api-tests/dev_apis/crypto/testsuite.db
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 (START)
 
 test_c001
-test_c002, failing_test
+test_c002
 test_c003
 test_c004
 test_c005
@@ -35,7 +35,7 @@
 test_c013
 test_c014
 test_c015
-test_c016
+test_c016, failing_test
 test_c017
 test_c018
 test_c019
diff --git a/api-tests/docs/Arm_PSA-M_Functional_API_Test_Suite_Validation_Methodology.pdf b/api-tests/docs/Arm_PSA-M_Functional_API_Test_Suite_Validation_Methodology.pdf
index 76bdf24..6b45bfa 100644
--- a/api-tests/docs/Arm_PSA-M_Functional_API_Test_Suite_Validation_Methodology.pdf
+++ b/api-tests/docs/Arm_PSA-M_Functional_API_Test_Suite_Validation_Methodology.pdf
Binary files differ
diff --git a/api-tests/docs/sw_requirements.md b/api-tests/docs/sw_requirements.md
index 2809434..ab9db8c 100644
--- a/api-tests/docs/sw_requirements.md
+++ b/api-tests/docs/sw_requirements.md
@@ -26,7 +26,7 @@
 
 ## Download source
 
-To download the master branch of the repository, type the following command: <br />
+To download the main branch of the repository, type the following command: <br />
 ~~~
 git clone https://github.com/ARM-software/psa-arch-tests.git
 ~~~
@@ -45,4 +45,4 @@
 
 --------------
 
-*Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/docs/test_failure_analysis.md b/api-tests/docs/test_failure_analysis.md
index 8018152..02d310e 100644
--- a/api-tests/docs/test_failure_analysis.md
+++ b/api-tests/docs/test_failure_analysis.md
@@ -3,14 +3,14 @@
 
 This file contains list of failures identified when testing the release
 on tgt_dev_apis_tfm_an521 and  tgt_dev_apis_tfm_musca_b1
-targets with TFM commit Hash - dd1fe44448db0f1750794cd9cf5596033f90f6f9 (tag: TF-Mv1.4.1).
+targets with TFM commit Hash - 6fb14a14140f94150f959c88e3b880f48372da06 (tag: TF-Mv1.5.0).
 The reason for each failing test is listed here in this file.
 
 ## Known Failures
 
 | Test | Fail description                                                                | Github issue |
 |------|---------------------------------------------------------------------------------| ------------ |
-|test_c002 | reference platform implementation issue | NA |
+|test_c016 | This test will pass with the mbed TLS 3.1.0, TF-M 1.5.0 is not using mbed TLS 3.1.0. So the test is failing. | https://jira.arm.com/browse/PJ03206-534 |
 |test_c026 | psa_sign_message not supported | https://jira.arm.com/browse/IOTPSW-4275 |
 |test_c027 | psa_mac_update not supported | https://jira.arm.com/browse/IOTPSW-4275 |
 |test_c028 | PSA_KEY_USAGE_SIGN_MESSAGE not found | https://jira.arm.com/browse/IOTPSW-4275 |
@@ -35,4 +35,4 @@
 
 --------------
 
-*Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/ff/README.md b/api-tests/ff/README.md
index c09cde6..53788e9 100644
--- a/api-tests/ff/README.md
+++ b/api-tests/ff/README.md
@@ -23,13 +23,14 @@
 For more information on architecture test suite specification, refer to the [Validation Methodology](../docs/Arm_PSA_APIs_Arch_Test_Validation_Methodology.pdf) document.
 
 ## This release
- - Code Quality : REL v1.3
+ - Code Quality : REL v1.4
  - This release contains the PSA-FF tests that are written for the PSA FF 1.1 Extensions specification.
 
 ##  Release Tags
 
 | Release version | Release tag  | PSA FF specification version |
 |-----------------|---------------|----------------|
+| REL v1.4 | [v22.01_API1.4_ADAC_BETA](https://github.com/ARM-software/psa-arch-tests/tree/v22.01_API1.4_ADAC_BETA/api-tests/ff) | 1.1-Alpha0 |
 | REL v1.3 | [v21.10_API1.3_ADAC_ALPHA-1](https://github.com/ARM-software/psa-arch-tests/tree/v21.10_API1.3_ADAC_ALPHA-1/api-tests/ff) | 1.1-Alpha0 |
 | REL v1.2 | [v21.07_API1.2_ADAC_ALPHA](https://github.com/ARM-software/psa-arch-tests/tree/v21.07_API1.2_ADAC_ALPHA/api-tests/ff) | 1.1-Alpha0 |
 | REL v1.1 | [v20.11_API1.1](https://github.com/ARM-software/psa-arch-tests/tree/v20.11_API1.1/api-tests/ff) | 1.0 |
@@ -162,4 +163,4 @@
 
 --------------
 
-*Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/api-tests/ff/ipc/stateless_rot_testsuite.db b/api-tests/ff/ipc/stateless_rot_testsuite.db
index b549418..bc7c72f 100644
--- a/api-tests/ff/ipc/stateless_rot_testsuite.db
+++ b/api-tests/ff/ipc/stateless_rot_testsuite.db
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2021, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2021-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -86,7 +86,7 @@
 test_i085, panic_test
 test_i086, panic_test
 test_i087, panic_test
-test_l088
+test_i088
 test_i089, panic_test
 test_i090, panic_test
 
diff --git a/api-tests/ff/ipc/test_i058/test_i058.c b/api-tests/ff/ipc/test_i058/test_i058.c
index 4277a1e..012d8fb 100644
--- a/api-tests/ff/ipc/test_i058/test_i058.c
+++ b/api-tests/ff/ipc/test_i058/test_i058.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,6 +42,7 @@
 
    val->print(PRINT_TEST,
             "[Check 1] Test PSA_DOORBELL signal\n", 0);
+   psa->call(SERVER_UNSPECIFED_VERSION_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
 
 #ifndef NONSECURE_TEST_BUILD
    /* Wait for doorball notification */
@@ -79,6 +80,7 @@
    }
 #endif
 
+   psa->call(SERVER_UNSPECIFED_VERSION_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
    return status;
 }
 
diff --git a/api-tests/ff/ipc/test_i058/test_supp_i058.c b/api-tests/ff/ipc/test_i058/test_supp_i058.c
index f84497d..c81c95d 100644
--- a/api-tests/ff/ipc/test_i058/test_supp_i058.c
+++ b/api-tests/ff/ipc/test_i058/test_supp_i058.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -38,6 +38,10 @@
     int32_t                 status = VAL_STATUS_SUCCESS;
     psa_msg_t               msg = {0};
 
+    status = val->process_call_request(SERVER_UNSPECIFED_VERSION_SIGNAL, &msg);
+    val->err_check_set(TEST_CHECKPOINT_NUM(201), status);
+    psa_reply(msg.handle, PSA_SUCCESS);
+
     if (msg.client_id > 0)
     {
         /* Doorbell signal to client partititon */
@@ -49,7 +53,9 @@
         val->print(PRINT_ERROR, "Caller is from non-secure\n", 0);
     }
 
+    status = val->process_call_request(SERVER_UNSPECIFED_VERSION_SIGNAL, &msg);
     val->err_check_set(TEST_CHECKPOINT_NUM(202), status);
+    psa_reply(msg.handle, PSA_SUCCESS);
     return status;
 }
 
diff --git a/api-tests/ff/ipc/test_i063/test_i063.c b/api-tests/ff/ipc/test_i063/test_i063.c
index 4a03410..f51d015 100644
--- a/api-tests/ff/ipc/test_i063/test_i063.c
+++ b/api-tests/ff/ipc/test_i063/test_i063.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,10 +35,12 @@
 
 int32_t client_test_psa_wait_signal_mask(caller_security_t caller __UNUSED)
 {
-
-
    val->print(PRINT_TEST, "[Check 1] Test psa_wait signal mask\n", 0);
 
+   psa->call(SERVER_UNSPECIFED_VERSION_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
+
+   psa->call(SERVER_RELAX_VERSION_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
+
    return VAL_STATUS_SUCCESS;
 }
 
diff --git a/api-tests/ff/ipc/test_i072/test_i072.c b/api-tests/ff/ipc/test_i072/test_i072.c
index 9f09884..96ebece 100644
--- a/api-tests/ff/ipc/test_i072/test_i072.c
+++ b/api-tests/ff/ipc/test_i072/test_i072.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -196,7 +196,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i073/test_i073.c b/api-tests/ff/ipc/test_i073/test_i073.c
index b3891b5..886a52c 100644
--- a/api-tests/ff/ipc/test_i073/test_i073.c
+++ b/api-tests/ff/ipc/test_i073/test_i073.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -196,7 +196,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i074/test_i074.c b/api-tests/ff/ipc/test_i074/test_i074.c
index 6042bb6..66d52a2 100644
--- a/api-tests/ff/ipc/test_i074/test_i074.c
+++ b/api-tests/ff/ipc/test_i074/test_i074.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -104,7 +104,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -218,7 +218,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i075/test_i075.c b/api-tests/ff/ipc/test_i075/test_i075.c
index 5c7f4d0..fa48863 100644
--- a/api-tests/ff/ipc/test_i075/test_i075.c
+++ b/api-tests/ff/ipc/test_i075/test_i075.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -196,7 +196,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i076/test_i076.c b/api-tests/ff/ipc/test_i076/test_i076.c
index b4e9a0a..6a722be 100644
--- a/api-tests/ff/ipc/test_i076/test_i076.c
+++ b/api-tests/ff/ipc/test_i076/test_i076.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -136,7 +136,7 @@
     NULL,
 };
 
-static int32_t get_secure_partition_address(__attribute__((unused)) psa_handle_t *handle,
+static int32_t get_secure_partition_address(psa_handle_t *handle,
                                             addr_t *addr,
                                             driver_test_fn_id_t test_fn_id)
 {
diff --git a/api-tests/ff/ipc/test_i082/test_i082.c b/api-tests/ff/ipc/test_i082/test_i082.c
index e6651cc..de7d002 100644
--- a/api-tests/ff/ipc/test_i082/test_i082.c
+++ b/api-tests/ff/ipc/test_i082/test_i082.c
@@ -204,9 +204,11 @@
    if (VAL_ERROR(get_secure_partition_address(&handle,
                                               &psa_rot_addr,
                                               TEST_ISOLATION_PSA_ROT_HEAP_RD)))
+    {
        return VAL_STATUS_ERROR;
+    }
 
-       close_driver_fn(&handle);
+   close_driver_fn(&handle);
 
    /* Setting boot.state before test check */
    if (val->set_boot_flag(BOOT_EXPECTED_REENTER_TEST))
diff --git a/api-tests/ff/ipc/test_i083/test_i083.c b/api-tests/ff/ipc/test_i083/test_i083.c
index 8c1bd7f..2ba5073 100644
--- a/api-tests/ff/ipc/test_i083/test_i083.c
+++ b/api-tests/ff/ipc/test_i083/test_i083.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -240,13 +240,6 @@
                                               TEST_ISOLATION_PSA_ROT_MMIO_WR)))
        return VAL_STATUS_ERROR;
 
-   /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_S))
-   {
-       val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
-       return VAL_STATUS_ERROR;
-   }
-
    /* Write PSA RoT mmio address.
     * This should generate internal fault or ignore the write.
     */
diff --git a/api-tests/ff/ipc/test_i084/test_i084.c b/api-tests/ff/ipc/test_i084/test_i084.c
index 023b88c..1b84d7c 100644
--- a/api-tests/ff/ipc/test_i084/test_i084.c
+++ b/api-tests/ff/ipc/test_i084/test_i084.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,7 +98,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -195,7 +195,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i085/test_i085.c b/api-tests/ff/ipc/test_i085/test_i085.c
index f672fdd..476b461 100644
--- a/api-tests/ff/ipc/test_i085/test_i085.c
+++ b/api-tests/ff/ipc/test_i085/test_i085.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -99,7 +99,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -196,7 +196,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i086/test_i086.c b/api-tests/ff/ipc/test_i086/test_i086.c
index 2c2fcaa..d4577d8 100644
--- a/api-tests/ff/ipc/test_i086/test_i086.c
+++ b/api-tests/ff/ipc/test_i086/test_i086.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -102,7 +102,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -215,7 +215,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_i087/test_i087.c b/api-tests/ff/ipc/test_i087/test_i087.c
index 864d444..1debbc0 100644
--- a/api-tests/ff/ipc/test_i087/test_i087.c
+++ b/api-tests/ff/ipc/test_i087/test_i087.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -101,7 +101,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
@@ -201,7 +201,7 @@
        return VAL_STATUS_ERROR;
 
    /* Setting boot.state before test check */
-   if (val->set_boot_flag(BOOT_EXPECTED_NS))
+   if (val->set_boot_flag(BOOT_EXPECTED_ON_SECOND_CHECK))
    {
        val->print(PRINT_ERROR, "\tFailed to set boot flag before check\n", 0);
        return VAL_STATUS_ERROR;
diff --git a/api-tests/ff/ipc/test_l088/test.cmake b/api-tests/ff/ipc/test_i088/test.cmake
similarity index 93%
rename from api-tests/ff/ipc/test_l088/test.cmake
rename to api-tests/ff/ipc/test_i088/test.cmake
index 16026f9..a14a089 100644
--- a/api-tests/ff/ipc/test_l088/test.cmake
+++ b/api-tests/ff/ipc/test_i088/test.cmake
@@ -16,16 +16,16 @@
 #**/
 
 list(APPEND CC_SOURCE
-	test_entry_l088.c
-	test_l088.c
+	test_entry_i088.c
+	test_i088.c
 )
 list(APPEND CC_OPTIONS )
 list(APPEND AS_SOURCE  )
 list(APPEND AS_OPTIONS )
 
 list(APPEND CC_SOURCE_SPE
-	test_l088.c
-	test_supp_l088.c
+	test_i088.c
+	test_supp_i088.c
 )
 list(APPEND CC_OPTIONS_SPE )
 list(APPEND AS_SOURCE_SPE  )
diff --git a/api-tests/ff/ipc/test_l088/test_entry_l088.c b/api-tests/ff/ipc/test_i088/test_entry_i088.c
similarity index 97%
rename from api-tests/ff/ipc/test_l088/test_entry_l088.c
rename to api-tests/ff/ipc/test_i088/test_entry_i088.c
index 4732122..ea4e716 100644
--- a/api-tests/ff/ipc/test_l088/test_entry_l088.c
+++ b/api-tests/ff/ipc/test_i088/test_entry_i088.c
@@ -17,7 +17,7 @@
 
 #include "val_interfaces.h"
 #include "val_target.h"
-#include "test_l088.h"
+#include "test_i088.h"
 
 #define TEST_NUM  VAL_CREATE_TEST_ID(VAL_FF_BASE, 88)
 #define TEST_DESC "Testing psa_rot_lifecycle_state API\n"
diff --git a/api-tests/ff/ipc/test_l088/test_l088.c b/api-tests/ff/ipc/test_i088/test_i088.c
similarity index 92%
rename from api-tests/ff/ipc/test_l088/test_l088.c
rename to api-tests/ff/ipc/test_i088/test_i088.c
index 237637c..5a7e223 100644
--- a/api-tests/ff/ipc/test_l088/test_l088.c
+++ b/api-tests/ff/ipc/test_i088/test_i088.c
@@ -23,9 +23,9 @@
 #include "val_service_defs.h"
 #endif
 
-#include "test_l088.h"
+#include "test_i088.h"
 
-const client_test_t test_l088_client_tests_list[] = {
+const client_test_t test_i088_client_tests_list[] = {
     NULL,
     client_test_psa_rot_lifecycle_state,
     NULL,
diff --git a/api-tests/ff/ipc/test_l088/test_l088.h b/api-tests/ff/ipc/test_i088/test_i088.h
similarity index 89%
rename from api-tests/ff/ipc/test_l088/test_l088.h
rename to api-tests/ff/ipc/test_i088/test_i088.h
index df6251e..ac2e918 100644
--- a/api-tests/ff/ipc/test_l088/test_l088.h
+++ b/api-tests/ff/ipc/test_i088/test_i088.h
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 **/
-#ifndef _TEST_L088_CLIENT_TESTS_H_
-#define _TEST_L088_CLIENT_TESTS_H_
+#ifndef _TEST_I088_CLIENT_TESTS_H_
+#define _TEST_I088_CLIENT_TESTS_H_
 
 #include "val_client_defs.h"
 
 #ifdef NONSECURE_TEST_BUILD
-#define test_entry CONCAT(test_entry_, l088)
+#define test_entry CONCAT(test_entry_, i088)
 #define val CONCAT(val, test_entry)
 #define psa CONCAT(psa, test_entry)
 #else
diff --git a/api-tests/ff/ipc/test_l088/test_supp_l088.c b/api-tests/ff/ipc/test_i088/test_supp_i088.c
similarity index 96%
rename from api-tests/ff/ipc/test_l088/test_supp_l088.c
rename to api-tests/ff/ipc/test_i088/test_supp_i088.c
index e9e5f3c..7230671 100644
--- a/api-tests/ff/ipc/test_l088/test_supp_l088.c
+++ b/api-tests/ff/ipc/test_i088/test_supp_i088.c
@@ -25,7 +25,7 @@
 
 int32_t server_test_psa_rot_lifecycle_state(void);
 
-const server_test_t test_l088_server_tests_list[] = {
+const server_test_t test_i088_server_tests_list[] = {
     NULL,
     server_test_psa_rot_lifecycle_state,
     NULL,
diff --git a/api-tests/ff/ipc/testsuite.db b/api-tests/ff/ipc/testsuite.db
index 72216ed..013cf35 100644
--- a/api-tests/ff/ipc/testsuite.db
+++ b/api-tests/ff/ipc/testsuite.db
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -107,7 +107,7 @@
 test_i085, panic_test
 test_i086, panic_test
 test_i087, panic_test
-test_l088
+test_i088
 test_i089, panic_test
 test_i090, panic_test
 
diff --git a/api-tests/ff/partition/client_partition.c b/api-tests/ff/partition/client_partition.c
index ae6b40f..3cb4c51 100644
--- a/api-tests/ff/partition/client_partition.c
+++ b/api-tests/ff/partition/client_partition.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -97,7 +97,9 @@
         /* Server_partition requests client to connect to SERVER_SECURE_CONNECT_ONLY_SID */
         else if (signals & PSA_DOORBELL)
         {
-#if STATELESS_ROT != 1
+#if STATELESS_ROT == 1
+            psa_call(SERVER_SECURE_CONNECT_ONLY_HANDLE, PSA_IPC_CALL, NULL, 0, NULL, 0);
+#else
             if (psa_connect(SERVER_SECURE_CONNECT_ONLY_SID, SERVER_SECURE_CONNECT_ONLY_VERSION)
                 != PSA_ERROR_CONNECTION_REFUSED)
             {
diff --git a/api-tests/ff/partition/driver_partition.c b/api-tests/ff/partition/driver_partition.c
index 8823fc2..433392a 100644
--- a/api-tests/ff/partition/driver_partition.c
+++ b/api-tests/ff/partition/driver_partition.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -497,7 +497,7 @@
     psa_write(msg->handle, 0, (void *) &addr, sizeof(addr_t));
 
     /* Setting boot.state before test check */
-    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_S))
+    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_ON_SECOND_CHECK))
     {
        val_print_sf("\tFailed to set boot flag before check\n", 0);
        psa_reply(msg->handle, -2);
@@ -553,7 +553,7 @@
     psa_write(msg->handle, 0, (void *) &addr, sizeof(addr_t));
 
     /* Setting boot.state before test check */
-    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_S))
+    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_ON_SECOND_CHECK))
     {
        val_print_sf("\tFailed to set boot flag before check\n", 0);
        psa_reply(msg->handle, -2);
@@ -614,14 +614,14 @@
 
     /* Send PSA RoT heap address */
     psa_write(msg->handle, 0, (void *) &buffer, BUFFER_SIZE);
-    psa_reply(msg->handle, PSA_SUCCESS);
 
     /* Setting boot.state before test check */
-    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_S))
+    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_ON_SECOND_CHECK))
     {
        val_print_sf("\tFailed to set boot flag before check\n", 0);
        psa_reply(msg->handle, -2);
     }
+    psa_reply(msg->handle, PSA_SUCCESS);
 
     /* Process second call request */
     if (VAL_ERROR(process_call_request(DRIVER_TEST_SIGNAL, msg)))
@@ -683,14 +683,14 @@
     /* Send PSA RoT mmio address */
     memset((uint8_t *)&psa_rot_mmio_addr, (uint8_t)DATA_VALUE, sizeof(addr_t));
     psa_write(msg->handle, 0, (void *) &psa_rot_mmio_addr, sizeof(addr_t));
-    psa_reply(msg->handle, PSA_SUCCESS);
 
     /* Setting boot.state before test check */
-    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_S))
+    if (val_driver_private_set_boot_flag_fn(BOOT_EXPECTED_ON_SECOND_CHECK))
     {
-       val_print_sf("\tFailed to set boot flag before check\n", 0);
-       psa_reply(msg->handle, -2);
+        val_print_sf("\tFailed to set boot flag before check\n", 0);
+        psa_reply(msg->handle, -2);
     }
+   psa_reply(msg->handle, PSA_SUCCESS);
 
     /* Process second call request */
     if (VAL_ERROR(process_call_request(DRIVER_TEST_SIGNAL, msg)))
diff --git a/api-tests/platform/drivers/watchdog/nrf/nrf9160_wdt.c b/api-tests/platform/drivers/watchdog/nrf/nrf9160_wdt.c
index f48318f..1d6f8dd 100644
--- a/api-tests/platform/drivers/watchdog/nrf/nrf9160_wdt.c
+++ b/api-tests/platform/drivers/watchdog/nrf/nrf9160_wdt.c
@@ -25,27 +25,28 @@
 /**
   * @brief Watchdog Timer
   */
-struct NRF_WDT_Type {                           /*!< (@ 0x40018000) WDT_NS Structure                                           */
-  __OM  uint32_t  TASKS_START;                  /*!< (@ 0x00000000) Start the watchdog                                         */
+struct NRF_WDT_Type {              /*!< (@ 0x40018000) WDT_NS Structure */
+  __OM  uint32_t  TASKS_START;     /*!< (@ 0x00000000) Start the watchdog */
   __IM  uint32_t  RESERVED[31];
-  __IOM uint32_t  SUBSCRIBE_START;              /*!< (@ 0x00000080) Subscribe configuration for task START                     */
+  __IOM uint32_t  SUBSCRIBE_START; /*!< (@ 0x00000080) Subscribe configuration for task START */
   __IM  uint32_t  RESERVED1[31];
-  __IOM uint32_t  EVENTS_TIMEOUT;               /*!< (@ 0x00000100) Watchdog timeout                                           */
+  __IOM uint32_t  EVENTS_TIMEOUT;  /*!< (@ 0x00000100) Watchdog timeout   */
   __IM  uint32_t  RESERVED2[31];
-  __IOM uint32_t  PUBLISH_TIMEOUT;              /*!< (@ 0x00000180) Publish configuration for event TIMEOUT                    */
+  __IOM uint32_t  PUBLISH_TIMEOUT; /*!< (@ 0x00000180) Publish configuration for event TIMEOUT  */
   __IM  uint32_t  RESERVED3[96];
-  __IOM uint32_t  INTENSET;                     /*!< (@ 0x00000304) Enable interrupt                                           */
-  __IOM uint32_t  INTENCLR;                     /*!< (@ 0x00000308) Disable interrupt                                          */
+  __IOM uint32_t  INTENSET;        /*!< (@ 0x00000304) Enable interrupt  */
+  __IOM uint32_t  INTENCLR;        /*!< (@ 0x00000308) Disable interrupt */
   __IM  uint32_t  RESERVED4[61];
-  __IM  uint32_t  RUNSTATUS;                    /*!< (@ 0x00000400) Run status                                                 */
-  __IM  uint32_t  REQSTATUS;                    /*!< (@ 0x00000404) Request status                                             */
+  __IM  uint32_t  RUNSTATUS;       /*!< (@ 0x00000400) Run status        */
+  __IM  uint32_t  REQSTATUS;       /*!< (@ 0x00000404) Request status    */
   __IM  uint32_t  RESERVED5[63];
-  __IOM uint32_t  CRV;                          /*!< (@ 0x00000504) Counter reload value                                       */
-  __IOM uint32_t  RREN;                         /*!< (@ 0x00000508) Enable register for reload request registers               */
-  __IOM uint32_t  CONFIG;                       /*!< (@ 0x0000050C) Configuration register                                     */
+  __IOM uint32_t  CRV;             /*!< (@ 0x00000504) Counter reload value */
+  __IOM uint32_t  RREN;       /*!< (@ 0x00000508) Enable register for reload request registers */
+  __IOM uint32_t  CONFIG;          /*!< (@ 0x0000050C) Configuration register                */
   __IM  uint32_t  RESERVED6[60];
-  __OM  uint32_t  RR[8];                        /*!< (@ 0x00000600) Description collection: Reload request n                   */
-};          
+  __OM  uint32_t  RR[8];           /*!< (@ 0x00000600) Description collection: Reload request n */
+};
+
 
 /* Register: WDT_CONFIG */
 /* Description: Configuration register */
@@ -56,7 +57,8 @@
 /* Register: WDT_RUNSTATUS */
 /* Description: Run status */
 #define WDT_RUNSTATUS_RUNSTATUSWDT_Pos (0UL) /*!< Position of RUNSTATUSWDT field. */
-#define WDT_RUNSTATUS_RUNSTATUSWDT_Msk (0x1UL << WDT_RUNSTATUS_RUNSTATUSWDT_Pos) /*!< Bit mask of RUNSTATUSWDT field. */
+ /*!< Bit mask of RUNSTATUSWDT field. */
+#define WDT_RUNSTATUS_RUNSTATUSWDT_Msk (0x1UL << WDT_RUNSTATUS_RUNSTATUSWDT_Pos)
 #define WDT_RUNSTATUS_RUNSTATUSWDT_NotRunning (0UL) /*!< Watchdog is not running */
 #define WDT_RUNSTATUS_RUNSTATUSWDT_Running (1UL) /*!< Watchdog is running */
 
@@ -68,7 +70,7 @@
 **/
 int nrf_wdt_init(addr_t base_addr, uint32_t time_us)
 {
-    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type*)base_addr;
+    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type *)base_addr;
 
     /* The FF framework is written with the assumption that the watchdog timer
      * can be stopped and reconfigured, but this is not possible on the nRF91.
@@ -108,8 +110,7 @@
 **/
 int nrf_wdt_enable(addr_t base_addr)
 {
-    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type*)base_addr;
-    
+    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type *)base_addr;
     if (!nrf_wdt_is_enabled(base_addr)) {
         nrf_wdt->TASKS_START = 0x01UL; // Trigger start task
     } else {
@@ -130,7 +131,7 @@
 **/
 int nrf_wdt_disable(addr_t base_addr)
 {
-    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type*)base_addr;
+    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type *)base_addr;
 
     /* As the nRF91 WDT cannot be stopped, the timer will be reloaded to the
      * value in the CRV register. This should work in all cases, as the timer
@@ -152,6 +153,6 @@
 **/
 int nrf_wdt_is_enabled(addr_t base_addr)
 {
-    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type*)base_addr;
+    struct NRF_WDT_Type *nrf_wdt = (struct NRF_WDT_Type *)base_addr;
     return (nrf_wdt->RUNSTATUS & WDT_RUNSTATUS_RUNSTATUSWDT_Msk);
 }
diff --git a/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c b/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
index 651d494..d978ffc 100644
--- a/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
+++ b/api-tests/platform/targets/common/nspe/crypto/pal_crypto_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -270,7 +270,6 @@
 			cipher_operation         =  va_arg(valist, psa_cipher_operation_t *);
 			return psa_cipher_abort(cipher_operation);
 			break;
-#if MISSING_CRYPTO_1_0 == 0
 		case PAL_CRYPTO_CIPHER_DECRYPT:
 			key                      = va_arg(valist, psa_key_id_t);
 			alg                      = va_arg(valist, psa_algorithm_t);
@@ -287,7 +286,6 @@
 									  output_size,
 									  p_output_length);
 			break;
-#endif
 		case PAL_CRYPTO_CIPHER_DECRYPT_SETUP:
 			cipher_operation         = va_arg(valist, psa_cipher_operation_t *);
 			key                      = va_arg(valist, psa_key_id_t);
@@ -296,7 +294,6 @@
 											key,
 											alg);
 			break;
-#if MISSING_CRYPTO_1_0 == 0
 		case PAL_CRYPTO_CIPHER_ENCRYPT:
 			key                      = va_arg(valist, psa_key_id_t);
 			alg                      = va_arg(valist, psa_algorithm_t);
@@ -313,7 +310,6 @@
 									  output_size,
 									  p_output_length);
 			break;
-#endif
 		case PAL_CRYPTO_CIPHER_ENCRYPT_SETUP:
 			cipher_operation         = va_arg(valist, psa_cipher_operation_t *);
 			key                      = va_arg(valist, psa_key_id_t);
@@ -705,7 +701,6 @@
 								  input,
 								  input_length);
 			break;
-#if MISSING_CRYPTO_1_0 == 0
 		case PAL_CRYPTO_MAC_VERIFY:
 			key                      = va_arg(valist, psa_key_id_t);
 			alg                      = va_arg(valist, psa_algorithm_t);
@@ -720,7 +715,6 @@
 								  input1,
 								  input_length1);
 			break;
-#endif
 		case PAL_CRYPTO_MAC_VERIFY_FINISH:
 			mac_operation            = va_arg(valist, psa_mac_operation_t *);
 			input                    = va_arg(valist, const uint8_t *);
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/nspe/pal_driver_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/nspe/pal_driver_intf.c
index 126628a..714b189 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/nspe/pal_driver_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/nspe/pal_driver_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,6 +18,8 @@
 #include "pal_common.h"
 #include "pal_nvmem.h"
 
+#include "nrf_wdt.h"
+
 /**
     @brief    - This function initializes the UART
     @param    - uart base addr
@@ -51,9 +53,8 @@
 **/
 int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
 {
-    (void)base_addr;
-    pal_timer_init_ns(time_us * timer_tick_us);
-    return PAL_STATUS_SUCCESS;
+    (void)timer_tick_us;
+    return nrf_wdt_init(base_addr, time_us);
 }
 
 /**
@@ -63,9 +64,7 @@
 **/
 int pal_wd_timer_enable_ns(addr_t base_addr)
 {
-    (void)base_addr;
-    pal_timer_start_ns();
-    return PAL_STATUS_SUCCESS;
+    return nrf_wdt_enable(base_addr);
 
 }
 
@@ -76,9 +75,7 @@
 **/
 int pal_wd_timer_disable_ns(addr_t base_addr)
 {
-    (void)base_addr;
-    pal_timer_stop_ns();
-    return PAL_STATUS_SUCCESS;
+    return nrf_wdt_disable(base_addr);
 }
 
 /**
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/target.cfg
index 8e3b5dc..92c946d 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/target.cfg
@@ -1,5 +1,5 @@
 ///** @file
-// * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+// * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
 // * SPDX-License-Identifier : Apache-2.0
 // *
 // * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,12 +21,12 @@
 
 // Watchdog device info
 watchdog.num = 1;
-watchdog.0.base = 0; // Unused value
+watchdog.0.base = 0x40018000; // Unused value
 watchdog.0.num_of_tick_per_micro_sec = 1;
-watchdog.0.timeout_in_micro_sec_low = 60000000; //60 secs
-watchdog.0.timeout_in_micro_sec_medium = 60000000; //60 secs
-watchdog.0.timeout_in_micro_sec_high = 60000000; //60 secs
-watchdog.0.timeout_in_micro_sec_crypto = 60000000; //60 secs
+watchdog.0.timeout_in_micro_sec_low = 1000000; // 1.0 secs
+watchdog.0.timeout_in_micro_sec_medium = 2000000;  // 2 secs
+watchdog.0.timeout_in_micro_sec_high = 5000000; // 5 secs
+watchdog.0.timeout_in_micro_sec_crypto = 18000000; // 18 secs
 
 // Range of 1KB Non-volatile memory to preserve data over reset. Ex, NVRAM and FLASH
 nvmem.num =1;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/target.cmake
index b2e7495..0c44846 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf5340/target.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,6 +35,7 @@
 		# driver files will be compiled as part of NSPE
 		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/nrf/nrf_wdt.c
 	)
 endif()
 
@@ -79,6 +80,7 @@
 	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
 	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
 	${PSA_ROOT_DIR}/platform/drivers/nvmem
+	${PSA_ROOT_DIR}/platform/drivers/watchdog/nrf/
 	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/nspe/pal_driver_intf.c b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/nspe/pal_driver_intf.c
index 126628a..84f4db0 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/nspe/pal_driver_intf.c
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/nspe/pal_driver_intf.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,6 +18,8 @@
 #include "pal_common.h"
 #include "pal_nvmem.h"
 
+#include "nrf_wdt.h"
+
 /**
     @brief    - This function initializes the UART
     @param    - uart base addr
@@ -51,9 +53,8 @@
 **/
 int pal_wd_timer_init_ns(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us)
 {
-    (void)base_addr;
-    pal_timer_init_ns(time_us * timer_tick_us);
-    return PAL_STATUS_SUCCESS;
+    (void)timer_tick_us;
+    return nrf_wdt_init(base_addr, time_us);
 }
 
 /**
@@ -63,10 +64,7 @@
 **/
 int pal_wd_timer_enable_ns(addr_t base_addr)
 {
-    (void)base_addr;
-    pal_timer_start_ns();
-    return PAL_STATUS_SUCCESS;
-
+    return nrf_wdt_enable(base_addr);
 }
 
 /**
@@ -76,9 +74,7 @@
 **/
 int pal_wd_timer_disable_ns(addr_t base_addr)
 {
-    (void)base_addr;
-    pal_timer_stop_ns();
-    return PAL_STATUS_SUCCESS;
+    return nrf_wdt_disable(base_addr);
 }
 
 /**
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/target.cfg b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/target.cfg
index 8e3b5dc..336b00c 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/target.cfg
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/target.cfg
@@ -1,5 +1,5 @@
 ///** @file
-// * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+// * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
 // * SPDX-License-Identifier : Apache-2.0
 // *
 // * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,12 +21,14 @@
 
 // Watchdog device info
 watchdog.num = 1;
-watchdog.0.base = 0; // Unused value
+watchdog.0.base = 0x40018000;
 watchdog.0.num_of_tick_per_micro_sec = 1;
-watchdog.0.timeout_in_micro_sec_low = 60000000; //60 secs
-watchdog.0.timeout_in_micro_sec_medium = 60000000; //60 secs
-watchdog.0.timeout_in_micro_sec_high = 60000000; //60 secs
-watchdog.0.timeout_in_micro_sec_crypto = 60000000; //60 secs
+// The same value should be used for all timeout durations, as the nRF91
+// WDT cannot be reconfigured once it has been started.
+watchdog.0.timeout_in_micro_sec_low = 18000000; // 18 secs
+watchdog.0.timeout_in_micro_sec_medium = 18000000;  // 18 secs
+watchdog.0.timeout_in_micro_sec_high = 18000000; // 18 secs
+watchdog.0.timeout_in_micro_sec_crypto = 18000000; // 18 secs
 
 // Range of 1KB Non-volatile memory to preserve data over reset. Ex, NVRAM and FLASH
 nvmem.num =1;
diff --git a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/target.cmake b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/target.cmake
index b2e7495..837ecb5 100644
--- a/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/target.cmake
+++ b/api-tests/platform/targets/tgt_dev_apis_tfm_nrf9160/target.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,6 +35,7 @@
 		# driver files will be compiled as part of NSPE
 		${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/pal_driver_intf.c
 		${PSA_ROOT_DIR}/platform/drivers/nvmem/pal_nvmem.c
+		${PSA_ROOT_DIR}/platform/drivers/watchdog/nrf/nrf9160_wdt.c
 	)
 endif()
 
@@ -79,6 +80,7 @@
 	${PSA_ROOT_DIR}/platform/targets/common/nspe/internal_trusted_storage
 	${PSA_ROOT_DIR}/platform/targets/common/nspe/initial_attestation
 	${PSA_ROOT_DIR}/platform/drivers/nvmem
+	${PSA_ROOT_DIR}/platform/drivers/watchdog/nrf/
 	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
diff --git a/api-tests/tools/cmake/compiler/HOST_GCC.cmake b/api-tests/tools/cmake/compiler/HOST_GCC.cmake
index 0282643..d990ff8 100644
--- a/api-tests/tools/cmake/compiler/HOST_GCC.cmake
+++ b/api-tests/tools/cmake/compiler/HOST_GCC.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019-2021, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -50,4 +50,3 @@
 	set(CMAKE_C_FLAGS	"-g -Wall -Werror -Werror -std=c99")
 	message(STATUS "[PSA] : ${_LNG}  compiler used '${CMAKE_${_LNG}_COMPILER}'")
 endforeach()
-add_definitions(-DMISSING_CRYPTO_1_0=1)
diff --git a/api-tests/val/common/val.h b/api-tests/val/common/val.h
index 88bab7b..aff69dd 100644
--- a/api-tests/val/common/val.h
+++ b/api-tests/val/common/val.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -138,8 +138,15 @@
         {                                                                           \
             val->print(PRINT_ERROR, "\tFailed at Checkpoint: %d\n", checkpoint);    \
             val->print(PRINT_ERROR, "\tActual: %d\n", arg1);                        \
-            val->print(PRINT_ERROR, "\tExpected: %d", status1);                     \
-            val->print(PRINT_ERROR, "or %d\n", status2);                            \
+            if ((status1) != (status2))                                             \
+            {                                                                       \
+                val->print(PRINT_ERROR, "\tExpected: %d", status1);                 \
+                val->print(PRINT_ERROR, "or %d\n", status2);                        \
+            }                                                                       \
+            else                                                                    \
+            {                                                                       \
+                val->print(PRINT_ERROR, "\tExpected: %d\n", status1);               \
+            }                                                                       \
             return 1;                                                               \
         }                                                                           \
     } while (0)
@@ -213,6 +220,10 @@
      * re-enter the same test and continue executing the same check function
      */
     BOOT_EXPECTED_CONT_TEST_EXEC       = 0x7,
+    /* Test expects reboot for secure/non-secure on second check of test . If reboot happens,
+     * re-enter the same test and execute the next check function
+     */
+    BOOT_EXPECTED_ON_SECOND_CHECK      = 0x8,
 } boot_state_t;
 
 typedef enum {
diff --git a/api-tests/val/nspe/val_entry.h b/api-tests/val/nspe/val_entry.h
index 79646b9..c04c4d1 100644
--- a/api-tests/val/nspe/val_entry.h
+++ b/api-tests/val/nspe/val_entry.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "val_framework.h"
 
 #define PSA_ACS_MAJOR_VER    1
-#define PSA_ACS_MINOR_VER    3
+#define PSA_ACS_MINOR_VER    4
 
 /**
     @brief    - PSA Test Suite C main function, does VAL init and calls test dispatcher
diff --git a/api-tests/val/nspe/val_framework.c b/api-tests/val/nspe/val_framework.c
index ec6b1cc..54e5dbd 100644
--- a/api-tests/val/nspe/val_framework.c
+++ b/api-tests/val/nspe/val_framework.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2022, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -122,7 +122,8 @@
     }
 
     if (boot.state == BOOT_NOT_EXPECTED || boot.state == BOOT_EXPECTED_REENTER_TEST
-        || boot.state == BOOT_EXPECTED_CONT_TEST_EXEC)
+        || boot.state == BOOT_EXPECTED_CONT_TEST_EXEC
+        || boot.state == BOOT_EXPECTED_ON_SECOND_CHECK)
     {
         while (tests_list[i] != NULL)
         {
@@ -131,6 +132,7 @@
              * consider previous run pass and jump to second test function
              * of the same test if available.
              */
+
             if ((boot.state ==  BOOT_EXPECTED_REENTER_TEST) && (i == 1))
             {
                 val_print(PRINT_DEBUG, "[Check 1] PASSED\n", 0);
@@ -138,6 +140,13 @@
                 continue;
             }
 
+            if ((boot.state ==  BOOT_EXPECTED_ON_SECOND_CHECK) && (i == 1))
+            {
+                val_print(PRINT_DEBUG, "[Check 2] PASSED\n", 0);
+                i = i + 2 ;
+                continue;
+            }
+
             if (boot.state != BOOT_EXPECTED_CONT_TEST_EXEC)
             {
                 status = val_set_boot_flag(BOOT_NOT_EXPECTED);
@@ -257,6 +266,12 @@
             val_print(PRINT_DEBUG, "[Check 1] PASSED\n", 0);
        }
 
+       if (boot.state ==  BOOT_EXPECTED_ON_SECOND_CHECK)
+       {
+            test_info.block_num = test_info.block_num + 2;
+            val_print(PRINT_DEBUG, "[Check 2] PASSED\n", 0);
+       }
+
        status = val_set_boot_flag(BOOT_NOT_EXPECTED);
        if (VAL_ERROR(status))
        {
@@ -589,7 +604,8 @@
                                     BOOT_EXPECTED_S,
                                     BOOT_EXPECTED_BUT_FAILED,
                                     BOOT_EXPECTED_REENTER_TEST,
-                                    BOOT_EXPECTED_CONT_TEST_EXEC
+                                    BOOT_EXPECTED_CONT_TEST_EXEC,
+                                    BOOT_EXPECTED_ON_SECOND_CHECK
                                     };
 
     status = val_get_boot_flag(&boot.state);
diff --git a/secure-debug/CMakeLists.txt b/secure-debug/CMakeLists.txt
index 85d3a42..d8e3c5c 100644
--- a/secure-debug/CMakeLists.txt
+++ b/secure-debug/CMakeLists.txt
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2021, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2021-2022, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,19 +27,17 @@
 include(${PSA_ROOT_DIR}/tools/cmake/common/Utils.cmake)
 
 set(CMAKE_C_STANDARD 99)
-set(CMAKE_C_EXTENSIONS Off)
-set(CMAKE_CXX_STANDARD 14)
-set(CMAKE_CXX_EXTENSIONS Off)
 
-if(DEFINED RDDI_LIB)
-    if(WIN32)
-        set(DEPENDS_LIB_PATH ${CMAKE_SOURCE_DIR}/depends/rddi/win_32-x86_64)
-    else()
-        set(DEPENDS_LIB_PATH ${CMAKE_SOURCE_DIR}/depends/rddi/linux-x86_64)
-    endif()
+# Check for LINK_LAYER
+if(NOT DEFINED LINK_LAYER_COMM)
+	set(LINK_LAYER_COMM unix_socket)
+    message(STATUS "[PSA] : Link layer not specified. Defaulting to ${LINK_LAYER_COMM}")
 endif()
 
-set(DEPENDS_INC_PATH ${CMAKE_SOURCE_DIR}/platform/hosts/${TARGET}/include)
+set(DEPENDS_INC_PATH ${CMAKE_SOURCE_DIR}/platform/hosts/${TARGET}/${LINK_LAYER_COMM}/include)
+if (NOT EXISTS ${DEPENDS_INC_PATH})
+    Message(FATAL_ERROR "Link layer ${LINK_LAYER_COMM} not supported for target ${TARGET}.")
+endif()
 
 if(NOT DEFINED PSA_ADAC_ROOT)
     get_filename_component(PSA_ADAC_ROOT ${CMAKE_SOURCE_DIR}/psa-adac ABSOLUTE)
@@ -95,6 +93,7 @@
 	message(FATAL_ERROR "[PSA] : Error: Unsupported value for -DTARGET=${TARGET}, supported targets are : ${PSA_TARGET_LIST}")
 else()
     message(STATUS "[PSA] : TARGET is set to ${TARGET}")
+    message(STATUS "[PSA] : LINK_LAYER is set to ${LINK_LAYER_COMM}")
 endif()
 
 # Check for the presence of required test suite directories
@@ -188,13 +187,8 @@
 
 # Build PAL LIB
 include(${CMAKE_SOURCE_DIR}/platform/common/pal.cmake)
-if(DEFINED RDDI_LIB)
-    add_subdirectory(${CMAKE_SOURCE_DIR}/platform/csapbcom)
-    set(ADAC_HOST_PAL_LIB    csapbcom)
-else()
-    add_subdirectory(${CMAKE_SOURCE_DIR}/platform/hosts/${TARGET} platform_stdc)
-    target_link_libraries(${ADAC_HOST_PAL_LIB} platform_stdc)
-endif()
+add_subdirectory(${CMAKE_SOURCE_DIR}/platform/hosts/${TARGET}/${LINK_LAYER_COMM} platform_host)
+target_link_libraries(${ADAC_HOST_PAL_LIB} platform_host)
 
 # Generate VAL LIB
 include(${CMAKE_SOURCE_DIR}/val/val.cmake)
diff --git a/secure-debug/README.md b/secure-debug/README.md
index 3853c24..2cbc8bb 100644
--- a/secure-debug/README.md
+++ b/secure-debug/README.md
@@ -9,16 +9,18 @@
 
 ### ADAC test suite
 
-The ADAC test suite checks if a device-side implementation conforms to the behavior described in the ADAC specification. The tests are self-checking, portable C-based tests with directed stimulus. The tests are expected to run on the host platform only. The tests drive the commands from the host platform through the debug link and verify the response obtained from the target platform.
-
-The tests are available as open source. The tests and the corresponding abstraction layers are available with an Apache v2.0 license allowing for external contribution.
+The ADAC test suite checks if a device-side implementation conforms to the behavior described in the ADAC specification. The tests:
+ - Are self-checking and portable, written in C with directed stimulus.
+ - Are expected to run on the host platform only.
+ - Drive the commands from the host platform through the debug link and verify the response obtained from the target platform.
+ - Are available as open source.
+ - And the corresponding abstraction layers are available with an Apache v2.0 license allowing for external contribution.
 
 ## Release details
- - Release Version - 0.6
- - Code Quality: Alpha <br />
-   The suite is in development. This indicates that the suite contains tests that have not been validated on any hardware platform. You can suggest enhancements and point out errors.
+ - Release Version - 0.8
+ - Code Quality: Beta <br/>
 
- - The ADAC tests are written for version Beta of the ADAC specification.
+ - The ADAC tests are written for version beta of the ADAC specification.
  - This test suite is not a substitute for design verification.
 
 ## Layers
@@ -32,19 +34,19 @@
 
 The abstraction layers provide platform information and runtime environment to enable execution of the tests.
 
-In this release, PAL implementation uses Unix sockets as the link layer for sending commands and receiving responses.
+In this release, PAL implementation for the 'emulation' target uses Unix sockets as the link layer to send commands and receive responses. Arm also provides support for executing the test suite on the 'Musca-b1' hardware board by adding a 'musca_b1' target which uses memory window protocol as the link layer.
 
-You can also write your own abstraction layer implementations to allow ADAC tests to be run in other host platforms and support the debug link layer.
+You can also write your own abstraction layer implementations to allow ADAC tests to run on other host platforms and support the debug link layer.
 
 ## Scenarios
 
-The mapping of the rules in the specification to the test cases and the steps followed in the tests are mentioned in the [Scenario document](docs/psa_adac_scenarios.md) present in the docs/ folder.
+The mapping of the rules to the test cases and the steps followed in the tests are mentioned in the [Scenario document](docs/psa_adac_scenarios.md) present in the docs/ folder.
 
 ## Getting started
 
 
-Follow the instructions in the subsequent sections to get a copy of the source code on your local machine and build the tests. <br />
-See [Arm Authenticated Debug Access Control Test Suite User guide](docs/Arm_Authenticated_Debug_Access_Control_Test_Suite_User_Guide.pdf) document to get details on the steps involved in porting the test suite to your platform.
+Follow the instructions in the subsequent sections to get a copy of the source code on your local machine and build the tests. <br/>
+See [Arm Authenticated Debug Access Control Test Suite User guide](docs/Arm_Authenticated_Debug_Access_Control_Test_Suite_User_Guide.pdf) to get details on the steps involved in porting the test suite to your platform.
 This test suite is provided as a separate directory within the psa-arch-tests repository.
 
 ### Prerequisites
@@ -54,26 +56,26 @@
 - Host Operating System: Ubuntu 16.04.4, RHEL 7, Windows 10
 - Scripting tools: Python 3.7.1
 - Other open-source tools: GNUARM 6.3.1, GCC 5.4.0 32-Bit (Linux Host), MinGW 6.3.0 32-Bit (Windows Host)
-                           CMake 3.1 or later
+                           CMake 3.10 or later
 
 
 ## Download source
-To download the master branch of the repository, type the following command:
+To download the main branch of the repository, type the following command:
 
 	git clone https://github.com/ARM-software/psa-arch-tests.git
 
-To download the main branch of the psa-adac repository, type the following command:
+To download the main branch of the psa-adac repository, navigate to the secure debug directory and type the following command:
 
 	git clone git@github.com:ARMmbed/psa-adac.git
 
 Note:
-    To obtain the access to the psa-adac repository and some of its dependent submodules, Arm Licensees may contact Arm through their partner managers.
+    To receive access to the psa-adac repository and some of its dependent submodules, Arm licensees may contact Arm through their partner managers.
 
 
 ## Porting steps
 
-See the [Porting Guide](docs/porting_guide_adac_host.md) document for porting steps for your host platform.
-See the [User Guide](docs/Arm_Authenticated_Debug_Access_Control_Test_Suite_User_Guide.pdf) document in the docs folder for additional details.
+See the [Porting Guide](docs/porting_guide_adac_host.md) for porting steps for your host platform.
+See the [User Guide](docs/Arm_Authenticated_Debug_Access_Control_Test_Suite_User_Guide.pdf) in the docs/ folder for additional details.
 
 ## Build steps
 
@@ -81,59 +83,43 @@
 ~~~
     cd psa-arch-tests/secure-debug
     git clone git@github.com:ARMmbed/psa-adac.git --recurse-submodules
-    cp adac_ats_alpha1.patch psa-adac/.
+    cp psa_adac_ats.patch psa-adac/.
     cd psa-adac/
-    git apply adac_ats_alpha1.patch
+    git apply psa_adac_ats.patch
     cd ..
     mkdir <host_build_dir>
     cd <host_build_dir>
-	cmake ../ -G<generator-name> -DTARGET=<target-name> -DSUITE=<suite-selection>
+	cmake ../ -G<generator-name> -DTARGET=<target-name> -DSUITE=<suite-selection> -DLINK_LAYER_COMM=<link-layer>
 	    where:
         - <generator-name>          "Unix Makefiles"  - to generate Makefiles for Linux and Cygwin
                                     "MinGW Makefiles" - to generate Makefiles for cmd.exe on Windows
         - <target-name>             target to build, as created in the platform/hosts directory
         - <suite-selection>         ADAC              - specify the ADAC suite
+        - <link-layer>              link layer for the host platform, optional for emulation target
 
 	To build project
 	   cmake --build .
 	To clean
 	   cmake --build . -- clean
-
-    For example:
-    cmake ../ -G"Unix Makefiles" -DTARGET=hst_sdbg_stdc -DSUITE=ADAC
-    cmake --build .
 ~~~
 
 Note:
-    It is recommended to build different build configurations in separate directories.
+    Arm recommends running different build configurations in separate directories. Refer to the host-platform specific README for information on additional build options.
 
 ### Build output
+
 The following ADAC test suite build outputs are available under host build directory, as created.
 
 	- psa_adac_test executable
 	- val and platform layer libraries
 
-## Test Suite Execution
-
-The current release provides a reference implementation of ADAC target which communicates with the host platform using Unix sockets. To execute the test suite, follow the steps below:
-
-    cd psa-arch-tests/secure-debug/psa-adac
-    make native
-
-To launch the target to run as a server instance, run the target executable in another terminal as shown:
-
-    cd psa-arch-tests/secure-debug/psa-adac
-    ./build/native/Debug/psa_adac_server coms.socket tools/test/resources/chains/chain.EcdsaP256-3
-
-To run the test suite, execute the following command from your host build directory <host_build_dir>:
-
-    ./psa_adac_test ../psa-adac/tools/test/resources/keys/EcdsaP256Key-3.pem \../psa-adac/tools/test/resources/chains/chain.EcdsaP256-3 ../psa-adac/coms.socket
+For running the test suite on the emulation platform, see the [Readme](platform/hosts/emulation/unix_socket/README.md).<br/>
+For running the test suite on the Musca-b1 hardware platform, see the [Readme](platform/hosts/musca_b1/memw_pyocd/README.md).<br/>
 
 Note:
  - See the psa-adac directory for information on other target platforms.
  - The keys and the certificate credentials for a supported cryptosystem can be generated using the tools provided in the psa-adac repository.
- - The test suite is designed to run once per supported cryptosystem. You must ensure that the device must be provisioned with the correct certificates installed in the device's RoT.
-
+ - The test suite is designed to run once per supported cryptosystem. Ensure that the device must be provisioned with the correct certificates installed in the device's RoT.
 
 ## Security implication
 
@@ -141,9 +127,8 @@
 
 ## License
 
-Arm ADAC Architecture test suite is distributed under Apache v2.0 License.
-The psa-adac code repository is distributed under BSD-3-Clause License.
-
+Arm ADAC Architecture test suite is distributed under Apache v2.0 license.
+The psa-adac code repository is distributed under BSD-3-Clause license.
 
 ## Feedback, contributions, and support
 
@@ -154,4 +139,4 @@
 
 --------------
 
-*Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2021-2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/secure-debug/depends/rddi/linux-x86_64/README.txt b/secure-debug/depends/rddi/linux-x86_64/README.txt
deleted file mode 100644
index 80b9a82..0000000
--- a/secure-debug/depends/rddi/linux-x86_64/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This directory should include Linux x86_64 RDDI redistributables.
-
-These can be found in:
-- <Arm DS Install Directory>/sw/debugger/RDDI/redistributables/linux-x86_64/<compiler choice>/rel/
-
-<compiler choice>: Choose a compiler which matches your host system
diff --git a/secure-debug/depends/rddi/win_32-x86_64/README.txt b/secure-debug/depends/rddi/win_32-x86_64/README.txt
deleted file mode 100644
index f78ccd8..0000000
--- a/secure-debug/depends/rddi/win_32-x86_64/README.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-This directory should include Windows x86_64 RDDI redistributable and development libraries.
-
-Redistributables can be found in:
-- <Arm DS Install Directory>/sw/debugger/RDDI/redistributables/win_32-x86_64/<compiler choice>/rel/
-
-Development libraries can be found in:
-- <Arm DS Install Directory>/sw/debugger/RDDI/lib/win_32-x86_64/<compiler choice>/rel/
-
-<compiler choice>: Choose a compiler which matches your host system
-    Example compilers:
-        cl-16.00.40219.01 = Microsoft Visual Studio 2010
-        cl-19.00.24215.1  = Microsoft Visual Studio 2015 Update 3
diff --git a/secure-debug/docs/Arm_Authenticated_Debug_Access_Control_Test_Suite_User_Guide.pdf b/secure-debug/docs/Arm_Authenticated_Debug_Access_Control_Test_Suite_User_Guide.pdf
index 0c9d96a..178d588 100644
--- a/secure-debug/docs/Arm_Authenticated_Debug_Access_Control_Test_Suite_User_Guide.pdf
+++ b/secure-debug/docs/Arm_Authenticated_Debug_Access_Control_Test_Suite_User_Guide.pdf
Binary files differ
diff --git a/secure-debug/docs/porting_guide_adac_host.md b/secure-debug/docs/porting_guide_adac_host.md
index d84c86c..ebd205b 100644
--- a/secure-debug/docs/porting_guide_adac_host.md
+++ b/secure-debug/docs/porting_guide_adac_host.md
@@ -3,7 +3,7 @@
 -----------------------------------------------------
 
 ## Introduction
-The ADAC test suite contains the *Platform Abstraction Layer* (PAL) which abstracts platform-specific information from the tests. You must implement and port the PAL interface functions to your host platform.
+The ADAC test suite contains the **Platform Abstraction Layer** (PAL) which abstracts platform-specific information from the tests. You must implement and port the PAL interface functions to your host platform.
 
 This document provides the porting steps and the list of PAL APIs.
 
@@ -11,19 +11,19 @@
 
 ### Adding a new target
 
-  1. Create a new directory in **platform/<platform_name>**. For reference, see the existing platform **hst_sdbg_stdc** directory.
-  2. Execute `cp -rf platform/hosts/hst_sdbg_stdc/ platform/hosts/<platform_name>/`.
-  3. Update **platform/<platform_name>/CMakeLists.txt** appropriately to select the correct instances of PAL files for compilation.
-  4. Refer to the **List of PAL APIs** section to view the list of PAL APIs that must be ported for your target platform. These API definitions are available in **val/include/pal_interfaces.h**. These APIs are written for the virtual target **hst_sdbg_stdc**. You can reuse the code if it works for your platform. Otherwise, you must port them for your platform-specific peripherals.
-  5. The main.c requires path to the key and certificate chain that point to the host credentials. This must be provided as command-line arguments. You can provide debug link layer specific parameters as additional command-line arguments.
-  6. If you want to use a pre-built debug communication interface, create a new directory under the depends directory and list your shared libraries within it. A placeholder for RDDI libraries is provided. You can then link these libraries to your platform.
+  1. Create a new directory in **platform/hosts/<platform_name>**. For reference, see the existing platform **musca_b1** directory.
+  2. Execute `cp -rf platform/hosts/musca_b1/ platform/hosts/<platform_name>/`.
+  3. Create the link layer directory for each link layer you want to support for your platform.
+  4. Update **platform/<platform_name>/CMakeLists.txt** appropriately to select the correct instances of PAL files for compilation.
+  5. Port the list of PAL APIs referenced in the **List of PAL APIs** section for your target platform. These API definitions are available in **val/include/pal_interfaces.h** and are written for the hardware target **musca_b1**. You can reuse the code if it works for your platform. Otherwise, you must port them for your platform-specific peripherals.
+  6. Provide the path to the key and certificate chain that points to the host credentials in main.c as command-line arguments. You can provide debug link layer-specific parameters as additional command-line arguments.
 
 ## List of PAL APIs
 Since the test suite is agnostic to various system platforms, you must port the following PAL APIs before building the tests. Implement these functions for your host platform. <br/>
 
 | No | Prototype                                             | Description                                                                 | Parameters                                                              |
 |----|-------------------------------------------------------|-----------------------------------------------------------------------------|-------------------------------------------------------------------------|
-| 01 | int pal_print(char *str, int32_t data);               | Parses the input string and writes bytes into the message interface         | str: Input String<br/>data: Value for format specifier<br/>             |
+| 01 | int pal_print(char *str, int32_t data);               | Parses the input string and writes bytes into the message interface         | str: Input string<br/>data: Value for format specifier<br/>             |
 | 02 | int pal_system_reset(void)                            | Resets the system and disconnects from device                               | None                                                                    |
 | 03 | int pal_msg_interface_init(void *ctx)                 | Initializes the message interface for debugging information                 | Handle for the communication interface                                  |
 | 04 | int pal_msg_interface_free(void *ctx)                 | Releases the message interface                                              | Handle for the communication interface                                  |
@@ -31,8 +31,8 @@
 | 06 | int pal_message_receive(uint8_t buffer[], size_t size)| Reads the response data from the device                                     | buffer_ptr for payload, transfer size in bytes                          |
 
 ## License
-Arm PSA test suite is distributed under Apache v2.0 License.
+Arm PSA test suite is distributed under Apache v2.0 license.
 
 --------------
 
-*Copyright (c) 2021 Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2021-2022 Arm Limited and Contributors. All rights reserved.*
diff --git a/secure-debug/docs/test_failure_analysis.md b/secure-debug/docs/test_failure_analysis.md
index a1d3532..180de1d 100644
--- a/secure-debug/docs/test_failure_analysis.md
+++ b/secure-debug/docs/test_failure_analysis.md
@@ -2,9 +2,9 @@
 # Test failure analysis document
 -----------------------------------------------------
 
-This file contains list of failures identified when testing the release of Alpha1 quality ADAC Test suite.
+This file contains list of failures identified when testing the release of Beta quality ADAC Test suite.
 PSA-ADAC repository commit Hash - e91ebc4c06351e860b5c50dbdc2901a8260979a1
-along with the patch file adac_ats_alpha1.patch
+along with the patch file psa_adac_ats.patch
 The reason for each failing test is listed here in this file.
 
 ## Known Failures
@@ -19,4 +19,4 @@
 
 --------------
 
-*Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.*
+*Copyright (c) 2022 Arm Limited and Contributors. All rights reserved.*
diff --git a/secure-debug/platform/common/src/adac_packet_util.c b/secure-debug/platform/common/src/adac_packet_util.c
index d9244fb..d3095b7 100644
--- a/secure-debug/platform/common/src/adac_packet_util.c
+++ b/secure-debug/platform/common/src/adac_packet_util.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -124,11 +124,7 @@
 
 int msg_interface_init(void *ctx, uint8_t buffer[], size_t buffer_size)
 {
-    if (ctx == NULL)
-        return -1;
-    else
-        pal_msg_interface_init(ctx);
-
+    pal_msg_interface_init(ctx);
     return static_buffer_msg_init(buffer, buffer_size);
 }
 
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/CMakeLists.txt b/secure-debug/platform/hosts/emulation/unix_socket/CMakeLists.txt
similarity index 63%
copy from secure-debug/platform/hosts/hst_sdbg_stdc/CMakeLists.txt
copy to secure-debug/platform/hosts/emulation/unix_socket/CMakeLists.txt
index f462094..b89d54a 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/CMakeLists.txt
+++ b/secure-debug/platform/hosts/emulation/unix_socket/CMakeLists.txt
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,18 +16,18 @@
 
 # Set the minimum required version of CMake for the project
 cmake_minimum_required(VERSION 3.10)
-PROJECT (platform_stdc)
+PROJECT (platform_host)
 
 include_directories(
     ${CMAKE_SOURCE_DIR}/platform/common/include
-    ${CMAKE_SOURCE_DIR}/platform/hosts/hst_sdbg_stdc/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
     )
 
-add_library(platform_stdc STATIC)
-target_sources(platform_stdc PUBLIC
-    ${CMAKE_SOURCE_DIR}/platform/hosts/hst_sdbg_stdc/src/pal_interfaces.c
-    ${CMAKE_SOURCE_DIR}/platform/hosts/hst_sdbg_stdc/src/unix_msg.c
-    ${CMAKE_SOURCE_DIR}/platform/hosts/hst_sdbg_stdc/src/main.c
+add_library(platform_host STATIC)
+target_sources(platform_host PUBLIC
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/pal_interfaces.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/unix_msg.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
     )
 
-target_link_libraries(platform_stdc)
+target_link_libraries(platform_host)
diff --git a/secure-debug/platform/hosts/emulation/unix_socket/README.md b/secure-debug/platform/hosts/emulation/unix_socket/README.md
new file mode 100644
index 0000000..67e1463
--- /dev/null
+++ b/secure-debug/platform/hosts/emulation/unix_socket/README.md
@@ -0,0 +1,38 @@
+
+# Verifying test suite on emulation platform
+
+## Build steps for target image
+
+To generate the target image for the virtual target, follow these steps:
+~~~
+    cd psa-arch-tests/secure-debug/psa-adac
+    make native
+~~~
+
+## Build steps for host image
+
+To build ADAC test suite, execute the following commands: <br/>
+~~~
+    cd psa-arch-tests/secure-debug
+    mkdir <host_build_dir>
+    cd <host_build_dir>
+    cmake ../ -G"Unix Makefiles" -DTARGET=emulation -DSUITE=ADAC
+    cmake --build .
+~~~
+
+## Test Suite Execution
+
+The current release provides a reference implementation of ADAC target which communicates with the host platform using Unix sockets.
+To launch the target to run as a server instance, run the target executable in another terminal as shown:
+~~~
+    cd psa-arch-tests/secure-debug/psa-adac
+    ./build/native/Debug/psa_adac_server coms.socket tools/test/resources/chains/chain.EcdsaP256-3
+~~~
+
+To run the test suite, execute the following command from your host build directory <host_build_dir>:
+~~~
+    ./psa_adac_test ../psa-adac/tools/test/resources/keys/EcdsaP256Key-3.pem \../psa-adac/tools/test/resources/chains/chain.EcdsaP256-3 ../psa-adac/coms.socket
+~~~
+--------------
+
+*Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/include/platform.h b/secure-debug/platform/hosts/emulation/unix_socket/include/platform.h
similarity index 93%
rename from secure-debug/platform/hosts/hst_sdbg_stdc/include/platform.h
rename to secure-debug/platform/hosts/emulation/unix_socket/include/platform.h
index 2df84d9..d7f789b 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/include/platform.h
+++ b/secure-debug/platform/hosts/emulation/unix_socket/include/platform.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/include/psa_adac_platform.h b/secure-debug/platform/hosts/emulation/unix_socket/include/psa_adac_platform.h
similarity index 92%
rename from secure-debug/platform/hosts/hst_sdbg_stdc/include/psa_adac_platform.h
rename to secure-debug/platform/hosts/emulation/unix_socket/include/psa_adac_platform.h
index 5e4e272..aaad673 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/include/psa_adac_platform.h
+++ b/secure-debug/platform/hosts/emulation/unix_socket/include/psa_adac_platform.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/include/unix_msg.h b/secure-debug/platform/hosts/emulation/unix_socket/include/unix_msg.h
similarity index 94%
rename from secure-debug/platform/hosts/hst_sdbg_stdc/include/unix_msg.h
rename to secure-debug/platform/hosts/emulation/unix_socket/include/unix_msg.h
index a21a165..5b1eff7 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/include/unix_msg.h
+++ b/secure-debug/platform/hosts/emulation/unix_socket/include/unix_msg.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/src/main.c b/secure-debug/platform/hosts/emulation/unix_socket/src/main.c
similarity index 94%
rename from secure-debug/platform/hosts/hst_sdbg_stdc/src/main.c
rename to secure-debug/platform/hosts/emulation/unix_socket/src/main.c
index cae5882..6fdc3dd 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/src/main.c
+++ b/secure-debug/platform/hosts/emulation/unix_socket/src/main.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/src/pal_interfaces.c b/secure-debug/platform/hosts/emulation/unix_socket/src/pal_interfaces.c
similarity index 95%
rename from secure-debug/platform/hosts/hst_sdbg_stdc/src/pal_interfaces.c
rename to secure-debug/platform/hosts/emulation/unix_socket/src/pal_interfaces.c
index 5c14d08..892c76f 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/src/pal_interfaces.c
+++ b/secure-debug/platform/hosts/emulation/unix_socket/src/pal_interfaces.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/src/unix_msg.c b/secure-debug/platform/hosts/emulation/unix_socket/src/unix_msg.c
similarity index 97%
rename from secure-debug/platform/hosts/hst_sdbg_stdc/src/unix_msg.c
rename to secure-debug/platform/hosts/emulation/unix_socket/src/unix_msg.c
index 9a6e301..3a1d3de 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/src/unix_msg.c
+++ b/secure-debug/platform/hosts/emulation/unix_socket/src/unix_msg.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/CMakeLists.txt b/secure-debug/platform/hosts/musca_b1/memw_pyocd/CMakeLists.txt
similarity index 63%
rename from secure-debug/platform/hosts/hst_sdbg_stdc/CMakeLists.txt
rename to secure-debug/platform/hosts/musca_b1/memw_pyocd/CMakeLists.txt
index f462094..631a83e 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/CMakeLists.txt
+++ b/secure-debug/platform/hosts/musca_b1/memw_pyocd/CMakeLists.txt
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,18 +16,17 @@
 
 # Set the minimum required version of CMake for the project
 cmake_minimum_required(VERSION 3.10)
-PROJECT (platform_stdc)
+PROJECT (platform_host)
 
 include_directories(
     ${CMAKE_SOURCE_DIR}/platform/common/include
-    ${CMAKE_SOURCE_DIR}/platform/hosts/hst_sdbg_stdc/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
     )
 
-add_library(platform_stdc STATIC)
-target_sources(platform_stdc PUBLIC
-    ${CMAKE_SOURCE_DIR}/platform/hosts/hst_sdbg_stdc/src/pal_interfaces.c
-    ${CMAKE_SOURCE_DIR}/platform/hosts/hst_sdbg_stdc/src/unix_msg.c
-    ${CMAKE_SOURCE_DIR}/platform/hosts/hst_sdbg_stdc/src/main.c
+add_library(platform_host STATIC)
+target_sources(platform_host PUBLIC
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/pal_interfaces.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
     )
 
-target_link_libraries(platform_stdc)
+target_link_libraries(platform_host)
diff --git a/secure-debug/platform/hosts/musca_b1/memw_pyocd/README.md b/secure-debug/platform/hosts/musca_b1/memw_pyocd/README.md
new file mode 100644
index 0000000..7e4b0e6
--- /dev/null
+++ b/secure-debug/platform/hosts/musca_b1/memw_pyocd/README.md
@@ -0,0 +1,47 @@
+
+# Verifying test suite on Musca-b1 hardware platform
+
+## Prerequisites
+
+Before executing the test suite on host, ensure that the following requirements are met:
+
+- Python 3.7.1 and above with pyOCD is installed.
+- Debug probe is connected from the target to the host system using a USB cable.
+- The target image is flashed onto the board.
+
+## Build steps for target image
+
+The steps to build and flash the image for the musca-b1 hardware target are described in the psa-adac repository in ports/targets/musca-b1/README.md.
+
+## Build steps for host image
+
+To build ADAC test suite, execute the following commands: <br/>
+~~~
+    cd psa-arch-tests/secure-debug
+    mkdir <host_build_dir>
+    cd <host_build_dir>
+    cmake ../ -G"Unix Makefiles" -DTARGET=musca_b1 -DSUITE=ADAC -DLINK_LAYER_COMM=memw_pyocd
+    cmake --build .
+~~~
+
+## Test Suite Execution
+
+Arm uses UDP sockets to transmit and receive test information from the host to pyOCD. pyOCD is used for communication with the target board. The pyOCD script communicates with the board using a memory window-based debug mailbox.
+To launch the pyOCD script, run the following in another terminal as shown:
+~~~
+	cd platform/hosts/musca_b1/mem_pyocd
+	python host_connect.py <port_no>
+	where:
+        - <port_no>          - The port number for communicating between host and pyOCD. Default is 7777
+~~~
+
+To run the test suite, execute the following command from your host build directory <host_build_dir>:
+~~~
+    ./psa_adac_test ../psa-adac/tools/test/resources/keys/EcdsaP256Key-3.pem \../psa-adac/tools/test/resources/chains/chain.EcdsaP256-3 <ip_address> <port_no>
+	where:
+		- <ip_address>       - The IP address of the network connection running the server instance
+        - <port_no>          - The port number for communicating between host and pyOCD. Default is 7777
+~~~
+--------------
+
+*Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.*
diff --git a/secure-debug/platform/hosts/musca_b1/memw_pyocd/host_connect.py b/secure-debug/platform/hosts/musca_b1/memw_pyocd/host_connect.py
new file mode 100644
index 0000000..dda9fc5
--- /dev/null
+++ b/secure-debug/platform/hosts/musca_b1/memw_pyocd/host_connect.py
@@ -0,0 +1,142 @@
+#!/usr/bin/python
+#/** @file
+# * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
+# * SPDX-License-Identifier : Apache-2.0
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# *  http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+#**/
+
+# install pyOCD  --> pip install pyocd
+# install libusb --> see https://github.com/pyocd/pyOCD#libusb-installation
+
+import socket
+import sys
+import struct
+import time
+from pyocd.core.helpers import ConnectHelper
+from pyocd.utility.conversion import byte_list_to_u32le_list
+
+class ADAC_ACS():
+    """! @brief Main class for the adac acs script, acting as bridge between acs testcases & platform"""
+
+    def __init__(self, PORT=7777):
+        self.port = PORT
+        self.host = "0.0.0.0"
+        self.target = None
+        self.base = None
+        self.reset = None
+
+    def create_server_socket(self):
+        try:
+            print("Creating server socket ipaddress : %s, port : %d\n" % (self.host, self.port))
+            self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+            self.server_socket.bind((self.host, self.port))
+        except socket.error as msg:
+            print('Failed to create socket. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
+            sys.exit()
+
+    def parse_uint(self, s):
+        try:
+            return int(s, 16)
+        except:
+            print('self.parse_uint error : might be the number of arg and payload bytes mismatch\n')
+        return
+
+    def receive(self):
+        while self.target.read32(self.base + 0x0) != 0xEFEFEFEF:
+            time.sleep(0.1)
+        hl = 8
+        h = self.target.read_memory_block8(self.base + 0x10, hl)
+        (_ign, head, words) = struct.unpack("<HHL", bytes(h))
+
+        data = bytes([])
+        if words > 0:
+            data = bytearray(self.target.read_memory_block8(self.base + 0x10 + hl, words << 2))
+        self.received += hl + len(data)
+        return bytes(h), bytes(data)
+
+    def connect(self):
+        print("Reset device and request Connection")
+        self.target.reset_and_halt()
+        self.target.write32(self.base + 0x0, 0xFF00FF00)
+        self.target.write32(self.base + 0x4, 0x00FF00FF)
+        self.target.write32(self.base + 0x8, 0xFF00FF00)
+        self.target.write32(self.base + 0xC, 0x00FF00FF)
+        self.target.resume()
+
+        acknowledged = False
+        s = 0.1
+        while not acknowledged:
+            time.sleep(s)
+            s *= 2
+
+            m = [self.target.read32(self.base + 0x0), self.target.read32(self.base + 0x4),
+                 self.target.read32(self.base + 0x8), self.target.read32(self.base + 0xC)]
+
+            print("MUSCA_B1_SRAM_S_BASE[0]: 0x%08X (0x%08X)" % (m[0], 0x00FF00FF))
+            print("MUSCA_B1_SRAM_S_BASE[1]: 0x%08X (0x%08X)" % (m[1], 0xFF00FF00))
+            print("MUSCA_B1_SRAM_S_BASE[2]: 0x%08X (0x%08X)" % (m[2], 0x00FF00FF))
+            print("MUSCA_B1_SRAM_S_BASE[3]: 0x%08X (0x%08X)" % (m[3], 0xFF00FF00))
+            acknowledged = (m[0] == 0x00FF00FF) and (m[2] == 0x00FF00FF) and (m[3] == 0xFF00FF00)
+
+            print("Acknowledged: %s" % ("True" if acknowledged else "False"))
+
+        self.sent = 0
+        self.received = 0
+
+    def close(self):
+        self.target.write32(self.base + 0x0, 0x00000000)
+        self.target.write32(self.base + 0x4, 0x00000000)
+        self.target.write32(self.base + 0x8, 0x00000000)
+        self.target.write32(self.base + 0xC, 0x00000000)
+        return self.sent, self.received
+
+    def send(self, data):
+        self.target.write_memory_block32(self.base + 0x10, byte_list_to_u32le_list(data))
+        self.target.write32(self.base + 0x0, 0x12121212)
+        self.sent += len(data)
+
+
+if __name__ == "__main__":
+    if len(sys.argv) > 1:
+        adac_acs = ADAC_ACS(PORT=int(sys.argv[1]))
+    else:
+        adac_acs = ADAC_ACS()
+    adac_acs.create_server_socket()
+    session_args = {
+        "unique_id": None,
+        "frequency": 10000000,  # 10 MHz
+    }
+
+    adac_acs.base = 0x30000000
+    session_args['connect_mode'] = "pre-reset"
+
+    while True:
+        with ConnectHelper.session_with_chosen_probe(**session_args) as session:
+            adac_acs.target = session.board.target
+            adac_acs.connect()
+            while True:
+                try:
+                    data_received, address = adac_acs.server_socket.recvfrom(4096)
+                    length = len(data_received)
+                    print("Data received from adac acs : length : %d, data : %s"%(length, str(data_received.hex())))
+                    adac_acs.send(data_received)
+                    head, data = adac_acs.receive()
+                    adac_acs.server_socket.sendto(head, address)
+                    print("Header sent to adac acs : length : %d, data : %s"%(len(head), str(head.hex())))
+                    adac_acs.server_socket.sendto(data, address)
+                    print("Data sent to adac acs : length : %d, data : %s"%(len(data), str(data.hex())))
+                except Exception as e:
+                    continue
+
+            adac_acs.close()
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/include/platform.h b/secure-debug/platform/hosts/musca_b1/memw_pyocd/include/platform.h
similarity index 79%
copy from secure-debug/platform/hosts/hst_sdbg_stdc/include/platform.h
copy to secure-debug/platform/hosts/musca_b1/memw_pyocd/include/platform.h
index 2df84d9..d390ac9 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/include/platform.h
+++ b/secure-debug/platform/hosts/musca_b1/memw_pyocd/include/platform.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,8 +15,8 @@
  * limitations under the License.
 **/
 
-#ifndef PSA_ADAC_PLATFORM_H
-#define PSA_ADAC_PLATFORM_H
+#ifndef PSA_ADAC_HOST_PLATFORM_H
+#define PSA_ADAC_HOST_PLATFORM_H
 
 #include <stdint.h>
 #include <stddef.h>
@@ -34,4 +34,9 @@
 void platform_init(void);
 void psa_adac_platform_init(void);
 
-#endif //PSA_ADAC_PLATFORM_H
+typedef struct {
+    char *hostname;
+    int port_num;
+} udp_socket_desc_t;
+
+#endif //PSA_HOST_ADAC_PLATFORM_H
diff --git a/secure-debug/platform/hosts/hst_sdbg_stdc/include/psa_adac_platform.h b/secure-debug/platform/hosts/musca_b1/memw_pyocd/include/psa_adac_platform.h
similarity index 92%
copy from secure-debug/platform/hosts/hst_sdbg_stdc/include/psa_adac_platform.h
copy to secure-debug/platform/hosts/musca_b1/memw_pyocd/include/psa_adac_platform.h
index 5e4e272..aaad673 100644
--- a/secure-debug/platform/hosts/hst_sdbg_stdc/include/psa_adac_platform.h
+++ b/secure-debug/platform/hosts/musca_b1/memw_pyocd/include/psa_adac_platform.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/secure-debug/platform/hosts/musca_b1/memw_pyocd/src/main.c b/secure-debug/platform/hosts/musca_b1/memw_pyocd/src/main.c
new file mode 100644
index 0000000..17a92cf
--- /dev/null
+++ b/secure-debug/platform/hosts/musca_b1/memw_pyocd/src/main.c
@@ -0,0 +1,56 @@
+/** @file
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+// Client side implementation of UDP client-server model
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "pal_interfaces.h"
+#include "platform.h"
+
+#define PORT     7777
+
+int32_t val_entry(void);
+
+extern uint8_t buffer[4096];
+uint8_t buffer[4096];
+char *key_file, *chain_file;
+
+// Driver code
+int main(int argc, char *argv[])
+{
+	char *hostname;
+	int portno;
+    udp_socket_desc_t sock_desc;
+
+    if (argc < 5) {
+		printf("Usage:\n\tpsa_adac_test <keyfile> <chainfile> <hostname> <port>\n\n");
+        exit(-1);
+    }
+
+    key_file = argv[1];
+    chain_file = argv[2];
+    sock_desc.hostname = argv[3];
+    sock_desc.port_num = atoi(argv[4]);
+
+    msg_interface_init((void *) &sock_desc, buffer, sizeof(buffer));
+
+    val_entry();
+    msg_interface_free(NULL);
+
+    return 0;
+}
diff --git a/secure-debug/platform/hosts/musca_b1/memw_pyocd/src/pal_interfaces.c b/secure-debug/platform/hosts/musca_b1/memw_pyocd/src/pal_interfaces.c
new file mode 100644
index 0000000..3a6c4d3
--- /dev/null
+++ b/secure-debug/platform/hosts/musca_b1/memw_pyocd/src/pal_interfaces.c
@@ -0,0 +1,128 @@
+/** @file
+ * Copyright (c) 2022, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "platform.h"
+#include <pal_interfaces.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if !defined(_MSC_VER)
+    #include <unistd.h>
+#else // !defined(_MSC_VER)
+    #include <io.h>
+
+    // Disable warning about POSIX function names.
+    #pragma warning(disable : 4996)
+#endif // !defined(_MSC_VER)
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+
+#define PAL_STATUS_UNSUPPORTED_FUNC      0xFF
+
+typedef enum {
+    PAL_STATUS_SUCCESS = 0x0,
+    PAL_STATUS_ERROR   = 0x80
+} pal_status_t;
+
+static int sockfd;
+static struct sockaddr_in serveraddr;
+static struct hostent *server;
+
+int pal_print(const char *str, int32_t data)
+{
+    if (printf(str, data) < 0)
+    {
+        return PAL_STATUS_ERROR;
+    }
+    return PAL_STATUS_SUCCESS;
+}
+
+void pal_terminate_simulation(void)
+{
+    ;
+}
+
+int pal_system_reset(void)
+{
+    return PAL_STATUS_UNSUPPORTED_FUNC;
+}
+
+int pal_msg_interface_init(void *ctx)
+{
+    udp_socket_desc_t *desc = NULL;
+
+    if (ctx == NULL)
+        return -1;
+    else
+        desc = (udp_socket_desc_t *)(ctx);
+
+    // Creating socket file descriptor
+    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
+    if (sockfd < 0) {
+        perror("socket creation failed");
+        exit(-1);
+    }
+
+    // gethostbyname: get the server's DNS entry
+    server = gethostbyname(desc->hostname);
+    if (server == NULL) {
+        fprintf(stderr, "ERROR, no such host as %s\n", desc->hostname);
+        exit(-1);
+    }
+
+    // Build the server's Internet address
+    bzero((char *) &serveraddr, sizeof(serveraddr));
+    serveraddr.sin_family = AF_INET;
+    bcopy((char *)server->h_addr, (char *)&serveraddr.sin_addr.s_addr, server->h_length);
+    serveraddr.sin_port = htons(desc->port_num);
+
+    return 0;
+}
+
+int pal_msg_interface_free(void *ctx)
+{
+    close(sockfd);
+    return 0;
+}
+
+int pal_message_send(uint8_t buffer[], size_t size)
+{
+    sendto(sockfd, (const char *)buffer, size, 0, (const struct sockaddr *) &serveraddr,
+                                                   sizeof(serveraddr));
+    return (int)size;
+}
+
+int pal_message_receive(uint8_t buffer[], size_t size)
+{
+    int n = 0, len = 0;
+	do {
+		n = recvfrom(sockfd, (char *)buffer, 4096, MSG_WAITALL,
+                             (struct sockaddr *) &serveraddr, &len);
+	} while (n == 0);
+
+	if (len < 0) {
+		close(sockfd);
+		exit(-1);
+	}
+	return size;
+}
+
diff --git a/secure-debug/adac_ats_alpha1.patch b/secure-debug/psa_adac_ats.patch
similarity index 100%
rename from secure-debug/adac_ats_alpha1.patch
rename to secure-debug/psa_adac_ats.patch
diff --git a/secure-debug/val/include/val.h b/secure-debug/val/include/val.h
index 4082c5c..4ec7de6 100644
--- a/secure-debug/val/include/val.h
+++ b/secure-debug/val/include/val.h
@@ -138,8 +138,15 @@
         {                                                                           \
             val->print(PRINT_ERROR, "\tFailed at Checkpoint: %d\n", checkpoint);    \
             val->print(PRINT_ERROR, "\tActual: %d\n", arg1);                        \
-            val->print(PRINT_ERROR, "\tExpected: %d", status1);                     \
-            val->print(PRINT_ERROR, "or %d\n", status2);                            \
+            if ((status1) != (status2))                                             \
+            {                                                                       \
+                val->print(PRINT_ERROR, "\tExpected: %d", status1);                 \
+                val->print(PRINT_ERROR, "or %d\n", status2);                        \
+            }                                                                       \
+            else                                                                    \
+            {                                                                       \
+                val->print(PRINT_ERROR, "\tExpected: %d\n", status1);               \
+            }                                                                       \
             return 1;                                                               \
         }                                                                           \
     } while (0)
diff --git a/secure-debug/val/include/val_entry.h b/secure-debug/val/include/val_entry.h
index 6484dc6..4403599 100644
--- a/secure-debug/val/include/val_entry.h
+++ b/secure-debug/val/include/val_entry.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@
 #include "val.h"
 
 #define PSA_ACS_MAJOR_VER    0
-#define PSA_ACS_MINOR_VER    6
+#define PSA_ACS_MINOR_VER    8
 
 /**
     @brief    - PSA Test Suite C main function, does VAL init and calls test dispatcher
diff --git a/secure-debug/val/src/val_entry.c b/secure-debug/val/src/val_entry.c
index fdfbcc9..4e18c68 100644
--- a/secure-debug/val/src/val_entry.c
+++ b/secure-debug/val/src/val_entry.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2021 Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -40,7 +40,7 @@
     /* Compliance header print */
     if (test_id == VAL_INVALID_TEST_ID)
     {
-        val_print(PRINT_ALWAYS, "\n***** PSA Architecture Test Suite - Version %d.",
+        val_print(PRINT_ALWAYS, "\n***** PSA ADAC Architecture Test Suite - Version %d.",
                                                                          PSA_ACS_MAJOR_VER);
         val_print(PRINT_ALWAYS, "%d *****\n", PSA_ACS_MINOR_VER);
     }
@@ -55,9 +55,3 @@
 
     return status;
 }
-
-//int main()
-//{
-//	val_entry();
-//	return 0;
-//}