Fix 64bit build error and some goto-catch 54/62054/2 accepted/tizen/common/20160315.221653 accepted/tizen/ivi/20160315.123125 accepted/tizen/mobile/20160315.123015 accepted/tizen/tv/20160315.123039 accepted/tizen/wearable/20160315.123105 submit/tizen/20160315.072709
authorKyungwook Tak <k.tak@samsung.com>
Mon, 14 Mar 2016 05:58:09 +0000 (14:58 +0900)
committerKyungwook Tak <k.tak@samsung.com>
Mon, 14 Mar 2016 07:14:13 +0000 (16:14 +0900)
Change-Id: I8ad8941828b85b55300574cf5ed4c0fd27861179
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
tadcore/DrmFileHandleMgr/DrmFileHandler.cpp
tadcore/Svc/DrmTdcSvc.cpp
tadcore/TADCCore/TADC_Core.cpp
tadcore/include/TADC_Core.h

index e1a5a57..0776dff 100644 (file)
  * limitations under the License.
  */
 
+#include <memory>
+
 #include "TADC_Core.h"
 #include "TADC_ErrorCode.h"
 #include "DTapps2Rights.h"
 #include "DrmFileHandler.h"
 #include "TADC_IF.h"
 
+#define TDC_DECRYPT_BLOCKSIZE 512
+
+namespace {
+
+using FileHeaderPtr = std::unique_ptr<T_FILE_HEADER, int(*)(T_FILE_HEADER *)>;
+using DrmHeaderPtr = std::unique_ptr<T_DRM_HEADER, int(*)(T_DRM_HEADER *)>;
+using RoPtr = std::unique_ptr<T_RO, int(*)(T_RO *)>;
+
+using BufPtr = std::unique_ptr<unsigned char[]>;
+
+inline FileHeaderPtr createFileHeaderPtr(T_FILE_HEADER *ptr)
+{
+       return FileHeaderPtr(ptr, TADC_MEMFree_FileHeader);
+}
+
+inline DrmHeaderPtr createDrmHeaderPtr(T_DRM_HEADER *ptr)
+{
+       return DrmHeaderPtr(ptr, TADC_MEMFree_DRMHeader);
+}
 
+inline RoPtr createRoPtr(T_RO *ptr)
+{
+       return RoPtr(ptr, TADC_MEMFree_RO);
+}
 
+inline BufPtr createBufPtr(unsigned char *ptr)
+{
+       return BufPtr(ptr);
+}
 
-#define        TDC_DECRYPT_BLOCKSIZE   512
+}
 
 DrmFileHandler::DrmFileHandler(void)
-       : m_pFilePath(NULL)
-       , m_pCID(NULL)
-       , m_pCEK(NULL)
-       , m_pFP(NULL)
+       : m_pFilePath(nullptr)
+       , m_pCID(nullptr)
+       , m_pCEK(nullptr)
+       , m_pFP(nullptr)
 {
 }
 
 DrmFileHandler::~DrmFileHandler(void)
 {
        if (m_pFilePath != NULL)
-       {
                delete[] m_pFilePath;
-       }
 
        if (m_pCID != NULL)
-       {
                delete[] m_pCID;
-       }
 
        if (m_pCEK != NULL)
-       {
                delete[] m_pCEK;
-       }
 
        if (m_pDecBuf != NULL)
-       {
                delete[] m_pDecBuf;
-       }
 
        if (m_pFP != NULL)
-       {
                fclose(m_pFP);
-       }
 }
 
 int DrmFileHandler::Construct(const char* szDrmFilePath)
 {
-       T_FILE_HEADER    t_FileHeader;
-       T_DRM_HEADER     t_DRMHeader;
-       T_RO                     t_RO;
-
-       int ret = TADC_SUCCESS;
-       bool bRet = true;
+       T_FILE_HEADER t_FileHeader;
+       T_DRM_HEADER t_DRMHeader;
+       T_RO t_RO;
 
        // 1. Check the file is TADC DRM file.
        memset(&t_FileHeader, 0x00, sizeof(t_FileHeader));
@@ -77,34 +93,29 @@ int DrmFileHandler::Construct(const char* szDrmFilePath)
 
        DRM_TAPPS_LOG("%s starts", __func__);
 
-       if (szDrmFilePath == NULL)
-       {
+       if (szDrmFilePath == nullptr) {
                DRM_TAPPS_EXCEPTION("Parameters NULL!");
-               ret = TADC_PARAMETER_ERROR;
-
-               goto finish;
+               return TADC_PARAMETER_ERROR;
        }
 
-       ret = TADC_GetDRMHeaderFromFile(szDrmFilePath, &t_FileHeader, &t_DRMHeader);
-
-       if (ret < 0)
-       {
+       int ret = TADC_GetDRMHeaderFromFile(szDrmFilePath, &t_FileHeader, &t_DRMHeader);
+       if (ret < 0) {
                DRM_TAPPS_EXCEPTION("Error : TADC_GetDRMHeaderFromFile() - %s TADC Error Code - %d", szDrmFilePath, ret);
-               ret = TADC_NOTTADCFILE_ERROR;
-
-               goto finish;
+               return TADC_NOTTADCFILE_ERROR;
        }
 
+       auto fileHeaderPtr = createFileHeaderPtr(&t_FileHeader);
+       auto drmHeaderPtr = createDrmHeaderPtr(&t_DRMHeader);
+
        // 2. Validate license and get the CEK for the DRM file
-       bRet = DTappsGetCEK((char*)t_DRMHeader.CID, &t_RO);
-       if (bRet == false)
-       {
+       bool bRet = DTappsGetCEK((char*)t_DRMHeader.CID, &t_RO);
+       if (!bRet) {
                DRM_TAPPS_EXCEPTION("Error : DTappsGetCEK() - %s", t_DRMHeader.CID);
-               ret = TADC_GET_CEK_ERROR;
-
-               goto finish;
+               return TADC_GET_CEK_ERROR;
        }
 
+       auto roPtr = createRoPtr(&t_RO);
+
        // 3. Setting the member variable
        m_pFilePath = new unsigned char[strlen(szDrmFilePath) + 1];
        memset(m_pFilePath, 0x00, strlen(szDrmFilePath) + 1);
@@ -124,12 +135,9 @@ int DrmFileHandler::Construct(const char* szDrmFilePath)
 
        // 4. Open the DRM file and set the filepointer to member variable
        m_pFP = fopen(szDrmFilePath, "rb");
-       if (m_pFP == NULL)
-       {
+       if (m_pFP == nullptr) {
                DRM_TAPPS_EXCEPTION("Error : fopen() - %s", szDrmFilePath);
-               ret = TADC_FILE_OPEN_ERROR;
-
-               goto finish;
+               return TADC_FILE_OPEN_ERROR;
        }
 
        m_PlaintextStartOffset = t_FileHeader.Offset1 + 35 + t_DRMHeader.XmlSize;
@@ -138,12 +146,9 @@ int DrmFileHandler::Construct(const char* szDrmFilePath)
        m_OriginEndOffset = ftell(m_pFP);
 
        m_plaintextSize = m_OriginEndOffset - m_PlaintextStartOffset;
-       if (m_plaintextSize != t_DRMHeader.PlaintextSize)
-       {
+       if (m_plaintextSize != t_DRMHeader.PlaintextSize) {
                DRM_TAPPS_EXCEPTION("Error : plaintext file size incorrect. real = %ld, header = %ld", m_plaintextSize, t_DRMHeader.PlaintextSize);
-               ret = TADC_FILE_OPEN_ERROR;
-
-               goto finish;
+               return TADC_FILE_OPEN_ERROR;
        }
 
        m_DrmEndOffset = m_plaintextSize;
@@ -178,13 +183,6 @@ int DrmFileHandler::Construct(const char* szDrmFilePath)
        DrmDecryptBlocks();
 
        return TADC_SUCCESS;
-
-finish:
-       TADC_MEMFree_FileHeader(&t_FileHeader);
-       TADC_MEMFree_DRMHeader(&t_DRMHeader);
-       TADC_MEMFree_RO(&t_RO);
-
-       return ret;
 }
 
 int DrmFileHandler::DrmSeek(long long offset, int origin)
@@ -279,208 +277,144 @@ long long DrmFileHandler::DrmTell(void)
 
 int DrmFileHandler::DrmDecryptBlocks(void)
 {
-
-       bool bRet = true;
        int ret = TADC_SUCCESS;
        const char* packagePath = (const char*)m_pFilePath;
-       long long EncBlockCnt = 0;
-       T_FILE_HEADER    t_FileHeader;
-       T_DRM_HEADER     t_DRMHeader;
-       T_DEVICE_INFO    t_DeviceInfo;
-       T_RO    t_RO;
+       T_FILE_HEADER t_FileHeader;
+       T_DRM_HEADER t_DRMHeader;
+       T_DEVICE_INFO t_DeviceInfo;
+       T_RO t_RO;
        DrmTdcFileHeader fileHeader;
 
-       ULONG DecLen = 0;
-       ULONG ReadLen = 0;
-       ULONG k = 0, l= 0;
-
        // 1. Check the file is TADC DRM file.
        memset(&t_FileHeader, 0x00, sizeof(t_FileHeader));
        memset(&t_DRMHeader, 0x00, sizeof(T_DRM_HEADER));
        memset(&t_DeviceInfo, 0x00, sizeof(T_DEVICE_INFO));
        memset(&t_RO, 0x00, sizeof(T_RO));
 
-       bRet = DrmTdcGetFileHeader(packagePath, &fileHeader);
-       if (bRet == FALSE)
-       {
+       bool bRet = DrmTdcGetFileHeader(packagePath, &fileHeader);
+       if (bRet == FALSE) {
                DRM_TAPPS_EXCEPTION("DrmDecryptBlocks Error : DrmTdcGetFileHeader()");
-               ret = TADC_GET_FILEHEADER_ERROR;
-
-               goto finish;
+               return TADC_GET_FILEHEADER_ERROR;
        }
 
        bRet = DTappsGetCEK(fileHeader.cid, &t_RO);
-       if(bRet == FALSE)
-       {
+       if (bRet == FALSE) {
                DRM_TAPPS_SECURE_EXCEPTION("DrmDecryptBlocks Error : DTappsGetCEK() packagePath=%s, fileHeader.cid=%s", packagePath, fileHeader.cid);
-               ret = TADC_GET_CEK_ERROR;
-
-               goto finish;
+               return TADC_GET_CEK_ERROR;
        }
+
+       auto roPtr = createRoPtr(&t_RO);
+
        DRM_TAPPS_SECURE_LOG("fileHeader.cid=%s, t_RO.t_Content.CEK=%s", fileHeader.cid, t_RO.t_Content.CEK);
 
-       if ((ret = TADC_SetDeviceInfo(&t_DeviceInfo) ) == TADC_GETDUID_ERROR)
-       {
+       if ((ret = TADC_SetDeviceInfo(&t_DeviceInfo) ) == TADC_GETDUID_ERROR) {
                DRM_TAPPS_EXCEPTION("DrmDecryptBlocks Error : TADC_SetDeviceInfo(), TADC Error Code - %d", ret);
-               ret = TADC_FILE_READ_ERROR;
-
-               goto finish;
+               return TADC_FILE_READ_ERROR;
        }
 
        ret = TADC_GetDRMHeaderFromFile(packagePath, &t_FileHeader, &t_DRMHeader);
-       if (ret < 0)
-       {
+       if (ret < 0) {
                DRM_TAPPS_EXCEPTION("DrmDecryptBlocks Error : TADC_GetDRMHeaderFromFile() - %s,  TADC Error Code - %d", packagePath, ret);
-               ret = TADC_NOTTADCFILE_ERROR;
-
-               goto finish;
+               return TADC_NOTTADCFILE_ERROR;
        }
 
+       /* resource to be scoped-free */
+       auto fileHeaderPtr = createFileHeaderPtr(&t_FileHeader);
+
        //Get CEK
-       if ((ret = TADC_GetCEK(&t_DeviceInfo, &t_RO, &t_DRMHeader )) < 0)
-       {
+       if ((ret = TADC_GetCEK(&t_DeviceInfo, &t_RO, &t_DRMHeader)) < 0) {
                DRM_TAPPS_EXCEPTION("DrmDecryptBlocks Error: TADC_GetCEK, TADC Error Code - %d", ret);
-               ret = TADC_GET_CEK_ERROR;
-
-               goto finish;
+               return TADC_GET_CEK_ERROR;
        }
 
-       if (fseek(m_pFP, m_PlaintextStartOffset, SEEK_SET ) != 0)
-       {
-               DRM_TAPPS_EXCEPTION("DrmDecryptBlocks Error :fseek failed.");
-               ret = TADC_FILE_READ_ERROR;
+       /* resource to be scoped-free */
+       auto drmHeaderPtr = createDrmHeaderPtr(&t_DRMHeader);
 
-               goto finish;
+       if (fseek(m_pFP, m_PlaintextStartOffset, SEEK_SET) != 0) {
+               DRM_TAPPS_EXCEPTION("DrmDecryptBlocks Error :fseek failed.");
+               return TADC_FILE_READ_ERROR;
        }
 
-       if (m_encryptionRange == -1)
-       {
-               EncBlockCnt = m_blockCnt;
-       }
-       else
-       {
+       auto EncBlockCnt = m_blockCnt;
+       if (m_encryptionRange != -1)
                EncBlockCnt = m_encryptionRange;
-       }
 
-       m_pDecBuf = new unsigned char[(EncBlockCnt * TDC_DECRYPT_BLOCKSIZE) + 1];
-       if (m_pDecBuf == NULL)
-       {
+       m_pDecBuf = new (std::nothrow) unsigned char[(EncBlockCnt * TDC_DECRYPT_BLOCKSIZE) + 1];
+       if (m_pDecBuf == nullptr) {
                DRM_TAPPS_EXCEPTION("DrmRead Error : m_pDecBuf Memory allocation failed");
                return TADC_MEMAlOC_ERROR;
        }
 
-       ReadLen = fread(m_pDecBuf, 1, EncBlockCnt * TDC_DECRYPT_BLOCKSIZE, m_pFP);
+       auto ReadLen = fread(m_pDecBuf, 1, EncBlockCnt * TDC_DECRYPT_BLOCKSIZE, m_pFP);
 
-       for (k = 0 ; k < ReadLen ; k += 512)
-       {
-               if (l < EncBlockCnt)
-               {
-                       DecLen = ReadLen - k;
+       long long l = 0;
+       for (size_t k = 0 ; k < ReadLen ; k += 512) {
+               if (l < EncBlockCnt) {
+                       auto DecLen = ReadLen - k;
                        DecLen = ( DecLen > 512) ? 512 : DecLen;
 
-                       if ((ret = TADC_DecryptBlock((char*)m_pDecBuf + k, DecLen, &t_DRMHeader)) < 0)
-                       {
+                       if ((ret = TADC_DecryptBlock((char*)m_pDecBuf + k, DecLen, &t_DRMHeader)) < 0) {
                                DRM_TAPPS_EXCEPTION("DrmDecryptBlocks Error : TADC_DecryptBlock, TADC Error Code - %d", ret);
-                               ret = TADC_DECRYPT_PACKAGE_ERROR;
-                               goto finish;
+                               return TADC_DECRYPT_PACKAGE_ERROR;
                        }
                }
                l += 1;
        }
 
-finish:
-       TADC_MEMFree_FileHeader(&t_FileHeader);
-       TADC_MEMFree_DRMHeader(&t_DRMHeader);
-       TADC_MEMFree_RO(&t_RO);
        return ret;
 }
 
 int DrmFileHandler::DrmRead(void* pBuf, long long buflen, long long* pReadLen)
 {
-       unsigned char *pNewReadBuf = NULL;
-       unsigned char *pTempReadBuf = NULL;
-       int ret = TADC_SUCCESS;
-
-       ULONG ReadLen = 0;
-       long long EncBlockCnt = 0;
-
-       if (m_encryptionRange == -1)
-       {
-               EncBlockCnt = m_blockCnt;
-       }
-       else
-       {
+       auto EncBlockCnt = m_blockCnt;
+       if (m_encryptionRange != -1)
                EncBlockCnt = m_encryptionRange;
-       }
 
-       if (m_DrmCurOffset > EncBlockCnt * TDC_DECRYPT_BLOCKSIZE)
-       {
-               pNewReadBuf = (TADC_U8*)TADC_IF_Malloc(buflen + 1);
-               if (pNewReadBuf == NULL)
-               {
+       if (m_DrmCurOffset > EncBlockCnt * TDC_DECRYPT_BLOCKSIZE) {
+               auto pNewReadBuf = BufPtr(new (std::nothrow) TADC_U8[buflen + 1]);
+               if (!pNewReadBuf) {
                        DRM_TAPPS_EXCEPTION("DrmRead Error : pNewReadBuf Malloc Fail");
                        return TADC_MEMAlOC_ERROR;
                }
 
-               ReadLen = fread(pNewReadBuf, 1, buflen, m_pFP);
+               auto ReadLen = fread(pNewReadBuf.get(), 1, buflen, m_pFP);
 
-               TADC_IF_MemCpy(pBuf , pNewReadBuf , ReadLen);
-               TADC_IF_Free(pNewReadBuf);
+               TADC_IF_MemCpy(pBuf, pNewReadBuf.get(), ReadLen);
 
                *pReadLen = ReadLen;
-       }
-       else
-       {
-               if (buflen > EncBlockCnt * TDC_DECRYPT_BLOCKSIZE - m_DrmCurOffset)
-               {
-                       pTempReadBuf = (TADC_U8*)TADC_IF_Malloc((buflen) + 1);
-                       if (pTempReadBuf == NULL)
-                       {
+       } else {
+               if (buflen > EncBlockCnt * TDC_DECRYPT_BLOCKSIZE - m_DrmCurOffset) {
+                       auto pTempReadBuf = createBufPtr(new (std::nothrow) TADC_U8[buflen + 1]);
+                       if (!pTempReadBuf) {
                                DRM_TAPPS_EXCEPTION("DrmRead Error : pTempReadBuf Malloc Fail");
-                               ret = TADC_MEMAlOC_ERROR;
-
-                               goto finish;
+                               return TADC_MEMAlOC_ERROR;
                        }
 
                        m_decReadlen = (EncBlockCnt * TDC_DECRYPT_BLOCKSIZE) - m_DrmCurOffset;
-                       TADC_IF_MemCpy(pTempReadBuf , (char*)m_pDecBuf + m_DrmCurOffset , m_decReadlen);
+                       TADC_IF_MemCpy(pTempReadBuf.get(), reinterpret_cast<char *>(m_pDecBuf) + m_DrmCurOffset, m_decReadlen);
 
                        m_extraReadlen = buflen - m_decReadlen;
 
-                       if (fseek(m_pFP, m_decReadlen, SEEK_CUR) != 0)
-                       {
+                       if (fseek(m_pFP, m_decReadlen, SEEK_CUR) != 0) {
                                DRM_TAPPS_EXCEPTION("DrmRead Error: fseek failed.");
-                               ret = TADC_FILE_READ_ERROR;
-
-                               goto finish;
+                               return TADC_FILE_READ_ERROR;
                        }
 
-                       pNewReadBuf = (TADC_U8*)TADC_IF_Malloc(m_extraReadlen + 1);
-                       if (pNewReadBuf == NULL)
-                       {
+                       auto pNewReadBuf = BufPtr(new (std::nothrow) TADC_U8[m_extraReadlen + 1]);
+                       if (!pNewReadBuf) {
                                DRM_TAPPS_EXCEPTION("DrmRead Error : pNewReadBuf Malloc Fail");
-                               ret = TADC_MEMAlOC_ERROR;
-                               goto finish;
+                               return TADC_MEMAlOC_ERROR;
                        }
 
-                       ReadLen = fread(pNewReadBuf, 1, m_extraReadlen, m_pFP);
-
-                       TADC_IF_MemCpy((char*)pTempReadBuf + m_decReadlen, pNewReadBuf , ReadLen);
-                       TADC_IF_MemCpy(pBuf , pTempReadBuf , buflen);
+                       auto ReadLen = fread(pNewReadBuf.get(), 1, m_extraReadlen, m_pFP);
 
-                       TADC_IF_Free(pNewReadBuf);
-                       TADC_IF_Free(pTempReadBuf);
-               }
-               else
-               {
+                       TADC_IF_MemCpy((char*)pTempReadBuf.get() + m_decReadlen, pNewReadBuf.get(), ReadLen);
+                       TADC_IF_MemCpy(pBuf, pTempReadBuf.get(), buflen);
+               } else {
                        if (m_DrmCurOffset == 0)
-                       {
-                               TADC_IF_MemCpy(pBuf, (char*)m_pDecBuf + m_decReadlen , buflen);
-                       }
+                               TADC_IF_MemCpy(pBuf, reinterpret_cast<char *>(m_pDecBuf) + m_decReadlen, buflen);
                        else
-                       {
-                               TADC_IF_MemCpy(pBuf, (char*)m_pDecBuf + m_DrmCurOffset + m_decReadlen, buflen);
-                       }
+                               TADC_IF_MemCpy(pBuf, reinterpret_cast<char *>(m_pDecBuf) + m_DrmCurOffset + m_decReadlen, buflen);
                        m_decReadlen = m_decReadlen + buflen;
                }
 
@@ -488,11 +422,6 @@ int DrmFileHandler::DrmRead(void* pBuf, long long buflen, long long* pReadLen)
        }
 
        return TADC_SUCCESS;
-
-finish:
-       TADC_IF_Free(pNewReadBuf);
-       TADC_IF_Free(pTempReadBuf);
-       return ret;
 }
 
 long long DrmFileHandler::GetCurBlockIndex(void)
index 01ab669..cf2d49d 100644 (file)
  */
 
 /**
- * @file       DrmTdcSvc.cpp
- * @brief      This file is for TADC Testcase temporarily.
- * @author     Sangil Yoon (si83.yoon@samsung.com)
- * @version    1.0
+ * @file    DrmTdcSvc.cpp
+ * @brief   This file is for TADC Testcase temporarily.
+ * @author  Sangil Yoon (si83.yoon@samsung.com)
+ * @version 1.0
  *
 */
 
 
 #include "DrmTdcSvc.h"
 
-#define        DHINFO_MAX                      100
-#define        DHINFO_REQIDLEN         20
+#define DHINFO_MAX        100
+#define DHINFO_REQIDLEN   20
 
-#define        TDC_DECRYPT_IOLEN       1024*1024       // 1024 Kbyte
+#define TDC_DECRYPT_IOLEN 1024 * 1024 // 1024 Kbyte
 
 //DH Session Info Structure
 typedef struct
 {
-       BYTE                    hashReqID[DHINFO_MAX][DHINFO_REQIDLEN]; //LicenseRequest Request ID Hash 20byte
-       T_ROACQ_INFO    t_ROAcqInfo[DHINFO_MAX];                                                //DH Info
+       BYTE hashReqID[DHINFO_MAX][DHINFO_REQIDLEN]; //LicenseRequest Request ID Hash 20byte
+       T_ROACQ_INFO t_ROAcqInfo[DHINFO_MAX];        //DH Info
 
 } DrmTdcDHInfo;
 
 
-static DrmTdcDHInfo    g_DrmTdcDHInfo;
-static BOOL                            g_DrmTdcDHFlag = FALSE;
+static DrmTdcDHInfo g_DrmTdcDHInfo;
+static BOOL g_DrmTdcDHFlag = FALSE;
 
-static char                            g_sTimeStamp[21];               //2011.03.08, GMT ("CCCC-YY-MMThh:mm:ssZ")
+static char g_sTimeStamp[21]; //2011.03.08, GMT ("CCCC-YY-MMThh:mm:ssZ")
 
-bool DrmTdcGetFileHeader
-(
-       IN const char *pTADCFilepath,                   //TDC DRM File Path
-       IN OUT DrmTdcFileHeader *pFileHeader    //File Header Info ( CID, License URL )
+bool DrmTdcGetFileHeader(
+       IN const char *pTADCFilepath, //TDC DRM File Path
+       IN OUT DrmTdcFileHeader *pFileHeader //File Header Info ( CID, License URL )
 )
 {
        T_FILE_HEADER t_FileHeader;
@@ -93,28 +92,19 @@ bool DrmTdcGetFileHeader
        return TRUE;
 }
 
-bool DrmTdcDecryptPackage
-(
-       IN const char *pTADCFilepath,           //TDC DRM File Path
-       IN const char *pLicenseBuf,                     //Decrypted Rights Object
-       IN unsigned int licenseBufLen,          //pDecLicenseBuf Length
-       IN const char *pDecryptedFile                   //Decrypted File Path
-)
+bool DrmTdcDecryptPackage(
+       IN const char *pTADCFilepath,
+       IN const char *pLicenseBuf,
+       IN unsigned int licenseBufLen,
+       IN const char *pDecryptedFile)
 {
-       T_FILE_HEADER   t_FileHeader;
-       T_DRM_HEADER    t_DRMHeader;
-       T_DEVICE_INFO   t_DeviceInfo;
-       T_RO                    t_RO;
-
-
-       long long offset = 0, BlockCnt = 0, EncBlockCnt = 0, size1 = 0, size2 = 0;
-       FILE    *hFile1 =  INVALID_HOBJ;        //TDC drm file
-       FILE    *hFile2 =  INVALID_HOBJ;        //Decrypted file
-
-       //unsigned char tempbuf[512];           // Decrypt Block
-       unsigned char *pReadBuf;                // File Read buffer
+       T_FILE_HEADER t_FileHeader;
+       T_DRM_HEADER t_DRMHeader;
+       T_DEVICE_INFO t_DeviceInfo;
+       T_RO t_RO;
 
-       ULONG   i = 0, k = 0, DecLen = 0;
+       FILE *hFile1 = INVALID_HOBJ; //TDC drm file
+       FILE *hFile2 = INVALID_HOBJ; //Decrypted file
 
        //2011.03.08, init
        memset(&t_FileHeader, 0x00, sizeof(T_FILE_HEADER));
@@ -137,7 +127,7 @@ bool DrmTdcDecryptPackage
                return FALSE;
        }
 
-       pReadBuf = (TADC_U8*)TADC_IF_Malloc(TDC_DECRYPT_IOLEN);
+       auto pReadBuf = (TADC_U8*)TADC_IF_Malloc(TDC_DECRYPT_IOLEN);
        if (!pReadBuf) {
                DRM_TAPPS_EXCEPTION("DrmTdcDecryptPackage Error : pReadBuf Malloc Fail");
                return FALSE;
@@ -156,16 +146,9 @@ bool DrmTdcDecryptPackage
        if (TADC_GetResponseROInfo((unsigned char*)pLicenseBuf, &t_RO) < 0) {
                DRM_TAPPS_EXCEPTION("DrmTdcDecryptPackage Error : TADC_GetResponseROInfo");
                TADC_MEMFree_FileHeader(&t_FileHeader);
-               DRM_TAPPS_EXCEPTION("DrmTdcDecryptPackage Debug :       1");
-
                TADC_MEMFree_DRMHeader(&t_DRMHeader);
-               DRM_TAPPS_EXCEPTION("DrmTdcDecryptPackage Debug :       2");
-
                TADC_MEMFree_RO(&t_RO);
-               DRM_TAPPS_EXCEPTION("DrmTdcDecryptPackage Debug :       3");
-
                TADC_IF_Free(pReadBuf);
-               DRM_TAPPS_EXCEPTION("DrmTdcDecryptPackage Debug :       4");
 
                return FALSE;
        }
@@ -203,33 +186,31 @@ bool DrmTdcDecryptPackage
        }
 
        fseek(hFile1, 0, SEEK_END);
-       size1 = ftell(hFile1);
+       auto size1 = ftell(hFile1);
 
-       offset = t_FileHeader.Offset1 + 35 + t_DRMHeader.XmlSize;
-       fseek(hFile1, offset, SEEK_SET );
+       auto offset = t_FileHeader.Offset1 + 35 + t_DRMHeader.XmlSize;
+       fseek(hFile1, offset, SEEK_SET);
 
-       size2 = size1 - offset; //plain file size
-       BlockCnt = (size2 / 512) + ( (size2 % 512) ? 1 : 0 );
+       auto size2 = size1 - offset; //plain file size
+       auto BlockCnt = (size2 / 512) + ((size2 % 512) ? 1 : 0);
 
-       if (t_DRMHeader.EncryptionRange == -1)
-               EncBlockCnt = BlockCnt;
-       else
+       auto EncBlockCnt = BlockCnt;
+       if (t_DRMHeader.EncryptionRange != -1)
                EncBlockCnt = t_DRMHeader.EncryptionRange;
 
-       i = 0;
-
+       long int i = 0;
        while (i < BlockCnt) {
-               ULONG ReadLen = fread(pReadBuf, 1, TDC_DECRYPT_IOLEN, hFile1);
+               size_t ReadLen = fread(pReadBuf, 1, TDC_DECRYPT_IOLEN, hFile1);
 
                if (ReadLen < 1)
                        break;
 
-               for (k = 0 ; k < ReadLen ; k += 512) {
+               for (size_t k = 0; k < ReadLen; k += 512) {
                        if (i < EncBlockCnt) {
-                               DecLen = ReadLen - k;
+                               size_t DecLen = ReadLen - k;
                                DecLen = (DecLen > 512) ? 512 : DecLen;
 
-                               if (TADC_DecryptBlock((char*)pReadBuf + k, DecLen, &t_DRMHeader) < 0 ) {
+                               if (TADC_DecryptBlock((char *)pReadBuf + k, DecLen, &t_DRMHeader) < 0) {
                                        DRM_TAPPS_EXCEPTION("DrmTdcDecryptPackage Error : TADC_DecryptBlock");
                                        fclose(hFile1);
                                        fclose(hFile2);
@@ -245,8 +226,8 @@ bool DrmTdcDecryptPackage
                fwrite(pReadBuf, 1, ReadLen, hFile2);
        }
 
-       fclose(hFile1); //sample drm file
-       fclose(hFile2); //plain file
+       fclose(hFile1); //sample drm file
+       fclose(hFile2); //plain file
 
        TADC_MEMFree_FileHeader(&t_FileHeader);
        TADC_MEMFree_DRMHeader(&t_DRMHeader);
@@ -256,25 +237,17 @@ bool DrmTdcDecryptPackage
        return TRUE;
 }
 
-bool DrmTdcDecryptPackage2
-(
-       IN const char *pTADCFilepath,           //TDC DRM File Path
-       IN T_RO           t_RO,                                 //RO Info
-       IN const char *pDecryptedFile           //Decrypted File Path
-)
+bool DrmTdcDecryptPackage2(
+       IN const char *pTADCFilepath,
+       IN T_RO t_RO,
+       IN const char *pDecryptedFile)
 {
-       T_FILE_HEADER   t_FileHeader;
-       T_DRM_HEADER    t_DRMHeader;
-       T_DEVICE_INFO   t_DeviceInfo;
-
-
-       long long offset = 0, BlockCnt = 0, EncBlockCnt = 0, size1 = 0, size2 = 0;
-       FILE*   hFile1 =  INVALID_HOBJ;         //TDC drm file
-       FILE*   hFile2 =  INVALID_HOBJ;         //Decrypted file
-
-       unsigned char *pReadBuf;                        // File Read buffer
+       T_FILE_HEADER t_FileHeader;
+       T_DRM_HEADER t_DRMHeader;
+       T_DEVICE_INFO t_DeviceInfo;
 
-       ULONG   i = 0, k = 0, DecLen = 0;
+       FILE *hFile1 = INVALID_HOBJ; //TDC drm file
+       FILE *hFile2 = INVALID_HOBJ; //Decrypted file
 
        //2011.03.08, init
        memset(&t_FileHeader, 0x00, sizeof(T_FILE_HEADER));
@@ -292,7 +265,7 @@ bool DrmTdcDecryptPackage2
                return FALSE;
        }
 
-       pReadBuf = (TADC_U8*)TADC_IF_Malloc(TDC_DECRYPT_IOLEN);
+       auto pReadBuf = (TADC_U8*)TADC_IF_Malloc(TDC_DECRYPT_IOLEN);
        if (!pReadBuf) {
                DRM_TAPPS_EXCEPTION("DrmTdcDecryptPackage2 Error : pReadBuf Malloc Fail");
                return FALSE;
@@ -337,30 +310,28 @@ bool DrmTdcDecryptPackage2
        }
 
        fseek(hFile1, 0, SEEK_END);
-       size1 = ftell(hFile1);
+       auto size1 = ftell(hFile1);
 
-       offset = t_FileHeader.Offset1 + 35 + t_DRMHeader.XmlSize;
+       auto offset = t_FileHeader.Offset1 + 35 + t_DRMHeader.XmlSize;
        fseek(hFile1, offset, SEEK_SET );
 
-       size2 = size1 - offset; //plain file size
-       BlockCnt = (size2 / 512) + ((size2 % 512) ? 1 : 0);
+       auto size2 = size1 - offset; //plain file size
+       auto BlockCnt = (size2 / 512) + ((size2 % 512) ? 1 : 0);
 
-       if (t_DRMHeader.EncryptionRange == -1)
-               EncBlockCnt = BlockCnt;
-       else
+       auto EncBlockCnt = BlockCnt;
+       if (t_DRMHeader.EncryptionRange != -1)
                EncBlockCnt = t_DRMHeader.EncryptionRange;
 
-       i = 0;
-
+       long int i = 0;
        while (i < BlockCnt) {
-               ULONG ReadLen = fread(pReadBuf, 1, TDC_DECRYPT_IOLEN, hFile1);
+               auto ReadLen = fread(pReadBuf, 1, TDC_DECRYPT_IOLEN, hFile1);
 
                if (ReadLen < 1)
                        break;
 
-               for (k = 0 ; k < ReadLen ; k += 512) {
+               for (size_t k = 0 ; k < ReadLen ; k += 512) {
                        if (i < EncBlockCnt) {
-                               DecLen = ReadLen - k;
+                               auto DecLen = ReadLen - k;
                                DecLen = ( DecLen > 512) ? 512 : DecLen;
 
                                if (TADC_DecryptBlock((char*)pReadBuf + k, DecLen, &t_DRMHeader) < 0) {
@@ -378,8 +349,8 @@ bool DrmTdcDecryptPackage2
                fwrite(pReadBuf, 1, ReadLen, hFile2);
        }
 
-       fclose(hFile1); //sample drm file
-       fclose(hFile2); //plain file
+       fclose(hFile1); //sample drm file
+       fclose(hFile2); //plain file
 
        TADC_MEMFree_FileHeader(&t_FileHeader);
        TADC_MEMFree_DRMHeader(&t_DRMHeader);
@@ -388,19 +359,18 @@ bool DrmTdcDecryptPackage2
        return TRUE;
 }
 
-bool DrmTdcGeneratePurchaseRequest
-(
-       IN const char *pTADCFilepath,           //TDC DRM File Path
-       IN OUT char *pReqBuf,                           //Purchase Request Data
-       IN OUT unsigned int *pReqBufLen,                //IN : pReqBuf Length, OUT : Purchase Request Data String Size ( including null terminator )
-       IN OUT char *pLicenseUrl,                       //License Acquisition URL Data
-       IN OUT unsigned int *pLicenseUrlLen     //IN : pLicenseUrl Length, OUT : License Server URL Data String Size (  including null terminator )
+bool DrmTdcGeneratePurchaseRequest(
+       IN const char *pTADCFilepath,        //TDC DRM File Path
+       IN OUT char *pReqBuf,                //Purchase Request Data
+       IN OUT unsigned int *pReqBufLen,     //IN : pReqBuf Length, OUT : Purchase Request Data String Size ( including null terminator )
+       IN OUT char *pLicenseUrl,            //License Acquisition URL Data
+       IN OUT unsigned int *pLicenseUrlLen  //IN : pLicenseUrl Length, OUT : License Server URL Data String Size (  including null terminator )
 )
 {
-       T_FILE_HEADER   t_FileHeader;
-       T_DRM_HEADER    t_DRMHeader;
-       T_DEVICE_INFO   t_DeviceInfo;
-       char                    ReqLicBuf[REQU_MAXSIZE] = {0};  //Request buff max size. (2011.03.08)
+       T_FILE_HEADER t_FileHeader;
+       T_DRM_HEADER t_DRMHeader;
+       T_DEVICE_INFO t_DeviceInfo;
+       char ReqLicBuf[REQU_MAXSIZE] = {0}; //Request buff max size. (2011.03.08)
 
        //null check
        if (!pTADCFilepath
@@ -462,22 +432,21 @@ bool DrmTdcGeneratePurchaseRequest
        return TRUE;
 }
 
-int DrmTdcGenerateLicenseRequest
-(
-       IN const char *pRespBuf,                        //Response Data String of the Purchase Request ( Null terminator string )
-       IN unsigned int respBufLen,                     //pResBuf Length
-       IN OUT char *pReqBuf,                           //License Request Data
-       IN OUT unsigned int *pReqBufLen,                //IN : pReqBuf Length, OUT : Rights Request Data String Size ( including null terminator )
-       IN OUT char *pLicenseUrl,                       //License Acquisition URL Data
-       IN OUT unsigned int *pLicenseUrlLen     //IN : pLicenseUrl Length, OUT : Rights Issuer Server URL Data String Size (  including null terminator )
+int DrmTdcGenerateLicenseRequest(
+       IN const char *pRespBuf,              //Response Data String of the Purchase Request ( Null terminator string )
+       IN unsigned int respBufLen,           //pResBuf Length
+       IN OUT char *pReqBuf,                 //License Request Data
+       IN OUT unsigned int *pReqBufLen,      //IN : pReqBuf Length, OUT : Rights Request Data String Size ( including null terminator )
+       IN OUT char *pLicenseUrl,             //License Acquisition URL Data
+       IN OUT unsigned int *pLicenseUrlLen   //IN : pLicenseUrl Length, OUT : Rights Issuer Server URL Data String Size (  including null terminator )
 )
 {
-       T_ROACQ_INFO    *pt_ROAcqInfo = NULL;
+       T_ROACQ_INFO *pt_ROAcqInfo = NULL;
 
-       char                    ReqROBuf[REQU_MAXSIZE] = {0};   //Request buff max size. (2011.03.08)
-       BYTE                    sha1_tmp[DHINFO_REQIDLEN] = {0};
-       int                             idx = 0;
-       unsigned char   ROVer[2];               //2011.03.08
+       char ReqROBuf[REQU_MAXSIZE] = {0}; //Request buff max size. (2011.03.08)
+       BYTE sha1_tmp[DHINFO_REQIDLEN] = {0};
+       int idx = 0;
+       unsigned char ROVer[2]; //2011.03.08
 
        //null check
        if (!pRespBuf
@@ -554,19 +523,18 @@ int DrmTdcGenerateLicenseRequest
        return TADC_SUCCESS;
 }
 
-int DrmTdcDecryptLicense
-(
-       IN const char *pRespBuf,                                //Response Data String of the Rights Request ( Null terminator string )
-       IN unsigned int respBufLen,                             //pResBuf Length
-       IN OUT char *pDecLicenseBuf,                    //Decrypted Rights Object
-       IN OUT unsigned int *decLicenseBufLen   //IN : pDecLicenseBuf Length, OUT : Decrypted Rights Object String Size (  including null terminator )
+int DrmTdcDecryptLicense(
+       IN const char *pRespBuf,              //Response Data String of the Rights Request ( Null terminator string )
+       IN unsigned int respBufLen,           //pResBuf Length
+       IN OUT char *pDecLicenseBuf,          //Decrypted Rights Object
+       IN OUT unsigned int *decLicenseBufLen //IN : pDecLicenseBuf Length, OUT : Decrypted Rights Object String Size (  including null terminator )
 )
 {
-       T_ROACQ_INFO    *pt_ROAcqInfo=NULL;
-       T_RO                    t_RO;
-       int                             ret = 0;
-       int                             idx = 0;
-       BYTE                    sha1_tmp[20] = {0};
+       T_ROACQ_INFO *pt_ROAcqInfo = NULL;
+       T_RO t_RO;
+       int ret = 0;
+       int idx = 0;
+       BYTE sha1_tmp[20] = {0};
 
        //null check
        if (!pRespBuf
index 0fe1ece..86fbc6b 100644 (file)
@@ -1428,7 +1428,7 @@ int TADC_GetCEK(T_DEVICE_INFO *t_DeviceInfo, T_RO *t_RODB, T_DRM_HEADER *t_DRMHe
        return -1;
 }
 
-int TADC_DecryptBlock( char* pbBuffer, int nSize, T_DRM_HEADER *t_DRMHeader)
+int TADC_DecryptBlock(char *pbBuffer, int nSize, const T_DRM_HEADER *t_DRMHeader)
 {
        TADC_U8 key[16] = {0, };
        TADC_U8 iv[16] = {0, };
index 5df7b73..928538d 100644 (file)
@@ -177,7 +177,7 @@ int TADC_GetResponseRO(unsigned char *inBuffer, T_ROACQ_INFO *t_ROAcqInfo, T_RO
 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, T_DRM_HEADER *t_DRMHeader);
+int TADC_DecryptBlock(char* pbBuffer, int nSize, const T_DRM_HEADER *t_DRMHeader);
 int    TADC_VerifyROSignature(IN LPBYTE pszXML);
 DWORD TADC_GetLastError(void);
 int TADC_MEMFree_RO(T_RO *t_ro);