Method 2 - 3.1 English

DisplayPort 1.4 RX Subsystem Product Guide (PG300)

Document ID
Release Date
3.1 English

Ensure that #define USE_EEPROM_HDCP_KEYS is undefined in \**zcu102_system_directly**\**sw_directly**\src\main.h

HDCP 1.3 Key Management

The application software does not use the raw HDCP 1.3 keys directly. To use the HDCP 1.3 keys, they must be first encrypted and then added to the application. This is a manual process. The section provides the scripts and software to help you encrypt the HDCP 1.3 keys.

Using the Encryption Software

For more information on using the encryption software, see AR: 70605. Before you begin, download and extract the ZIP files. To generate the AES encrypted HDCP 1.3 keys, you need the following keys:
  • 32-byte AES key
  • Valid HDCP 1.3 keys
Note: AMD does not provide any of the above keys. The application delivered with this software is created with invalid keys and therefore does not play HDCP content.
Follow these steps to generate the AES-encrypted HDCP key block:
  1. Unzip the project and navigate to the hdcp_util/keys directory. This is where the encryption block is located.
  2. Modify the DefaultKey array in the hdcp_util/keys/key-encryptor/common/src/keyfile.c file to a user-specified 32-byte unique key. This is the 32-byte AES key mentioned in step 1.
  3. Navigate to the hdcp_util/keys/key-encryptor/build/linux folder and execute the following command from Linux terminal ../ This creates hdcp-enc.bin file in the same folder.
  4. From the same directory, execute the following command to create the AES encrypted file keymgmt_data.c. ./hdcp-enc.bin -c devb1_keys.dat devb2_keys.dat …. devb_keys.dat
    Note: The user-provided devb_keys.dat file is expected to have only one original HDCP key. An original HDCP key has one 5-byte Key Selection Vector and 40 private keys. If you have multiple HDCP 1.3 keys, each key should be housed exclusively in a separate .dat file. The AES encrypted HDCP key block is now created as an array in the keymgmt_data.c file.
  5. Ensure that the following AES keys in the reference design match with the keys in step 2. \**zcu102_system_directly**\**sw_directly**\src\keys.c The HDCP 1.3 keys are now encrypted and ready to be used.
  6. Replace the dummy 32-byte AES keys in the DefaultKey[32] array of the example design application's source file src/keymgmt_keyfile.c with the keys mentioned in step 2.
  7. Replace the dummy AES encrypted HDCP keys in the KEYMGMT_ENCDATA[] array of the example design application's source file src/keys.c with the encrypted keys generated in step 5.

HDCP 2.x Key Management

  1. Populate the 128-bit global constant LC128 keys in the XHdcp22Lc128[] array of the keys.c file. Replace zeros in the array with the LC128 keys.
  2. Populate the HDCP 2.x RX private keys in the XHdcp22RxPrivateKey[] array of the keys.c file. Replace zeros in the array with RX private keys.
  3. Populate the System Renewability Revoke Check Message (SRM) keys in the Hdcp22Srm[] array of the keys.c file. Replace the zeros in the array with the SRM keys.