Home | History | Annotate | Download | only in include
      1 /*
      2  * Copyright (c) 2011 Trusted Logic S.A.
      3  * All Rights Reserved.
      4  *
      5  * This software is the confidential and proprietary information of
      6  * Trusted Logic S.A. ("Confidential Information"). You shall not
      7  * disclose such Confidential Information and shall use it only in
      8  * accordance with the terms of the license agreement you entered
      9  * into with Trusted Logic S.A.
     10  *
     11  * TRUSTED LOGIC S.A. MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
     12  * SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
     13  * BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
     14  * FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. TRUSTED LOGIC S.A. SHALL
     15  * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
     16  * MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
     17  */
     18 #ifndef   __WVDRM_PROTOCOL_H__
     19 #define   __WVDRM_PROTOCOL_H__
     20 
     21 #include <common_secure_driver_protocol.h>
     22 
     23 /* 45544DF9-B1DF-9BEE-D0B9-0C98CE3B41F6 */
     24 #define WVDRM_UUID {0x45544DF9, 0xB1DF, 0x9BEE, {0xD0, 0xB9, 0x0C, 0x98, 0xCE, 0x3B, 0x41, 0xF6}}
     25 
     26 /*
     27  * Persistently install the DRM "key box" previously wrapped
     28  * with WRAP_KEYBOX
     29  *
     30  * Param #0: MEMREF_INPUT:
     31  *    The encrypted keybox
     32  */
     33 #define WVDRM_INSTALL_KEYBOX 0x00001000
     34 
     35 /*
     36  * Test if a keybox is provisioned and optionnally get its key data
     37  *
     38  * #0:
     39  *   - NONE: for testing if the keybox is valid (returns S_ERROR_ITEM_NOT_FOUND if not)
     40  *   - MEMREF_OUTPUT: to actually get the key data
     41  */
     42 #define WVDRM_GET_KEY_DATA 0x00001001
     43 
     44 /*
     45  * Generate random data
     46  *
     47  * #0:
     48  *   - MEMREF_OUTPUT: buffer to fill with random data
     49  */
     50 #define WVDRM_GET_RANDOM 0x00001002
     51 
     52 /*
     53  * Get the device ID
     54  *
     55  * #0: MEMREF_OUTPUT: filled with the device ID
     56  */
     57 #define WVDRM_GET_DEVICE_ID 0x00001003
     58 
     59 /*
     60  * Optionnally decrypt a keybox with a transport key
     61  * and wrap it with a device specific key. The result
     62  * can be later passed to INSTALL_KEYBOX
     63  *
     64  * #0: MEMREF_INPUT: the input keybox
     65  *      - either in cleartext if param #2 is NONE
     66  *      - or encrypted with the key in param #2
     67  * #1: MEMREF_OUTPUT: the resulting wrapped key box
     68  * #2:
     69  *     - NONE: param#0 is the clear-text keybox
     70  *     - MEMREF_INPUT: a transport key, in which case
     71  *       param#0 is the encryption with AES-CBC-128 of the
     72  *       keybox with an IV filled with zeros
     73  */
     74 #define WVDRM_WRAP_KEYBOX 0x00001004
     75 
     76 /*
     77  * Unwrap an asset key. The asset key is stored in transient memory
     78  * but available globally to all sessons. There can be only one asset key
     79  * at a time.
     80  *
     81  * #0: MEMREF_INPUT
     82  */
     83 #define WVDRM_SET_ENTITLEMENT_KEY 0x00002000
     84 
     85 /*
     86  * Decrypt the ECM (Entitlement Control Message = content key) using the asset key.
     87  * Store the flags associated with the ECM. These flags will be later used, e.g.,
     88  * to activate HDCP protection. Also returns the flags.
     89  *
     90  * #0: MEMREF_INPUT
     91  * #1: VALUE_OUTPUT: a=flags
     92  *
     93  */
     94 #define WVDRM_DERIVE_CONTROL_WORD 0x00002001
     95 
     96 /*
     97  * Decrypt a chunk of content from a non-secure buffer into
     98  * a secure buffer opaquely referred to as an offset within
     99  * the Decrypted-Encoded-Buffer part of the carveout.
    100  *
    101  * #0: MEMREF_INPUT: the encrypted content
    102  * #1: VALUE_INPUT:
    103  *     [in]  a=physical address of the ION handle, b=size of the handle
    104  * #2: MEMREF_INOUT: the IV
    105  * #3: VALUE_INOUT:
    106  *     [in]  a=offset from the physical address of the ION handle, b=max size
    107  *     [out] b=actual size or required size
    108  */
    109 #define WVDRM_DECRYPT_VIDEO 0x00002002
    110 
    111 /*
    112  * Decrypt a chunk of content into a non-secure buffer. This
    113  * must be used only for audio content.
    114  *
    115  * #0: MEMREF_INPUT: the encrypted content
    116  * #1: MEMREF_OUTPUT: the decrypted content
    117  * #2: MEMREF_INOUT: the IV
    118  */
    119 #define WVDRM_DECRYPT_AUDIO 0x00002003
    120 
    121 /*
    122  * Enter in secure playback.
    123  */
    124 #define WVDRM_ENTER_SECURE_PLAYBACK COMMON_SECURE_DRIVER_ENTER_SECURE_PLAYBACK
    125 
    126 /*
    127  * Exit in secure playback.
    128  */
    129 #define WVDRM_EXIT_SECURE_PLAYBACK COMMON_SECURE_DRIVER_EXIT_SECURE_PLAYBACK
    130 
    131 #endif /* __WVDRM_PROTOCOL_H__ */
    132