📄 spsif.h
字号:
/** * \file * SIS external definitions. * * \version $Revision$ $State$ * * \date $Date$ * * \author $Author$ * * \par Last changed by: * $Author$ * *****************************************************************************//* * Copyright 2002 ADVANCED MICRO DEVICES, INC. All Rights Reserved. * * This software and any related documentation (the "Materials") are the * confidential proprietary information of AMD. Unless otherwise provided * in an agreement specifically licensing the Materials, the Materials are * provided in confidence and may not to be used, distributed, modified, or * reproduced in whole or in part by any means. * * LIMITATION OF LIABILITY: THE MATERIALS ARE PROVIDED "AS IS" WITHOUT ANY * EXPRESS OR IMPLIED WARRANTY OF ANY KIND, INCLUDING BUT NOT LIMITED TO * WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, TITLE, FITNESS FOR ANY * PARTICULAR PURPOSE, OR WARRANTIES ARISING FORM CONDUCT, COURSE OF * DEALING, OR USAGE OF TRADE. IN NO EVENT SHALL AMD OR ITS LICENSORS BE * LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, * DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF * INFORMATION) ARISING OUT OF THE USE OF OR INABILITY TO USE THE * MATERIALS, EVEN IF AMD HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGES. BECAUSE SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR * LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE * ABOVE LIMITATION MAY NOT APPLY TO YOU. * * AMD does not assume any responsibility for any errors which may appear * in the Materials nor any responsibility to support or update the * Materials. AMD retains the right to modify the Materials at any time, * without notice, and is not obligated to provide such modified Materials * to you. * * NO SUPPORT OBLIGATION: AMD is not obligated to furnish, support, or make * any further information, software, technical information, know-how, or * show-how available to you. * *****************************************************************************/#ifndef SPSIF_H#define SPSIF_H/* sec.h definitions should reside in shared */#include "sec.h" /* here the patch record structure is defined *//****************************************************************************** Constants*****************************************************************************//****************************************************************************** Types*****************************************************************************//** * integrity check mode, i.e. mode of operation: * what security measures shall be applied in what order */typedef enum SpsIntegrCheckModeTag { /** < image was...*/ SPS_ENCRYPT_SIGNED = 0x0, /** < ...first signed, then encrypted; "classic" histaeus mode */ SPS_SIGNED_ONLY, /** < ...signed only; adaptation for TRAVIS */ SPS_SIGN_ENCRYPTED, /** < ...first encrypted, then signed; snowmass secure boot mode */} SpsIntegrCheckMode_t;/** * \brief * SPS context information */typedef struct SpsContext_tag { /* Magic Number, which indicates that structure initialized */ Int32 Magic; /* integrity check mode, i.e. mode of operation: */ /* what security measures shall be applied in what order */ SpsIntegrCheckMode_t IntCheckMode; /* Trustlevel Flags */ Boolean OverFlowObserved; /* flag which inidcates invalid lengths or buffersizes */ Boolean TrustedEncrKey; /* if it is not a */ Boolean WithSignature; Int32 PatchPkgCounter; /* pointer to DVE data structure */ void *pDveWorkspace; void *pHashChainWorkspace; /* current patch package information */ SpsPpPatchHeader_t patchheader; /** < storage for a copy of the patch header */ /* data block, which contains the patch records record */ Int8 *pPatchBuffer; /** < pointer to the buffer start */ Int32 PatchRecordCnt; /** < number of processed patch records */ Int32 PatchBufferSize; /** < size of the total available patch buffer */ Int32 PatchBufferOffset; /** < current offset of write pointer in patch buffer */} SpsContext_t;/** * return value for sps fuctions */typedef enum SpsSuccessTag { SPS_SUCCESSFUL = 0x0, SPS_UNSUCCESSFUL = SPS_ERROR_BASE, SPS_NULL_PTR_FAIL, SPS_INIT_FAIL, SPS_PINFO_FAIL, SPS_PHEADER_FAIL, SPS_NO_BUFFER_FAIL, SPS_SMALL_BUFFER_FAIL, SPS_EPR_LENGTH_FAIL, SPS_PP_NBPR_FAIL, SPS_PP_DATASIZE_FAIL,} SpsSuccess_t;/****************************************************************************** Macros*****************************************************************************/#define SPS_CONTEXT_SIZE (sizeof(SpsContext_t))/****************************************************************************** Classes*****************************************************************************//****************************************************************************** Data*****************************************************************************/#ifdef __cplusplusextern "C" {#endif#ifdef __cplusplus} /* extern "C" */#endif/****************************************************************************** Functions*****************************************************************************/#ifdef __cplusplusextern "C" {#endif/* from sis.c - see there for docs */ SpsSuccess_t SpsInitCtx(SpsContext_t * pCtx); SpsSuccess_t SpsProcessInfo(SpsContext_t * pCtx, SpsPpPatchInfo_t * pInfo, Int32 Size); SpsSuccess_t SpsProcessHeader(SpsContext_t * pCtx, Int8 * pHdr, Int32 Size, Int32 * pPatchSize); SpsSuccess_t SpsProcessPrFragment(SpsContext_t * pCtx, Int8 * pData, Int32 Size); SpsSuccess_t SpsFinalizePp(SpsContext_t * pCtx, Int8 * pTrustLevel, char *pVersionInfo, Int8 ** pPatchData);#ifdef __cplusplus} /* extern "C" */#endif/****************************************************************************** Inline Functions*****************************************************************************/#endif /* #ifndef SISIF_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -