1 /* 2 * Copyright (c) 2018, Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #ifndef __TFM_PLAT_BOOT_SEED_H__ 9 #define __TFM_PLAT_BOOT_SEED_H__ 10 /** 11 * \file tfm_plat_boot_seed.h 12 * 13 * Boot seed is used by a validating entity to ensure multiple reports were 14 * generated in the same boot session. Boot seed is a random number, generated 15 * only once during a boot cycle and its value is constant in the same cycle. 16 * Size recommendation is 256-bit to meet the statistically improbable property. 17 * Boot seed can be generated by secure boot loader an included to the measured 18 * boot state or can be generated by PRoT SW. 19 */ 20 21 /** 22 * \note The interfaces defined in this file must be implemented for each 23 * SoC. 24 */ 25 26 #include <stdint.h> 27 #include "tfm_plat_defs.h" 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 /*! 34 * \def BOOT_SEED_SIZE 35 * 36 * \brief Size of boot seed in bytes. 37 */ 38 #define BOOT_SEED_SIZE (32u) 39 40 /** 41 * \brief Gets the boot seed, which is a constant random number during a boot 42 * cycle. 43 * 44 * \param[in] size The required size of boot seed in bytes 45 * \param[out] buf Pointer to the buffer to store boot seed 46 * 47 * \return TFM_PLAT_ERR_SUCCESS if the value is generated correctly. Otherwise, 48 * it returns TFM_PLAT_ERR_SYSTEM_ERR. 49 */ 50 enum tfm_plat_err_t tfm_plat_get_boot_seed(uint32_t size, uint8_t *buf); 51 52 #ifdef __cplusplus 53 } 54 #endif 55 56 #endif /* __TFM_PLAT_BOOT_SEED_H__ */ 57