91 lines
2.4 KiB
C
91 lines
2.4 KiB
C
/*
|
|
* Copyright (C) 2007 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef __DRM_INNER_H__
|
|
#define __DRM_INNER_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <drm_common_types.h>
|
|
|
|
#define INT_2_YMD_HMS(year, mon, day, date, hour, min, sec, time) do{\
|
|
year = date / 10000;\
|
|
mon = date % 10000 / 100;\
|
|
day = date %100;\
|
|
hour = time / 10000;\
|
|
min = time % 10000 / 100;\
|
|
sec = time % 100;\
|
|
}while(0)
|
|
|
|
/**
|
|
* Define the max malloc length for a DRM.
|
|
*/
|
|
#define DRM_MAX_MALLOC_LEN (50 * 1024) /* 50K */
|
|
|
|
#define DRM_ONE_AES_BLOCK_LEN 16
|
|
#define DRM_TWO_AES_BLOCK_LEN 32
|
|
|
|
typedef struct _T_DRM_DM_Binary_Node {
|
|
uint8_t boundary[256];
|
|
} T_DRM_DM_Binary_Node;
|
|
|
|
typedef struct _T_DRM_DM_Base64_Node {
|
|
uint8_t boundary[256];
|
|
uint8_t b64DecodeData[4];
|
|
int32_t b64DecodeDataLen;
|
|
} T_DRM_DM_Base64_Node;
|
|
|
|
typedef struct _T_DRM_Dcf_Node {
|
|
uint8_t rightsIssuer[256];
|
|
int32_t encContentLength;
|
|
uint8_t aesDecData[16];
|
|
int32_t aesDecDataLen;
|
|
int32_t aesDecDataOff;
|
|
uint8_t aesBackupBuf[16];
|
|
int32_t bAesBackupBuf;
|
|
} T_DRM_Dcf_Node;
|
|
|
|
typedef struct _T_DRM_Session_Node {
|
|
int32_t sessionId;
|
|
int32_t inputHandle;
|
|
int32_t mimeType;
|
|
int32_t (*getInputDataLengthFunc)(int32_t inputHandle);
|
|
int32_t (*readInputDataFunc)(int32_t inputHandle, uint8_t* buf, int32_t bufLen);
|
|
int32_t (*seekInputDataFunc)(int32_t inputHandle, int32_t offset);
|
|
int32_t deliveryMethod;
|
|
int32_t transferEncoding;
|
|
uint8_t contentType[64];
|
|
int32_t contentLength;
|
|
int32_t contentOffset;
|
|
uint8_t contentID[256];
|
|
uint8_t* rawContent;
|
|
int32_t rawContentLen;
|
|
int32_t bEndData;
|
|
uint8_t* readBuf;
|
|
int32_t readBufLen;
|
|
int32_t readBufOff;
|
|
void* infoStruct;
|
|
struct _T_DRM_Session_Node* next;
|
|
} T_DRM_Session_Node;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __DRM_INNER_H__ */
|