mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-19 02:54:24 +00:00

This patch adds Delegated Attestation and Measured Boot tests to the plat/arm/board/tc platform. The test suite can be activated by adding the build time option `PLATFORM_TEST=1` to the make command. In this case the boot sequence is not finished, plat_error_handler is called after the tests are run (regardless of the test result.) The actual test code is coming from the Trusted-Firmware-M project. Some of the files of the tf-m-tests and tf-m-extras repo are linked to the BL31 image. Versions used for testing: https://git.trustedfirmware.org/TF-M/tf-m-tests 614e8c358377e4146e8ee13d1246e59d01b4bf1b https: //git.trustedfirmware.org/TF-M/tf-m-extras 3be9fdd557e6df449de93c2101973fb011699b3d Change-Id: I98f0f5f760a39d2d7e0dd11d33663ddb75f0b6fc Signed-off-by: Mate Toth-Pal <mate.toth-pal@arm.com>
82 lines
1.7 KiB
C
82 lines
1.7 KiB
C
/*
|
|
* Copyright (c) 2022, Arm Ltd. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include <assert.h>
|
|
#include <stdio.h>
|
|
|
|
#include <mbedtls_common.h>
|
|
#include <plat/common/platform.h>
|
|
#include <psa/crypto.h>
|
|
#include <rss_comms.h>
|
|
|
|
#include "rss_ap_testsuites.h"
|
|
|
|
static struct test_suite_t test_suites[] = {
|
|
{.freg = register_testsuite_delegated_attest},
|
|
{.freg = register_testsuite_measured_boot},
|
|
};
|
|
|
|
static void run_tests(void)
|
|
{
|
|
enum test_suite_err_t ret;
|
|
psa_status_t status;
|
|
size_t i;
|
|
|
|
rss_comms_init(PLAT_RSS_AP_SND_MHU_BASE, PLAT_RSS_AP_RCV_MHU_BASE);
|
|
mbedtls_init();
|
|
status = psa_crypto_init();
|
|
if (status != PSA_SUCCESS) {
|
|
printf("\n\npsa_crypto_init failed (status = %d)\n", status);
|
|
assert(false);
|
|
plat_error_handler(-1);
|
|
}
|
|
|
|
for (i = 0; i < ARRAY_SIZE(test_suites); ++i) {
|
|
struct test_suite_t *suite = &(test_suites[i]);
|
|
|
|
suite->freg(suite);
|
|
ret = run_testsuite(suite);
|
|
if (ret != TEST_SUITE_ERR_NO_ERROR) {
|
|
printf("\n\nError during executing testsuite '%s'.\n", suite->name);
|
|
assert(false);
|
|
plat_error_handler(-1);
|
|
}
|
|
}
|
|
printf("\nAll tests are run.\n");
|
|
}
|
|
|
|
void run_platform_tests(void)
|
|
{
|
|
size_t i;
|
|
|
|
run_tests();
|
|
|
|
printf("\n\n");
|
|
|
|
/* Print a summary of all the tests that had been run. */
|
|
printf("SUMMARY:\n");
|
|
for (i = 0; i < ARRAY_SIZE(test_suites); ++i) {
|
|
|
|
struct test_suite_t *suite = &(test_suites[i]);
|
|
|
|
switch (suite->val) {
|
|
case TEST_PASSED:
|
|
printf(" %s PASSED.\n", suite->name);
|
|
break;
|
|
case TEST_FAILED:
|
|
printf(" %s FAILED.\n", suite->name);
|
|
break;
|
|
case TEST_SKIPPED:
|
|
printf(" %s SKIPPED.\n", suite->name);
|
|
break;
|
|
default:
|
|
assert(false);
|
|
break;
|
|
}
|
|
}
|
|
|
|
printf("\n\n");
|
|
}
|