xilloader
Vitis Drivers API Documentation
xloader_secure.h File Reference

Overview

This file contains all security related data.

MODIFICATION HISTORY:
Ver   Who  Date     Changes
----- ---- -------- -------------------------------------------------------
1.00  vns  04/23/19 First release
1.01  vns  07/09/19 Added PPK and SPK integrity checks
                    Updated chunk size for secure partition
                    Added encryption + authentication support
      vns  07/23/19 Added functions to load secure headers
      vns  08/23/19 Added buffer cleaning on failure
                    Added different key sources support
1.02  vns  02/23/20 Added DPA CM enable/disable functionality
      har  02/28/20 Added minor error codes for security
      vns  03/01/20 Added PUF KEK decrypt support
      ana  04/02/20 Added crypto engine KAT test function calls
      bsv  04/07/20 Change CSUDMA name to PMCDMA
      vns  04/13/20 Moved Aes instance to Secure structure
1.03  ana  06/04/20 Removed XLOADER_ECDSA_INDEXVAL macro and
                    updated u32 datatype to u8 datatype
      tar  07/23/20 Fixed MISRA-C required violations
      kpt  07/30/20 Added minor error codes for ENC only and macros
                    related to IV
      bsv  08/06/20 Added delay load support for secure cases
      har  08/11/20 Added XLoader_AuthJtagMessage structure  and macros for
                    Authenticated JTAG
      td   08/19/20 Fixed MISRA C violations Rule 10.3
      bsv  08/21/20 Included xil_util.h for XSECURE_TEMPORAL_CHECK macro
      har  08/24/20 Added macros related to ECDSA P521 support
      kal  09/14/20 Added new error code to XLoader_SecErrCodes
      har  09/30/20 Deprecated Family Key support
      bsv  10/19/20 Parallel DMA changes
      kpt  10/19/2020 Code clean up
      har  10/19/20 Replaced ECDSA in header files
1.04  har  11/27/20 Added macros related to PDI DpaCm configuration
      bm   12/16/20 Added PLM_SECURE_EXCLUDE macro. Also moved authentication and
                    encryption related code to xloader_auth_enc.h file
1.05  har  03/17/21 Added API to set the secure state of device
      har  05/20/21 Updated copyright year
1.06  har  07/15/21 Fixed doxygen warnings
      kpt  09/09/21 Fixed SW-BP-BLIND-WRITE in XLoader_SecureClear
1.07  kpt  10/07/21 Removed function prototype XLoader_ProcessSecurePrtn
      kpt  10/20/21 Declared temporal variables in XLoader_SecureTempParams
      kpt  10/28/21 Added flags in XLoader_SecureInit function prototype
      bsv  02/09/22 Code clean up
      bsv  02/11/22 Code optimization to reduce text size
      kpt  02/18/22 Removed Flags param from XLoader_SecureInit function prototype
1.08  dc   07/12/22 Moved error codes related to buffer clear to xplmi_status.h
      obs  09/30/2024 Fixed Doxygen Warnings
Note

Macros

#define XLOADER_EFUSE_PPK0_START_OFFSET   (0xF1250100U)
 PPK0 Start register address. More...
 
#define XLOADER_EFUSE_PPK1_START_OFFSET   (0xF1250120U)
 PPK1 Start register address. More...
 
#define XLOADER_EFUSE_PPK2_START_OFFSET   (0xF1250140U)
 PPK2 Start register address. More...
 
#define XLOADER_EFUSE_PPK2_END_OFFSET   (0xF125015CU)
 PPK2 End register address. More...
 
#define XLOADER_EFUSE_SEC_MISC0_OFFSET   (0xF12500E4U)
 Security Misc0 register address. More...
 
#define XLOADER_EFUSE_SEC_DEC_MASK   (0x0000FFFFU)
 DEC_ONLY fuse mask in Security Misc0 register. More...
 
#define XLOADER_EFUSE_MISC_CTRL_OFFSET   (0xF12500A0U)
 Misc CTRL register. More...
 
#define XLOADER_BBRAM_CL_INCREMENT_COUNT   (0xFFFFFFFFU)
 Flag to indicate if counter in Configuration Limiter should be incremented. More...
 
#define XLOADER_BBRAM_CL_DECREMENT_COUNT   (0x0U)
 Flag to indicate if counter in Configuration Limiter should be decremented. More...
 

Functions

int XLoader_SecureInit (XLoader_SecureParams *SecurePtr, XilPdi *PdiPtr, u32 PrtnNum)
 This function initializes XLoader_SecureParams's instance. More...
 
int XLoader_SecureCopy (XLoader_SecureParams *SecurePtr, u64 DestAddr, u32 Size)
 This function loads secure non-cdo partitions. More...
 
int XLoader_SecureClear (void)
 This function is called to clear secure critical data in case of exceptions. More...
 
int XLoader_SecureChunkCopy (XLoader_SecureParams *SecurePtr, u64 SrcAddr, u8 Last, u32 BlockSize, u32 TotalSize)
 This function copies the data from SrcAddr to chunk memory during processing of secure partitions. More...
 
int XLoader_CheckNonZeroPpk (void)
 This function checks if PPK is programmed. More...
 
u32 XLoader_GetAHWRoT (const u32 *AHWRoTPtr)
 This function returns the state of authenticated boot. More...
 
u32 XLoader_GetSHWRoT (const u32 *SHWRoTPtr)
 This function returns the state of encrypted boot. More...
 
int XLoader_SetSecureState (void)
 This function reads the value of PPK efuse bits, DEC only efuse bits and fields in bootheader and accordingly sets the Secure State of boot. More...
 
XLoader_SecureTempParams * XLoader_GetTempParams (void)
 This function returns the pointer to XLoader_SecureTempParams. More...
 
int XLoader_VerifyHashNUpdateNext (XLoader_SecureParams *SecurePtr, u64 DataAddr, u32 Size, u8 Last)
 This function calculates hash and compares with expected hash. More...
 

Macro Definition Documentation

#define XLOADER_BBRAM_CL_DECREMENT_COUNT   (0x0U)

Flag to indicate if counter in Configuration Limiter should be decremented.

Referenced by XLoader_Init(), and XLoader_UpdateCfgLimitCount().

#define XLOADER_BBRAM_CL_INCREMENT_COUNT   (0xFFFFFFFFU)

Flag to indicate if counter in Configuration Limiter should be incremented.

Referenced by XLoader_UpdateCfgLimitCount().

#define XLOADER_EFUSE_MISC_CTRL_OFFSET   (0xF12500A0U)

Misc CTRL register.

#define XLOADER_EFUSE_PPK0_START_OFFSET   (0xF1250100U)

PPK0 Start register address.

Referenced by XLoader_CheckNonZeroPpk().

#define XLOADER_EFUSE_PPK1_START_OFFSET   (0xF1250120U)

PPK1 Start register address.

#define XLOADER_EFUSE_PPK2_END_OFFSET   (0xF125015CU)

PPK2 End register address.

Referenced by XLoader_CheckNonZeroPpk().

#define XLOADER_EFUSE_PPK2_START_OFFSET   (0xF1250140U)

PPK2 Start register address.

#define XLOADER_EFUSE_SEC_DEC_MASK   (0x0000FFFFU)

DEC_ONLY fuse mask in Security Misc0 register.

Referenced by XLoader_SetSecureState().

#define XLOADER_EFUSE_SEC_MISC0_OFFSET   (0xF12500E4U)

Security Misc0 register address.

Referenced by XLoader_SetSecureState().