level 3
一只阿北Dy
楼主
pstHmacHead = (SDP_HMAC_HEAD_STRUEX*)WSEC_MALLOC(sizeof(SDP_HMAC_HEAD_STRUEX)); /* 该数据比较大, 使用堆为宜 */
break_oper_if(!pstHmacHead, WSEC_LOG_E4MALLOC(sizeof(SDP_HMAC_HEAD_STRUEX)), nErrCode = WSEC_ERR_MALLOC_FAIL);
WSEC_MEMSET(pucCipherText, ulCTMaxLen, 0, sizeof(SDP_CIPHER_HEAD_STRUEX));
pstCipherHead = (SDP_CIPHER_HEAD_STRUEX *)pucCipherText;
ulRet = SDP_FillHeaderWithHmacEx(ulEncAlgId, ulHmacAlgId, ulDomain, pstCipherHead, pstHmacHead, aucKey, &ulKeyLen, &ulIVLen, aucHmacKey, &ulHmacKeyLen);
break_oper_if((ulRet != WSEC_SUCCESS), WSEC_LOG_E("[SDP] Fill cipher text header failed."), (nErrCode = ulRet));
ulCTMaxLen -= sizeof(SDP_CIPHER_HEAD_STRUEX);
ulTotalLen += sizeof(SDP_CIPHER_HEAD_STRUEX); /*Calculate the cipher len*/
ulTempCTLen = ulCTMaxLen;
/* data encryption */
ulRet = CAC_Encrypt(pstCipherHead->ulEncAlgId, aucKey, ulKeyLen, pstCipherHead->aucIV, ulIVLen,
pucPlainText, ulPTLen, (pucCipherText + sizeof(SDP_CIPHER_HEAD_STRUEX)),
/* suggest INOUT */ &ulTempCTLen);
break_oper_if((ulRet!= WSEC_SUCCESS), WSEC_LOG_E("[SDP] CAC encrypt failed."), nErrCode = WSEC_ERR_ENCRPT_FAIL);
WSEC_ASSERT(ulTempCTLen <= ulCTMaxLen); /* assert: cipher space not overflow */