hdcp22_tx
Vitis Drivers API Documentation
xhdcp22_tx_i.h File Reference

Data Structures

struct  XHdcp22_Tx_CertRx
 This typedef contains the public key certificate of Receiver that is received with AKE_Send_Cert. More...
 
struct  XHdcp22_Tx_AKESendCert
 This typedef contains the received AKE_Send_Cert message definition. More...
 
struct  XHdcp22_Tx_AKESendHPrime
 This typedef contains the received AKE_Send_H_prime message definition. More...
 
struct  XHdcp22_Tx_AKESendPairingInfo
 This typedef contains the received AKE_Send_Pairing_Info message definition. More...
 
struct  XHdcp22_Tx_LCSendLPrime
 This typedef contains the received AKE_Send_L_prime message definition. More...
 
struct  XHdcp22_Tx_AKEInit
 This typedef contains the transmitted AKE_Init message definition. More...
 
struct  XHdcp22_Tx_AKENoStoredKm
 This typedef contains the transmitted AKE_No_Stored_km message definition. More...
 
struct  XHdcp22_Tx_AKEStoredKm
 This typedef contains the transmitted AKE_Stored_km message definition. More...
 
struct  XHdcp22_Tx_LCInit
 This typedef contains the transmitted LC_Init message definition. More...
 
struct  XHdcp22_Tx_SKESendEks
 This typedef contains the transmitted SKE_Send_Eks message definition. More...
 
struct  XHdcp22_Tx_RepeatAuthSendRecvIDList
 This typedef contains the RepeaterAuth_Send_ReceiverID_List message definition. More...
 
struct  XHdcp22_Tx_RepeatAuthSendAck
 This typedef contains the RepeaterAuth_Send_Ack message definition. More...
 
struct  XHdcp22_Tx_RepeatAuthStreamManage
 This typedef contains the RepeaterAuth_Stream_Manage message definition. More...
 
struct  XHdcp22_Tx_RepeatAuthStreamReady
 This typedef contains the RepeaterAuth_Stream_Ready message definition. More...
 
union  XHdcp22_Tx_Message
 Message buffer structure. More...
 
struct  XHdcp22_Tx_DDCMessage
 Message including the DDC Address. More...
 

Macros

#define XHDCP22_TX_I_H
 prevent circular inclusions by using protection macros. More...
 
#define XHDCP22_TX_MAX_ALLOWED_LOCALITY_CHECKS   8
 Maximum allowed re-checking locality, prescribed by LLC. More...
 
#define XHDCP22_TX_MAX_ALLOWED_STREAM_MANAGE_CHECKS   128
 Maximum allowed re-checking content stream management. More...
 
#define XHDCP22_TX_LC128_SIZE   16
 Lc128 global constant size. More...
 
#define XHDCP22_TX_RCVID_SIZE   5
 Unique receiver Id size in bytes. More...
 
#define XHDCP22_TX_REPEATER_MAX_DEVICE_COUNT   31
 Max number of downstream devices allowed. More...
 
#define XHDCP22_TX_REPEATER_MAX_CASCADE_DEPTH   4
 Max cascade depth. More...
 
#define XHDCP22_TX_MSG_UNDEFINED   0
 Undefined. More...
 
#define XHDCP22_TX_AKE_INIT   2
 AKE Init message. More...
 
#define XHDCP22_TX_AKE_INIT_SIZE   12
 AKE Init message size. More...
 
#define XHDCP22_TX_AKE_SEND_CERT   3
 AKE Send Certificate message. More...
 
#define XHDCP22_TX_AKE_SEND_CERT_SIZE   534
 AKE Send Certificate message size. More...
 
#define XHDCP22_TX_AKE_NO_STORED_KM   4
 AKE No Stored Km message. More...
 
#define XHDCP22_TX_AKE_NO_STORED_KM_SIZE   129
 AKE No Stored Km message size. More...
 
#define XHDCP22_TX_AKE_STORED_KM   5
 AKE Stored Km message size. More...
 
#define XHDCP22_TX_AKE_STORED_KM_SIZE   33
 AKE Stored Km message size. More...
 
#define XHDCP22_TX_AKE_SEND_H_PRIME   7
 AKE H' message. More...
 
#define XHDCP22_TX_AKE_SEND_H_PRIME_SIZE   33
 AKE H' message size. More...
 
#define XHDCP22_TX_AKE_SEND_PAIRING_INFO   8
 AKE Pairing info message. More...
 
#define XHDCP22_TX_AKE_SEND_PAIRING_INFO_SIZE   17
 AKE Pairing info message size. More...
 
#define XHDCP22_TX_LC_INIT   9
 LC Init message. More...
 
#define XHDCP22_TX_LC_INIT_SIZE   9
 LC Init message size. More...
 
#define XHDCP22_TX_LC_SEND_L_PRIME   10
 Send L' message. More...
 
#define XHDCP22_TX_LC_SEND_L_PRIME_SIZE   33
 Send L' message size. More...
 
#define XHDCP22_TX_SKE_SEND_EKS   11
 Send Eks message. More...
 
#define XHDCP22_TX_SKE_SEND_EKS_SIZE   25
 Send Eks message size. More...
 
#define XHDCP22_TX_REPEATAUTH_SEND_RECVID_LIST   12
 Repeater Auth send receiver ID list message. More...
 
#define XHDCP22_TX_REPEATAUTH_SEND_RECVID_LIST_SIZE   177
 Repeater Auth send receiver ID list maximum message size. More...
 
#define XHDCP22_TX_REPEATAUTH_SEND_ACK   15
 RepeaterAuth send ack message. More...
 
#define XHDCP22_TX_REPEATAUTH_SEND_ACK_SIZE   17
 RepeaterAuth send ack message size in bytes. More...
 
#define XHDCP22_TX_REPEATAUTH_STREAM_MANAGE   16
 RepeaterAuth stream manage message. More...
 
#define XHDCP22_TX_REPEATAUTH_STREAM_MANAGE_SIZE   8
 RepeaterAuth stream manage message size in bytes. More...
 
#define XHDCP22_TX_REPEATAUTH_STREAM_READY   17
 RepeaterAuth stream ready message. More...
 
#define XHDCP22_TX_REPEATAUTH_STREAM_READY_SIZE   33
 RepeaterAuth stream ready message size in bytes. More...
 
#define XHDCP22_TX_TS_UNDEFINED   XHDCP22_TX_MSG_UNDEFINED
 Reason why the timer was started: Undefined. More...
 
#define XHDCP22_TX_TS_WAIT_FOR_STREAM_TYPE   0xFD
 Reason why the timer was started: Waiting for Content Stream Type to be set when in repeater mode. More...
 
#define XHDCP22_TX_TS_WAIT_FOR_CIPHER   0xFE
 Reason why the timer was started: Mandatory wait of 200 ms before the cipher may be activated. More...
 
#define XHDCP22_TX_TS_RX_REAUTH_CHECK   0xFF
 Reason why the timer was started: Status checking. More...
 
#define XHDCP22_TX_TIMER_CNTR_0   0
 Internal used timer counter for timeout checking. More...
 
#define XHDCP22_TX_TIMER_CNTR_1   1
 Internal used timer counter for logging. More...
 
#define XHDCP22_TX_HDCPPORT_VERSION_OFFSET   0x50
 DDC version offset. More...
 
#define XHDCP22_TX_HDCPPORT_WRITE_MSG_OFFSET   0x60
 DDC write message buffer offset. More...
 
#define XHDCP22_TX_HDCPPORT_RXSTATUS_OFFSET   0x70
 DDC RX status offset. More...
 
#define XHDCP22_TX_HDCPPORT_READ_MSG_OFFSET   0x80
 DDC read message buffer offset. More...
 
#define XHDCP22_TX_RXSTATUS_REAUTH_REQ_MASK   (1<<11)
 HDCP Port DDC Rx status register masks. More...
 
#define XHDCP22_TX_RXSTATUS_READY_MASK   (1<<10)
 RX status READY bit. More...
 
#define XHDCP22_TX_RXSTATUS_AVAIL_BYTES_MASK   (0x3FF)
 RX status available bytes in read message buffer. More...
 
#define XHDCP22_TX_CERT_RCVID_SIZE   5
 RX certificate and Tx public key sizes in bytes. More...
 
#define XHDCP22_TX_CERT_PUB_KEY_N_SIZE   128
 Public key-N size in the RX certificate. More...
 
#define XHDCP22_TX_CERT_PUB_KEY_E_SIZE   3
 Public key-E size in the RX certificate. More...
 
#define XHDCP22_TX_CERT_RSVD_SIZE   2
 Reserved size in the RX certificate. More...
 
#define XHDCP22_TX_CERT_SIGNATURE_SIZE   384
 Signature size in the RX certificate. More...
 
#define XHDCP22_TX_CERT_SIZE
 Total size of the RX certificate. More...
 
#define XHDCP22_TX_RXCAPS_SIZE   3
 RX capabilities size. More...
 
#define XHDCP22_TX_TXCAPS_SIZE   3
 TX capabilities size. More...
 
#define XHDCP22_TX_KPUB_DCP_LLC_N_SIZE   384
 LLC public key-N size. More...
 
#define XHDCP22_TX_KPUB_DCP_LLC_E_SIZE   1
 LLC public key-E size. More...
 
#define XHDCP22_TX_SHA256_HASH_SIZE   32
 SHA256 hash size in bytes. More...
 
#define XHDCP22_TX_AES128_SIZE   16
 AES128 keys in bytes. More...
 
#define XHDCP22_TX_RTX_SIZE   8
 64 bits. More...
 
#define XHDCP22_TX_RRX_SIZE   8
 64 bits. More...
 
#define XHDCP22_TX_E_KPUB_KM_SIZE   128
 1024 bits. More...
 
#define XHDCP22_TX_H_PRIME_SIZE   32
 256 bits. More...
 
#define XHDCP22_TX_EKH_KM_SIZE   16
 128 bits. More...
 
#define XHDCP22_TX_RN_SIZE   8
 64-bits. More...
 
#define XHDCP22_TX_RIV_SIZE   8
 64-bits. More...
 
#define XHDCP22_TX_L_PRIME_SIZE   32
 256 bits. More...
 
#define XHDCP22_TX_KS_SIZE   16
 128 bits. More...
 
#define XHDCP22_TX_EDKEY_KS_SIZE   16
 128 bits. More...
 
#define XHDCP22_TX_SRM_RCVID_SIZE   XHDCP22_TX_RCVID_SIZE
 Receiver Id size in the SRM block. More...
 
#define XHDCP22_TX_SRM_SIGNATURE_SIZE   384
 Signature size in the SRM block. More...
 
#define XHDCP22_TX_RXINFO_SIZE   2
 RxInfo size in bytes. More...
 
#define XHDCP22_TX_SEQ_NUM_V_SIZE   3
 Seq_num_v size in bytes. More...
 
#define XHDCP22_TX_V_SIZE   32
 V size in bytes. More...
 
#define XHDCP22_TX_V_PRIME_SIZE   16
 VPrime size in bytes. More...
 
#define XHDCP22_TX_SEQ_NUM_M_SIZE   3
 Seq_num_m size in bytes. More...
 
#define XHDCP22_TX_K_SIZE   2
 K size in bytes. More...
 
#define XHDCP22_TX_STREAMID_TYPE_SIZE   2
 Stream ID and Type size in bytes. More...
 
#define XHDCP22_TX_M_PRIME_SIZE   32
 MPrime size in bytes. More...
 
#define XHDCP22_TX_TEST_CERT_RX   0x00000001
 Use a certificate test vector. More...
 
#define XHDCP22_TX_TEST_H1   0x00000002
 Use a H_Prime test vector. More...
 
#define XHDCP22_TX_TEST_L1   0x00000004
 Use a L_Prime test vector. More...
 
#define XHDCP22_TX_TEST_EKH_KM   0x00000008
 Use a pairing info Ekh(Km) test vector, use i.c.w XHDCP22_TX_TEST_RCV_TIMEOUT. More...
 
#define XHDCP22_TX_TEST_INVALID_VALUE   0x00000010
 Invalidate a value. More...
 
#define XHDCP22_TX_TEST_RCV_TIMEOUT   0x00000020
 Timeout on a received message. More...
 
#define XHDCP22_TX_TEST_V1   0x00000040
 Use a V_Prime test vector. More...
 
#define XHDCP22_TX_TEST_M1   0x00000080
 Use a M_Prime test vector. More...
 
#define XHDCP22_TX_TEST_STORED_KM   0x00000100
 AKE is forced using a stored Km scenarion. More...
 
#define XHDCP22_TX_TEST_NO_TIMEOUT   0x00000200
 Disable timeout checking. More...
 
#define XHDCP22_TX_TEST_CLR_PAIRINGINFO   0x00000400
 Pairing info is cleared, to force a non-stored Km scenario. More...
 
#define XHDCP22_TX_TEST_USE_TEST_VECTOR_R1   0x80000000
 Use testvectors for receiver R1. More...
 
#define XHDCP22_TX_DDC_BASE_ADDRESS   0x3A
 DDC base address (0x74 >> 1) More...
 

Enumerations

enum  XHdcp22_Tx_TestMode {
  XHDCP22_TX_TESTMODE_DISABLED, XHDCP22_TX_TESTMODE_SW_RX, XHDCP22_TX_TESTMODE_NO_RX, XHDCP22_TX_TESTMODE_UNIT,
  XHDCP22_TX_TESTMODE_USE_TESTKEYS, XHDCP22_TX_TESTMODE_INVALID
}
 These constants are used to set the core into testing mode with #XHdcp22Tx_TestSetMode. More...
 
enum  XHdcp22_Tx_LogDebugValue
 Value definitions for debugging. More...
 

Functions

void XHdcp22Tx_MemXor (u8 *Output, const u8 *InputA, const u8 *InputB, unsigned int Size)
 This function calculates a XOR on a array. More...
 
int XHdcp22Tx_VerifyCertificate (const XHdcp22_Tx_CertRx *CertificatePtr, const u8 *KpubDcpNPtr, int KpubDcpNSize, const u8 *KpubDcpEPtr, int KpubDcpESize)
 This function verifies the HDCP receivers certificate. More...
 
int XHdcp22Tx_VerifySRM (const u8 *SrmPtr, int SrmSize, const u8 *KpubDcpNPtr, int KpubDcpNSize, const u8 *KpubDcpEPtr, int KpubDcpESize)
 This function verifies a HDCP2 system renewability message (SRM) block. More...
 
void XHdcp22Tx_ComputeHPrime (const u8 *Rrx, const u8 *RxCaps, const u8 *Rtx, const u8 *TxCaps, const u8 *Km, u8 *HPrime)
 This function computes HPrime. More...
 
void XHdcp22Tx_ComputeLPrime (const u8 *Rn, const u8 *Km, const u8 *Rrx, const u8 *Rtx, u8 *LPrime)
 This function computes LPrime. More...
 
void XHdcp22Tx_ComputeV (const u8 *Rn, const u8 *Rrx, const u8 *RxInfo, const u8 *Rtx, const u8 *RecvIDList, const u8 RecvIDCount, const u8 *SeqNum_V, const u8 *Km, u8 *V)
 This function computes V. More...
 
void XHdcp22Tx_ComputeM (const u8 *Rn, const u8 *Rrx, const u8 *Rtx, const u8 *StreamIDType, const u8 *k, const u8 *SeqNum_M, const u8 *Km, u8 *M)
 This function computes M. More...
 
void XHdcp22Tx_ComputeEdkeyKs (const u8 *Rn, const u8 *Km, const u8 *Ks, const u8 *Rrx, const u8 *Rtx, u8 *EdkeyKs)
 This function computes EdkeyKs. More...
 
int XHdcp22Tx_EncryptKm (const XHdcp22_Tx_CertRx *CertificatePtr, const u8 *KmPtr, u8 *MaskingSeedPtr, u8 *EncryptedKmPtr)
 This function encrypts the Km value with the receivers public key into Ekh(Km) More...
 
void XHdcp22Tx_GenerateRandom (XHdcp22_Tx *InstancePtr, int NumOctets, u8 *RandomNumberPtr)
 This function generates random octets. More...