mirror of https://github.com/ARMmbed/mbed-os.git
Tests
parent
642fce5022
commit
d2025b7150
|
@ -26,3 +26,18 @@ psa_its_status_t test_psa_its_reset(void)
|
|||
{
|
||||
return test_psa_its_reset_impl();
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver(uint32_t major, uint32_t minor)
|
||||
{
|
||||
return test_psa_its_set_ver_impl(major, minor);
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver(uint32_t *major, uint32_t *minor)
|
||||
{
|
||||
return test_psa_its_get_ver_impl(major, minor);
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_deinit(void)
|
||||
{
|
||||
return test_psa_its_deinit_impl();
|
||||
}
|
||||
|
|
|
@ -18,31 +18,37 @@
|
|||
#include <stdlib.h>
|
||||
#include "psa_prot_internal_storage.h"
|
||||
#include "test_pits_impl.h"
|
||||
#include "pits_impl.h"
|
||||
#include "pits_version_impl.h"
|
||||
#include "kv_config.h"
|
||||
#include "KVMap.h"
|
||||
#include "KVStore.h"
|
||||
#include "mbed_error.h"
|
||||
|
||||
using namespace mbed;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
using namespace mbed;
|
||||
void its_deinit(void);
|
||||
|
||||
#define STR_EXPAND(tok) #tok
|
||||
static KVStore *get_instance(void)
|
||||
{
|
||||
int kv_status = kv_init_storage_config();
|
||||
if (kv_status != MBED_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
KVMap &kv_map = KVMap::get_instance();
|
||||
return kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV));
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_reset_impl(void)
|
||||
{
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
|
||||
int kv_status = kv_init_storage_config();
|
||||
if (kv_status != MBED_SUCCESS) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
KVMap &kv_map = KVMap::get_instance();
|
||||
KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV));
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
@ -54,6 +60,49 @@ psa_its_status_t test_psa_its_reset_impl(void)
|
|||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver_impl(uint32_t major, uint32_t minor)
|
||||
{
|
||||
its_version_t ver = {major, minor};
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
if (kvstore->set(ITS_VERSION_KEY, &ver, sizeof(ver), 0) != MBED_SUCCESS) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver_impl(uint32_t *major, uint32_t *minor)
|
||||
{
|
||||
its_version_t ver = {0, 0};
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
if (kvstore->get(ITS_VERSION_KEY, &ver, sizeof(ver)) != MBED_SUCCESS) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
} else {
|
||||
*major = ver.major;
|
||||
*minor = ver.minor;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_deinit_impl(void)
|
||||
{
|
||||
its_deinit();
|
||||
return PSA_ITS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef __PITS_IMPL_H__
|
||||
#define __PITS_IMPL_H__
|
||||
#ifndef __TEST_PITS_IMPL_H__
|
||||
#define __TEST_PITS_IMPL_H__
|
||||
|
||||
#include "psa_prot_internal_storage.h"
|
||||
|
||||
|
@ -26,9 +26,13 @@ extern "C"
|
|||
#endif
|
||||
|
||||
psa_its_status_t test_psa_its_reset_impl(void);
|
||||
psa_its_status_t test_psa_its_set_ver_impl(uint32_t major, uint32_t minor);
|
||||
psa_its_status_t test_psa_its_get_ver_impl(uint32_t *major, uint32_t *minor);
|
||||
psa_its_status_t test_psa_its_deinit_impl(void);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __PITS_IMPL_H__
|
||||
#endif // __TEST_PITS_IMPL_H__
|
||||
|
|
|
@ -35,3 +35,61 @@ psa_its_status_t test_psa_its_reset(void)
|
|||
psa_close(conn);
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver(uint32_t major, uint32_t minor)
|
||||
{
|
||||
psa_handle_t conn = psa_connect(TEST_PSA_ITS_SET_VER, 1);
|
||||
if (conn <= PSA_NULL_HANDLE) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_invec_t msg[2] = {
|
||||
{&major, sizeof(major)},
|
||||
{&minor, sizeof(minor)}
|
||||
};
|
||||
|
||||
psa_error_t status = psa_call(conn, msg, 2, NULL, 0);
|
||||
if (status == PSA_DROP_CONNECTION) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_close(conn);
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver(uint32_t *major, uint32_t *minor)
|
||||
{
|
||||
psa_handle_t conn = psa_connect(TEST_PSA_ITS_GET_VER, 1);
|
||||
if (conn <= PSA_NULL_HANDLE) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_outvec_t resp[2] = {
|
||||
{major, sizeof(*major)},
|
||||
{minor, sizeof(*minor)}
|
||||
};
|
||||
|
||||
psa_error_t status = psa_call(conn, NULL, 0, resp, 2);
|
||||
if (status == PSA_DROP_CONNECTION) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_close(conn);
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_deinit(void)
|
||||
{
|
||||
psa_handle_t conn = psa_connect(TEST_PSA_ITS_DEINIT, 1);
|
||||
if (conn <= PSA_NULL_HANDLE) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_error_t status = psa_call(conn, NULL, 0, NULL, 0);
|
||||
if (status == PSA_DROP_CONNECTION) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_close(conn);
|
||||
return status;
|
||||
}
|
||||
|
|
|
@ -64,6 +64,42 @@ spm_rot_service_t test_its_reset_rot_services[TEST_ITS_RESET_ROT_SRV_COUNT] = {
|
|||
.tail = NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
.sid = TEST_PSA_ITS_SET_VER,
|
||||
.mask = TEST_PSA_ITS_SET_VER_MSK,
|
||||
.partition = NULL,
|
||||
.min_version = 1,
|
||||
.min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED,
|
||||
.allow_nspe = true,
|
||||
.queue = {
|
||||
.head = NULL,
|
||||
.tail = NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
.sid = TEST_PSA_ITS_GET_VER,
|
||||
.mask = TEST_PSA_ITS_GET_VER_MSK,
|
||||
.partition = NULL,
|
||||
.min_version = 1,
|
||||
.min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED,
|
||||
.allow_nspe = true,
|
||||
.queue = {
|
||||
.head = NULL,
|
||||
.tail = NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
.sid = TEST_PSA_ITS_DEINIT,
|
||||
.mask = TEST_PSA_ITS_DEINIT_MSK,
|
||||
.partition = NULL,
|
||||
.min_version = 1,
|
||||
.min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED,
|
||||
.allow_nspe = true,
|
||||
.queue = {
|
||||
.head = NULL,
|
||||
.tail = NULL
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
#define TEST_ITS_RESET_ID 11
|
||||
|
||||
#define TEST_ITS_RESET_ROT_SRV_COUNT (1UL)
|
||||
#define TEST_ITS_RESET_ROT_SRV_COUNT (4UL)
|
||||
#define TEST_ITS_RESET_EXT_ROT_SRV_COUNT (0UL)
|
||||
|
||||
/* TEST_ITS_RESET event flags */
|
||||
|
@ -42,9 +42,18 @@
|
|||
|
||||
#define TEST_PSA_ITS_RESET_MSK_POS (4UL)
|
||||
#define TEST_PSA_ITS_RESET_MSK (1UL << TEST_PSA_ITS_RESET_MSK_POS)
|
||||
#define TEST_PSA_ITS_SET_VER_MSK_POS (5UL)
|
||||
#define TEST_PSA_ITS_SET_VER_MSK (1UL << TEST_PSA_ITS_SET_VER_MSK_POS)
|
||||
#define TEST_PSA_ITS_GET_VER_MSK_POS (6UL)
|
||||
#define TEST_PSA_ITS_GET_VER_MSK (1UL << TEST_PSA_ITS_GET_VER_MSK_POS)
|
||||
#define TEST_PSA_ITS_DEINIT_MSK_POS (7UL)
|
||||
#define TEST_PSA_ITS_DEINIT_MSK (1UL << TEST_PSA_ITS_DEINIT_MSK_POS)
|
||||
|
||||
#define TEST_ITS_RESET_WAIT_ANY_SID_MSK (\
|
||||
TEST_PSA_ITS_RESET_MSK)
|
||||
TEST_PSA_ITS_RESET_MSK | \
|
||||
TEST_PSA_ITS_SET_VER_MSK | \
|
||||
TEST_PSA_ITS_GET_VER_MSK | \
|
||||
TEST_PSA_ITS_DEINIT_MSK)
|
||||
|
||||
|
||||
#endif // PSA_TEST_ITS_RESET_PARTITION_H
|
||||
|
|
|
@ -18,31 +18,37 @@
|
|||
#include <stdlib.h>
|
||||
#include "psa_prot_internal_storage.h"
|
||||
#include "test_pits_impl.h"
|
||||
#include "pits_impl.h"
|
||||
#include "pits_version_impl.h"
|
||||
#include "kv_config.h"
|
||||
#include "KVMap.h"
|
||||
#include "KVStore.h"
|
||||
#include "mbed_error.h"
|
||||
|
||||
using namespace mbed;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
using namespace mbed;
|
||||
void its_deinit(void);
|
||||
|
||||
#define STR_EXPAND(tok) #tok
|
||||
static KVStore *get_instance(void)
|
||||
{
|
||||
int kv_status = kv_init_storage_config();
|
||||
if (kv_status != MBED_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
KVMap &kv_map = KVMap::get_instance();
|
||||
return kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV));
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_reset_impl(void)
|
||||
{
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
|
||||
int kv_status = kv_init_storage_config();
|
||||
if (kv_status != MBED_SUCCESS) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
KVMap &kv_map = KVMap::get_instance();
|
||||
KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV));
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
@ -54,6 +60,49 @@ psa_its_status_t test_psa_its_reset_impl(void)
|
|||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver_impl(uint32_t major, uint32_t minor)
|
||||
{
|
||||
its_version_t ver = {major, minor};
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
if (kvstore->set(ITS_VERSION_KEY, &ver, sizeof(ver), 0) != MBED_SUCCESS) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver_impl(uint32_t *major, uint32_t *minor)
|
||||
{
|
||||
its_version_t ver = {0, 0};
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
if (kvstore->get(ITS_VERSION_KEY, &ver, sizeof(ver)) != MBED_SUCCESS) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
} else {
|
||||
*major = ver.major;
|
||||
*minor = ver.minor;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_deinit_impl(void)
|
||||
{
|
||||
its_deinit();
|
||||
return PSA_ITS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -35,6 +35,7 @@ void test_pits_entry(void *ptr)
|
|||
uint32_t signals = 0;
|
||||
psa_msg_t msg = {0};
|
||||
psa_status_t status = PSA_SUCCESS;
|
||||
uint32_t major, minor;
|
||||
|
||||
while (1) {
|
||||
signals = psa_wait_any(PSA_BLOCK);
|
||||
|
@ -55,6 +56,67 @@ void test_pits_entry(void *ptr)
|
|||
}
|
||||
}
|
||||
|
||||
psa_reply(msg.handle, status);
|
||||
}
|
||||
if ((signals & TEST_PSA_ITS_SET_VER_MSK) != 0) {
|
||||
psa_get(TEST_PSA_ITS_SET_VER_MSK, &msg);
|
||||
switch (msg.type) {
|
||||
case PSA_IPC_CONNECT: //fallthrough
|
||||
case PSA_IPC_DISCONNECT: {
|
||||
break;
|
||||
}
|
||||
case PSA_IPC_CALL: {
|
||||
psa_read(msg.handle, 0, &major, sizeof(major));
|
||||
psa_read(msg.handle, 1, &minor, sizeof(minor));
|
||||
status = test_psa_its_set_ver_impl(major, minor);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
SPM_PANIC("Unexpected message type %d!", (int)(msg.type));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
psa_reply(msg.handle, status);
|
||||
}
|
||||
if ((signals & TEST_PSA_ITS_GET_VER_MSK) != 0) {
|
||||
psa_get(TEST_PSA_ITS_GET_VER_MSK, &msg);
|
||||
switch (msg.type) {
|
||||
case PSA_IPC_CONNECT: //fallthrough
|
||||
case PSA_IPC_DISCONNECT: {
|
||||
break;
|
||||
}
|
||||
case PSA_IPC_CALL: {
|
||||
status = test_psa_its_set_ver_impl(&major, &minor);
|
||||
psa_write(msg.handle, 0, &major, sizeof(major));
|
||||
psa_write(msg.handle, 1, &minor, sizeof(minor));
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
SPM_PANIC("Unexpected message type %d!", (int)(msg.type));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
psa_reply(msg.handle, status);
|
||||
}
|
||||
if ((signals & TEST_PSA_ITS_DEINIT_MSK) != 0) {
|
||||
psa_get(TEST_PSA_ITS_DEINIT_MSK, &msg);
|
||||
switch (msg.type) {
|
||||
case PSA_IPC_CONNECT: //fallthrough
|
||||
case PSA_IPC_DISCONNECT: {
|
||||
break;
|
||||
}
|
||||
case PSA_IPC_CALL: {
|
||||
status = test_psa_its_deinit_impl();
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
SPM_PANIC("Unexpected message type %d!", (int)(msg.type));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
psa_reply(msg.handle, status);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,5 +27,8 @@
|
|||
#define PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H
|
||||
|
||||
#define TEST_PSA_ITS_RESET 0x00011A04
|
||||
#define TEST_PSA_ITS_SET_VER 0x00011A05
|
||||
#define TEST_PSA_ITS_GET_VER 0x00011A06
|
||||
#define TEST_PSA_ITS_DEINIT 0x00011A07
|
||||
|
||||
#endif // PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H
|
||||
|
|
|
@ -34,8 +34,6 @@ extern "C"
|
|||
/**
|
||||
* \brief Remove the provided key and its associated data from the storage
|
||||
*
|
||||
* \param[in] uid The uid value
|
||||
*
|
||||
* \return A status indicating the success/failure of the operation
|
||||
*
|
||||
* \retval PSA_ITS_SUCCESS The operation completed successfully
|
||||
|
@ -43,6 +41,15 @@ extern "C"
|
|||
*/
|
||||
psa_its_status_t test_psa_its_reset(void);
|
||||
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver(uint32_t major, uint32_t minor);
|
||||
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver(uint32_t *major, uint32_t *minor);
|
||||
|
||||
|
||||
psa_its_status_t test_psa_its_deinit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,21 +1,45 @@
|
|||
{
|
||||
"name": "TEST_ITS_RESET",
|
||||
"type": "APPLICATION-ROT",
|
||||
"priority": "NORMAL",
|
||||
"id": "0x0000000B",
|
||||
"entry_point": "test_pits_entry",
|
||||
"stack_size": "0x400",
|
||||
"heap_size": "0x400",
|
||||
"services": [{
|
||||
"name": "TEST_PSA_ITS_RESET",
|
||||
"identifier": "0x00011A04",
|
||||
"signal": "TEST_PSA_ITS_RESET_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
}
|
||||
],
|
||||
"source_files": [
|
||||
"COMPONENT_SPE/test_pits_reset_partition.c"
|
||||
]
|
||||
}
|
||||
"name": "TEST_ITS_RESET",
|
||||
"type": "APPLICATION-ROT",
|
||||
"priority": "NORMAL",
|
||||
"id": "0x0000000B",
|
||||
"entry_point": "test_pits_entry",
|
||||
"stack_size": "0x400",
|
||||
"heap_size": "0x400",
|
||||
"services": [{
|
||||
"name": "TEST_PSA_ITS_RESET",
|
||||
"identifier": "0x00011A04",
|
||||
"signal": "TEST_PSA_ITS_RESET_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
},
|
||||
{
|
||||
"name": "TEST_PSA_ITS_SET_VER",
|
||||
"identifier": "0x00011A05",
|
||||
"signal": "TEST_PSA_ITS_SET_VER_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
},
|
||||
{
|
||||
"name": "TEST_PSA_ITS_GET_VER",
|
||||
"identifier": "0x00011A06",
|
||||
"signal": "TEST_PSA_ITS_GET_VER_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
},
|
||||
{
|
||||
"name": "TEST_PSA_ITS_DEINIT",
|
||||
"identifier": "0x00011A07",
|
||||
"signal": "TEST_PSA_ITS_DEINIT_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
}
|
||||
],
|
||||
"source_files": [
|
||||
"COMPONENT_SPE/test_pits_reset_partition.c"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -26,3 +26,18 @@ psa_its_status_t test_psa_its_reset(void)
|
|||
{
|
||||
return test_psa_its_reset_impl();
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver(uint32_t major, uint32_t minor)
|
||||
{
|
||||
return test_psa_its_set_ver_impl(major, minor);
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver(uint32_t *major, uint32_t *minor)
|
||||
{
|
||||
return test_psa_its_get_ver_impl(major, minor);
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_deinit(void)
|
||||
{
|
||||
return test_psa_its_deinit_impl();
|
||||
}
|
||||
|
|
|
@ -18,31 +18,37 @@
|
|||
#include <stdlib.h>
|
||||
#include "psa_prot_internal_storage.h"
|
||||
#include "test_pits_impl.h"
|
||||
#include "pits_impl.h"
|
||||
#include "pits_version_impl.h"
|
||||
#include "kv_config.h"
|
||||
#include "KVMap.h"
|
||||
#include "KVStore.h"
|
||||
#include "mbed_error.h"
|
||||
|
||||
using namespace mbed;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
using namespace mbed;
|
||||
void its_deinit(void);
|
||||
|
||||
#define STR_EXPAND(tok) #tok
|
||||
static KVStore *get_instance(void)
|
||||
{
|
||||
int kv_status = kv_init_storage_config();
|
||||
if (kv_status != MBED_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
KVMap &kv_map = KVMap::get_instance();
|
||||
return kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV));
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_reset_impl(void)
|
||||
{
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
|
||||
int kv_status = kv_init_storage_config();
|
||||
if (kv_status != MBED_SUCCESS) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
KVMap &kv_map = KVMap::get_instance();
|
||||
KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV));
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
@ -54,6 +60,49 @@ psa_its_status_t test_psa_its_reset_impl(void)
|
|||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver_impl(uint32_t major, uint32_t minor)
|
||||
{
|
||||
its_version_t ver = {major, minor};
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
if (kvstore->set(ITS_VERSION_KEY, &ver, sizeof(ver), 0) != MBED_SUCCESS) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver_impl(uint32_t *major, uint32_t *minor)
|
||||
{
|
||||
its_version_t ver = {0, 0};
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
if (kvstore->get(ITS_VERSION_KEY, &ver, sizeof(ver)) != MBED_SUCCESS) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
} else {
|
||||
*major = ver.major;
|
||||
*minor = ver.minor;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_deinit_impl(void)
|
||||
{
|
||||
its_deinit();
|
||||
return PSA_ITS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef __PITS_IMPL_H__
|
||||
#define __PITS_IMPL_H__
|
||||
#ifndef __TEST_PITS_IMPL_H__
|
||||
#define __TEST_PITS_IMPL_H__
|
||||
|
||||
#include "psa_prot_internal_storage.h"
|
||||
|
||||
|
@ -26,9 +26,13 @@ extern "C"
|
|||
#endif
|
||||
|
||||
psa_its_status_t test_psa_its_reset_impl(void);
|
||||
psa_its_status_t test_psa_its_set_ver_impl(uint32_t major, uint32_t minor);
|
||||
psa_its_status_t test_psa_its_get_ver_impl(uint32_t *major, uint32_t *minor);
|
||||
psa_its_status_t test_psa_its_deinit_impl(void);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __PITS_IMPL_H__
|
||||
#endif // __TEST_PITS_IMPL_H__
|
||||
|
|
|
@ -35,3 +35,61 @@ psa_its_status_t test_psa_its_reset(void)
|
|||
psa_close(conn);
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver(uint32_t major, uint32_t minor)
|
||||
{
|
||||
psa_handle_t conn = psa_connect(TEST_PSA_ITS_SET_VER, 1);
|
||||
if (conn <= PSA_NULL_HANDLE) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_invec_t msg[2] = {
|
||||
{&major, sizeof(major)},
|
||||
{&minor, sizeof(minor)}
|
||||
};
|
||||
|
||||
psa_error_t status = psa_call(conn, msg, 2, NULL, 0);
|
||||
if (status == PSA_DROP_CONNECTION) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_close(conn);
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver(uint32_t *major, uint32_t *minor)
|
||||
{
|
||||
psa_handle_t conn = psa_connect(TEST_PSA_ITS_GET_VER, 1);
|
||||
if (conn <= PSA_NULL_HANDLE) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_outvec_t resp[2] = {
|
||||
{major, sizeof(*major)},
|
||||
{minor, sizeof(*minor)}
|
||||
};
|
||||
|
||||
psa_error_t status = psa_call(conn, NULL, 0, resp, 2);
|
||||
if (status == PSA_DROP_CONNECTION) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_close(conn);
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_deinit(void)
|
||||
{
|
||||
psa_handle_t conn = psa_connect(TEST_PSA_ITS_DEINIT, 1);
|
||||
if (conn <= PSA_NULL_HANDLE) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_error_t status = psa_call(conn, NULL, 0, NULL, 0);
|
||||
if (status == PSA_DROP_CONNECTION) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
psa_close(conn);
|
||||
return status;
|
||||
}
|
||||
|
|
|
@ -64,6 +64,42 @@ spm_rot_service_t test_its_reset_rot_services[TEST_ITS_RESET_ROT_SRV_COUNT] = {
|
|||
.tail = NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
.sid = TEST_PSA_ITS_SET_VER,
|
||||
.mask = TEST_PSA_ITS_SET_VER_MSK,
|
||||
.partition = NULL,
|
||||
.min_version = 1,
|
||||
.min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED,
|
||||
.allow_nspe = true,
|
||||
.queue = {
|
||||
.head = NULL,
|
||||
.tail = NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
.sid = TEST_PSA_ITS_GET_VER,
|
||||
.mask = TEST_PSA_ITS_GET_VER_MSK,
|
||||
.partition = NULL,
|
||||
.min_version = 1,
|
||||
.min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED,
|
||||
.allow_nspe = true,
|
||||
.queue = {
|
||||
.head = NULL,
|
||||
.tail = NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
.sid = TEST_PSA_ITS_DEINIT,
|
||||
.mask = TEST_PSA_ITS_DEINIT_MSK,
|
||||
.partition = NULL,
|
||||
.min_version = 1,
|
||||
.min_version_policy = PSA_MINOR_VERSION_POLICY_RELAXED,
|
||||
.allow_nspe = true,
|
||||
.queue = {
|
||||
.head = NULL,
|
||||
.tail = NULL
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
#define TEST_ITS_RESET_ID 11
|
||||
|
||||
#define TEST_ITS_RESET_ROT_SRV_COUNT (1UL)
|
||||
#define TEST_ITS_RESET_ROT_SRV_COUNT (4UL)
|
||||
#define TEST_ITS_RESET_EXT_ROT_SRV_COUNT (0UL)
|
||||
|
||||
/* TEST_ITS_RESET event flags */
|
||||
|
@ -42,9 +42,18 @@
|
|||
|
||||
#define TEST_PSA_ITS_RESET_MSK_POS (4UL)
|
||||
#define TEST_PSA_ITS_RESET_MSK (1UL << TEST_PSA_ITS_RESET_MSK_POS)
|
||||
#define TEST_PSA_ITS_SET_VER_MSK_POS (5UL)
|
||||
#define TEST_PSA_ITS_SET_VER_MSK (1UL << TEST_PSA_ITS_SET_VER_MSK_POS)
|
||||
#define TEST_PSA_ITS_GET_VER_MSK_POS (6UL)
|
||||
#define TEST_PSA_ITS_GET_VER_MSK (1UL << TEST_PSA_ITS_GET_VER_MSK_POS)
|
||||
#define TEST_PSA_ITS_DEINIT_MSK_POS (7UL)
|
||||
#define TEST_PSA_ITS_DEINIT_MSK (1UL << TEST_PSA_ITS_DEINIT_MSK_POS)
|
||||
|
||||
#define TEST_ITS_RESET_WAIT_ANY_SID_MSK (\
|
||||
TEST_PSA_ITS_RESET_MSK)
|
||||
TEST_PSA_ITS_RESET_MSK | \
|
||||
TEST_PSA_ITS_SET_VER_MSK | \
|
||||
TEST_PSA_ITS_GET_VER_MSK | \
|
||||
TEST_PSA_ITS_DEINIT_MSK)
|
||||
|
||||
|
||||
#endif // PSA_TEST_ITS_RESET_PARTITION_H
|
||||
|
|
|
@ -18,31 +18,37 @@
|
|||
#include <stdlib.h>
|
||||
#include "psa_prot_internal_storage.h"
|
||||
#include "test_pits_impl.h"
|
||||
#include "pits_impl.h"
|
||||
#include "pits_version_impl.h"
|
||||
#include "kv_config.h"
|
||||
#include "KVMap.h"
|
||||
#include "KVStore.h"
|
||||
#include "mbed_error.h"
|
||||
|
||||
using namespace mbed;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
using namespace mbed;
|
||||
void its_deinit(void);
|
||||
|
||||
#define STR_EXPAND(tok) #tok
|
||||
static KVStore *get_instance(void)
|
||||
{
|
||||
int kv_status = kv_init_storage_config();
|
||||
if (kv_status != MBED_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
KVMap &kv_map = KVMap::get_instance();
|
||||
return kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV));
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_reset_impl(void)
|
||||
{
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
|
||||
int kv_status = kv_init_storage_config();
|
||||
if (kv_status != MBED_SUCCESS) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
KVMap &kv_map = KVMap::get_instance();
|
||||
KVStore *kvstore = kv_map.get_internal_kv_instance(STR_EXPAND(MBED_CONF_STORAGE_DEFAULT_KV));
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
@ -54,6 +60,49 @@ psa_its_status_t test_psa_its_reset_impl(void)
|
|||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver_impl(uint32_t major, uint32_t minor)
|
||||
{
|
||||
its_version_t ver = {major, minor};
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
if (kvstore->set(ITS_VERSION_KEY, &ver, sizeof(ver), 0) != MBED_SUCCESS) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver_impl(uint32_t *major, uint32_t *minor)
|
||||
{
|
||||
its_version_t ver = {0, 0};
|
||||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
KVStore *kvstore = get_instance();
|
||||
if (!kvstore) {
|
||||
return PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
}
|
||||
|
||||
if (kvstore->get(ITS_VERSION_KEY, &ver, sizeof(ver)) != MBED_SUCCESS) {
|
||||
status = PSA_ITS_ERROR_STORAGE_FAILURE;
|
||||
} else {
|
||||
*major = ver.major;
|
||||
*minor = ver.minor;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
psa_its_status_t test_psa_its_deinit_impl(void)
|
||||
{
|
||||
its_deinit();
|
||||
return PSA_ITS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -35,6 +35,7 @@ void test_pits_entry(void *ptr)
|
|||
uint32_t signals = 0;
|
||||
psa_msg_t msg = {0};
|
||||
psa_status_t status = PSA_SUCCESS;
|
||||
uint32_t major, minor;
|
||||
|
||||
while (1) {
|
||||
signals = psa_wait_any(PSA_BLOCK);
|
||||
|
@ -55,6 +56,67 @@ void test_pits_entry(void *ptr)
|
|||
}
|
||||
}
|
||||
|
||||
psa_reply(msg.handle, status);
|
||||
}
|
||||
if ((signals & TEST_PSA_ITS_SET_VER_MSK) != 0) {
|
||||
psa_get(TEST_PSA_ITS_SET_VER_MSK, &msg);
|
||||
switch (msg.type) {
|
||||
case PSA_IPC_CONNECT: //fallthrough
|
||||
case PSA_IPC_DISCONNECT: {
|
||||
break;
|
||||
}
|
||||
case PSA_IPC_CALL: {
|
||||
psa_read(msg.handle, 0, &major, sizeof(major));
|
||||
psa_read(msg.handle, 1, &minor, sizeof(minor));
|
||||
status = test_psa_its_set_ver_impl(major, minor);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
SPM_PANIC("Unexpected message type %d!", (int)(msg.type));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
psa_reply(msg.handle, status);
|
||||
}
|
||||
if ((signals & TEST_PSA_ITS_GET_VER_MSK) != 0) {
|
||||
psa_get(TEST_PSA_ITS_GET_VER_MSK, &msg);
|
||||
switch (msg.type) {
|
||||
case PSA_IPC_CONNECT: //fallthrough
|
||||
case PSA_IPC_DISCONNECT: {
|
||||
break;
|
||||
}
|
||||
case PSA_IPC_CALL: {
|
||||
status = test_psa_its_set_ver_impl(&major, &minor);
|
||||
psa_write(msg.handle, 0, &major, sizeof(major));
|
||||
psa_write(msg.handle, 1, &minor, sizeof(minor));
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
SPM_PANIC("Unexpected message type %d!", (int)(msg.type));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
psa_reply(msg.handle, status);
|
||||
}
|
||||
if ((signals & TEST_PSA_ITS_DEINIT_MSK) != 0) {
|
||||
psa_get(TEST_PSA_ITS_DEINIT_MSK, &msg);
|
||||
switch (msg.type) {
|
||||
case PSA_IPC_CONNECT: //fallthrough
|
||||
case PSA_IPC_DISCONNECT: {
|
||||
break;
|
||||
}
|
||||
case PSA_IPC_CALL: {
|
||||
status = test_psa_its_deinit_impl();
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
SPM_PANIC("Unexpected message type %d!", (int)(msg.type));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
psa_reply(msg.handle, status);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,5 +27,8 @@
|
|||
#define PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H
|
||||
|
||||
#define TEST_PSA_ITS_RESET 0x00011A04
|
||||
#define TEST_PSA_ITS_SET_VER 0x00011A05
|
||||
#define TEST_PSA_ITS_GET_VER 0x00011A06
|
||||
#define TEST_PSA_ITS_DEINIT 0x00011A07
|
||||
|
||||
#endif // PSA_TEST_ITS_RESET_PARTITION_ROT_SERVICES_H
|
||||
|
|
|
@ -41,6 +41,15 @@ extern "C"
|
|||
*/
|
||||
psa_its_status_t test_psa_its_reset(void);
|
||||
|
||||
|
||||
psa_its_status_t test_psa_its_set_ver(uint32_t major, uint32_t minor);
|
||||
|
||||
|
||||
psa_its_status_t test_psa_its_get_ver(uint32_t *major, uint32_t *minor);
|
||||
|
||||
|
||||
psa_its_status_t test_psa_its_deinit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,21 +1,45 @@
|
|||
{
|
||||
"name": "TEST_ITS_RESET",
|
||||
"type": "APPLICATION-ROT",
|
||||
"priority": "NORMAL",
|
||||
"id": "0x0000000B",
|
||||
"entry_point": "test_pits_entry",
|
||||
"stack_size": "0x400",
|
||||
"heap_size": "0x400",
|
||||
"services": [{
|
||||
"name": "TEST_PSA_ITS_RESET",
|
||||
"identifier": "0x00011A04",
|
||||
"signal": "TEST_PSA_ITS_RESET_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
}
|
||||
],
|
||||
"source_files": [
|
||||
"COMPONENT_SPE/test_pits_reset_partition.c"
|
||||
]
|
||||
}
|
||||
"name": "TEST_ITS_RESET",
|
||||
"type": "APPLICATION-ROT",
|
||||
"priority": "NORMAL",
|
||||
"id": "0x0000000B",
|
||||
"entry_point": "test_pits_entry",
|
||||
"stack_size": "0x400",
|
||||
"heap_size": "0x400",
|
||||
"services": [{
|
||||
"name": "TEST_PSA_ITS_RESET",
|
||||
"identifier": "0x00011A04",
|
||||
"signal": "TEST_PSA_ITS_RESET_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
},
|
||||
{
|
||||
"name": "TEST_PSA_ITS_SET_VER",
|
||||
"identifier": "0x00011A05",
|
||||
"signal": "TEST_PSA_ITS_SET_VER_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
},
|
||||
{
|
||||
"name": "TEST_PSA_ITS_GET_VER",
|
||||
"identifier": "0x00011A06",
|
||||
"signal": "TEST_PSA_ITS_GET_VER_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
},
|
||||
{
|
||||
"name": "TEST_PSA_ITS_DEINIT",
|
||||
"identifier": "0x00011A07",
|
||||
"signal": "TEST_PSA_ITS_DEINIT_MSK",
|
||||
"non_secure_clients": true,
|
||||
"minor_version": 1,
|
||||
"minor_policy": "RELAXED"
|
||||
}
|
||||
],
|
||||
"source_files": [
|
||||
"COMPONENT_SPE/test_pits_reset_partition.c"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -35,14 +35,14 @@ static void pits_test()
|
|||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
uint8_t write_buff[TEST_BUFF_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
|
||||
uint8_t read_buff[TEST_BUFF_SIZE] = {0};
|
||||
struct psa_its_info_t info = {0, PSA_ITS_WRITE_ONCE_FLAG};
|
||||
struct psa_its_info_t info = {0, PSA_ITS_FLAG_WRITE_ONCE};
|
||||
memset(read_buff, 0, TEST_BUFF_SIZE);
|
||||
|
||||
status = test_psa_its_reset();
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
status = psa_its_get_info(5, &info);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_ERROR_KEY_NOT_FOUND, status);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_ERROR_UID_NOT_FOUND, status);
|
||||
|
||||
status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, 0);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
@ -68,7 +68,7 @@ static void pits_test()
|
|||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
status = psa_its_get_info(5, &info);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_ERROR_KEY_NOT_FOUND, status);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_ERROR_UID_NOT_FOUND, status);
|
||||
}
|
||||
|
||||
static void pits_write_once_test()
|
||||
|
@ -76,29 +76,29 @@ static void pits_write_once_test()
|
|||
psa_its_status_t status = PSA_ITS_SUCCESS;
|
||||
uint8_t write_buff[TEST_BUFF_SIZE] = {0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00};
|
||||
uint8_t read_buff[TEST_BUFF_SIZE] = {0};
|
||||
struct psa_its_info_t info = {0, 0};
|
||||
struct psa_its_info_t info = {0, PSA_ITS_FLAG_NONE};
|
||||
|
||||
status = test_psa_its_reset();
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
status = psa_its_get_info(5, &info);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_ERROR_KEY_NOT_FOUND, status);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_ERROR_UID_NOT_FOUND, status);
|
||||
|
||||
status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, PSA_ITS_WRITE_ONCE_FLAG);
|
||||
status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, PSA_ITS_FLAG_WRITE_ONCE);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
info.size = 0;
|
||||
info.flags = 0;
|
||||
info.flags = PSA_ITS_FLAG_NONE;
|
||||
status = psa_its_get_info(5, &info);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
TEST_ASSERT_EQUAL(TEST_BUFF_SIZE, info.size);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_WRITE_ONCE_FLAG, info.flags);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_FLAG_WRITE_ONCE, info.flags);
|
||||
|
||||
status = psa_its_get(5, 0, TEST_BUFF_SIZE, read_buff);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
TEST_ASSERT_EQUAL_MEMORY(write_buff, read_buff, TEST_BUFF_SIZE);
|
||||
|
||||
status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, PSA_ITS_WRITE_ONCE_FLAG);
|
||||
status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, PSA_ITS_FLAG_WRITE_ONCE);
|
||||
TEST_ASSERT_NOT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
status = psa_its_set(5, TEST_BUFF_SIZE, write_buff, 0);
|
||||
|
@ -108,11 +108,56 @@ static void pits_write_once_test()
|
|||
TEST_ASSERT_NOT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
info.size = 0;
|
||||
info.flags = 0;
|
||||
info.flags = PSA_ITS_FLAG_NONE;
|
||||
status = psa_its_get_info(5, &info);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
TEST_ASSERT_EQUAL(TEST_BUFF_SIZE, info.size);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_WRITE_ONCE_FLAG, info.flags);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_FLAG_WRITE_ONCE, info.flags);
|
||||
|
||||
status = test_psa_its_reset();
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
}
|
||||
|
||||
static void pits_migrate_version(void)
|
||||
{
|
||||
uint32_t major = 0;
|
||||
uint32_t minor = 1;
|
||||
int kv_status = 0;
|
||||
struct psa_its_info_t info = {0, PSA_ITS_FLAG_NONE};
|
||||
psa_its_status_t status = test_psa_its_reset();
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
// Setting fake ITS old version
|
||||
// Expect migration to update to current version
|
||||
|
||||
status = test_psa_its_deinit();
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
status = test_psa_its_set_ver(major, minor);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
status = psa_its_get_info(5, &info);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_ERROR_UID_NOT_FOUND, status);
|
||||
|
||||
status = test_psa_its_get_ver(&major, &minor);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_API_VERSION_MAJOR, major);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_API_VERSION_MINOR, minor);
|
||||
|
||||
// De-initializes ITS's KVStore instance with existing version file
|
||||
// Expects the version to remain at current version
|
||||
major = 0;
|
||||
minor = 0;
|
||||
status = test_psa_its_deinit();
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
||||
status = psa_its_get_info(5, &info);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_ERROR_UID_NOT_FOUND, status);
|
||||
|
||||
status = test_psa_its_get_ver(&major, &minor);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_API_VERSION_MAJOR, major);
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_API_VERSION_MINOR, minor);
|
||||
|
||||
status = test_psa_its_reset();
|
||||
TEST_ASSERT_EQUAL(PSA_ITS_SUCCESS, status);
|
||||
|
@ -121,6 +166,7 @@ static void pits_write_once_test()
|
|||
Case cases[] = {
|
||||
Case("PSA prot internal storage - Basic", pits_test),
|
||||
Case("PSA prot internal storage - Write-once", pits_write_once_test),
|
||||
Case("PSA prot internal storage - Version migration", pits_migrate_version),
|
||||
};
|
||||
|
||||
utest::v1::status_t greentea_test_setup(const size_t number_of_cases)
|
||||
|
|
Loading…
Reference in New Issue