Refactor attestation deployment structure
Refactors the attestation service deployment build and directory
structure to allow for alternative build configurations.
Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: Ief1dde2a3c26571aa600f7313c7a8a79a31cf8d3
diff --git a/deployments/attestation/attestation.cmake b/deployments/attestation/attestation.cmake
index 307de3b..cf00a33 100644
--- a/deployments/attestation/attestation.cmake
+++ b/deployments/attestation/attestation.cmake
@@ -8,48 +8,21 @@
add_components(TARGET "attestation"
BASE_DIR ${TS_ROOT}
COMPONENTS
- "components/common/fdt"
"components/common/tlv"
- "components/common/trace"
- "components/common/utils"
"components/common/endian"
- "components/common/uuid"
- "components/config/ramstore"
- "components/config/loader/sp"
- "components/messaging/ffa/libsp"
- "components/rpc/ffarpc/endpoint"
- "components/rpc/ffarpc/caller/sp"
- "components/rpc/common/caller"
"components/rpc/common/interface"
"components/service/common/include"
- "components/service/common/client"
"components/service/common/provider"
- "components/service/locator"
- "components/service/locator/interface"
- "components/service/locator/sp"
- "components/service/locator/sp/ffa"
"components/service/attestation/include"
"components/service/attestation/claims"
- "components/service/attestation/claims/sources/boot_seed_generator"
- "components/service/attestation/claims/sources/null_lifecycle"
- "components/service/attestation/claims/sources/instance_id"
- "components/service/attestation/claims/sources/implementation_id"
- "components/service/attestation/claims/sources/event_log"
- "components/service/attestation/claims/sources/event_log/mock"
"components/service/attestation/reporter/local"
"components/service/attestation/reporter/eat"
"components/service/attestation/key_mngr/local"
"components/service/attestation/provider"
"components/service/attestation/provider/serializer/packed-c"
- "components/service/crypto/include"
- "components/service/crypto/client/psa"
"protocols/rpc/common/packed-c"
)
-target_sources(attestation PRIVATE
- ${CMAKE_CURRENT_LIST_DIR}/common/attestation_sp.c
-)
-
#-------------------------------------------------------------------------------
# Components used from external projects
#
diff --git a/deployments/attestation/opteesp/CMakeLists.txt b/deployments/attestation/config/default-opteesp/CMakeLists.txt
similarity index 82%
rename from deployments/attestation/opteesp/CMakeLists.txt
rename to deployments/attestation/config/default-opteesp/CMakeLists.txt
index fa58a4d..8cc8347 100644
--- a/deployments/attestation/opteesp/CMakeLists.txt
+++ b/deployments/attestation/config/default-opteesp/CMakeLists.txt
@@ -8,7 +8,7 @@
# Set default platform.
set(TS_PLATFORM "arm/fvp/fvp_base_revc-2xaemv8a" CACHE STRING "Target platform location.")
-include(../../deployment.cmake REQUIRED)
+include(../../../deployment.cmake REQUIRED)
#-------------------------------------------------------------------------------
# The CMakeLists.txt for building the attestation deployment for opteesp
@@ -29,6 +29,10 @@
SP_NAME "attestation"
)
+target_include_directories(attestation PRIVATE
+ ${CMAKE_CURRENT_LIST_DIR}
+)
+
#-------------------------------------------------------------------------------
# Default deployment specific configuration
#
@@ -36,7 +40,7 @@
set(TS_NO_FLOAT_HW ON)
#-------------------------------------------------------------------------------
-# Components that are specific to deployment in the opteesp environment.
+# Deployment specific components
#
#-------------------------------------------------------------------------------
add_components(TARGET "attestation"
@@ -45,7 +49,9 @@
"environments/opteesp"
)
-include(../attestation.cmake REQUIRED)
+include(../../env/commonsp/attestation_sp.cmake REQUIRED)
+include(../../infra/tpm-eventlog-psa.cmake REQUIRED)
+include(../../attestation.cmake REQUIRED)
#-------------------------------------------------------------------------------
# Set target platform to provide drivers needed by the deployment
@@ -53,14 +59,13 @@
#-------------------------------------------------------------------------------
add_platform(TARGET "attestation")
+#-------------------------------------------------------------------------------
+# Deployment specific build options
+#-------------------------------------------------------------------------------
target_compile_definitions(attestation PRIVATE
ARM64=1
)
-target_include_directories(attestation PRIVATE
- ${TS_ROOT}/deployments/attestation/opteesp
-)
-
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
target_compile_options(attestation PRIVATE
-std=c99
@@ -70,7 +75,9 @@
compiler_generate_stripped_elf(TARGET attestation NAME "${SP_UUID_CANON}.stripped.elf" RES STRIPPED_ELF)
-######################################## install
+#-------------------------------------------------------------------------------
+# Deployment specific install options
+#-------------------------------------------------------------------------------
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
endif()
diff --git a/deployments/attestation/opteesp/default_attestation.dts.in b/deployments/attestation/config/default-opteesp/default_attestation.dts.in
similarity index 100%
rename from deployments/attestation/opteesp/default_attestation.dts.in
rename to deployments/attestation/config/default-opteesp/default_attestation.dts.in
diff --git a/deployments/attestation/opteesp/optee_sp_user_defines.h b/deployments/attestation/config/default-opteesp/optee_sp_user_defines.h
similarity index 100%
rename from deployments/attestation/opteesp/optee_sp_user_defines.h
rename to deployments/attestation/config/default-opteesp/optee_sp_user_defines.h
diff --git a/deployments/attestation/sp/CMakeLists.txt b/deployments/attestation/config/default-sp/CMakeLists.txt
similarity index 84%
rename from deployments/attestation/sp/CMakeLists.txt
rename to deployments/attestation/config/default-sp/CMakeLists.txt
index 08d130e..3c7ccd7 100644
--- a/deployments/attestation/sp/CMakeLists.txt
+++ b/deployments/attestation/config/default-sp/CMakeLists.txt
@@ -8,7 +8,7 @@
# Set default platform.
set(TS_PLATFORM "arm/fvp/fvp_base_revc-2xaemv8a" CACHE STRING "Target platform location.")
-include(../../deployment.cmake REQUIRED)
+include(../../../deployment.cmake REQUIRED)
#-------------------------------------------------------------------------------
# The CMakeLists.txt for building the attestation deployment for generic sp
@@ -45,7 +45,9 @@
environments/sp
)
-include(../attestation.cmake REQUIRED)
+include(../../env/commonsp/attestation_sp.cmake REQUIRED)
+include(../../infra/tpm-eventlog-psa.cmake REQUIRED)
+include(../../attestation.cmake REQUIRED)
#-------------------------------------------------------------------------------
# Set target platform to provide drivers needed by the deployment
@@ -53,6 +55,9 @@
#-------------------------------------------------------------------------------
add_platform(TARGET "attestation")
+#-------------------------------------------------------------------------------
+# Deployment specific build options
+#-------------------------------------------------------------------------------
target_compile_definitions(attestation PRIVATE
ARM64=1
)
@@ -70,7 +75,9 @@
include(${TS_ROOT}/tools/cmake/common/ExportMemoryRegionsToManifest.cmake REQUIRED)
export_memory_regions_to_manifest(TARGET attestation NAME "${SP_UUID_CANON}_memory_regions.dtsi" RES EXPORT_MEMORY_REGIONS_DTSI)
-######################################## install
+#-------------------------------------------------------------------------------
+# Deployment specific install options
+#-------------------------------------------------------------------------------
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install CACHE PATH "location to install build output to." FORCE)
endif()
diff --git a/deployments/attestation/sp/default_attestation.dts.in b/deployments/attestation/config/default-sp/default_attestation.dts.in
similarity index 100%
rename from deployments/attestation/sp/default_attestation.dts.in
rename to deployments/attestation/config/default-sp/default_attestation.dts.in
diff --git a/deployments/attestation/common/attestation_sp.c b/deployments/attestation/env/commonsp/attestation_sp.c
similarity index 100%
rename from deployments/attestation/common/attestation_sp.c
rename to deployments/attestation/env/commonsp/attestation_sp.c
diff --git a/deployments/attestation/env/commonsp/attestation_sp.cmake b/deployments/attestation/env/commonsp/attestation_sp.cmake
new file mode 100644
index 0000000..e483184
--- /dev/null
+++ b/deployments/attestation/env/commonsp/attestation_sp.cmake
@@ -0,0 +1,29 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# Includes components needed for deploying the attestation service provider
+# within a secure partition.
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# Common components for attestation sp deployments
+#
+#-------------------------------------------------------------------------------
+add_components(TARGET "attestation"
+ BASE_DIR ${TS_ROOT}
+ COMPONENTS
+ "components/common/fdt"
+ "components/common/trace"
+ "components/common/utils"
+ "components/config/ramstore"
+ "components/config/loader/sp"
+ "components/messaging/ffa/libsp"
+ "components/rpc/common/interface"
+ "components/rpc/ffarpc/endpoint"
+)
+
+target_sources(attestation PRIVATE
+ ${CMAKE_CURRENT_LIST_DIR}/attestation_sp.c
+)
diff --git a/deployments/attestation/common/attestation_sp.h b/deployments/attestation/env/commonsp/attestation_sp.h
similarity index 100%
rename from deployments/attestation/common/attestation_sp.h
rename to deployments/attestation/env/commonsp/attestation_sp.h
diff --git a/deployments/attestation/infra/tpm-eventlog-psa.cmake b/deployments/attestation/infra/tpm-eventlog-psa.cmake
new file mode 100644
index 0000000..b734ac9
--- /dev/null
+++ b/deployments/attestation/infra/tpm-eventlog-psa.cmake
@@ -0,0 +1,34 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+# Defines an infrastructure for the attestation service provider that uses a
+# a TPM eventlog to collect claims about the booted firmware. Uses PSA crypto
+# for EAT token signing.
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# Infrastructure components
+#
+#-------------------------------------------------------------------------------
+add_components(TARGET "attestation"
+ BASE_DIR ${TS_ROOT}
+ COMPONENTS
+ "components/common/uuid"
+ "components/rpc/ffarpc/caller/sp"
+ "components/rpc/common/caller"
+ "components/service/common/client"
+ "components/service/locator"
+ "components/service/locator/interface"
+ "components/service/locator/sp"
+ "components/service/locator/sp/ffa"
+ "components/service/attestation/claims/sources/boot_seed_generator"
+ "components/service/attestation/claims/sources/null_lifecycle"
+ "components/service/attestation/claims/sources/instance_id"
+ "components/service/attestation/claims/sources/implementation_id"
+ "components/service/attestation/claims/sources/event_log"
+ "components/service/attestation/claims/sources/event_log/mock"
+ "components/service/crypto/include"
+ "components/service/crypto/client/psa"
+)