/*********************************************************************************************************************** * FILE DESCRIPTION * ------------------------------------------------------------------------------------------------------------------*/ /** \file * \brief SecureBoot implementation * * -------------------------------------------------------------------------------------------------------------------- * COPYRIGHT * -------------------------------------------------------------------------------------------------------------------- * \par Copyright * \verbatim * Copyright (c) 2025 by Vector Informatik GmbH. All rights reserved. * * This software is copyright protected and proprietary to Vector Informatik GmbH. * Vector Informatik GmbH grants to you only those rights as set out in the license conditions. * All other rights remain with Vector Informatik GmbH. * \endverbatim */ /**********************************************************************************************************************/ /*********************************************************************************************************************** * REVISION HISTORY * -------------------------------------------------------------------------------------------------------------------- * Version Date Author Change Id Description * -------------------------------------------------------------------------------------------------------------------- * 01.00.00 2020-01-07 visrie FBL-524 Initial release * 01.00.01 2020-04-27 visrie FBL-1773 Added API reference version define * 02.00.00 2020-05-19 vistbe FBL-1016 No changes * 02.01.00 2021-01-19 visrie FBL-2648 No changes * FBL-2641 Updated to new API version * 02.02.00 2021-09-08 visjdn FBL-3352 No changes * 02.03.00 2023-06-21 vistbe FBL-4814 Add support for OTA * 02.03.01 2024-05-16 viswmo ESCAN00117059 No changes * 02.04.00 2024-11-18 vismix FBL-9654 No changes * 02.05.00 2025-01-24 vikatya PIO-1340 No changes * 02.06.00 2025-02-19 visrie FBL-10209 No changes **********************************************************************************************************************/ #ifndef FBL_SECBOOT_H #define FBL_SECBOOT_H /*********************************************************************************************************************** * VERSION **********************************************************************************************************************/ /* ##V_CFG_MANAGEMENT ##CQProject : FblLib_SecBoot_vHsm CQComponent : Implementation */ #define FBLLIB_SECBOOT_VHSM_VERSION 0x0206u #define FBLLIB_SECBOOT_VHSM_RELEASE_VERSION 0x00u /*********************************************************************************************************************** * INCLUDES **********************************************************************************************************************/ #include "FblSb_Cfg.h" #include "FblBm_Cfg.h" #include "fbl_secboot_ap.h" #include "fbl_main_types.h" /*********************************************************************************************************************** * DEFINES **********************************************************************************************************************/ /* Reference interface version */ /** Major interface version identifies incompatible changes */ #define FBLSB_API_REFERENCE_VERSION_MAJOR 0x02u /** Minor interface version identifies backward compatible changes */ #define FBLSB_API_REFERENCE_VERSION_MINOR 0x03u /** Release interface version identifies cosmetic changes */ #define FBLSB_API_REFERENCE_VERSION_RELEASE 0x00u #if defined( FBL_ENABLE_OTA ) # define FblSb_UpdateBlockMacSwap(blockDescriptor, segmentList) FblSb_UpdateBlockMac(blockDescriptor, segmentList) #endif /*********************************************************************************************************************** * TYPEDEFS **********************************************************************************************************************/ typedef enum { FBLSB_EXT_ERR_CODE_NONE = 0u, FBLSB_EXT_ERR_CODE_GENERAL, FBLSB_EXT_ERR_CODE_CRC, FBLSB_EXT_ERR_CODE_SIGNATURE, FBLSB_EXT_ERR_CODE_MEMORY } tFblSbExtErrCode; /*********************************************************************************************************************** * FUNCTION PROTOTYPES **********************************************************************************************************************/ #define FBLSB_START_SEC_CODE #include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */ #if defined( FBLSB_ENABLE_COPY_FLASH_DRIVER ) void FblSb_CopyFlashDriver( void ); #endif /* FBLSB_ENABLE_COPY_FLASH_DRIVER */ void FblSb_Init(void); tFblResult FblSb_VerifyFblLbt(const V_MEMRAM1 tFblHeader V_MEMRAM2 V_MEMRAM3 * fblHeader); tFblResult FblSb_VerifyHeader(const V_MEMRAM1 tFblBmHdrHeader V_MEMRAM2 V_MEMRAM3 * bmHdrHeader); tFblResult FblSb_VerifyHeaderRom(tFblAddress bmHeaderAddress, const V_MEMRAM1 tFblBmHdrHeader V_MEMRAM2 V_MEMRAM3 * bmHdrHeader); tFblResult FblSb_VerifySegments(const V_MEMRAM1 tFblBmHdrHeader V_MEMRAM2 V_MEMRAM3 *bmHdrHeader); tFblResult FblSb_UpdateInitialSegments(void); #if defined( FBLSB_ENABLE_GENERATE_CMAC ) tFblResult FblSb_UpdateFblMac(V_MEMROM1 tFblHeader V_MEMROM2 V_MEMROM3 * fblHeader); tFblResult FblSb_UpdateBlockMac(const V_MEMRAM1 tBlockDescriptor V_MEMRAM2 V_MEMRAM3 * blockDescriptor, V_MEMRAM1 FL_SegmentListType V_MEMRAM2 V_MEMRAM3 * segmentList); #endif /* FBLSB_ENABLE_GENERATE_CMAC */ tFblSbExtErrCode FblSb_GetExtendedErrorCode(void); #define FBLSB_STOP_SEC_CODE #include "MemMap.h" /* PRQA S 5087 */ /* MD_MSR_MemMap */ #endif /* FBL_SECBOOT_H */ /*********************************************************************************************************************** * END OF FILE: FBL_SECBOOT.H **********************************************************************************************************************/