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