• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __DRM_INNER_H__
18 #define __DRM_INNER_H__
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 #include <drm_common_types.h>
25 
26 #define INT_2_YMD_HMS(year, mon, day, date, hour, min, sec, time) do{\
27     year = date / 10000;\
28     mon = date % 10000 / 100;\
29     day = date %100;\
30     hour = time / 10000;\
31     min = time % 10000 / 100;\
32     sec = time % 100;\
33 }while(0)
34 
35 /**
36  * Define the max malloc length for a DRM.
37  */
38 #define DRM_MAX_MALLOC_LEN          (50 * 1024) /* 50K */
39 
40 #define DRM_ONE_AES_BLOCK_LEN       16
41 #define DRM_TWO_AES_BLOCK_LEN       32
42 
43 typedef struct _T_DRM_DM_Binary_Node {
44     uint8_t boundary[256];
45 } T_DRM_DM_Binary_Node;
46 
47 typedef struct _T_DRM_DM_Base64_Node {
48     uint8_t boundary[256];
49     uint8_t b64DecodeData[4];
50     int32_t b64DecodeDataLen;
51 } T_DRM_DM_Base64_Node;
52 
53 typedef struct _T_DRM_Dcf_Node {
54     uint8_t rightsIssuer[256];
55     int32_t encContentLength;
56     uint8_t aesDecData[16];
57     int32_t aesDecDataLen;
58     int32_t aesDecDataOff;
59     uint8_t aesBackupBuf[16];
60     int32_t bAesBackupBuf;
61 } T_DRM_Dcf_Node;
62 
63 typedef struct _T_DRM_Session_Node {
64     int32_t sessionId;
65     int32_t inputHandle;
66     int32_t mimeType;
67     int32_t (*getInputDataLengthFunc)(int32_t inputHandle);
68     int32_t (*readInputDataFunc)(int32_t inputHandle, uint8_t* buf, int32_t bufLen);
69     int32_t (*seekInputDataFunc)(int32_t inputHandle, int32_t offset);
70     int32_t deliveryMethod;
71     int32_t transferEncoding;
72     uint8_t contentType[64];
73     int32_t contentLength;
74     int32_t contentOffset;
75     uint8_t contentID[256];
76     uint8_t* rawContent;
77     int32_t rawContentLen;
78     int32_t bEndData;
79     uint8_t* readBuf;
80     int32_t readBufLen;
81     int32_t readBufOff;
82     void* infoStruct;
83     struct _T_DRM_Session_Node* next;
84 } T_DRM_Session_Node;
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 #endif /* __DRM_INNER_H__ */
91