// Copyright (c) 2016 Qualcomm Technologies, Inc.  All Rights Reserved.
// Qualcomm Technologies Proprietary and Confidential.

/**
 * @brief
 * Hdcp Provision interface provides TA to HDCP TA provisioning functionality.
 *
 */

interface IHdcpProvision
{
   /**
   * These constants define the hdcp device type
   */
   const uint32 HDCP_TRANSMITTER = 0x4001;

   /**
   * These constants define encryption type for the key
   */
   const uint32 CHAMOMILE = 0xA001;

   /**
   * Error Codes
   */
   error ERROR_GENERIC;
   error ERROR_BAD_PARAMETER;
   error ERROR_INVALID_DEVICE_TYPE;
   error ERROR_INVALID_KEY_FORMAT;
   error ERROR_READ_CONFIG_FAILED;
   error ERROR_KEY_NOT_PROVISIONED;

   /**
   * Provision HDCP
   *
   * @param[in] deviceType The HDCP device type
   * @param[in] keyFormat Key format type
   * @param[in] key The HDCP key
   * @param[in] dps The DPS for Chamomile
   * @param[in] reserved Reserved field set to 0
   * @return Object_OK if successful.
   */
   method provision(in uint32 deviceType, in uint32 keyFormat, in buffer key, in buffer dps, in uint32 reserved);

   /**
   * Verify HDCP Provisioned Keys
   *
   * @param[in] deviceType The HDCP device type
   * @return Object_OK if successful.
   */
   method verify(in uint32 deviceType, in uint32 reserved);
};

