Add hw TRNG from SEL0 SP
Intgrates the FVP TRNG into the crypto sp to provide a hw
entropy source. Includes tests that check SP device
region configuration loading and MMIO access within the
region.
Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: Ia9af8b044596e1c7d194f039fdf64c2468bb3221
diff --git a/deployments/env-test/env_test.cmake b/deployments/env-test/env_test.cmake
new file mode 100644
index 0000000..bf2b509
--- /dev/null
+++ b/deployments/env-test/env_test.cmake
@@ -0,0 +1,46 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# The base build file shared between deployments of 'env-test' for
+# different environments. Used for running tests that validate hardwarw
+# backed services available from within a secure execution environment.
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# Components that are common accross all deployments
+#
+#-------------------------------------------------------------------------------
+add_components(
+ TARGET "env_test"
+ BASE_DIR ${TS_ROOT}
+ COMPONENTS
+ "components/common/tlv"
+ "components/config/ramstore"
+ "components/rpc/common/interface"
+ "components/rpc/common/caller"
+ "components/service/common"
+ "components/service/common/provider"
+ "components/service/test_runner/provider"
+ "components/service/test_runner/provider/serializer/packed-c"
+ "components/service/test_runner/provider/backend/null"
+ "components/service/test_runner/provider/backend/simple_c"
+ "components/service/crypto/provider/mbedcrypto"
+ "components/service/crypto/provider/mbedcrypto/trng_adapter/platform"
+ "components/service/crypto/provider/mbedcrypto/trng_adapter/test"
+ "components/service/secure_storage/client/psa"
+ "protocols/rpc/common/packed-c"
+)
+
+#-------------------------------------------------------------------------------
+# Components used from external projects
+#
+#-------------------------------------------------------------------------------
+
+# Mbedcrypto
+include(${TS_ROOT}/external/mbed-crypto/mbedcrypto.cmake)
+target_link_libraries(env_test PRIVATE mbedcrypto)
diff --git a/deployments/env-test/opteesp/CMakeLists.txt b/deployments/env-test/opteesp/CMakeLists.txt
index bf735a6..3149ecd 100644
--- a/deployments/env-test/opteesp/CMakeLists.txt
+++ b/deployments/env-test/opteesp/CMakeLists.txt
@@ -15,7 +15,7 @@
# test cases.
#-------------------------------------------------------------------------------
include(${TS_ROOT}/environments/opteesp/env.cmake)
-project(trusted-services LANGUAGES C CXX ASM)
+project(trusted-services LANGUAGES C ASM)
add_executable(env_test)
target_include_directories(env_test PRIVATE "${TOP_LEVEL_INCLUDE_DIRS}")
set(SP_UUID "33c75baf-ac6a-4fe4-8ac7-e9909bee2d17")
@@ -35,23 +35,26 @@
add_components(TARGET "env_test"
BASE_DIR ${TS_ROOT}
COMPONENTS
- "components/common/tlv"
- "components/config/ramstore"
+ "components/config/loader/sp"
"components/messaging/ffa/libsp"
"components/rpc/ffarpc/endpoint"
- "components/rpc/common/interface"
- "components/service/common"
- "components/service/common/provider"
- "components/service/test_runner/provider"
- "components/service/test_runner/provider/serializer/packed-c"
- "components/service/test_runner/provider/backend/null"
- "protocols/rpc/common/packed-c"
+ "components/config/test/sp"
"environments/opteesp"
)
+#-------------------------------------------------------------------------------
+# Extend with components that are common across all deployments of
+# env_test
+#
+#-------------------------------------------------------------------------------
+include(../env_test.cmake REQUIRED)
+
+#-------------------------------------------------------------------------------
+# Deployment specific source files
+#-------------------------------------------------------------------------------
target_sources(env_test PRIVATE
env_test.c
- env_test_config.c
+ env_test_tests.c
)
#-------------------------------------------------------------------------------
@@ -63,11 +66,6 @@
add_platform(TARGET "env_test")
-#-------------------------------------------------------------------------------
-# Components used from external projects
-#
-#-------------------------------------------------------------------------------
-
if(CMAKE_CROSSCOMPILING)
target_link_libraries(env_test PRIVATE stdc++ gcc m)
endif()
diff --git a/deployments/env-test/opteesp/env_test.c b/deployments/env-test/opteesp/env_test.c
index 0bb523f..3df4c1a 100644
--- a/deployments/env-test/opteesp/env_test.c
+++ b/deployments/env-test/opteesp/env_test.c
@@ -8,11 +8,13 @@
#include <service/test_runner/provider/test_runner_provider.h>
#include <service/test_runner/provider/serializer/packed-c/packedc_test_runner_provider_serializer.h>
#include <protocols/rpc/common/packed-c/status.h>
+#include <config/ramstore/config_ramstore.h>
+#include <config/loader/sp/sp_config_loader.h>
#include <ffa_api.h>
#include <sp_api.h>
#include <sp_rxtx.h>
#include <trace.h>
-#include "env_test_config.h"
+#include "env_test_tests.h"
uint16_t own_id = 0; /* !!Needs refactoring as parameter to ffarpc_caller_init */
@@ -33,7 +35,8 @@
if (sp_init(&own_id) != 0) goto fatal_error;
- load_sp_config(init_info);
+ config_ramstore_init();
+ sp_config_load(init_info);
/* Initialize the test_runner service */
test_runner_iface = test_runner_provider_init(&test_runner_provider);
@@ -41,6 +44,8 @@
test_runner_provider_register_serializer(&test_runner_provider,
TS_RPC_ENCODING_PACKED_C, packedc_test_runner_provider_serializer_instance());
+ env_test_register_tests(&test_runner_provider);
+
ffa_call_ep_init(&ffarpc_call_ep, test_runner_iface);
/* End of boot phase */
diff --git a/deployments/env-test/opteesp/env_test_config.c b/deployments/env-test/opteesp/env_test_config.c
deleted file mode 100644
index 14a1e53..0000000
--- a/deployments/env-test/opteesp/env_test_config.c
+++ /dev/null
@@ -1,16 +0,0 @@
-// SPDX-License-Identifier: BSD-3-Clause
-/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
- */
-
-#include <config/ramstore/config_ramstore.h>
-#include "env_test_config.h"
-
-
-void load_sp_config(struct ffa_init_info *init_info)
-{
- config_ramstore_init();
-
- /* Load deployment specific configuration */
- (void)init_info;
-}
\ No newline at end of file
diff --git a/deployments/env-test/opteesp/env_test_config.h b/deployments/env-test/opteesp/env_test_config.h
deleted file mode 100644
index 8ed4a7e..0000000
--- a/deployments/env-test/opteesp/env_test_config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef ENV_TEST_CONFIG_H
-#define ENV_TEST_CONFIG_H
-
-#include <ffa_api.h>
-
-/**
- * Loads the SP specific configuration passed as SP initialization parameters.
- */
-void load_sp_config(struct ffa_init_info *init_info);
-
-
-#endif /* ENV_TEST_CONFIG_H */
diff --git a/deployments/env-test/opteesp/env_test_tests.c b/deployments/env-test/opteesp/env_test_tests.c
new file mode 100644
index 0000000..beb9cbf
--- /dev/null
+++ b/deployments/env-test/opteesp/env_test_tests.c
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ */
+
+#include <service/test_runner/provider/backend/simple_c/simple_c_test_runner.h>
+#include <config/test/sp/sp_config_tests.h>
+#include <service/crypto/provider/mbedcrypto/trng_adapter/test/trng_env_tests.h>
+
+void env_test_register_tests(struct test_runner_provider *context)
+{
+ simple_c_test_runner_init(context);
+
+ sp_config_tests_register();
+ trng_env_tests_register();
+}
\ No newline at end of file
diff --git a/deployments/env-test/opteesp/env_test_tests.h b/deployments/env-test/opteesp/env_test_tests.h
new file mode 100644
index 0000000..305fc45
--- /dev/null
+++ b/deployments/env-test/opteesp/env_test_tests.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef ENV_TEST_TESTS_H
+#define ENV_TEST_TESTS_H
+
+struct test_runner_provider;
+
+/**
+ * Registers test cases for this deployment
+ */
+void env_test_register_tests(struct test_runner_provider *context);
+
+
+#endif /* ENV_TEST_TESTS_H */