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