X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=tadcore%2Finclude%2FTADC_Core.h;h=14ccd4cd413ff92175e92a3b0189b84b6bfdbf70;hb=859c4e6ee0e5a957ce4675918ad3b7a2fb82fbc9;hp=928538d52827a0494ba7fb6f290336c298668feb;hpb=28bbfe40cf0c1c48659c88f52ced326bf99daa86;p=platform%2Fcore%2Fsecurity%2Fdrm-service-core-tizen.git diff --git a/tadcore/include/TADC_Core.h b/tadcore/include/TADC_Core.h index 928538d..14ccd4c 100644 --- a/tadcore/include/TADC_Core.h +++ b/tadcore/include/TADC_Core.h @@ -13,8 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -#pragma once +#ifndef __TADCCORE_H_ +#define __TADCCORE_H_ #include #include @@ -26,161 +26,180 @@ #include "CXMLElement.h" #include "CXMLFile.h" -#define STACKTRACE(pszFunction) // RETAILMSG(1, pszFunction); +#define STACKTRACE(pszFunction) // RETAILMSG(1, pszFunction); #undef ERRORMSG -#define ERRORMSG //-1 -#define IF_ERROR_RETURN( error , errcode) if(error < 0){DRM_TAPPS_EXCEPTION("TADC Debug Error Code = %x", errcode); return error;} -#define IF_TRUE_RETURN( error , errcode) if(error){DRM_TAPPS_EXCEPTION("TADC Debug Error Code = %x", errcode); return -1;} +#define ERRORMSG //-1 +#define IF_ERROR_RETURN(error , errcode) \ + if (error < 0) { \ + DRM_TAPPS_EXCEPTION("TADC Debug Error Code = %x", errcode); \ + return error; \ + } +#define IF_TRUE_RETURN(error , errcode) \ + if (error) { \ + DRM_TAPPS_EXCEPTION("TADC Debug Error Code = %x", errcode); \ + return -1; \ + } //2011.03.08 -#define IF_TRUE_RETURN2( error , do1, do2, do3, errcode) if(error){ do1; do2; do3; DRM_TAPPS_EXCEPTION("TADC Debug Error Code = %x", errcode); return -1;} +#define IF_TRUE_RETURN2(error , do1, do2, do3, errcode) \ + if (error) { \ + do1; \ + do2; \ + do3; \ + DRM_TAPPS_EXCEPTION("TADC Debug Error Code = %x", errcode); \ + return -1; \ + } #ifndef TADC_SWAP32 -#define TADC_SWAP32(x) ((((TADC_U32)(x) & 0x000000ffL) << 24) | (((TADC_U32)(x) & 0x0000ff00L) << 8) | (((TADC_U32)(x) & 0x00ff0000L) >> 8) | (((TADC_U32)(x) & 0xff000000L) >> 24)) +#define TADC_SWAP32(x) \ + ((((TADC_U32)(x) & 0x000000ffL) << 24) | \ + (((TADC_U32)(x) & 0x0000ff00L) << 8) | \ + (((TADC_U32)(x) & 0x00ff0000L) >> 8) | \ + (((TADC_U32)(x) & 0xff000000L) >> 24)) #endif -#define TADC_U8 unsigned char -#define TADC_U16 unsigned short -#define TADC_U32 unsigned long -#define DWORD unsigned long -#define LPBYTE unsigned char* -#define TCHAR unsigned char +#define TADC_U8 unsigned char +#define TADC_U16 unsigned short +#define TADC_U32 unsigned long +#define DWORD unsigned long +#define LPBYTE unsigned char * +#define TCHAR unsigned char -#define BYTE unsigned char -#define UINT unsigned int -#define ULONG unsigned long -#define INT32 long -#define INT64 long long -#define TRUE 1 -#define FALSE 0 +#define BYTE unsigned char +#define UINT unsigned int +#define ULONG unsigned long +#define INT32 long +#define INT64 long long +#define TRUE 1 +#define FALSE 0 -#define REQU_MAXSIZE 1024*5 //2011.03.08 (HTTP Request Buffer Max Size) -#define RESP_MAXSIZE 1024*10 //2011.03.08 (HTTP Response Buffer Max Size) +#define REQU_MAXSIZE 1024 * 5 // HTTP Request Buffer Max Size +#define RESP_MAXSIZE 1024 * 10 // HTTP Response Buffer Max Size -#define ROXML_MAXSIZE 4096*2 //2011.03.08 -#define CERT_MAXSIZE 4096 //2011.03.08 +#define ROXML_MAXSIZE 4096 * 2 +#define CERT_MAXSIZE 4096 -#define SID_SIZE 4 -#define CID_SIZE 1024 //2011.03.08 ( 32 -> 1024 ) -#define CEK_SIZE 32 // multiplication of 8 -#define GMT_SIZE 21 +#define SID_SIZE 4 +#define CID_SIZE 1024 // 32 -> 1024 +#define CEK_SIZE 32 // multiplication of 8 +#define GMT_SIZE 21 // Core Value Size define -#define DUID_SIZE 32 -#define DEVICEKEY_SIZE 16 -#define ROID_SIZE 32 -#define DHKey_SIZE 128 //Max 1024 bit +#define DUID_SIZE 32 +#define DEVICEKEY_SIZE 16 +#define ROID_SIZE 32 +#define DHKey_SIZE 128 // bit // DRM Type : Tizen DRM DRM - 1 -#define TIZEN_DRM 1 +#define TIZEN_DRM 1 // RO Permission Type -#define DUID_RULE 1 +#define DUID_RULE 1 typedef char CHAR; typedef bool BOOL; -typedef struct t_file_header -{ - unsigned char Version[2]; - unsigned char DRMType; - unsigned char ContentsType[128]; - long long TotalSize; - long long Offset1; - long long Offset2; - long long Offset3; - long long Offset4; - long long Offset5; - long long Offset6; - long long Offset7; - long long Offset8; -}T_FILE_HEADER; - -typedef struct t_drm_header -{ - long XmlSize; - unsigned char Version[2]; - unsigned char *SID; - unsigned char *CID; - unsigned char ContentsType[128]; - long EncryptionMethod; - long EncryptionLevel; - long long EncryptionRange; - unsigned char *RIURL; - long long PlaintextSize; - unsigned char *Packdate; - unsigned char *CEK; +typedef struct t_file_header { + unsigned char Version[2]; + unsigned char DRMType; + unsigned char ContentsType[128]; + long long TotalSize; + long long Offset1; + long long Offset2; + long long Offset3; + long long Offset4; + long long Offset5; + long long Offset6; + long long Offset7; + long long Offset8; +} T_FILE_HEADER; + +typedef struct t_drm_header { + long XmlSize; + unsigned char Version[2]; + unsigned char *SID; + unsigned char *CID; + unsigned char ContentsType[128]; + long EncryptionMethod; + long EncryptionLevel; + long long EncryptionRange; + unsigned char *RIURL; + long long PlaintextSize; + unsigned char *Packdate; + unsigned char *CEK; } T_DRM_HEADER; -typedef struct t_decice_info -{ - unsigned char DUID[DUID_SIZE + 1]; +typedef struct t_decice_info { + unsigned char DUID[DUID_SIZE + 1]; } T_DEVICE_INFO; -typedef struct t_dh_info -{ - unsigned char p[DHKey_SIZE+1]; // DH prime binary - long pSize; - long g; // DH primitive root. ( 2 or 5 ) - unsigned char a[DHKey_SIZE+1]; // DH Client private binary - long aSize; - unsigned char A[DHKey_SIZE+1]; // DH Client public binary (ga mod p) - long ASize; - unsigned char B[DHKey_SIZE+1]; // DH Server public binary (gb mod p) - long BSize; - unsigned char K[32+1]; // DH Session Key +typedef struct t_dh_info { + unsigned char p[DHKey_SIZE + 1]; // DH prime binary + long pSize; + long g; // DH primitive root. ( 2 or 5 ) + unsigned char a[DHKey_SIZE + 1]; // DH Client private binary + long aSize; + unsigned char A[DHKey_SIZE + 1]; // DH Client public binary (ga mod p) + long ASize; + unsigned char B[DHKey_SIZE + 1]; // DH Server public binary (gb mod p) + long BSize; + unsigned char K[32 + 1]; // DH Session Key } T_DH_INFO; -typedef struct t_ro_content -{ - unsigned char *CID; - unsigned char *CEK; +typedef struct t_ro_content { + unsigned char *CID; + unsigned char *CEK; } T_RO_CONTENT; -typedef struct t_roacq_info -{ - unsigned char* ROAcqURL; - unsigned char* ReqID; - T_DH_INFO t_DHInfo; - unsigned char sTimeStamp[21]; +typedef struct t_roacq_info { + unsigned char *ROAcqURL; + unsigned char *ReqID; + T_DH_INFO t_DHInfo; + unsigned char sTimeStamp[21]; } T_ROACQ_INFO; -typedef struct t_individual -{ - unsigned char BindingType; - unsigned char* DUID; +typedef struct t_individual { + unsigned char BindingType; + unsigned char *DUID; } T_INDIVIDUAL; -typedef struct t_ro_permission -{ +typedef struct t_ro_permission { T_INDIVIDUAL t_Individual; } T_RO_PERMISSION; -typedef struct t_ro -{ - short int PerFlag; - T_RO_CONTENT t_Content; +typedef struct t_ro { + short int PerFlag; + T_RO_CONTENT t_Content; T_RO_PERMISSION t_Permission; } T_RO; -int TADC_SetDeviceInfo(T_DEVICE_INFO *t_DeviceInfo); -int TADC_GetFileHeader(unsigned char *inBuffer, T_FILE_HEADER *t_FileHeader); -int TADC_GetDRMHeader(unsigned char *inBuffer, T_DRM_HEADER *t_DRMHeader); -int TADC_GetDRMHeaderInfo(unsigned char * inBuffer, T_DRM_HEADER *t_DRMHeader); -int TADC_GetDRMHeaderFromFile(const char *pTADCFilepath, T_FILE_HEADER *t_FileHeader, T_DRM_HEADER *t_DRMHeader); -int TADC_MakeRequestLicense(T_DEVICE_INFO *t_DeviceInfo, T_FILE_HEADER *t_FileHeader, T_DRM_HEADER *t_DRMHeader, unsigned char * outBuffer, size_t outBufferSize); -int TADC_GetROAcqInfo(unsigned char *inBuffer, T_ROACQ_INFO *t_ROAcqInfo); -int TADC_MakeRequestRO(T_ROACQ_INFO *t_ROAcqInfo, unsigned char *outBuffer, size_t outBufferSize, unsigned char *ROVer=NULL); //2011.03.08 -int TADC_GetResponseRO(unsigned char *inBuffer, T_ROACQ_INFO *t_ROAcqInfo, T_RO *t_RO, unsigned char *outBuffer); +int TADC_SetDeviceInfo(T_DEVICE_INFO *t_DeviceInfo); +int TADC_GetFileHeader(unsigned char *inBuffer, T_FILE_HEADER *t_FileHeader); +int TADC_GetDRMHeader(unsigned char *inBuffer, T_DRM_HEADER *t_DRMHeader); +int TADC_GetDRMHeaderInfo(unsigned char *inBuffer, T_DRM_HEADER *t_DRMHeader); +int TADC_GetDRMHeaderFromFile(const char *pTADCFilepath, + T_FILE_HEADER *t_FileHeader, T_DRM_HEADER *t_DRMHeader); +int TADC_MakeRequestLicense(T_DEVICE_INFO *t_DeviceInfo, + T_FILE_HEADER *t_FileHeader, T_DRM_HEADER *t_DRMHeader, + unsigned char *outBuffer, size_t outBufferSize); +int TADC_GetROAcqInfo(unsigned char *inBuffer, T_ROACQ_INFO *t_ROAcqInfo); +int TADC_MakeRequestRO(T_ROACQ_INFO *t_ROAcqInfo, unsigned char *outBuffer, + size_t outBufferSize, unsigned char *ROVer = NULL); +int TADC_GetResponseRO(unsigned char *inBuffer, T_ROACQ_INFO *t_ROAcqInfo, + T_RO *t_RO, unsigned char *outBuffer); int TADC_GetResponseROInfo(LPBYTE pszXML, T_RO *t_RO); -int TADC_GetHashReqID(unsigned char *inBuffer, unsigned char *hashReqID); -int TADC_GetCEK(T_DEVICE_INFO *t_DeviceInfo, T_RO *t_RODB, T_DRM_HEADER *t_DRMHeader ); -int TADC_DecryptBlock(char* pbBuffer, int nSize, const T_DRM_HEADER *t_DRMHeader); -int TADC_VerifyROSignature(IN LPBYTE pszXML); +int TADC_GetHashReqID(unsigned char *inBuffer, unsigned char *hashReqID); +int TADC_GetCEK(T_DEVICE_INFO *t_DeviceInfo, T_RO *t_RODB, + T_DRM_HEADER *t_DRMHeader); +int TADC_DecryptBlock(char *pbBuffer, int nSize, + const T_DRM_HEADER *t_DRMHeader); +int TADC_VerifyROSignature(LPBYTE pszXML); DWORD TADC_GetLastError(void); int TADC_MEMFree_RO(T_RO *t_ro); int TADC_MEMFree_FileHeader(T_FILE_HEADER *t_FileHeader); int TADC_MEMFree_DRMHeader(T_DRM_HEADER *t_DrmHeader); int TADC_MEMFree_ROAcqInfo(T_ROACQ_INFO *t_ROAcqInfo); + +#endif //__TADCCORE_H_