xilsecure
Vitis Drivers API Documentation
xsecure.h File Reference

Overview

This is the header file which contains secure library interface function prototype for authentication and decryption of images.

MODIFICATION HISTORY:
Ver   Who  Date        Changes
----- ---- -------- -------------------------------------------------------
1.00  dp   02/15/17 Initial release
2.2   vns  09/18/17 Added APIs to support generic functionality
                    for SHA3 and RSA hardware at linux level.
3.0   vns  02/19/18 Added error codes and macros for secure image.
3.1   ka   04/10/18 Added support for user-efuse revocation
      ka   04/18/18 Added support for Zeroization of the memory in case of
                    Gcm-Tag mismatch
3.2   ka   08/03/18 Added XSecure_Aes Api's to encrypt or decrypt data-blobs.
4.0   arc  18/12/18 Fixed MISRA-C violation.
      arc  12/02/19 Added support for validate image format.
      rama 18/03/19 Fixed IAR compiler errors and warnings
      psl  03/26/19 Fixed MISRA-C violation
4.1   psl  07/31/19 Fixed MISRA-C violation.
4.2   kal  03/12/20 Authenticate SizeofImgHdr before use, in case of failure
                    return XSECURE_IMAGE_HEADER_SIZE_ERR.
      ana  04/03/20 Removed support of storing key in global array
      rpo  04/09/20 Aligned buffers used by DMA to 64 bytes
      rpo  09/10/20 Added a new error for RSA input validation parameter
4.7   am   11/26/21 Resolved doxygen warnings
5.2   ng   07/13/23 Added SDT support
Note

Data Structures

struct  XSecure_RsaKey
 Input parameters pointers for RSA. More...
 
struct  XSecure_PartitionHeader
 Structure to store the partition header details. More...
 

Macros

#define XSECURE_AES   1U
 Flag indicates AES. More...
 
#define XSECURE_RSA   2U
 Flag indicates RSA. More...
 
#define XSECURE_RSA_AES   3U
 Flag indicates both RSA and AES. More...
 
#define XSECURE_SHA3_INIT   1U
 SHA3 Initialization. More...
 
#define XSECURE_SHA3HASH_UPDATE   2U
 SHA3 hash update. More...
 
#define XSECURE_SHA3_FINAL   4U
 SHA3 final. More...
 
#define XSECURE_SHA3_MASK
 SHA3 mask. More...
 
#define XSECURE_SPKID_EFUSE   1U
 SPK ID eFUSE. More...
 
#define XSECURE_USER_EFUSE   2U
 User eFuse. More...
 
#define XSECURE_USER_EFUSE_MIN_VALUE   1U
 Minimum value of User eFuse. More...
 
#define XSECURE_USER_EFUSE_MAX_VALUE   256U
 Maximum value of User eFuse. More...
 
#define XSECURE_ENC   1U
 Encryption. More...
 
#define XSECURE_DEC   0U
 Decryption. More...
 
#define XSECURE_AES_KUP_KEY   0U
 AES kup key. More...
 
#define XSECURE_RSA_CORE_OPERATION   1U
 RSA core operation. More...
 
#define XSECURE_RSA_KEY_SELECT   2U
 RSA key select. More...
 
#define XSECURE_MASK   (XSECURE_AES | XSECURE_RSA)
 Flag indicates both RSA and AES. More...
 
#define XSECURE_KEY_STR_LEN   64U
 Key string length. More...
 
#define XSECURE_IV_STR_LEN   24U
 IV string length. More...
 
#define XSECURE_KEY_LEN   8U
 Key length. More...
 
#define XSECURE_IV_LEN   3U
 IV length. More...
 
#define XSECURE_GCM_TAG_LEN   128U
 GCM tag length. More...
 
#define XSECURE_WORD_LEN   4U
 Word length. More...
 
#define XSECURE_MAX_NIBBLES   8U
 Maximum nibbles. More...
 
#define XSECURE_WORD_SHIFT   32U
 Word shift. More...
 
#define XSECURE_ARRAY_LENGTH(array)   (sizeof((array))/sizeof((array)[0]))
 Array length. More...
 
#define XSECURE_ERROR_CSUDMA_INIT_FAIL   0x1U
 CSUDMA initialization fail error. More...
 
#define XSECURE_STRING_INVALID_ERROR   0x2U
 Invalid string error. More...
 
#define XSECURE_INVALID_FLAG   0x3U
 Invalid flag. More...
 
#define XSECURE_ISNOT_SECURE_IMAGE   0x4U
 Non-secure Image flag. More...
 
#define XSECURE_SHA3_INIT_FAIL   0x5U
 SHA3 initialization failure. More...
 
#define XSECURE_SIZE_ERR   0x6U
 Size error. More...
 
#define XSECURE_SEL_ERR   0x7U
 Selection error. More...
 
#define XSECURE_REVOKE_ERR   0x8U
 Revoke error. More...
 
#define XSECURE_VERIFY_ERR   0x9U
 Verify error. More...
 
#define XSECURE_RSA_INIT_ERR   0xAU
 RSA initialization error. More...
 
#define XSECURE_RSA_ENCRYPT_ERR   0xBU
 RSA encrypt error. More...
 
#define XSECURE_SHA3_PADSELECT_ERR   0xCU
 SHA3 padding selection error. More...
 
#define XSECURE_IMAGE_WITH_MUL_PARTITIONS   0xDU
 Image with multiple partitions. More...
 
#define XSECURE_AUTH_ISCOMPULSORY   0xEU
 Authentication is compulsory. More...
 
#define XSECURE_ENC_ISCOMPULSORY   0xFU
 Encryption is compulsory. More...
 
#define XSECURE_BHDR_AUTH_NOT_ALLOWED   0x10U
 Boot header authentication not allowed. More...
 
#define XSECURE_ONLY_BHDR_AUTH_ALLOWED   0x11U
 Only boot header authentication is allowed. More...
 
#define XSECURE_HDR_NOAUTH_PART_AUTH   0x12U
 No header authentication only partition authentication. More...
 
#define XSECURE_DEC_WRONG_KEY_SOURCE   0x13U
 Decryption wrong key source. More...
 
#define XSECURE_KUP_KEY_NOT_PROVIDED   0x14U
 Kup key not provided. More...
 
#define XSECURE_KUP_KEY_NOT_REQUIRED   0x15U
 Kup key not required. More...
 
#define XSECURE_INVALID_EFUSE_SELECT   0x17U
 Invalid eFuse selection. More...
 
#define XSECURE_OUT_OF_RANGE_USER_EFUSE_ERROR   0x18U
 Out of range user eFuse error. More...
 
#define XSECURE_INVALID_IMAGE_ERROR   0x19U
 Invalid image error. More...
 
#define XSECURE_SHA3_UPDATE_FAIL   0x20U
 SHA3 update failure. More...
 
#define XSECURE_IMAGE_HEADER_SIZE_ERR   0x21U
 Image header size error. More...
 
#define XSECURE_AES_ERROR   0x80U
 AES error. More...
 
#define XSECURE_RSA_INVALID_PARAM_RESERVED   0x82U
 Invalid reserved RSA parameter. More...
 
#define XSECURE_AUTH_NOT_ENABLED   0xFFU
 Authentication not enabled. More...
 
#define XSECURE_PPK_ERR   0x100U
 PPK error. More...
 
#define XSECURE_SPK_ERR   0x200U
 SPK error. More...
 
#define XSECURE_AUTH_FAILURE   0x300U
 Authentication failure. More...
 
#define XSECURE_AES_DECRYPTION_FAILURE   0x400U
 AES decryption failure. More...
 
#define XSECURE_BOOT_HDR_FAIL   0x1000U
 Boot header failure. More...
 
#define XSECURE_IMG_HDR_FAIL   0x2000U
 Image header failure. More...
 
#define XSECURE_PARTITION_FAIL   0x3000U
 Partition failure. More...
 
#define XSECURE_CSUDMA_DEVICEID   0U
 CSUDMA device Id. More...
 
#define XSECURE_MOD_LEN   512U
 Module length. More...
 
#define XSECURE_PH_ATTR_AUTH_ENABLE   0x8000U
 Attribute of authentication enabled partition header. More...
 
#define XSECURE_PH_ATTR_ENC_ENABLE   0x0080U
 Attribute of encryption enabled partition header. More...
 
#define XSECURE_AH_ATTR_PPK_SEL_MASK   0x30000U
 PPK select mask of authentication header. More...
 
#define XSECURE_AH_ATTR_PPK_SEL_SHIFT   16U
 PPK select shift of authentication header. More...
 
#define XSECURE_AH_ATTR_SPK_ID_FUSE_SEL_MASK   0xC0000U
 SPKID eFUSE select mask of authentication header. More...
 
#define XSECURE_AH_ATTR_SPKID_FUSESEL_SHIFT   18U
 SPKID eFUSE select shift of authentication header. More...
 
#define XSECURE_AC_SPKID_OFFSET   0x04U
 Offset of SPKID authentication certificate. More...
 
#define XSECURE_AC_PPK_OFFSET   0x40U
 Offset of PPK authentication certificate. More...
 
#define XSECURE_AC_SPK_OFFSET   0x480U
 Offset of SPK authentication certificate. More...
 
#define XSECURE_AC_SPK_SIG_OFFSET   0x8C0U
 Offset of SPK signature authentication certificate. More...
 
#define XSECURE_KEY_SIZE   (512U+512U+64U)
 Key size. More...
 
#define XSECURE_ENABLED   0xFFU
 Enabled. More...
 
#define XSECURE_NOTENABLED   0U
 Not enabled. More...
 
#define XSECURE_EFUSE_BASEADDR   (0XFFCC0000U)
 eFuse base address More...
 
#define XSECURE_USER_EFUSE_START_ADDR   (XSECURE_EFUSE_BASEADDR + 0x00001020U)
 User eFuse 0. More...
 
#define XSECURE_EFUSE_PPK0   (XSECURE_EFUSE_BASEADDR + 0x000010A0U)
 Register PPK0_0. More...
 
#define XSECURE_EFUSE_PPK1   (XSECURE_EFUSE_BASEADDR + 0x000010D0U)
 Register PPK1_0. More...
 
#define XSECURE_EFUSE_SPKID   (XSECURE_EFUSE_BASEADDR + 0x0000105CU)
 Register SPK ID. More...
 
#define XSECURE_SPK_SIZE   (512U+512U+64U)
 SPK size. More...
 
#define XSECURE_PPK_SIZE   (XSECURE_SPK_SIZE)
 PPK size. More...
 
#define XSECURE_PPK_MOD_SIZE   (512U)
 PPK module size. More...
 
#define XSECURE_PPK_MOD_EXT_SIZE   (512U)
 PPK module extention size. More...
 
#define XSECURE_SPK_MOD_SIZE   XSECURE_PPK_MOD_SIZE
 SPK module size. More...
 
#define XSECURE_SPK_MOD_EXT_SIZE   XSECURE_PPK_MOD_EXT_SIZE
 SPK module extention size. More...
 
#define XSECURE_SPK_SIG_SIZE   (512U)
 SPK signature size. More...
 
#define XSECURE_BHDR_SIG_SIZE   (512U)
 Boot header signature size. More...
 
#define XSECURE_PARTITION_SIG_SIZE   (512U)
 partition signature size More...
 
#define XSECURE_RSA_AC_ALIGN   (64U)
 Aligned RSA authentication certificate. More...
 
#define XSECURE_SPKID_AC_ALIGN   (4U)
 Aligned SPKID authentication certificate. More...
 
#define XSECURE_AUTH_HEADER_SIZE   (8U)
 Authentication header size. More...
 
#define XSECURE_AUTH_CERT_USER_DATA   ((u32)64U - XSECURE_AUTH_HEADER_SIZE)
 Authentication certificate of user data. More...
 
#define XSECURE_AUTH_CERT_MIN_SIZE
 Minimum size of authentication certificate. More...
 
#define XSECURE_AUTH_CERT_BHDRSIG_OFFSET   0xAC0U
 Offset of authentication certificate boot header signature. More...
 
#define XSECURE_AUTH_CERT_PARTSIG_OFFSET   0xCC0U
 Offset of authentication certificate partition signature. More...
 
#define XSECURE_BOOT_HDR_MIN_SIZE   (0x000008B8U)
 Minimum size of boot header. More...
 
#define XSECURE_BOOT_HDR_MAX_SIZE
 When boot header contains PUF helper data. More...
 
#define XSECURE_BUFFER_SIZE   (0x00001080U)
 Buffer size. More...
 
#define XSECURE_IV_OFFSET   (0xA0U)
 IV offset. More...
 
#define XSECURE_PH_TABLE_OFFSET   (0x9CU)
 Partition header table offset. More...
 
#define XSECURE_IMAGE_HDR_OFFSET   (0x98U)
 Image header offset. More...
 
#define XSECURE_IMAGE_ATTR_OFFSET   (0x44U)
 Image attribute offset. More...
 
#define XSECURE_KEY_SOURCE_OFFSET   (0x28U)
 Key source offset. More...
 
#define XSECURE_IMG_ATTR_BHDR_MASK   (0xC000U)
 Boot header mask. More...
 
#define XSECURE_IMG_ATTR_PUFHD_MASK   (0x00C0U)
 PUFHd mask. More...
 
#define XSECURE_PH_OFFSET   (0x8U)
 Partition header offset. More...
 
#define XSECURE_AC_IMAGE_HDR_OFFSET   (0x10U)
 Authentication certificate image header offset. More...
 
#define XSECURE_IMAGE_SYNC_WORD_OFFSET   (0x20U)
 Image synchronize word offset. More...
 
#define XSECURE_PH_IV_MASK   (0xFFU)
 Partition header IV mask. More...
 
#define XSECURE_KEY_SRC_KUP   (0xA3A5C3C5U)
 Kup key source. More...
 
#define XSECURE_KEY_SRC_BBRAM   (0x3A5C3C5AU)
 BBRAM key source. More...
 
#define XSECURE_KEY_SRC_BLACK_BH   (0xA35C7C53U)
 Boot header black key source. More...
 
#define XSECURE_KEY_SRC_GREY_BH   (0xA35C7CA5U)
 Boot header grey key source. More...
 
eFuse secure control register
#define XSECURE_EFUSE_SEC_CTRL   (XSECURE_EFUSE_BASEADDR + 0X00001058U)
 < eFuse secure control register offsets and definitions More...
 
#define XSECURE_EFUSE_SEC_CTRL_PPK0_REVOKE   (0x18000000U)
 
#define XSECURE_EFUSE_SEC_CTRL_PPK1_REVOKE   (0xC0000000U)
 
#define XSECURE_EFUSE_SEC_CTRL_RSA_ENABLE   (0x03FFF800U)
 
#define XSECURE_EFUSE_SEC_CTRL_ENC_ONLY   (0x00000004U)
 

Functions

u32 XSecure_Sha3Hash (u32 SrcAddrHigh, u32 SrcAddrLow, u32 SrcSize, u32 Flags)
 This function access the xilsecure SHA3 hardware based on the flags provided to calculate the SHA3 hash. More...
 
u32 XSecure_RsaCore (u32 SrcAddrHigh, u32 SrcAddrLow, u32 SrcSize, u32 Flags)
 This is the function to RSA decrypt or encrypt the provided data and load back to memory. More...
 
u32 XSecure_DataAuth (u8 *Signature, XSecure_RsaKey *KeyInst, u8 *Hash)
 This function performs authentication of data by encrypting the signature with provided key and compares with hash of the data and returns success or failure. More...
 
u32 XSecure_AesOperation (u32 AddrHigh, u32 AddrLow)
 This function checks for flags field of the XSecure_AesParams struct and resolves weather the request is encryption or decryption. More...
 
u32 XSecure_MemCopy (void *DestPtr, void *SrcPtr, u32 Size)
 This function copies the data from specified source to destination using CSU DMA. More...
 
u32 XSecure_CsuDmaInit (void)
 This function is used to initialize the DMA driver. More...
 
u32 XSecure_VerifySpk (u8 *AcPtr, u32 EfuseRsaenable)
 This function verifies SPK by authenticating SPK with PPK, also checks either SPK is revoked or not.if it is not boot header authentication. More...
 
u32 XSecure_PpkVerify (XCsuDma *CsuDmaInstPtr, u8 *AuthCert)
 This function verifies the PPK hash with PPK programmed on efuse. More...
 
u32 XSecure_SpkAuthentication (XCsuDma *CsuDmaInstPtr, u8 *AuthCert, u8 *Ppk)
 This function authenticates SPK with provided PPK or PPK from authentication certificate. More...
 
u32 XSecure_SpkRevokeCheck (u8 *AuthCert)
 This function checks whether SPK is been revoked or not. More...
 
u32 XSecure_PartitionAuthentication (XCsuDma *CsuDmaInstPtr, u8 *Data, u32 Size, u8 *AuthCertPtr)
 This function performs authentication of a partition of an image. More...
 
u32 XSecure_AuthenticationHeaders (u8 *StartAddr, XSecure_ImageInfo *ImageInfo)
 This function authenticates the single partition image's boot header and image header, also copies all the required details to the ImageInfo pointer. More...
 
u32 XSecure_IsRsaEnabled (void)
 This function tells whether RSA authentication is enabled or not. More...
 
u32 XSecure_IsEncOnlyEnabled (void)
 This function tells whether encrypt only is enabled or not. More...
 
u32 XSecure_SecureImage (u32 AddrHigh, u32 AddrLow, u32 KupAddrHigh, u32 KupAddrLow, XSecure_DataAddr *Addr)
 This function process the secure image of single partition created by bootgen. More...
 
XCsuDma * Xsecure_GetCsuDma (void)
 This function is used to initialize CsuDma and return CsuDma pointer. More...
 

Macro Definition Documentation

#define XSECURE_AC_IMAGE_HDR_OFFSET   (0x10U)

Authentication certificate image header offset.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_AC_PPK_OFFSET   0x40U

Offset of PPK authentication certificate.

Referenced by XSecure_PpkVerify().

#define XSECURE_AC_SPK_OFFSET   0x480U

Offset of SPK authentication certificate.

#define XSECURE_AC_SPK_SIG_OFFSET   0x8C0U

Offset of SPK signature authentication certificate.

#define XSECURE_AC_SPKID_OFFSET   0x04U

Offset of SPKID authentication certificate.

Referenced by XSecure_SpkRevokeCheck().

#define XSECURE_AES   1U

Flag indicates AES.

#define XSECURE_AES_DECRYPTION_FAILURE   0x400U

AES decryption failure.

#define XSECURE_AES_ERROR   0x80U

AES error.

#define XSECURE_AES_KUP_KEY   0U

AES kup key.

Referenced by XSecure_AesKeyZeroize(), and XSecure_AesOperation().

#define XSECURE_AH_ATTR_PPK_SEL_MASK   0x30000U

PPK select mask of authentication header.

Referenced by XSecure_PpkVerify().

#define XSECURE_AH_ATTR_PPK_SEL_SHIFT   16U

PPK select shift of authentication header.

Referenced by XSecure_PpkVerify().

#define XSECURE_AH_ATTR_SPK_ID_FUSE_SEL_MASK   0xC0000U

SPKID eFUSE select mask of authentication header.

Referenced by XSecure_SpkAuthentication(), and XSecure_SpkRevokeCheck().

#define XSECURE_AH_ATTR_SPKID_FUSESEL_SHIFT   18U

SPKID eFUSE select shift of authentication header.

Referenced by XSecure_SpkAuthentication(), and XSecure_SpkRevokeCheck().

#define XSECURE_ARRAY_LENGTH (   array)    (sizeof((array))/sizeof((array)[0]))

Array length.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_AUTH_CERT_BHDRSIG_OFFSET   0xAC0U

Offset of authentication certificate boot header signature.

#define XSECURE_AUTH_CERT_MIN_SIZE
Value:
#define XSECURE_PPK_SIZE
PPK size.
Definition: xsecure.h:194
#define XSECURE_BHDR_SIG_SIZE
Boot header signature size.
Definition: xsecure.h:200
#define XSECURE_SPK_SIG_SIZE
SPK signature size.
Definition: xsecure.h:199
#define XSECURE_AUTH_HEADER_SIZE
Authentication header size.
Definition: xsecure.h:205
#define XSECURE_PARTITION_SIG_SIZE
partition signature size
Definition: xsecure.h:201
#define XSECURE_SPK_SIZE
SPK size.
Definition: xsecure.h:193
#define XSECURE_AUTH_CERT_USER_DATA
Authentication certificate of user data.
Definition: xsecure.h:207

Minimum size of authentication certificate.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_AUTH_CERT_PARTSIG_OFFSET   0xCC0U

Offset of authentication certificate partition signature.

Referenced by XSecure_PartitionAuthentication().

#define XSECURE_AUTH_CERT_USER_DATA   ((u32)64U - XSECURE_AUTH_HEADER_SIZE)

Authentication certificate of user data.

#define XSECURE_AUTH_FAILURE   0x300U

Authentication failure.

Referenced by XSecure_DataAuth(), and XSecure_PartitionAuthentication().

#define XSECURE_AUTH_HEADER_SIZE   (8U)

Authentication header size.

Referenced by XSecure_SpkAuthentication().

#define XSECURE_AUTH_ISCOMPULSORY   0xEU

Authentication is compulsory.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_AUTH_NOT_ENABLED   0xFFU

Authentication not enabled.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_BHDR_AUTH_NOT_ALLOWED   0x10U

Boot header authentication not allowed.

#define XSECURE_BHDR_SIG_SIZE   (512U)

Boot header signature size.

#define XSECURE_BOOT_HDR_FAIL   0x1000U

Boot header failure.

#define XSECURE_BOOT_HDR_MAX_SIZE
Value:
(0x00000182U * 4U))
#define XSECURE_BOOT_HDR_MIN_SIZE
Minimum size of boot header.
Definition: xsecure.h:222

When boot header contains PUF helper data.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_BOOT_HDR_MIN_SIZE   (0x000008B8U)

Minimum size of boot header.

#define XSECURE_BUFFER_SIZE   (0x00001080U)

Buffer size.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_CSUDMA_DEVICEID   0U

CSUDMA device Id.

Referenced by XSecure_CsuDmaInit().

#define XSECURE_DEC   0U

Decryption.

Referenced by XSecure_AesOperation(), and XSecure_RsaCore().

#define XSECURE_DEC_WRONG_KEY_SOURCE   0x13U

Decryption wrong key source.

Referenced by XSecure_AesOperation(), XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_EFUSE_BASEADDR   (0XFFCC0000U)

eFuse base address

#define XSECURE_EFUSE_PPK0   (XSECURE_EFUSE_BASEADDR + 0x000010A0U)

Register PPK0_0.

Referenced by XSecure_PpkVerify().

#define XSECURE_EFUSE_PPK1   (XSECURE_EFUSE_BASEADDR + 0x000010D0U)

Register PPK1_0.

Referenced by XSecure_PpkVerify().

#define XSECURE_EFUSE_SEC_CTRL   (XSECURE_EFUSE_BASEADDR + 0X00001058U)

< eFuse secure control register offsets and definitions

Referenced by XSecure_IsEncOnlyEnabled(), XSecure_IsRsaEnabled(), and XSecure_PpkVerify().

#define XSECURE_EFUSE_SPKID   (XSECURE_EFUSE_BASEADDR + 0x0000105CU)

Register SPK ID.

Referenced by XSecure_SpkRevokeCheck().

#define XSECURE_ENABLED   0xFFU

Enabled.

Referenced by XSecure_IsEncOnlyEnabled(), and XSecure_IsRsaEnabled().

#define XSECURE_ENC   1U

Encryption.

Referenced by XSecure_AesOperation().

#define XSECURE_ENC_ISCOMPULSORY   0xFU

Encryption is compulsory.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_ERROR_CSUDMA_INIT_FAIL   0x1U

CSUDMA initialization fail error.

Referenced by XSecure_CsuDmaInit(), XSecure_SecureImage(), and XSecure_Sha3Hash().

#define XSECURE_GCM_TAG_LEN   128U

GCM tag length.

#define XSECURE_HDR_NOAUTH_PART_AUTH   0x12U

No header authentication only partition authentication.

Referenced by XSecure_SecureImage().

#define XSECURE_IMAGE_ATTR_OFFSET   (0x44U)

Image attribute offset.

#define XSECURE_IMAGE_HDR_OFFSET   (0x98U)

Image header offset.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_IMAGE_HEADER_SIZE_ERR   0x21U

Image header size error.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_IMAGE_SYNC_WORD_OFFSET   (0x20U)

Image synchronize word offset.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_IMAGE_WITH_MUL_PARTITIONS   0xDU

Image with multiple partitions.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_IMG_ATTR_BHDR_MASK   (0xC000U)

Boot header mask.

#define XSECURE_IMG_ATTR_PUFHD_MASK   (0x00C0U)

PUFHd mask.

#define XSECURE_IMG_HDR_FAIL   0x2000U

Image header failure.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_INVALID_EFUSE_SELECT   0x17U

Invalid eFuse selection.

Referenced by XSecure_SpkAuthentication(), and XSecure_SpkRevokeCheck().

#define XSECURE_INVALID_FLAG   0x3U

Invalid flag.

Referenced by XSecure_AesOperation(), and XSecure_Sha3Hash().

#define XSECURE_INVALID_IMAGE_ERROR   0x19U

Invalid image error.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_ISNOT_SECURE_IMAGE   0x4U

Non-secure Image flag.

Referenced by XSecure_SecureImage().

#define XSECURE_IV_LEN   3U
#define XSECURE_IV_OFFSET   (0xA0U)
#define XSECURE_IV_STR_LEN   24U

IV string length.

#define XSECURE_KEY_LEN   8U

Key length.

#define XSECURE_KEY_SIZE   (512U+512U+64U)

Key size.

Referenced by main(), and XSecure_PpkVerify().

#define XSECURE_KEY_SOURCE_OFFSET   (0x28U)

Key source offset.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_KEY_SRC_BBRAM   (0x3A5C3C5AU)

BBRAM key source.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_KEY_SRC_BLACK_BH   (0xA35C7C53U)

Boot header black key source.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_KEY_SRC_GREY_BH   (0xA35C7CA5U)

Boot header grey key source.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_KEY_SRC_KUP   (0xA3A5C3C5U)

Kup key source.

Referenced by XSecure_SecureImage().

#define XSECURE_KEY_STR_LEN   64U

Key string length.

#define XSECURE_KUP_KEY_NOT_PROVIDED   0x14U

Kup key not provided.

#define XSECURE_KUP_KEY_NOT_REQUIRED   0x15U

Kup key not required.

#define XSECURE_MASK   (XSECURE_AES | XSECURE_RSA)

Flag indicates both RSA and AES.

#define XSECURE_MAX_NIBBLES   8U

Maximum nibbles.

#define XSECURE_MOD_LEN   512U

Module length.

Referenced by XSecure_DataAuth().

#define XSECURE_NOTENABLED   0U

Not enabled.

Referenced by XSecure_IsEncOnlyEnabled(), and XSecure_IsRsaEnabled().

#define XSECURE_ONLY_BHDR_AUTH_ALLOWED   0x11U

Only boot header authentication is allowed.

#define XSECURE_OUT_OF_RANGE_USER_EFUSE_ERROR   0x18U

Out of range user eFuse error.

Referenced by XSecure_SpkRevokeCheck().

#define XSECURE_PARTITION_FAIL   0x3000U

Partition failure.

Referenced by XSecure_SecureImage().

#define XSECURE_PARTITION_SIG_SIZE   (512U)

partition signature size

#define XSECURE_PH_ATTR_AUTH_ENABLE   0x8000U

Attribute of authentication enabled partition header.

Referenced by XSecure_SecureImage().

#define XSECURE_PH_ATTR_ENC_ENABLE   0x0080U

Attribute of encryption enabled partition header.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_PH_IV_MASK   (0xFFU)

Partition header IV mask.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_PH_OFFSET   (0x8U)

Partition header offset.

Referenced by XSecure_AuthenticationHeaders().

#define XSECURE_PH_TABLE_OFFSET   (0x9CU)

Partition header table offset.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

#define XSECURE_PPK_ERR   0x100U

PPK error.

Referenced by XSecure_PpkVerify().

#define XSECURE_PPK_MOD_EXT_SIZE   (512U)

PPK module extention size.

Referenced by XSecure_SpkAuthentication().

#define XSECURE_PPK_MOD_SIZE   (512U)

PPK module size.

Referenced by XSecure_SpkAuthentication().

#define XSECURE_PPK_SIZE   (XSECURE_SPK_SIZE)

PPK size.

Referenced by XSecure_SecureImage(), and XSecure_SpkAuthentication().

#define XSECURE_REVOKE_ERR   0x8U

Revoke error.

Referenced by XSecure_PpkVerify(), and XSecure_SpkRevokeCheck().

#define XSECURE_RSA   2U

Flag indicates RSA.

#define XSECURE_RSA_AC_ALIGN   (64U)

Aligned RSA authentication certificate.

Referenced by XSecure_SpkAuthentication().

#define XSECURE_RSA_AES   3U

Flag indicates both RSA and AES.

#define XSECURE_RSA_CORE_OPERATION   1U

RSA core operation.

Referenced by XSecure_RsaCore().

#define XSECURE_RSA_ENCRYPT_ERR   0xBU

RSA encrypt error.

Referenced by XSecure_DataAuth(), and XSecure_SpkAuthentication().

#define XSECURE_RSA_INIT_ERR   0xAU

RSA initialization error.

Referenced by XSecure_DataAuth(), and XSecure_SpkAuthentication().

#define XSECURE_RSA_INVALID_PARAM_RESERVED   0x82U

Invalid reserved RSA parameter.

#define XSECURE_RSA_KEY_SELECT   2U

RSA key select.

#define XSECURE_SEL_ERR   0x7U

Selection error.

Referenced by XSecure_PpkVerify().

#define XSECURE_SHA3_FINAL   4U

SHA3 final.

Referenced by XSecure_Sha3Hash().

#define XSECURE_SHA3_INIT   1U

SHA3 Initialization.

Referenced by XSecure_Sha3Hash().

#define XSECURE_SHA3_INIT_FAIL   0x5U

SHA3 initialization failure.

Referenced by XSecure_PpkVerify(), XSecure_Sha3Hash(), and XSecure_SpkAuthentication().

#define XSECURE_SHA3_MASK
Value:
#define XSECURE_SHA3_INIT
SHA3 Initialization.
Definition: xsecure.h:73
#define XSECURE_SHA3_FINAL
SHA3 final.
Definition: xsecure.h:75
#define XSECURE_SHA3HASH_UPDATE
SHA3 hash update.
Definition: xsecure.h:74

SHA3 mask.

Referenced by XSecure_Sha3Hash().

#define XSECURE_SHA3_PADSELECT_ERR   0xCU

SHA3 padding selection error.

Referenced by XSecure_PpkVerify().

#define XSECURE_SHA3_UPDATE_FAIL   0x20U

SHA3 update failure.

Referenced by XSecure_Sha3Hash().

#define XSECURE_SHA3HASH_UPDATE   2U

SHA3 hash update.

Referenced by XSecure_Sha3Hash().

#define XSECURE_SIZE_ERR   0x6U

Size error.

Referenced by XSecure_AesOperation().

#define XSECURE_SPK_ERR   0x200U

SPK error.

Referenced by XSecure_SpkAuthentication(), and XSecure_SpkRevokeCheck().

#define XSECURE_SPK_MOD_EXT_SIZE   XSECURE_PPK_MOD_EXT_SIZE

SPK module extention size.

#define XSECURE_SPK_MOD_SIZE   XSECURE_PPK_MOD_SIZE

SPK module size.

#define XSECURE_SPK_SIG_SIZE   (512U)

SPK signature size.

Referenced by XSecure_SpkAuthentication().

#define XSECURE_SPK_SIZE   (512U+512U+64U)

SPK size.

Referenced by XSecure_SpkAuthentication().

#define XSECURE_SPKID_AC_ALIGN   (4U)

Aligned SPKID authentication certificate.

#define XSECURE_SPKID_EFUSE   1U

SPK ID eFUSE.

Referenced by XSecure_SpkAuthentication(), and XSecure_SpkRevokeCheck().

#define XSECURE_STRING_INVALID_ERROR   0x2U

Invalid string error.

#define XSECURE_USER_EFUSE   2U

User eFuse.

Referenced by XSecure_SpkAuthentication(), and XSecure_SpkRevokeCheck().

#define XSECURE_USER_EFUSE_MAX_VALUE   256U

Maximum value of User eFuse.

Referenced by XSecure_SpkRevokeCheck().

#define XSECURE_USER_EFUSE_MIN_VALUE   1U

Minimum value of User eFuse.

Referenced by XSecure_SpkRevokeCheck().

#define XSECURE_USER_EFUSE_START_ADDR   (XSECURE_EFUSE_BASEADDR + 0x00001020U)

User eFuse 0.

Referenced by XSecure_SpkRevokeCheck().

#define XSECURE_VERIFY_ERR   0x9U
#define XSECURE_WORD_LEN   4U

Word length.

#define XSECURE_WORD_SHIFT   32U

Word shift.

Referenced by XSecure_SecureImage(), and XSecure_SpkRevokeCheck().

Function Documentation

u32 XSecure_AesOperation ( u32  AddrHigh,
u32  AddrLow 
)

This function checks for flags field of the XSecure_AesParams struct and resolves weather the request is encryption or decryption.

Parameters
AddrHighHigher 32 bit address of the XSecure_AesParams structure.
AddrLowLower 32 bit address of the XSecure_AesParams structure.
Returns
Returns Status
  • XST_SUCCESS on success
  • Error code on failure

References XSECURE_AES_KUP_KEY, XSECURE_DEC, XSECURE_DEC_WRONG_KEY_SOURCE, XSECURE_ENC, XSECURE_INVALID_FLAG, XSECURE_SIZE_ERR, and XSECURE_WORD_LEN.

u32 XSecure_AuthenticationHeaders ( u8 *  StartAddr,
XSecure_ImageInfo *  ImageInfo 
)

This function authenticates the single partition image's boot header and image header, also copies all the required details to the ImageInfo pointer.

Parameters
StartAddrPointer to the single partition image.
ImageInfoPointer to XSecure_ImageInfo structure.
Returns
Returns Status
  • XST_SUCCESS on success
  • Error code on failure
  • XSECURE_AUTH_NOT_ENABLED - represents image is not authenticated.
Note
Copies the header and authentication certificate to internal buffer.

References XSecure_PartitionHeader::NextPartitionOffset, XSECURE_AC_IMAGE_HDR_OFFSET, XSECURE_ARRAY_LENGTH, XSECURE_AUTH_CERT_MIN_SIZE, XSECURE_AUTH_ISCOMPULSORY, XSECURE_AUTH_NOT_ENABLED, XSECURE_BOOT_HDR_MAX_SIZE, XSECURE_BUFFER_SIZE, XSECURE_DEC_WRONG_KEY_SOURCE, XSECURE_ENC_ISCOMPULSORY, XSECURE_IMAGE_HDR_OFFSET, XSECURE_IMAGE_HEADER_SIZE_ERR, XSECURE_IMAGE_SYNC_WORD_OFFSET, XSECURE_IMAGE_WITH_MUL_PARTITIONS, XSECURE_IMG_HDR_FAIL, XSECURE_INVALID_IMAGE_ERROR, XSecure_IsEncOnlyEnabled(), XSecure_IsRsaEnabled(), XSECURE_IV_LEN, XSECURE_IV_OFFSET, XSECURE_KEY_SOURCE_OFFSET, XSECURE_KEY_SRC_BBRAM, XSECURE_KEY_SRC_BLACK_BH, XSECURE_KEY_SRC_GREY_BH, XSecure_MemCopy(), XSecure_PartitionAuthentication(), XSECURE_PH_ATTR_ENC_ENABLE, XSECURE_PH_IV_MASK, XSECURE_PH_OFFSET, XSECURE_PH_TABLE_OFFSET, and XSECURE_WORD_LEN.

Referenced by XSecure_SecureImage().

u32 XSecure_CsuDmaInit ( void  )

This function is used to initialize the DMA driver.

Returns
returns the error code on any error returns XST_SUCCESS on success

References XSECURE_CSUDMA_DEVICEID, and XSECURE_ERROR_CSUDMA_INIT_FAIL.

Referenced by Xsecure_GetCsuDma(), XSecure_SecureImage(), and XSecure_Sha3Hash().

u32 XSecure_DataAuth ( u8 *  Signature,
XSecure_RsaKey KeyInst,
u8 *  Hash 
)

This function performs authentication of data by encrypting the signature with provided key and compares with hash of the data and returns success or failure.

Parameters
SignaturePointer to the RSA signature of the data
KeyInstPointer to XSecure_RsaKey structure.
HashPointer to the hash of the data to be authenticated.
Returns
Returns Status
  • XST_SUCCESS on success
  • Error code on failure

References XSecure_RsaKey::Exponent, XSecure_RsaKey::Exponentiation, XSecure_RsaKey::Modulus, XSECURE_AUTH_FAILURE, XSECURE_HASH_TYPE_SHA3, XSECURE_MOD_LEN, XSECURE_RSA_ENCRYPT_ERR, XSECURE_RSA_INIT_ERR, XSecure_RsaInitialize(), XSecure_RsaPublicEncrypt(), XSecure_RsaSignVerification(), and XSECURE_VERIFY_ERR.

XCsuDma* Xsecure_GetCsuDma ( void  )

This function is used to initialize CsuDma and return CsuDma pointer.

Returns
returns reference to a XCsuDma driver instance

References XSecure_CsuDmaInit().

u32 XSecure_IsEncOnlyEnabled ( void  )

This function tells whether encrypt only is enabled or not.

Returns
Returns Status
  • XSECURE_ENABLED if enc_only bit of efuse is programmed
  • XSECURE_NOTENABLED if enc_only bit of efuse is not programmed

References XSECURE_EFUSE_SEC_CTRL, XSECURE_ENABLED, and XSECURE_NOTENABLED.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

u32 XSecure_IsRsaEnabled ( void  )

This function tells whether RSA authentication is enabled or not.

Returns
Returns Status
  • XSECURE_ENABLED if RSA bit of efuse is programmed
  • XSECURE_NOTENABLED if RSA bit of efuse is not programmed.

References XSECURE_EFUSE_SEC_CTRL, XSECURE_ENABLED, and XSECURE_NOTENABLED.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_VerifySpk().

u32 XSecure_MemCopy ( void *  DestPtr,
void *  SrcPtr,
u32  Size 
)

This function copies the data from specified source to destination using CSU DMA.

Parameters
DestPtrPointer to the destination address.
SrcPtrPointer to the source address.
SizeData size to be copied.
Returns
Returns Status
  • XST_SUCCESS on success
  • XST_FAILURE on failure

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

u32 XSecure_PartitionAuthentication ( XCsuDma *  CsuDmaInstPtr,
u8 *  Data,
u32  Size,
u8 *  AuthCertPtr 
)

This function performs authentication of a partition of an image.

Parameters
CsuDmaInstPtrPointer to the CSU DMA instance.
DataPointer to partition to be authenticated.
SizeRepresents the size of the partition.
AuthCertPtrPointer to authentication certificate of the partition.
Returns
Returns Status
  • XST_SUCCESS on success
  • Error code on failure

References XSECURE_AUTH_CERT_PARTSIG_OFFSET, and XSECURE_AUTH_FAILURE.

Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().

u32 XSecure_PpkVerify ( XCsuDma *  CsuDmaInstPtr,
u8 *  AuthCert 
)

This function verifies the PPK hash with PPK programmed on efuse.

Parameters
CsuDmaInstPtrPointer to CSU DMA instance.
AuthCertPointer to authentication certificate.
Returns
Returns Status
  • XST_SUCCESS on successful verification.
  • Error code on failure.

References XSECURE_AC_PPK_OFFSET, XSECURE_AH_ATTR_PPK_SEL_MASK, XSECURE_AH_ATTR_PPK_SEL_SHIFT, XSECURE_EFUSE_PPK0, XSECURE_EFUSE_PPK1, XSECURE_EFUSE_SEC_CTRL, XSECURE_HASH_TYPE_SHA3, XSECURE_KEY_SIZE, XSECURE_PPK_ERR, XSECURE_REVOKE_ERR, XSECURE_SEL_ERR, XSECURE_SHA3_INIT_FAIL, XSECURE_SHA3_PADSELECT_ERR, XSecure_Sha3Digest(), XSecure_Sha3Initialize(), XSecure_Sha3PadSelection(), XSECURE_VERIFY_ERR, and XSECURE_WORD_LEN.

u32 XSecure_RsaCore ( u32  SrcAddrHigh,
u32  SrcAddrLow,
u32  SrcSize,
u32  Flags 
)

This is the function to RSA decrypt or encrypt the provided data and load back to memory.

Parameters
SrcAddrHighHigher 32-bit Linear memory space from where CSUDMA will read the data
SrcAddrLowLower 32-bit Linear memory space from where CSUDMA will read the data
SrcSizeNumber of bytes to be encrypted or decrypted.
Flags,:BIT(0) - Encryption/Decryption 0 - Rsa Private key Decryption 1 - Rsa Public key Encryption
Returns
Returns Status XST_SUCCESS on success and error code on failure.
Note
Data to be encrypted/Decrypted + Modulus + Exponent Modulus and Data should always be key size Exponent : private key's exponent is key size while decrypting the signature and 32 bit for public key for encrypting the signature In this API we are not taking exponentiation value.

References XSECURE_DEC, XSECURE_RSA_CORE_OPERATION, XSecure_RsaInitialize(), XSecure_RsaPrivateDecrypt(), and XSecure_RsaPublicEncrypt().

u32 XSecure_SecureImage ( u32  AddrHigh,
u32  AddrLow,
u32  KupAddrHigh,
u32  KupAddrLow,
XSecure_DataAddr *  Addr 
)

This function process the secure image of single partition created by bootgen.

Parameters
AddrHighHigher 32-bit linear memory space of single partition non-bitstream image.
AddrLowLower 32-bit linear memory space of single partition non-bitstream image.
KupAddrHighHigher 32-bit linear memory space of KUP key.
KupAddrLowLigher 32-bit linear memory space of KUP key.
AddrLocation of the secure image loaded after validation.
Returns
Returns Status
  • XST_SUCCESS on success
  • Error code on failure

References XSECURE_AUTH_CERT_MIN_SIZE, XSECURE_AUTH_NOT_ENABLED, XSecure_AuthenticationHeaders(), XSECURE_BUFFER_SIZE, XSecure_CsuDmaInit(), XSECURE_DEC_WRONG_KEY_SOURCE, XSECURE_ENC_ISCOMPULSORY, XSECURE_ERROR_CSUDMA_INIT_FAIL, XSECURE_HDR_NOAUTH_PART_AUTH, XSecure_IsEncOnlyEnabled(), XSECURE_ISNOT_SECURE_IMAGE, XSECURE_IV_LEN, XSECURE_IV_OFFSET, XSECURE_KEY_SOURCE_OFFSET, XSECURE_KEY_SRC_BBRAM, XSECURE_KEY_SRC_BLACK_BH, XSECURE_KEY_SRC_GREY_BH, XSECURE_KEY_SRC_KUP, XSecure_MemCopy(), XSECURE_PARTITION_FAIL, XSecure_PartitionAuthentication(), XSECURE_PH_ATTR_AUTH_ENABLE, XSECURE_PH_ATTR_ENC_ENABLE, XSECURE_PH_IV_MASK, XSECURE_PH_TABLE_OFFSET, XSECURE_PPK_SIZE, XSecure_VerifySpk(), XSECURE_WORD_LEN, and XSECURE_WORD_SHIFT.

u32 XSecure_Sha3Hash ( u32  SrcAddrHigh,
u32  SrcAddrLow,
u32  SrcSize,
u32  Flags 
)

This function access the xilsecure SHA3 hardware based on the flags provided to calculate the SHA3 hash.

Parameters
SrcAddrHighHigher 32-bit of the input or output address.
SrcAddrLowLower 32-bit of the input or output address.
SrcSizeSize of the data on which hash should be calculated.
Flags,:inputs for the operation requested BIT(0) - for initializing csudma driver and SHA3, (Here address and size inputs can be NULL) BIT(1) - To call Sha3_Update API which can be called multiple times when data is not contiguous. BIT(2) - to get final hash of the whole updated data. Hash will be overwritten at provided address with 48 bytes.
Returns
Returns Status XST_SUCCESS on success and error code on failure.

References XSecure_CsuDmaInit(), XSECURE_ERROR_CSUDMA_INIT_FAIL, XSECURE_INVALID_FLAG, XSECURE_SHA3_FINAL, XSECURE_SHA3_INIT, XSECURE_SHA3_INIT_FAIL, XSECURE_SHA3_MASK, XSECURE_SHA3_UPDATE_FAIL, XSecure_Sha3Finish(), XSECURE_SHA3HASH_UPDATE, XSecure_Sha3Initialize(), XSecure_Sha3Start(), and XSecure_Sha3Update().

Referenced by XSecure_HmacFinal(), and XSecure_Sha3Kat().

u32 XSecure_SpkAuthentication ( XCsuDma *  CsuDmaInstPtr,
u8 *  AuthCert,
u8 *  Ppk 
)

This function authenticates SPK with provided PPK or PPK from authentication certificate.

Parameters
CsuDmaInstPtrPointer to CSU DMA instance.
AuthCertPointer to authentication certificate.
PpkPointer to the PPK key.
  • If NULL uses PPK from provided authentication certificate.
Returns
Returns Status
  • XST_SUCCESS on successful verification.
  • Error code on failure.

References XSECURE_AH_ATTR_SPK_ID_FUSE_SEL_MASK, XSECURE_AH_ATTR_SPKID_FUSESEL_SHIFT, XSECURE_AUTH_HEADER_SIZE, XSECURE_HASH_TYPE_SHA3, XSECURE_INVALID_EFUSE_SELECT, XSECURE_PPK_MOD_EXT_SIZE, XSECURE_PPK_MOD_SIZE, XSECURE_PPK_SIZE, XSECURE_RSA_AC_ALIGN, XSECURE_RSA_ENCRYPT_ERR, XSECURE_RSA_INIT_ERR, XSecure_RsaInitialize(), XSecure_RsaPublicEncrypt(), XSecure_RsaSignVerification(), XSECURE_SHA3_INIT_FAIL, XSecure_Sha3Finish(), XSecure_Sha3Initialize(), XSecure_Sha3PadSelection(), XSecure_Sha3Start(), XSecure_Sha3Update(), XSECURE_SPK_ERR, XSECURE_SPK_SIG_SIZE, XSECURE_SPK_SIZE, XSECURE_SPKID_EFUSE, XSECURE_USER_EFUSE, and XSECURE_VERIFY_ERR.

Referenced by XSecure_VerifySpk().

u32 XSecure_SpkRevokeCheck ( u8 *  AuthCert)

This function checks whether SPK is been revoked or not.

Parameters
AuthCertPointer to authentication certificate.
Returns
Returns Status
  • XST_SUCCESS on successful verification.
  • Error code on failure.

References XSECURE_AC_SPKID_OFFSET, XSECURE_AH_ATTR_SPK_ID_FUSE_SEL_MASK, XSECURE_AH_ATTR_SPKID_FUSESEL_SHIFT, XSECURE_EFUSE_SPKID, XSECURE_INVALID_EFUSE_SELECT, XSECURE_OUT_OF_RANGE_USER_EFUSE_ERROR, XSECURE_REVOKE_ERR, XSECURE_SPK_ERR, XSECURE_SPKID_EFUSE, XSECURE_USER_EFUSE, XSECURE_USER_EFUSE_MAX_VALUE, XSECURE_USER_EFUSE_MIN_VALUE, XSECURE_USER_EFUSE_START_ADDR, XSECURE_WORD_LEN, and XSECURE_WORD_SHIFT.

Referenced by XSecure_VerifySpk().

u32 XSecure_VerifySpk ( u8 *  AcPtr,
u32  EfuseRsaenable 
)

This function verifies SPK by authenticating SPK with PPK, also checks either SPK is revoked or not.if it is not boot header authentication.

Parameters
AcPtrPointer to the authentication certificate.
EfuseRsaenableInput variable which holds efuse RSA authentication or boot header authentication. 0 - Boot header authentication 1 - RSA authentication
Returns
Returns Status
  • XST_SUCCESS on success
  • Error code on failure

References XSecure_IsRsaEnabled(), XSecure_SpkAuthentication(), and XSecure_SpkRevokeCheck().

Referenced by XSecure_SecureImage().