124 lines
4.1 KiB
C
124 lines
4.1 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 __PARSER_REL_H__
|
|
#define __PARSER_REL_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <drm_common_types.h>
|
|
|
|
#define WRITE_RO_FLAG(whoIsAble, boolValue, Indicator, RIGHTS) do{\
|
|
whoIsAble = boolValue;\
|
|
Indicator |= RIGHTS;\
|
|
}while(0)
|
|
|
|
#define CHECK_VALIDITY(ret) do{\
|
|
if(ret == NULL){\
|
|
if(XML_ERROR_NO_SUCH_NODE != xml_errno)\
|
|
return FALSE;\
|
|
}\
|
|
else\
|
|
{\
|
|
if(XML_ERROR_OK != xml_errno)\
|
|
return FALSE;\
|
|
}\
|
|
}while(0)
|
|
|
|
#define YMD_HMS_2_INT(year, mon, day, date, hour, min, sec, time) do{\
|
|
date = year * 10000 + mon * 100 + day;\
|
|
time = hour * 10000 + min * 100 + sec;\
|
|
}while(0)
|
|
|
|
#define DRM_UID_LEN 256
|
|
#define DRM_KEY_LEN 16
|
|
|
|
#define XML_DOM_PARSER
|
|
|
|
typedef struct _T_DRM_DATETIME {
|
|
int32_t date; /**< year * 10000 + mon *100 + day */
|
|
int32_t time; /**< hour * 10000 + min *100 + sec */
|
|
} T_DRM_DATETIME;
|
|
|
|
typedef struct _T_DRM_Rights_Constraint {
|
|
uint8_t Indicator; /**< Indicate which is constrainted, the first one indicate 0001, second one indicate 0010 */
|
|
uint8_t unUsed[3];
|
|
int32_t Count; /**< The times that can be used */
|
|
T_DRM_DATETIME StartTime; /**< The starting time */
|
|
T_DRM_DATETIME EndTime; /**< The ending time */
|
|
T_DRM_DATETIME Interval; /**< The interval time */
|
|
} T_DRM_Rights_Constraint;
|
|
|
|
typedef struct _T_DRM_Rights {
|
|
uint8_t Version[8]; /**< Version number */
|
|
uint8_t uid[256]; /**< record the rights object name */
|
|
uint8_t KeyValue[16]; /**< Decode base64 */
|
|
int32_t bIsPlayable; /**< Is playable */
|
|
int32_t bIsDisplayable; /**< Is displayable */
|
|
int32_t bIsExecuteable; /**< Is executeable */
|
|
int32_t bIsPrintable; /**< Is printable */
|
|
T_DRM_Rights_Constraint PlayConstraint; /**< Play constraint */
|
|
T_DRM_Rights_Constraint DisplayConstraint; /**< Display constraint */
|
|
T_DRM_Rights_Constraint ExecuteConstraint; /**< Execute constraint */
|
|
T_DRM_Rights_Constraint PrintConstraint; /**< Print constraint */
|
|
} T_DRM_Rights;
|
|
|
|
/**
|
|
* Input year and month, return how many days that month have
|
|
* \param year (in)Input the year
|
|
* \param month (in)Input the month
|
|
* \return
|
|
* -A positive integer, which is how many days that month have
|
|
* -When wrong input, return -1
|
|
*/
|
|
int32_t drm_monthDays(int32_t year, int32_t month);
|
|
|
|
/**
|
|
* Check whether the date and time is valid.
|
|
* \param year year of the date
|
|
* \param month month of the date
|
|
* \param day day of the date
|
|
* \param hour hour of the time
|
|
* \param min minute of the time
|
|
* \param sec second of the time
|
|
* \return
|
|
* -when it is a valid time, return 0
|
|
* -when it is a invalid time, return -1
|
|
*/
|
|
int32_t drm_checkDate(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t min, int32_t sec);
|
|
|
|
/**
|
|
* Parse the rights object include xml format and wbxml format data
|
|
*
|
|
* \param buffer (in)Input the DRM rights object data
|
|
* \param bufferLen (in)The buffer length
|
|
* \param format (in)Which format, xml or wbxml
|
|
* \param pRights (out)A structure pointer which save the rights information
|
|
*
|
|
* \return
|
|
* -TRUE, when success
|
|
* -FALSE, when failed
|
|
*/
|
|
int32_t drm_relParser(uint8_t* buffer, int32_t bufferLen, int32_t Format, T_DRM_Rights* pRights);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __PARSER_REL_H__ */
|