From 2e13c372f1419f08dab7797b244681f889dd9bcf Mon Sep 17 00:00:00 2001 From: Michal Hanus Date: Mon, 14 Apr 2025 22:04:32 +0200 Subject: nrfdemo --- .../build/tfm/api_ns/platform/include/boot_hal.h | 150 +++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 nrfdemo/build/tfm/api_ns/platform/include/boot_hal.h (limited to 'nrfdemo/build/tfm/api_ns/platform/include/boot_hal.h') diff --git a/nrfdemo/build/tfm/api_ns/platform/include/boot_hal.h b/nrfdemo/build/tfm/api_ns/platform/include/boot_hal.h new file mode 100644 index 0000000..0238241 --- /dev/null +++ b/nrfdemo/build/tfm/api_ns/platform/include/boot_hal.h @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2019-2023, Arm Limited. All rights reserved. + * Copyright (c) 2020 STMicroelectronics. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __BOOT_HAL_H__ +#define __BOOT_HAL_H__ + +#include +#include +#include +#include "cmsis_compiler.h" + +/* Include header section */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct boot_arm_vector_table { + uint32_t msp; + uint32_t reset; +}; + +/* + * \brief It clears that part of the RAM which was used by MCUBoot, expect the + * TFM_SHARED_DATA area, which is used to pass data to the TF-M runtime. + * + * \note This function must be implemented per target platform by system + * integrator. If the bootloader has not loaded any secret to the shared + * RAM then this function can immediately return to shorten the boot-up + * time. Clearing RAM area can be done several way, it is platform + * dependent: + * - Overwritten with a pre-defined constant value (i.e.: 0). + * - Overwritten with a random value. + * - Change the secret if its location is known. + * - Set a register which can hide some part of the flash/RAM against + * next stage software components. + * - Etc. + */ +void boot_clear_ram_area(void); + +/* + * \brief Chain-loading the next image in the boot sequence. + * Can be overridden for platform specific initialization. + * \param[in] reset_handler_addr Address of next image's Reset_Handler() in + the boot chain (TF-M SPE, etc.) + */ +void boot_jump_to_next_image(uint32_t reset_handler_addr) __NO_RETURN; + +/** + * \brief Platform peripherals and devices initialization. + * Can be overridden for platform specific initialization. + * + * \return Returns 0 on success, non-zero otherwise + */ +int32_t boot_platform_init(void); + +/** + * \brief Perform later platform specific initialization. Runs at the end of the + * boot initialization phase, for platform-specific code that depends on + * other initialization code being run beforehand. + * + * \return Returns 0 on success, non-zero otherwise + */ +int32_t boot_platform_post_init(void); + +/** + * \brief Platform operation to start secure image. + * Can be overridden for platform specific initialization. + * + * \param[in] vt pointer to secure application vector table descriptor + */ +void boot_platform_quit(struct boot_arm_vector_table *vt) __NO_RETURN; + +/** + * \brief Platform operation to perform steps required before image load. + * Can be overridden for platform specific initialization. + * + * \param[in] image_id The ID of the image that is about to be loaded. + * + * \return Returns 0 on success, non-zero otherwise + */ +int boot_platform_pre_load(uint32_t image_id); + +/** + * \brief Platform operation to perform steps required after image load. + * Can be overridden for platform specific initialization. + * + * \param[in] image_id The ID of the image that has just been loaded. + * + * \return Returns 0 on success, non-zero otherwise + */ +int boot_platform_post_load(uint32_t image_id); + +/** + * Version of a SW component, to be encoded as "major.minor.revision+build_num". + */ +struct boot_measurement_version { + uint8_t major; + uint8_t minor; + uint16_t revision; + uint32_t build_num; +}; + +struct boot_measurement_metadata { + uint32_t measurement_type; /* Identifier of the measurement method + * used to compute the measurement value. + */ + uint8_t signer_id[64]; /* Signer identity (hash of public key). */ + size_t signer_id_size; /* Size of the signer's ID in bytes. */ + char sw_type[10]; /* Representing the role of the SW component. */ + struct boot_measurement_version sw_version; /* Version of the SW component */ +}; + +/** + * \brief Stores single boot measurement and associated metadata in a + * non-persistent storage to a known location. + * + * \note The measurement values and associated metadata are stored at a known + * location where they can be accessed later at runtime from secure + * software. + * + * \param[in] index In which measurement slot to store, + * the largest allowed index is 63 (0x3F). + * \param[in] measurement Pointer to buffer that stores the + * measurement value. + * \param[in] measurement_size Size of the measurement value in bytes. + * \param[in] metadata Pointer to a structure, containing the + * associated metadata. + * \param[in] lock_measurement If true, it locks the measurement slot and + * it is not allowed the extend it anymore with + * additional measurement values. + * + * \return Returns 0 on success, non-zero otherwise. + */ +int boot_store_measurement(uint8_t index, + const uint8_t *measurement, + size_t measurement_size, + const struct boot_measurement_metadata *metadata, + bool lock_measurement); + +#ifdef __cplusplus +} +#endif + +#endif /* __BOOT_HAL_H__ */ -- cgit v1.2.3