blob: 55234f82cd3b775d4825f5d22a19387e3126efdf [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/*
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
21extern "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
43typedef struct _T_DRM_DM_Binary_Node {
44 uint8_t boundary[256];
45} T_DRM_DM_Binary_Node;
46
47typedef 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
53typedef 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
63typedef 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__ */