Merge tag 'v3.10.59' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / trustzone / tz_cross / ta_playready.h
1 #ifndef __TRUSTZONE_TA_PLAYREADY__
2 #define __TRUSTZONE_TA_PLAYREADY__
3
4
5 #define TZ_TA_PLAYREADY_UUID "b25bf100-d276-11e2-8b8b-0800200c9a66"
6
7 #define PLAYREADY_PROVISIONED_CERT 1
8 #define PLAYREADY_PROVISIONED_KEY 2
9 #define PLAYREADY_PROVISIONED_CLEAR_KEY 3 // for debug
10
11 #define TZ_DRM_UI64EQL 1
12 #define TZ_DRM_UI64LES 2
13
14 #define TZ_TOKEN_TOKEN 1
15 #define TZ_TOKEN_VALUE 2
16 #define TZ_VALUE_TOKEN 3
17
18 #define SUPPORT_MULTIPLE_INSTANCE 1
19
20 #define C_SECONDS_IN_ROLLBACK_GRACE_PERIOD 30
21
22 /* Data Structure for Playready TA */
23 /* You should define data structure used both in REE/TEE here
24 N/A for Playready TA */
25
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
52
53
54 typedef struct PLAYREADY_IVDATA {
55 unsigned long long qwInitializationVector;
56 unsigned long long qwBlockOffset;
57 unsigned long bByteOffset;
58 } PLAYREADY_IVDATA;
59
60
61 typedef struct TZ_PLAYREADY_ENCINFO{
62 char role[100];
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;
69
70 }TZ_PLAYREADY_ENCINFO;
71
72 #ifdef SUPPORT_MULTIPLE_INSTANCE
73
74 #define DRM_AES_KEYSIZE_128 ( 16 ) /* Size ( in bytes ) of a 128 bit key */
75
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
79
80 typedef struct TZ_PLAYREADY_AESECB_KEYS{
81 uint32_t handle; // tee session handle
82 char aesecbKey[DRM_AES_KEYSIZE_128];
83 uint32_t bProtect;
84 uint32_t bInUse;
85 }TZ_PLAYREADY_AESECB_KEYS;
86
87 typedef struct TZ_PLAYREADY_OMAC1_KEYS{
88 uint32_t handle; // tee session handle
89 char omac1Key[DRM_AES_KEYSIZE_128];
90 uint32_t bProtect;
91 uint32_t bInUse;
92 }TZ_PLAYREADY_OMAC1_KEYS;
93
94 #endif
95
96 #endif /* __TRUSTZONE_TA_PLAYREADY__ */
97