![]() |
xilsecure
Vitis Drivers API Documentation
|
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 supportData 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... | |
| #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 |
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 |
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 |
IV length.
Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().
| #define XSECURE_IV_OFFSET (0xA0U) |
IV offset.
Referenced by XSecure_AuthenticationHeaders(), and XSecure_SecureImage().
| #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 |
| #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 |
Verify error.
Referenced by XSecure_DataAuth(), XSecure_PpkVerify(), and XSecure_SpkAuthentication().
| #define XSECURE_WORD_LEN 4U |
Word length.
| #define XSECURE_WORD_SHIFT 32U |
Word shift.
Referenced by XSecure_SecureImage(), and XSecure_SpkRevokeCheck().
| 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.
| AddrHigh | Higher 32 bit address of the XSecure_AesParams structure. |
| AddrLow | Lower 32 bit address of the XSecure_AesParams structure. |
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.
| StartAddr | Pointer to the single partition image. |
| ImageInfo | Pointer to XSecure_ImageInfo structure. |
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.
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.
| Signature | Pointer to the RSA signature of the data |
| KeyInst | Pointer to XSecure_RsaKey structure. |
| Hash | Pointer to the hash of the data to be authenticated. |
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.
References XSecure_CsuDmaInit().
| u32 XSecure_IsEncOnlyEnabled | ( | void | ) |
This function tells whether encrypt only is enabled or not.
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.
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.
| DestPtr | Pointer to the destination address. |
| SrcPtr | Pointer to the source address. |
| Size | Data size to be copied. |
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.
| CsuDmaInstPtr | Pointer to the CSU DMA instance. |
| Data | Pointer to partition to be authenticated. |
| Size | Represents the size of the partition. |
| AuthCertPtr | Pointer to authentication certificate of the partition. |
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.
| CsuDmaInstPtr | Pointer to CSU DMA instance. |
| AuthCert | Pointer to authentication certificate. |
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.
| SrcAddrHigh | Higher 32-bit Linear memory space from where CSUDMA will read the data |
| SrcAddrLow | Lower 32-bit Linear memory space from where CSUDMA will read the data |
| SrcSize | Number of bytes to be encrypted or decrypted. |
| Flags,: | BIT(0) - Encryption/Decryption 0 - Rsa Private key Decryption 1 - Rsa Public key Encryption |
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.
| AddrHigh | Higher 32-bit linear memory space of single partition non-bitstream image. |
| AddrLow | Lower 32-bit linear memory space of single partition non-bitstream image. |
| KupAddrHigh | Higher 32-bit linear memory space of KUP key. |
| KupAddrLow | Ligher 32-bit linear memory space of KUP key. |
| Addr | Location of the secure image loaded after validation. |
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.
| SrcAddrHigh | Higher 32-bit of the input or output address. |
| SrcAddrLow | Lower 32-bit of the input or output address. |
| SrcSize | Size 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. |
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.
| CsuDmaInstPtr | Pointer to CSU DMA instance. |
| AuthCert | Pointer to authentication certificate. |
| Ppk | Pointer to the PPK key.
|
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.
| AuthCert | Pointer to authentication certificate. |
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.
| AcPtr | Pointer to the authentication certificate. |
| EfuseRsaenable | Input variable which holds efuse RSA authentication or boot header authentication. 0 - Boot header authentication 1 - RSA authentication |
References XSecure_IsRsaEnabled(), XSecure_SpkAuthentication(), and XSecure_SpkRevokeCheck().
Referenced by XSecure_SecureImage().