/* Copyright (C) 2018 RDA Technologies Limited and/or its affiliates("RDA"). * All rights reserved. * * This software is supplied "AS IS" without any warranties. * RDA assumes no responsibility or liability for the use of the software, * conveys no license or title under any patent, copyright, or mask work * right to the product. RDA reserves the right to make changes in the * software without notification. RDA also make no representation or * warranty that such application will be suitable for the specified use * without further testing or modification. */ #ifndef _FUPDATE_SECURITY_H_ #define _FUPDATE_SECURITY_H_ #include "fupdate.h" #include "vfs.h" #include "stdio.h" #if defined(CONFIG_SOC_8811) || defined(CONFIG_SOC_8850) #include "calclib/simage_types.h" #define FUPDATE_SIGN_MAGIC OSI_MAKE_TAG('F', 'U', 'S', '1') /** * \brief the signature file content */ typedef struct { uint32_t magic; ///< magic value of the signature file uint32_t size; ///< the signature file size simageKeyCert_t sig; ///< signature content } fupdateSigHeader_t; #endif /** * \brief init the fupdate boot type after fota * * It can be called during system start. */ void fupdateInitBootAfterFota(void); /** * \brief set the boot type if fota success * * It records the boot type as fota when the fota success,\p the boot type can be used after system start. * * \param result the fota result. */ void fupdateSetBootAfterFota(int result); /** * \brief get the fota happened or not during bootup * * It returns whether fota happened during bootup. * * \return * - true if fota happened in bootup * - false if fota not happened */ bool fupdateIsBootAfterFota(void); /** * \brief check the availble space whether enough for update the fota pack * * It returns the check result. It should be called after the fupdateCheckSignedPack() pass. * * \return * - true if the availble space enough. * - false if not. */ bool fupdateIsTmpSpaceEnough(void); /** * \brief check the fota package version is upgrade or not * * It returns whether fota package upgrade to new version. \p The version info is controlled by product owner. * This interface is designed as version check sample. \p It can be modified according to the production version defination. * * \return * - true if it's upgrade or no version info in fota package. * - false if fota not to new version or failed to get the version info. */ bool fupdateIsVersionUpgrade(void); // The following APIs are called in both signatue check feature is enabled and not enabled case. /** * \brief check the firmware file signature in freertos envirnment * * Check the firmware file signature. \p It will read the firmware signature and * \p the package data to check wheather signature is valid. * * If the signature check feature is not enabled,\p it will return true by default. * The package file only contains \p the firmware package data(not signed). * * \return * - true if signature check is passed * - false if not */ bool fupdateCheckSignedPack(void); #endif