xilocp
Vitis Drivers API Documentation
XilOcp Client APIs

Functions

int XOcp_ClientInit (XOcp_ClientInstance *const InstancePtr, XMailbox *const MailboxPtr)
 This function sets the instance of mailbox. More...
 
int XOcp_ExtendHwPcr (XOcp_ClientInstance *InstancePtr, XOcp_HwPcr PcrNum, u64 ExtHashAddr, u32 Size)
 This function sends IPI request to extend the PCR with provided hash by requesting ROM service. More...
 
int XOcp_GetHwPcr (XOcp_ClientInstance *InstancePtr, u32 PcrMask, u64 PcrBufAddr, u32 PcrBufSize)
 This function sends IPI request to get the PCR value from requested PCR. More...
 
int XOcp_GetHwPcrLog (XOcp_ClientInstance *InstancePtr, u64 HwPcrEventAddr, u64 HwPcrLogInfoAddr, u32 NumOfLogEntries)
 This function sends IPI request to get the log and status of HWPCR. More...
 
int XOcp_GenDmeResp (XOcp_ClientInstance *InstancePtr, u64 NonceAddr, u64 DmeStructResAddr)
 This function sends IPI request to fill the DME structure and generates the response with signature. More...
 
int XOcp_GetX509Cert (XOcp_ClientInstance *InstancePtr, u64 GetX509CertAddr)
 This function sends IPI request to get 509 certificate. More...
 
int XOcp_ClientAttestWithDevAk (XOcp_ClientInstance *InstancePtr, u64 AttestWithDevAk)
 This function sends IPI request to get 509 certificate. More...
 
int XOcp_ExtendSwPcr (XOcp_ClientInstance *InstancePtr, XOcp_SwPcrExtendParams *ExtendParams)
 This function sends IPI request to extend the SW PCR with provided hash/data. More...
 
int XOcp_GetSwPcr (XOcp_ClientInstance *InstancePtr, u32 PcrMask, u8 *PcrBuf, u32 PcrBufSize)
 This function sends IPI request to get the SW PCR value from requested PCR. More...
 
int XOcp_GetSwPcrLog (XOcp_ClientInstance *InstancePtr, XOcp_SwPcrLogReadData *LogParams)
 This function sends IPI request to get the SW PCR log. More...
 
int XOcp_GetSwPcrData (XOcp_ClientInstance *InstancePtr, XOcp_SwPcrReadData *DataParams)
 This function sends IPI request to get the SW PCR data for the specified PCR. More...
 
int XOcp_GenSharedSecretWithDevAk (XOcp_ClientInstance *InstancePtr, const u8 *PubKey, u8 *SharedSecret)
 This function sends IPI request to generate shared secret using Elliptic Curve Diffie–Hellman Key Exchange (ECDH). More...
 
int XOcp_ClientAttestWithKeyWrapDevAk (XOcp_ClientInstance *InstancePtr, u64 AttnPloadAddr, u32 AttnPloadSize, u32 PubKeyOffset, u64 SignatureAddr)
 This function sends IPI request to calculate the hash of the Key Wrap buffer and attest with Key Wrap DevAk private key. More...
 

Function Documentation

int XOcp_ClientAttestWithDevAk ( XOcp_ClientInstance *  InstancePtr,
u64  AttestWithDevAk 
)

This function sends IPI request to get 509 certificate.

Parameters
InstancePtr- Pointer to the client instance
AttestWithDevAk- Address of XOcp_AttestWithDevAk structure.
Returns
  • XST_SUCCESS - If PCR contents are copied
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_ATTESTWITHDEVAK, and XOcp_ProcessMailbox().

int XOcp_ClientAttestWithKeyWrapDevAk ( XOcp_ClientInstance *  InstancePtr,
u64  AttnPloadAddr,
u32  AttnPloadSize,
u32  PubKeyOffset,
u64  SignatureAddr 
)

This function sends IPI request to calculate the hash of the Key Wrap buffer and attest with Key Wrap DevAk private key.

Parameters
InstancePtr- Pointer to the client instance
AttnPloadAddr- Address of the buffer which should be attested
AttnPloadSize- Size of buffer in bytes
PubKeyOffset- Offset in provided buffer where public key needs to be stored
SignatureAddr- Address of the signature after attestation
Returns
  • XST_SUCCESS - Successfully hashed and attested the data with Key Wrap DevAk private key
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_ADDR_HIGH_SHIFT, XOCP_API_ATTEST_WITH_KEYWRAP_DEVAK, and XOcp_ProcessMailbox().

int XOcp_ClientInit ( XOcp_ClientInstance *const  InstancePtr,
XMailbox *const  MailboxPtr 
)

This function sets the instance of mailbox.

Parameters
InstancePtr- Pointer to the client instance
MailboxPtr- Pointer to the mailbox instance
Returns
  • XST_SUCCESS - On successful initialization
  • XST_FAILURE - On failure

Uses XMailbox instance to initiate the communication between client and server.

Referenced by main().

int XOcp_ExtendHwPcr ( XOcp_ClientInstance *  InstancePtr,
XOcp_HwPcr  PcrNum,
u64  ExtHashAddr,
u32  Size 
)

This function sends IPI request to extend the PCR with provided hash by requesting ROM service.

Parameters
InstancePtr- Pointer to the client instance
PcrNum- Variable of XOcp_HwPcr enum to select the PCR to be extended
ExtHashAddr- Address of the buffer which holds the hash to be extended
Size- Size of extended hash
Returns
  • XST_SUCCESS - If PCR extend is success
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_EXTEND_HWPCR, and XOcp_ProcessMailbox().

int XOcp_ExtendSwPcr ( XOcp_ClientInstance *  InstancePtr,
XOcp_SwPcrExtendParams *  ExtendParams 
)

This function sends IPI request to extend the SW PCR with provided hash/data.

Parameters
InstancePtr- Pointer to the client instance
ExtendParams- Pointer to the XOcp_SwPcrExtendParams structure
Returns
  • XST_SUCCESS - If PCR extend is success
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_EXTEND_SWPCR, XOCP_EXTENDED_HASH_SIZE_IN_BYTES, XOCP_PCR_ERR_DATA_IN_INVALID_MEM, and XOcp_ProcessMailbox().

int XOcp_GenDmeResp ( XOcp_ClientInstance *  InstancePtr,
u64  NonceAddr,
u64  DmeStructResAddr 
)

This function sends IPI request to fill the DME structure and generates the response with signature.

Parameters
InstancePtr- Pointer to the client instance
NonceAddr- pointer to 48 bytes buffer which holds the Nonce, which shall be used to fill one of the member of DME sturcture
DmeStructResAddr- pointer to 224 bytes buffer, which is used to store the response DME structure of type XOcp_DmeResponseStructure
Returns
  • XST_SUCCESS - Upon success
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_GENDMERESP, and XOcp_ProcessMailbox().

Referenced by main().

int XOcp_GenSharedSecretWithDevAk ( XOcp_ClientInstance *  InstancePtr,
const u8 *  PubKey,
u8 *  SharedSecret 
)

This function sends IPI request to generate shared secret using Elliptic Curve Diffie–Hellman Key Exchange (ECDH).

The private key used to generate the shared secret is internal DevAK private key which is determined by the subsystem from where the command is originating.

Parameters
InstancePtrPointer to the client instance
PubKeyPointer to the buffer which contains the public key to be used for calculating shared secret using ECDH.
SharedSecretPointer to the output buffer which shall be used to store shared secret
Returns
  • XST_SUCCESS On Success
  • Errorcode On failure

References XOCP_ADDR_HIGH_SHIFT, XOCP_API_GEN_SHARED_SECRET, and XOcp_ProcessMailbox().

int XOcp_GetHwPcr ( XOcp_ClientInstance *  InstancePtr,
u32  PcrMask,
u64  PcrBufAddr,
u32  PcrBufSize 
)

This function sends IPI request to get the PCR value from requested PCR.

Parameters
InstancePtr- Pointer to the client instance
PcrMask- Mask that tells which PCR to be read based on the bits set (bit 0 corresponds to PCR 0)and how many PCRs to be read using the number of bits set.
PcrBufAddr- Address of the buffer to store the requested PCR contents
PcrBufSize- Buffer size to read the PCR values
Returns
  • XST_SUCCESS - If PCR contents are copied
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_GET_HWPCR, and XOcp_ProcessMailbox().

int XOcp_GetHwPcrLog ( XOcp_ClientInstance *  InstancePtr,
u64  HwPcrEventAddr,
u64  HwPcrLogInfoAddr,
u32  NumOfLogEntries 
)

This function sends IPI request to get the log and status of HWPCR.

Parameters
InstancePtr- Pointer to the client instance
HwPcrEventAddr- Pointer to the XOcp_HwPcrEvent structure
HwPcrLogInfoAddr- Pointer to the XOcp_HwPcrLogInfo structure
NumOfLogEntries- Number of log entries to read
Returns
  • XST_SUCCESS - If PCR contents are copied
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_GET_HWPCRLOG, and XOcp_ProcessMailbox().

int XOcp_GetSwPcr ( XOcp_ClientInstance *  InstancePtr,
u32  PcrMask,
u8 *  PcrBuf,
u32  PcrBufSize 
)

This function sends IPI request to get the SW PCR value from requested PCR.

Parameters
InstancePtr- Pointer to the client instance
PcrMask- Mask that tells which PCR to be read based on the bits set (bit 0 corresponds to PCR 0)and how many PCRs to be read using the number of bits set.
PcrBuf- Pointer to the PCR buffer to store the requested PCR contents
PcrBufSize- Buffer size to read the PCR values
Returns
  • XST_SUCCESS - If PCR contents are copied
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_GET_SWPCR, and XOcp_ProcessMailbox().

int XOcp_GetSwPcrData ( XOcp_ClientInstance *  InstancePtr,
XOcp_SwPcrReadData *  DataParams 
)

This function sends IPI request to get the SW PCR data for the specified PCR.

Parameters
InstancePtr- Pointer to the client instance
DataParams- Pointer of the XOcp_SwPcrReadData structure.
Returns
  • XST_SUCCESS - If PCR contents are copied
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_GET_SWPCRDATA, and XOcp_ProcessMailbox().

int XOcp_GetSwPcrLog ( XOcp_ClientInstance *  InstancePtr,
XOcp_SwPcrLogReadData *  LogParams 
)

This function sends IPI request to get the SW PCR log.

Parameters
InstancePtr- Pointer to the client instance
LogParams- Pointer to the XOcp_SwPcrLogReadData structure.
Returns
  • XST_SUCCESS - If PCR contents are copied
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_GET_SWPCRLOG, and XOcp_ProcessMailbox().

int XOcp_GetX509Cert ( XOcp_ClientInstance *  InstancePtr,
u64  GetX509CertAddr 
)

This function sends IPI request to get 509 certificate.

Parameters
InstancePtr- Pointer to the client instance
GetX509CertAddr- Address of XOcp_X509Cert structure.
Returns
  • XST_SUCCESS - If PCR contents are copied
  • XST_FAILURE - Upon any failure

Fill IPI Payload

References XOCP_API_GETX509CERT, and XOcp_ProcessMailbox().