/* * 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__ */