1 #ifndef __TRUSTZONE_TA_PLAYREADY__
2 #define __TRUSTZONE_TA_PLAYREADY__
5 #define TZ_TA_PLAYREADY_UUID "b25bf100-d276-11e2-8b8b-0800200c9a66"
7 #define PLAYREADY_PROVISIONED_CERT 1
8 #define PLAYREADY_PROVISIONED_KEY 2
9 #define PLAYREADY_PROVISIONED_CLEAR_KEY 3 // for debug
11 #define TZ_DRM_UI64EQL 1
12 #define TZ_DRM_UI64LES 2
14 #define TZ_TOKEN_TOKEN 1
15 #define TZ_TOKEN_VALUE 2
16 #define TZ_VALUE_TOKEN 3
18 #define SUPPORT_MULTIPLE_INSTANCE 1
20 #define C_SECONDS_IN_ROLLBACK_GRACE_PERIOD 30
22 /* Data Structure for Playready TA */
23 /* You should define data structure used both in REE/TEE here
24 N/A for Playready TA */
26 /* Command for Playready TA */
27 #define TZCMD_PLAYREADY_BASE 0x00000000
28 #define TZCMD_PLAYREADY_PROVISIONED_DATA_GET 0x00000001
29 #define TZCMD_PLAYREADY_ECCP256_KEYPAIR_GEN 0x00000002
30 #define TZCMD_PLAYREADY_ECCP256_KEY_SET 0x00000003
31 #define TZCMD_PLAYREADY_ECDSAP256_SIGN 0x00000004
32 #define TZCMD_PLAYREADY_ECCP256_DECRYPT 0x00000005
33 #define TZCMD_PLAYREADY_OMAC1_KEY_SET 0x00000006
34 #define TZCMD_PLAYREADY_OMAC1_VERIFY 0x00000007
35 #define TZCMD_PLAYREADY_OMAC1_SIGN 0x00000008
36 #define TZCMD_PLAYREADY_COPYBYTE 0x00000009
37 #define TZCMD_PLAYREADY_CONTENTKEY_AESCTR_SET 0x0000000a
38 #define TZCMD_PLAYREADY_CONTENT_AESCTR_DECRYPT 0x0000000b
39 #define TZCMD_PLAYREADY_AESECB_KEY_SET 0x0000000c
40 #define TZCMD_PLAYREADY_AESECB_ENCRYPT 0x0000000d
41 #define TZCMD_PLAYREADY_AESECB_DECRYPT 0x0000000e
42 #define TZCMD_PLAYREADY_GET_KFKEY 0x0000000f
43 #define TZCMD_PLAYREADY_AESCBC_KEY_SET 0x00000010
44 #define TZCMD_PLAYREADY_AESCBC_ENCRYPT 0x00000011
45 #define TZCMD_PLAYREADY_AESCBC_DECRYPT 0x00000012
46 #define TZCMD_PLAYREADY_HANDLE_CONTENT_AESCTR_DECRYPT 0x00000013
47 #define TZCMD_PLAYREADY_KEYFILE_DECRYPT 0x00000014
48 #define TZCMD_PLAYREADY_KEYFILE_ENCRYPT 0x00000015
49 #define TZCMD_PLAYREADY_TOKENTIME_COMPARE 0x00000016
50 #define TZCMD_PLAYREADY_TOKENTIME_UPDATE 0x00000017
51 #define TZCMD_PLAYREADY_MACHINEDATETIME_CHECK 0x00000019
54 typedef struct PLAYREADY_IVDATA
{
55 unsigned long long qwInitializationVector
;
56 unsigned long long qwBlockOffset
;
57 unsigned long bByteOffset
;
61 typedef struct TZ_PLAYREADY_ENCINFO
{
63 unsigned int dataSize
; //total enc buffer size
64 unsigned int segNum
; //trunk number
65 PLAYREADY_IVDATA iv
[10]; //IV data for each trunk
66 unsigned int offset
[10]; //pointer to an integer array, each element describe clear data size
67 unsigned int length
[10]; //pointer to an integer array, each element describe enc data size
68 unsigned int dstHandle
; //true : dstData is a handle; false : dstData is a buffer;
70 }TZ_PLAYREADY_ENCINFO
;
72 #ifdef SUPPORT_MULTIPLE_INSTANCE
74 #define DRM_AES_KEYSIZE_128 ( 16 ) /* Size ( in bytes ) of a 128 bit key */
76 /* Now at least two or more process will use ta_playready.c at same time , drm server and media server */
77 #define MAX_AESECB_KEYS_INSTANCE 4
78 #define MAX_OMAC1_KEYS_INSTANCE 4
80 typedef struct TZ_PLAYREADY_AESECB_KEYS
{
81 uint32_t handle
; // tee session handle
82 char aesecbKey
[DRM_AES_KEYSIZE_128
];
85 }TZ_PLAYREADY_AESECB_KEYS
;
87 typedef struct TZ_PLAYREADY_OMAC1_KEYS
{
88 uint32_t handle
; // tee session handle
89 char omac1Key
[DRM_AES_KEYSIZE_128
];
92 }TZ_PLAYREADY_OMAC1_KEYS
;
96 #endif /* __TRUSTZONE_TA_PLAYREADY__ */