/* * Copyright (c) 2018, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * */ #ifndef __TFM_PLAT_BOOT_SEED_H__ #define __TFM_PLAT_BOOT_SEED_H__ /** * \file tfm_plat_boot_seed.h * * Boot seed is used by a validating entity to ensure multiple reports were * generated in the same boot session. Boot seed is a random number, generated * only once during a boot cycle and its value is constant in the same cycle. * Size recommendation is 256-bit to meet the statistically improbable property. * Boot seed can be generated by secure boot loader an included to the measured * boot state or can be generated by PRoT SW. */ /** * \note The interfaces defined in this file must be implemented for each * SoC. */ #include #include "tfm_plat_defs.h" #ifdef __cplusplus extern "C" { #endif /*! * \def BOOT_SEED_SIZE * * \brief Size of boot seed in bytes. */ #define BOOT_SEED_SIZE (32u) /** * \brief Gets the boot seed, which is a constant random number during a boot * cycle. * * \param[in] size The required size of boot seed in bytes * \param[out] buf Pointer to the buffer to store boot seed * * \return TFM_PLAT_ERR_SUCCESS if the value is generated correctly. Otherwise, * it returns TFM_PLAT_ERR_SYSTEM_ERR. */ enum tfm_plat_err_t tfm_plat_get_boot_seed(uint32_t size, uint8_t *buf); #ifdef __cplusplus } #endif #endif /* __TFM_PLAT_BOOT_SEED_H__ */