samples: Add a sample for running PSA tests
Use the Kconfigs in TFM to enable the different suites. Signed-off-by: Øyvind Rønningstad <oyvind.ronningstad@nordicsemi.no>
This commit is contained in:
parent
b220374633
commit
ef5ed3f88b
5 changed files with 164 additions and 0 deletions
13
samples/tfm_integration/tfm_psa_test/CMakeLists.txt
Normal file
13
samples/tfm_integration/tfm_psa_test/CMakeLists.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
#
|
||||
# Copyright (c) 2021 Nordic Semiconductor ASA
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
cmake_minimum_required(VERSION 3.13.1)
|
||||
|
||||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||
|
||||
project(tfm_psa_storage_test)
|
||||
|
||||
target_sources(app PRIVATE src/main.c)
|
99
samples/tfm_integration/tfm_psa_test/README.rst
Normal file
99
samples/tfm_integration/tfm_psa_test/README.rst
Normal file
|
@ -0,0 +1,99 @@
|
|||
.. _tfm_psa_test:
|
||||
|
||||
TF-M Platform Security Architecture Test Sample
|
||||
###############################################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
Run PSA test suites tests with Zephyr and TFM.
|
||||
|
||||
The PSA tests are implemented in the psa-arch-tests repo: https://github.com/ARM-software/psa-arch-tests
|
||||
|
||||
This sample is supported for platforms that have a port in psa-arch-tests.
|
||||
See sample.yaml for a list of supported platforms.
|
||||
|
||||
Building and Running
|
||||
********************
|
||||
|
||||
You must choose a suite via the CONFIG_TFM_PSA_TEST_* configs.
|
||||
|
||||
On Target
|
||||
=========
|
||||
|
||||
Refer to :ref:`tfm_ipc` for detailed instructions.
|
||||
|
||||
On QEMU:
|
||||
========
|
||||
|
||||
Refer to :ref:`tfm_ipc` for detailed instructions.
|
||||
Following is an example based on ``west build``
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ west build samples/tfm_integration/tfm_psa_test/ -p -b mps2_an521_nonsecure -t run -- -DCONFIG_TFM_PSA_TEST_STORAGE=y
|
||||
|
||||
Sample Output
|
||||
=============
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
*** Booting Zephyr OS build zephyr-v2.5.0-456-g06f4da459a99 ***
|
||||
|
||||
***** PSA Architecture Test Suite - Version 1.0 *****
|
||||
|
||||
Running.. Storage Suite
|
||||
******************************************
|
||||
|
||||
TEST: 401 | DESCRIPTION: UID not found check
|
||||
[Info] Executing tests from non-secure
|
||||
|
||||
[Info] Executing ITS tests
|
||||
[Check 1] Call get API for UID 6 which is not set
|
||||
[Check 2] Call get_info API for UID 6 which is not set
|
||||
[Check 3] Call remove API for UID 6 which is not set
|
||||
[Check 4] Call get API for UID 6 which is removed
|
||||
[Check 5] Call get_info API for UID 6 which is removed
|
||||
[Check 6] Call remove API for UID 6 which is removed
|
||||
Set storage for UID 6
|
||||
[Check 7] Call get API for different UID 5
|
||||
[Check 8] Call get_info API for different UID 5
|
||||
[Check 9] Call remove API for different UID 5
|
||||
|
||||
[Info] Executing PS tests
|
||||
[Check 1] Call get API for UID 6 which is not set
|
||||
[Check 2] Call get_info API for UID 6 which is not set
|
||||
[Check 3] Call remove API for UID 6 which is not set
|
||||
[Check 4] Call get API for UID 6 which is removed
|
||||
[Check 5] Call get_info API for UID 6 which is removed
|
||||
[Check 6] Call remove API for UID 6 which is removed
|
||||
Set storage for UID 6
|
||||
[Check 7] Call get API for different UID 5
|
||||
[Check 8] Call get_info API for different UID 5
|
||||
[Check 9] Call remove API for different UID 5
|
||||
|
||||
TEST RESULT: PASSED
|
||||
|
||||
******************************************
|
||||
|
||||
[...]
|
||||
|
||||
TEST: 417 | DESCRIPTION: Storage assest capacity modification check
|
||||
[Info] Executing tests from non-secure
|
||||
|
||||
[Info] Executing PS tests
|
||||
Test Case skipped as Optional PS APIs not are supported.
|
||||
|
||||
TEST RESULT: SKIPPED (Skip Code=0x0000002B)
|
||||
|
||||
******************************************
|
||||
|
||||
************ Storage Suite Report **********
|
||||
TOTAL TESTS : 17
|
||||
TOTAL PASSED : 11
|
||||
TOTAL SIM ERROR : 0
|
||||
TOTAL FAILED : 0
|
||||
TOTAL SKIPPED : 6
|
||||
******************************************
|
||||
|
||||
Entering standby..
|
10
samples/tfm_integration/tfm_psa_test/prj.conf
Normal file
10
samples/tfm_integration/tfm_psa_test/prj.conf
Normal file
|
@ -0,0 +1,10 @@
|
|||
#
|
||||
# Copyright (c) 2021 Nordic Semiconductor ASA
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
CONFIG_BUILD_WITH_TFM=y
|
||||
|
||||
# Needed for CRYPTO and INITIAL_ATTESTATION
|
||||
CONFIG_MAIN_STACK_SIZE=4096
|
19
samples/tfm_integration/tfm_psa_test/sample.yaml
Normal file
19
samples/tfm_integration/tfm_psa_test/sample.yaml
Normal file
|
@ -0,0 +1,19 @@
|
|||
common:
|
||||
tags: tfm
|
||||
platform_allow: mps2_an521_nonsecure v2m_musca_s1_nonsecure
|
||||
nrf5340dk_nrf5340_cpuappns nrf9160dk_nrf9160ns
|
||||
harness: console
|
||||
harness_config:
|
||||
type: multi_line
|
||||
regex:
|
||||
- "\\*\\*\\*\\*\\* PSA Architecture Test Suite - Version .* \\*\\*\\*\\*\\*"
|
||||
- "TOTAL FAILED *: 0"
|
||||
sample:
|
||||
name: "TFM PSA Test"
|
||||
|
||||
tests:
|
||||
sample.tfm.psa_protected_storage_test:
|
||||
extra_args: "CONFIG_TFM_PSA_TEST_PROTECTED_STORAGE=y"
|
||||
timeout: 100
|
||||
sample.tfm.psa_internal_trusted_storage_test:
|
||||
extra_args: "CONFIG_TFM_PSA_TEST_INTERNAL_TRUSTED_STORAGE=y"
|
23
samples/tfm_integration/tfm_psa_test/src/main.c
Normal file
23
samples/tfm_integration/tfm_psa_test/src/main.c
Normal file
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright (c) 2021 Nordic Semiconductor ASA.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
/* Run the PSA test suite */
|
||||
void psa_test(void);
|
||||
|
||||
__attribute__((noreturn))
|
||||
void main(void)
|
||||
{
|
||||
#ifdef CONFIG_TFM_PSA_TEST_NONE
|
||||
#error "No PSA test suite set. Use Kconfig to enable a test suite.\n"
|
||||
#else
|
||||
psa_test();
|
||||
#endif
|
||||
|
||||
for (;;) {
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue