92 lines
4.2 KiB
C
92 lines
4.2 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_DCF_H__
|
||
|
#define __PARSER_DCF_H__
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include <drm_common_types.h>
|
||
|
|
||
|
#define MAX_ENCRYPTION_METHOD_LEN 64
|
||
|
#define MAX_RIGHTS_ISSUER_LEN 256
|
||
|
#define MAX_CONTENT_NAME_LEN 64
|
||
|
#define MAX_CONTENT_DESCRIPTION_LEN 256
|
||
|
#define MAX_CONTENT_VENDOR_LEN 256
|
||
|
#define MAX_ICON_URI_LEN 256
|
||
|
#define MAX_CONTENT_TYPE_LEN 64
|
||
|
#define MAX_CONTENT_URI_LEN 256
|
||
|
|
||
|
#define HEADER_ENCRYPTION_METHOD "Encryption-Method: "
|
||
|
#define HEADER_RIGHTS_ISSUER "Rights-Issuer: "
|
||
|
#define HEADER_CONTENT_NAME "Content-Name: "
|
||
|
#define HEADER_CONTENT_DESCRIPTION "Content-Description: "
|
||
|
#define HEADER_CONTENT_VENDOR "Content-Vendor: "
|
||
|
#define HEADER_ICON_URI "Icon-Uri: "
|
||
|
|
||
|
#define HEADER_ENCRYPTION_METHOD_LEN 19
|
||
|
#define HEADER_RIGHTS_ISSUER_LEN 15
|
||
|
#define HEADER_CONTENT_NAME_LEN 14
|
||
|
#define HEADER_CONTENT_DESCRIPTION_LEN 21
|
||
|
#define HEADER_CONTENT_VENDOR_LEN 16
|
||
|
#define HEADER_ICON_URI_LEN 10
|
||
|
|
||
|
#define UINT_VAR_FLAG 0x80
|
||
|
#define UINT_VAR_DATA 0x7F
|
||
|
#define MAX_UINT_VAR_BYTE 5
|
||
|
#define DRM_UINT_VAR_ERR -1
|
||
|
|
||
|
typedef struct _T_DRM_DCF_Info {
|
||
|
uint8_t Version;
|
||
|
uint8_t ContentTypeLen; /**< Length of the ContentType field */
|
||
|
uint8_t ContentURILen; /**< Length of the ContentURI field */
|
||
|
uint8_t unUsed;
|
||
|
uint8_t ContentType[MAX_CONTENT_TYPE_LEN]; /**< The MIME media type of the plaintext data */
|
||
|
uint8_t ContentURI[MAX_CONTENT_URI_LEN]; /**< The unique identifier of this content object */
|
||
|
int32_t HeadersLen; /**< Length of the Headers field */
|
||
|
int32_t EncryptedDataLen; /**< Length of the encrypted data field */
|
||
|
int32_t DecryptedDataLen; /**< Length of the decrypted data field */
|
||
|
uint8_t Encryption_Method[MAX_ENCRYPTION_METHOD_LEN]; /**< Encryption method */
|
||
|
uint8_t Rights_Issuer[MAX_RIGHTS_ISSUER_LEN]; /**< Rights issuer */
|
||
|
uint8_t Content_Name[MAX_CONTENT_NAME_LEN]; /**< Content name */
|
||
|
uint8_t ContentDescription[MAX_CONTENT_DESCRIPTION_LEN]; /**< Content description */
|
||
|
uint8_t ContentVendor[MAX_CONTENT_VENDOR_LEN]; /**< Content vendor */
|
||
|
uint8_t Icon_URI[MAX_ICON_URI_LEN]; /**< Icon URI */
|
||
|
} T_DRM_DCF_Info;
|
||
|
|
||
|
/**
|
||
|
* Parse the DRM content format data
|
||
|
*
|
||
|
* \param buffer (in)Input the DCF format data
|
||
|
* \param bufferLen (in)The input buffer length
|
||
|
* \param pDcfInfo (out)A structure pointer which contain information of DCF headers
|
||
|
* \param ppEncryptedData (out)The location of encrypted data
|
||
|
*
|
||
|
* \return
|
||
|
* -TRUE, when success
|
||
|
* -FALSE, when failed
|
||
|
*/
|
||
|
int32_t drm_dcfParser(uint8_t *buffer, int32_t bufferLen, T_DRM_DCF_Info *pDcfInfo,
|
||
|
uint8_t **ppEncryptedData);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* __PARSER_DCF_H__ */
|