/*
* Copyright (c) 2011 Trusted Logic S.A.
* All Rights Reserved.
*
* This software is the confidential and proprietary information of
* Trusted Logic S.A. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered
* into with Trusted Logic S.A.
*
* TRUSTED LOGIC S.A. MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
* SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
* BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. TRUSTED LOGIC S.A. SHALL
* NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
* MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*/
#ifndef __WVDRM_PROTOCOL_H__
#define __WVDRM_PROTOCOL_H__
#include <common_secure_driver_protocol.h>
/* 45544DF9-B1DF-9BEE-D0B9-0C98CE3B41F6 */
#define WVDRM_UUID {0x45544DF9, 0xB1DF, 0x9BEE, {0xD0, 0xB9, 0x0C, 0x98, 0xCE, 0x3B, 0x41, 0xF6}}
/*
* Persistently install the DRM "key box" previously wrapped
* with WRAP_KEYBOX
*
* Param #0: MEMREF_INPUT:
* The encrypted keybox
*/
#define WVDRM_INSTALL_KEYBOX 0x00001000
/*
* Test if a keybox is provisioned and optionnally get its key data
*
* #0:
* - NONE: for testing if the keybox is valid (returns S_ERROR_ITEM_NOT_FOUND if not)
* - MEMREF_OUTPUT: to actually get the key data
*/
#define WVDRM_GET_KEY_DATA 0x00001001
/*
* Generate random data
*
* #0:
* - MEMREF_OUTPUT: buffer to fill with random data
*/
#define WVDRM_GET_RANDOM 0x00001002
/*
* Get the device ID
*
* #0: MEMREF_OUTPUT: filled with the device ID
*/
#define WVDRM_GET_DEVICE_ID 0x00001003
/*
* Optionnally decrypt a keybox with a transport key
* and wrap it with a device specific key. The result
* can be later passed to INSTALL_KEYBOX
*
* #0: MEMREF_INPUT: the input keybox
* - either in cleartext if param #2 is NONE
* - or encrypted with the key in param #2
* #1: MEMREF_OUTPUT: the resulting wrapped key box
* #2:
* - NONE: param#0 is the clear-text keybox
* - MEMREF_INPUT: a transport key, in which case
* param#0 is the encryption with AES-CBC-128 of the
* keybox with an IV filled with zeros
*/
#define WVDRM_WRAP_KEYBOX 0x00001004
/*
* Unwrap an asset key. The asset key is stored in transient memory
* but available globally to all sessons. There can be only one asset key
* at a time.
*
* #0: MEMREF_INPUT
*/
#define WVDRM_SET_ENTITLEMENT_KEY 0x00002000
/*
* Decrypt the ECM (Entitlement Control Message = content key) using the asset key.
* Store the flags associated with the ECM. These flags will be later used, e.g.,
* to activate HDCP protection. Also returns the flags.
*
* #0: MEMREF_INPUT
* #1: VALUE_OUTPUT: a=flags
*
*/
#define WVDRM_DERIVE_CONTROL_WORD 0x00002001
/*
* Decrypt a chunk of content from a non-secure buffer into
* a secure buffer opaquely referred to as an offset within
* the Decrypted-Encoded-Buffer part of the carveout.
*
* #0: MEMREF_INPUT: the encrypted content
* #1: VALUE_INPUT:
* [in] a=physical address of the ION handle, b=size of the handle
* #2: MEMREF_INOUT: the IV
* #3: VALUE_INOUT:
* [in] a=offset from the physical address of the ION handle, b=max size
* [out] b=actual size or required size
*/
#define WVDRM_DECRYPT_VIDEO 0x00002002
/*
* Decrypt a chunk of content into a non-secure buffer. This
* must be used only for audio content.
*
* #0: MEMREF_INPUT: the encrypted content
* #1: MEMREF_OUTPUT: the decrypted content
* #2: MEMREF_INOUT: the IV
*/
#define WVDRM_DECRYPT_AUDIO 0x00002003
/*
* Enter in secure playback.
*/
#define WVDRM_ENTER_SECURE_PLAYBACK COMMON_SECURE_DRIVER_ENTER_SECURE_PLAYBACK
/*
* Exit in secure playback.
*/
#define WVDRM_EXIT_SECURE_PLAYBACK COMMON_SECURE_DRIVER_EXIT_SECURE_PLAYBACK
#endif /* __WVDRM_PROTOCOL_H__ */