aboutsummaryrefslogtreecommitdiff
path: root/include/trustzone/tz_cross/keyblock.h
blob: 50f241be2ec4f21d6d3d079715b0a83afd6f97d8 (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
#ifndef __KEY_BLOCK_H__
#define __KEY_BLOCK_H__

#ifdef __cplusplus
extern "C" {
#endif

typedef enum
{
    WIDEVINE_ID = 0,
    MARLIN_ID,
    HDCP_1X_TX_ID,
    HDCP_2X_V1_TX_ID,
    HDCP_2X_V1_RX_ID,
    HDCP_2X_V2_TX_ID,
    HDCP_2X_V2_RX_ID,
    PLAYREADY_BGROUPCERT_ID,
    PLAYREADY_ZGPRIV_ID,
    PLAYREADY_KEYFILE_ID,
    DRM_KEY_MAX,
    DRM_SP_EKKB = 0xFFFF
}
DRMKeyID;

#define SZ_DRMKEY_ID 4
#define SZ_DRMKEY_TYPE 4
#define SZ_DRMKEY_SIZE 4
#define SZ_DRMKEY_ENC_SIZE 4
#define SZ_DRMKEY_RESERVED 64
#define SZ_DRMKEY_HEADER_SIZE (SZ_DRMKEY_ID+SZ_DRMKEY_TYPE+SZ_DRMKEY_SIZE+SZ_DRMKEY_ENC_SIZE+SZ_DRMKEY_RESERVED)
#define SZ_DRMKEY_SIG 16

//begin of uree using

/*
[in] keyID			  Enum DRMKeyID
[out] oneDrmkeyBlock  encrypt DRMBlock
[out] blockLeng 	  encrypt DRMBlockLength

return	 0: OK,  others: FAIL
*/
int get_encrypt_drmkey ( unsigned int keyID, unsigned char **oneDrmkeyBlock, unsigned int *blockLeng );

int get_clearDrmkey_size( unsigned int keyID, unsigned int *leng);

int free_encrypt_drmkey ( unsigned char *oneEncDrmkeyBlock );

int write_kbo_drmkey(DRMKeyID id,unsigned char* enckey,unsigned int length);

int delete_kbo_drmkey(DRMKeyID id);

int install_KB_OTA_API(unsigned char* buff,unsigned int len);

int query_drmkey ( unsigned int *count, unsigned int *keytype );

//end of uree using

//begin for tee using
int encrypt_drmkey(DRMKeyID id,unsigned char* clearKey,unsigned int inLength,
				   unsigned char** encKey,unsigned int* outLength);

#if defined(TRUSONIC_TEE_SUPPORT)
int nw_decrypt_drmkey ( unsigned char *encDrmKeyBlock, unsigned int inLength,
					 unsigned int *outLength, unsigned int *p_decrypt_drmky_buffer_handle);
int nw_free_drmkey ( unsigned int *p_decrypt_drmky_buffer_handle );
#endif

int decrypt_drmkey ( unsigned char *encDrmKeyBlock, unsigned int inLength,
                     unsigned char **DrmKey, unsigned int *outLength );

int free_drmkey ( unsigned char *drmkey );

int free_drmkey_safe ( unsigned char *drmkey,int size);

//end for tee using

#ifdef __cplusplus
}
#endif

#endif /* __KEY_BLOCK_H__ */