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