这篇教程C++ trace_log函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中trace_log函数的典型用法代码示例。如果您正苦于以下问题:C++ trace_log函数的具体用法?C++ trace_log怎么用?C++ trace_log使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了trace_log函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: while/** /brief * 接收数据 * /param pDesc PSIMPLEX_DESC结构体 * /param RecBuff 接收缓存 * /param nRecLen 接收长度 * /return true:成功,false:失败 */bool SimplexSock::RecvData(PSIMPLEX_DESC pDesc,unsigned char* RecBuff,int& nRecLen){ try{ int bytes_left; int bytes_read; unsigned char* ptr=RecBuff; bytes_left=nRecLen; while(bytes_left>0) { bytes_read=read(pDesc->socket_Recdesc,ptr,bytes_left); trace_log(DBG,"cIp[%s],nPort[%d] socket[%d] start read bytes_read[%d] ",pDesc->cIp,pDesc->nPort,pDesc->socket_Recdesc,bytes_read); if(bytes_read<0) { if(errno==EINTR) { bytes_read=0; }else if(errno==EAGAIN){ bytes_read=0; break; }else{/**< 通讯异常 */ pDesc->nMask=0; nRecLen=0; trace_log(ERR,"cIp[%s],nPort[%d] socket read err",pDesc->cIp,pDesc->nPort); return false; } }else if(bytes_read==0){ if(bytes_left==nRecLen)/**< 服务器断开 */ { pDesc->nMask=0; nRecLen=0; trace_log(ERR,"cIp[%s],nPort[%d] socket read err",pDesc->cIp,pDesc->nPort); return false; } break; } bytes_left-=bytes_read; trace_log(DBG,"RecvData:"); trace_mem(ptr,bytes_read); ptr+=bytes_read; } nRecLen-=bytes_left; pDesc->tRecIdle=time(0); return true; }catch(...){ trace_log(ERR,"Error in ClientYinLian::RecvData()"); return false; }}
开发者ID:vagabond1132,项目名称:Code,代码行数:57,
示例2: memcpy/** /brief * 计算mab * /param in: pData TRADEDATA结构指针 * /param in: obj8583 8583包 * /param out: bMac 8字节 * /return 失败返回非0,成功返回0 */int CTradeBase::GenMacData( TRADEDATA * pData,BYTE* bMabTmp,int bMabLen,BYTE* bMac){ int nLenMab=0,nLen=0; int inum = 0; BYTE bMak[17]={0},bTmp[8]={0},bOut[8]={0},bMakTemp[8+1] = {0}; BYTE bMab[1024],temp1[32] = {0},temp2[32] = {0}; //nLenMab=BuildMab(obj8583,bMab); nLenMab = bMabLen; memcpy(bMab,bMabTmp,bMabLen); trace_log(DBG, "bMab,pData->RcvBrchCode:%s,pData->SndBrchCode:%s",pData->RcvBrchCode,pData->SndBrchCode); trace_mem(bMabTmp, bMabLen); if(bSoftEncrypt) { /**< 软计算 */ nLen=8*((nLenMab+7)/8); for(int i=nLenMab;i<nLen;i++) bMab[i]=0x00; inum = nLen/8; Ccommon::Asc2Bcd((char *)pData->bMacKey,bMak, 32); memcpy(bMakTemp,bMak,8); memcpy(bTmp,bMab,8); for(int j = 1;j<inum;j++) { memset(bOut,0,8); memcpy(bOut,bMab+j*8,8); Ccommon::ExclusiveOR(bTmp,bOut,bTmp,8); } BcdToAsc(temp1, bTmp, 16); memcpy(temp2,temp1,8); memset(bTmp,0x00,sizeof(bTmp)); des.DesEncrypt(ENCRYPT, temp2, bMakTemp, bTmp); Ccommon::ExclusiveOR(bTmp,bTmp,temp1+8,8); memset(temp1,0x00,sizeof(temp1)); des.DesEncrypt(ENCRYPT, bTmp, bMakTemp, temp1); BcdToAsc(temp2, temp1, 16); memcpy(bMac,temp2,8); }else{ /**< 硬计算 */ if(!cryptComm.CalculateMac(pData->RcvBrchCode, pData->SndBrchCode,bMab, nLenMab,bMac)) { trace_log(ERR, "Get mac failed!"); return RET_PACK; } } return 0;}
开发者ID:vagabond1132,项目名称:Code,代码行数:56,
示例3: DoTradeCtrl//交易流程控制int DoTradeCtrl(void * pNode){ int iRet = RET_SYSEXP; if ( pNode == NULL) { trace_log(ERR, "paramter error!"); return iRet; } TRADEDATA * pData = (TRADEDATA *)pNode; POS_TRADE_TYPE TradeType = (POS_TRADE_TYPE)pData->TransData.HeadData.RTradeType; trace_log(SYS, "TradeType[%c]!", (char)TradeType); TransProcess transProcess; return transProcess.Process(TradeType, pData);}
开发者ID:vagabond1132,项目名称:Code,代码行数:16,
示例4: StartServicesbool StartServices(){ if (NULL == g_ThreadPoolMgr) g_ThreadPoolMgr = new ThreadPoolManager(); g_ThreadPoolMgr->Init(g_Cfg.threadPool_CNF.TastSize,g_Cfg.threadPool_CNF.ThreadMax,g_Cfg.threadPool_CNF.ThreadPre); if(0==x_svrinit((LPFN_XSVRCALLBACK)&T_CUP_SX_POSP)) { trace_log(DBG, "x_svrinit[t_cup_sx_posp] success!"); }else trace_log(ERR, "x_svrinit[t_cup_sx_posp] failed!"); if(NULL ==mqClient) mqClient=new MqClient(); return true;}
开发者ID:vagabond1132,项目名称:Code,代码行数:16,
示例5: catcher//截获KILL/PKILL信号void catcher(int signo){ //停止服务 StopServices(); trace_log(SYS, "Service Stopped."); exit(0);}
开发者ID:vagabond1132,项目名称:Code,代码行数:8,
示例6: trace_log/**< 跟第三方系统进行通信 */int CTradeBase::DoSendAndRcv(unsigned char *ReqBuf, int ReqLen,unsigned char *RepBuf, int *RepLen, int TimeOut,char* errDesc){ trace_log(DBG, "SndBuf len:%d",ReqLen); trace_mem(ReqBuf, ReqLen); SocketClient client; return client.SendToHost(ReqBuf,ReqLen,RepBuf,*RepLen,g_Cfg.CupHost.cIp,g_Cfg.CupHost.iPort,40,errDesc);}
开发者ID:vagabond1132,项目名称:Code,代码行数:8,
示例7: time/** /brief * /param in: bIsSettle 是否清算 * 设置时间和日期 (sndObj[12]域和[13]域) */void CTradeBase::SetDateTime(bool bIsSettle){ BYTE bTmpData[FIELD_MAXLEN]={0}; char cCurTime[15] = {0}; struct tm stCurTime; time_t ltime; time( <ime ); localtime_xgd(<ime, &stCurTime); sprintf(cCurTime, "%4d%02d%02d%02d%02d%02d", stCurTime.tm_year + 1900, stCurTime.tm_mon + 1, stCurTime.tm_mday, stCurTime.tm_hour, stCurTime.tm_min, stCurTime.tm_sec); //12 交易时间 trace_log(DBG, "cCurTime = %s, stCurTime.tm_sec=%d", cCurTime, stCurTime.tm_sec); memset(bTmpData, 0, sizeof(bTmpData)); memcpy(bTmpData, cCurTime + 8, 6); sndObj.SetValueByStr(12, (char *)bTmpData); //13 交易日期 memset(bTmpData, 0, sizeof(bTmpData)); memcpy(bTmpData, cCurTime + 4, 4); sndObj.SetValueByStr(13, (char *)bTmpData); //14 清算日期 if(bIsSettle) { sndObj.SetValueByStr(15, (char *)bTmpData); }}
开发者ID:vagabond1132,项目名称:Code,代码行数:29,
示例8: trace_power_flowvoid trace_power_flow(unsigned long mpidr, unsigned char mode){ switch (mode) { case CPU_UP: trace_log("core %ld:%ld ON/n", (mpidr & MPIDR_CLUSTER_MASK) >> MPIDR_AFFINITY_BITS, (mpidr & MPIDR_CPU_MASK)); break; case CPU_DOWN: trace_log("core %ld:%ld OFF/n", (mpidr & MPIDR_CLUSTER_MASK) >> MPIDR_AFFINITY_BITS, (mpidr & MPIDR_CPU_MASK)); break; case CPU_SUSPEND: trace_log("core %ld:%ld SUSPEND/n", (mpidr & MPIDR_CLUSTER_MASK) >> MPIDR_AFFINITY_BITS, (mpidr & MPIDR_CPU_MASK)); break; case CLUSTER_UP: trace_log("cluster %ld ON/n", (mpidr & MPIDR_CLUSTER_MASK) >> MPIDR_AFFINITY_BITS); break; case CLUSTER_DOWN: trace_log("cluster %ld OFF/n", (mpidr & MPIDR_CLUSTER_MASK) >> MPIDR_AFFINITY_BITS); break; case CLUSTER_SUSPEND: trace_log("cluster %ld SUSPEND/n", (mpidr & MPIDR_CLUSTER_MASK) >> MPIDR_AFFINITY_BITS); break; default: trace_log("unknown power mode/n"); break; }}
开发者ID:Atomar25,项目名称:arm-trusted-firmware,代码行数:35,
示例9: curl_easy_initbool LsnBase::sendSmsbyweina(char *smsdesc){ if(NULL == smsdesc) { return false; } CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, smsdesc); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); res = curl_easy_perform(curl); } if(res != CURLE_OK) { trace_log(SYS, "curl_easy_perform() failed: %s.",curl_easy_strerror(res)); } curl_easy_cleanup(curl); return true;}
开发者ID:vagabond1132,项目名称:Code,代码行数:27,
示例10: sizeof/**< 处理响应数据 */ void TranBase::RespData() { try{ if( pTrasferData->TlvDataLen ) { /**< 解TLV */ CTLVTemplet tlvObj; int nTlvICLen=0,nDateTimeLen=0; unsigned char uICData[256]={0}; char cDateTime[10]={0}; if(1 == tlvObj.UnPackTLVData(pTrasferData->TlvDataLen, pTrasferData->TlvData)) { nTlvICLen= tlvObj.GetTLVItemByHex(TAG_FIELD55_RSP, uICData, sizeof(uICData)); if(nTlvICLen) { pMsg8583recv->SetValueByHex(55,uICData,nTlvICLen); } nDateTimeLen=tlvObj.GetTLVItemByHex(TAG_DATETIME,(unsigned char*) myData.cTranDateTime, sizeof(myData.cTranDateTime)); if(10== strlen(myData.cTranDateTime) ) { memset(cDateTime,0,sizeof(cDateTime)); memcpy(cDateTime,myData.cTranDateTime+4,6); pMsg8583recv->SetValueByStr(12,cDateTime); memset(cDateTime,0,sizeof(cDateTime)); memcpy(cDateTime,myData.cTranDateTime,4); pMsg8583recv->SetValueByStr(13,cDateTime); } } } }catch(...){ trace_log(SYS, "Error in TranBase::RespData"); return ; } }
开发者ID:vagabond1132,项目名称:Code,代码行数:36,
示例11: test1void test1(){ trace_log(DBG,"------------------test1-----------------"); TestThread test; test.Start(); //sleep(2);}
开发者ID:wanghui5257,项目名称:wanghui365code,代码行数:7,
示例12: memset/************************************************************************函数功能:SetWorkKey(重置密钥)参数说明: cRcvCode[in] 受理机构号 cSndCode[in] 接入机构号 ucWorkKey[in] 银联下发的工作密钥 iWKLen[in] 密钥总长度 iKeyType[in] 密钥类型返回值: true 成功,false 失败************************************************************************/bool EnCryptComm::SetWorkKey(char * cRcvCode, char * cSndCode, unsigned char * ucWorkKey, int iWKLen, int iKeyCnt){ unsigned char Buffer[1024]={0}; unsigned vLen = 0; /**< CMD */ Buffer[vLen++] = 0x60; /**< 快钱更新工作密钥 */ Buffer[vLen++] =1; //机构接入 /**< 受理机构号 */ memset(&Buffer[vLen], ' ', 20); memcpy((char*)&Buffer[vLen], cRcvCode, strlen(cRcvCode)); vLen += 20; /**< 接入机构号 */ memset(&Buffer[vLen], ' ', 16); memcpy((char*)&Buffer[vLen], cSndCode, strlen(cSndCode)); vLen += 16; /**< 工作密钥 */ Buffer[vLen++]=iWKLen; //密钥总长度 Buffer[vLen++]=16; memcpy(Buffer+vLen,ucWorkKey,16); vLen+=16; Buffer[vLen++]=4; memcpy(Buffer+vLen,ucWorkKey+16,4); vLen+=4; Buffer[vLen++]=8; memcpy(Buffer+vLen,ucWorkKey+20,8); vLen+=8; Buffer[vLen++]=4; memcpy(Buffer+vLen,ucWorkKey+28,4); vLen+=4; trace_log(DBG,"Buffer_workkey len:%d",vLen); trace_mem(Buffer,vLen); if(!GetDataFromHsm(Buffer, vLen)) { trace_log(ERR, "SetWorkKey call GetDataFromHsm return false."); return false; } return true;}
开发者ID:vagabond1132,项目名称:Code,代码行数:56,
示例13: StartServerbool CMyServer::Start(){ if (NULL == m_lpfnOnSocketData) return false; //启动端口服务 m_bPortActive = StartServer(m_uPortNum, m_lpfnOnSocketData,m_lpfnOnSocketConnect, m_lpfnOnSocketClose,5*60); if (m_bPortActive) { trace_log(DBG,"Service Port[%d] Start...OK.", m_uPortNum); } else trace_log(DBG,"Service Port[%d] Start...failed!", m_uPortNum); return m_bPortActive;}
开发者ID:vagabond1132,项目名称:Code,代码行数:17,
示例14: mainint main(int argc, const char *argv[]){ trace = 1; trace_log(NULL); func1(); return 0;}
开发者ID:free4sheng,项目名称:util,代码行数:8,
示例15: DoChnLoginint DoChnLogin(TRADEDATA *pData, bool bLoginFlag){ if(pData == NULL) { trace_log(ERR, "paramter error!"); return -1; } pData->bIsLogin = bLoginFlag; TransProcess transProcess; if(transProcess.Process(POS_SIGN, pData)!=0) { trace_log(ERR, "login in failed!"); return -1; } return 0;}
开发者ID:vagabond1132,项目名称:Code,代码行数:17,
示例16: CloseServervoid CMyServer::Stop(){ if (m_bPortActive) { m_bPortActive = false; CloseServer(m_uPortNum); trace_log(SYS, "Service Port[%d] Closed.", m_uPortNum); }}
开发者ID:vagabond1132,项目名称:Code,代码行数:9,
示例17: trace_logTransProcess::~TransProcess(){ //dtor if( dbConn.isConnected()||dbConn.isAlive() ) { dbConn.Disconnect(); } trace_log(DBG,"~TransProcess()");}
开发者ID:vagabond1132,项目名称:Code,代码行数:9,
示例18: memcpy/** /brief * 计算mab * /param in: pData TRADEDATA结构指针 * /param in: obj8583 8583包 * /param out: bMac 8字节 * /return 失败返回非0,成功返回0 */int CTradeBase::GenMacData( TRADEDATA * pData,CUPS8583 obj8583,BYTE* bMac){ int nLenMab=0,nLen=0; BYTE bMak[17]={0},bTmp[8]={0},bOut[8]={0}; BYTE bMab[1024]; nLenMab=BuildMab(obj8583,bMab); if(bSoftEncrypt) { /**< 软计算 */ nLen=8*((nLenMab+7)/8); for(int i=nLenMab;i<nLen;i++) bMab[i]=0x00; Ccommon::Asc2Bcd(pData->bMacKey,bMak, 32); memcpy(bTmp,bMab,8); for(int i=0;i<nLen/8;i++) { des.DesEncrypt(ENCRYPT,bTmp,bMak,bOut); trace_log(DBG," EnDES: %d",i); trace_mem(bOut,8); if(i<nLen/8-1) { for( int j = 0; j< 8 ; j++ ) { bTmp[j] = bOut[j] ^ bMab[(i+1)*8+j]; } } } des.DesEncrypt(DECRYPT,bOut,bMak+8,bTmp); trace_log(DBG," DeDES:"); trace_mem(bTmp,8); des.DesEncrypt(ENCRYPT,bTmp,bMak,bMac); trace_log(DBG," EnDES: "); trace_mem(bMac,8); }else{ /**< 硬计算 */ if(!cryptComm.CalculateMac(pData->RcvBrchCode,pData->SndBrchCode,bMab, nLenMab,bMac)) { trace_log(ERR, "Get mac failed!"); return RET_PACK; } } return 0;}
开发者ID:vagabond1132,项目名称:Code,代码行数:51,
示例19: OnFromTerm/**从线程池收到的终端请求数据*/int OnFromTerm(QUEUE_LIST *pDataNode){ try { int ret; Dataprocess dataProcess; trace_mem(pDataNode->Buffer, pDataNode->Length); ms_delay(20); /**< 交易消息类型解包 */ ret = dataProcess.Unpack(pDataNode->Buffer, pDataNode->Length); /**< 交易消息类型的业务处理*/ if(ret==0) { trace_log(DBG, "Unpack package success"); //数据处理 ret = dataProcess.Process(); if(ret==0) { trace_log(DBG, "Trade process success"); }else if(ret==-2){ return -1; }else trace_log(DBG, "Trade process failed"); } /**< 交易消息类型打包*/ unsigned int iOutLen=ONE_PACKSIZE; ret = dataProcess.Pack(pDataNode->Buffer, iOutLen); pDataNode->Length=iOutLen; if(ret!=0) { trace_log(ERR, "pack package failed"); return -1; } trace_log(DBG, "Pack package success"); //if(dataProcess.myData.tradeType==POS_CONSUME)/**< 为了冲正的测试 */ //{ // return -1; //} return 0; }catch(...){ return -1; }}
开发者ID:vagabond1132,项目名称:Code,代码行数:45,
示例20: memset/** /brief * 设置密码 * /param in: pData TRADEDATA结构指针 * /param in: tlvObj tlv结构 * /param in:2磁道数据 * /param out: bHasPin 是否有密码 * /return 失败返回非0,成功返回0 */int CTradeBase::SetPinKey( TRADEDATA * pData, CTLVTemplet tlvObj,bool& bHasPin){ //52密码 BYTE bTmpData[FIELD_MAXLEN]={0}; BYTE bTmpPinData[9] = {0}; BYTE bTmpTpk[17] = {0}; BYTE bTmpPinBlock[17] = {0}; memset(bTmpData, 0, sizeof(bTmpData)); trace_log(DBG,"SetPinKey start!"); int nFieldDataLen = tlvObj.GetTLVItemByHex(TAG_ENCRYPTPWD, bTmpData, sizeof(bTmpData)); if(nFieldDataLen > 0) { trace_log(DBG,"PinBlock start!"); bHasPin=true; if(bSoftEncrypt) { /**< 软加密 */ memset(bTmpData, 0, sizeof(bTmpData)); if(PinBlock(pData->TransData.HeadData.Account, (BYTE*)bTmpData, bTmpPinBlock)!=0) { trace_log(ERR,"PinBlock faile"); return -1; } Ccommon::Asc2Bcd((char *)pData->bPinKey,bTmpTpk, 32); if(des.THreeDes(bTmpPinBlock,bTmpTpk,bTmpPinData,ENCRYPT,TWO_3DES)!=0) { trace_log(ERR,"EnPin faile"); return -1; } }else{ /**< 硬加密 */ if(!cryptComm.TranslatePin(pData->TransData.HeadData.LMerchNo, pData->TransData.HeadData.LTermNo, pData->RcvBrchCode,pData->SndBrchCode,pData->TransData.HeadData.Account, bTmpData, bTmpPinData, 1, 1)) { trace_log(ERR, "Call TranslatePin fail!"); return RET_SYSEXP; } } sndObj.SetValueByHex(52, bTmpPinData, 8); } return 0;}
开发者ID:vagabond1132,项目名称:Code,代码行数:51,
示例21: trace_logint CIso8583<_Ty>::SetValueByHex(const int iIndex, const unsigned char *pHexData, int iDataLen, int iValidLen){ if(m_pIFF == NULL || m_pIFF->GetField(iIndex) == NULL) { trace_log(ERR, "The parameters m_pIFF is empty."); return 0; } if(iIndex < 0 || iIndex >= m_pIFF->GetMF()->iFieldCnt) { trace_log(ERR, "iIndex overflow."); return 0; } int iRet = m_pIFF->GetField(iIndex)->SetValueByHex(pHexData, iDataLen, iValidLen); if(iRet && !SetBitMap(iIndex)) { return 0; } return iRet;}
开发者ID:vagabond1132,项目名称:Code,代码行数:19,
示例22: StartServices/** *启动服务 **/bool StartServices(){ if (NULL == g_ThreadPoolMgr) g_ThreadPoolMgr = new ThreadPoolManager(); g_ThreadPoolMgr->Init(100000,300,10); g_TradeSvr = new CMyServer(g_Cfg.TradePort, &OnSocketData,&OnSocketConnect,&OnSocketClose, false, false); if (!g_TradeSvr->Start()) return false; if(0==x_svrinit((LPFN_XSVRCALLBACK)&AS_POS)) { trace_log(DBG, "x_svrinit[AS_POS] success!"); }else trace_log(ERR, "x_svrinit[AS_POS] failed!"); g_Pub2WebIns=Publist2Web::GetInstancePtr(); return true;}
开发者ID:vagabond1132,项目名称:Code,代码行数:22,
示例23: trace_logbool CTradePayback::DifferentDay(void *pNode){ if (pNode == NULL) { trace_log(ERR, "Parameter error!"); return false; } TRADEDATA *pData = (TRADEDATA*)pNode; CTLVTemplet tlvObj; if (1 != tlvObj.UnPackTLVData(pData->TransData.TlvDataLen, pData->TransData.TlvData)) { trace_log(ERR, "UnPackTLVData fail!"); return false; } unsigned char bFieldData[FIELD_MAXLEN]={0} ,cTmpData[FIELD_MAXLEN]={0}; unsigned int iFieldDataLen = 0; //取交易时间 iFieldDataLen = tlvObj.GetTLVItemByHex(TAG_CURTIME, bFieldData, sizeof(bFieldData)); if (iFieldDataLen <= 0) { trace_log(ERR, "GetTLVItemByHex[2F02] fail!"); return false; } // 取原交易时间 iFieldDataLen = tlvObj.GetTLVItemByHex(TAG_ORIGTIME, cTmpData, sizeof(bFieldData)); if (iFieldDataLen <= 0) { trace_log(ERR, "GetTLVItemByHex[2F07] fail!"); return false; } // 判断是否当日 trace_log(DBG, "payback CURTIME[%s] ORIGTIME[%s]", bFieldData, cTmpData); if (memcmp(bFieldData, cTmpData, 8) == 0) { // 是当日,不调用核心记账 return false; } return true;}
开发者ID:vagabond1132,项目名称:Code,代码行数:43,
示例24: mainint main(int argc, char* argu[]){ time_t tempTime = 0; time(&tempTime); tm* CurTime = localtime(&tempTime); trace_log(DBG, "time: %ld", tempTime); trace_log(DBG, "%4d-%02d-%2d ", CurTime->tm_year + 1900, CurTime->tm_mon+1, CurTime->tm_mday); test1(); test2(); test3(); //sleep(5); time(&tempTime); trace_log(DBG, "time: %ld", tempTime); sleep(1); time(&tempTime); trace_log(DBG, "time: %ld", tempTime); return 0;}
开发者ID:wanghui5257,项目名称:wanghui365code,代码行数:19,
示例25: InitDataprocess::Dataprocess(){ try { Init(); memset(&trasData,0,sizeof(trasData)); memset(&myData,0,sizeof(myData)); pMsg8583recv = new MSGISO8583; if(NULL == pMsg8583recv ) { trace_log(ERR, "create MSGISO8583 object failed"); } } catch(...) { trace_log(SYS, "Error in Dataprocess::Dataprocess()"); }}
开发者ID:vagabond1132,项目名称:Code,代码行数:19,
示例26: memcpy/**************************************************************函数名称: GetDataFromHsm函数功能: 连接加密机从其获取数据入口参数: pMsgBuffer[in/out]:发送或返回的数据中的MSG iLen[in/out]:发送或返回数据的长度相关调用:返 回 值: true成功, false失败**************************************************************/bool EnCryptComm::GetDataFromHsm(unsigned char *pMsgBuffer, unsigned & iLen){ unsigned char cmd = pMsgBuffer[0], Buffer[1024]={0}; unsigned sLen;//发送数据长度 sLen = iLen + 7; memcpy(Buffer, &sLen, 2);//LC Buffer[2]=0xF1;//INS Buffer[3]=0;//SEQ //CR默认为0 memcpy(&Buffer[6], pMsgBuffer, iLen);//MSG Buffer[sLen-1] = CalcSum(Buffer, sLen - 1);//CRC char errDesc[512]={0}; unsigned char cRecBuf[1024]={0}; int recLen=0; SocketClient client; int iErrorCode=client.SendToHost(Buffer,sLen,cRecBuf,recLen,g_Cfg.EncHost.Host, g_Cfg.EncHost.Port,20,errDesc); if(0==iErrorCode) { trace_log(DBG, "recv from enchost"); trace_mem(cRecBuf, recLen); if(cRecBuf[recLen-1] == CalcSum(cRecBuf, recLen - 1) && cRecBuf[6] == cmd && cRecBuf[8] == CMD_OK) {//校验值正确,与原命令字相同,返回码为成功 if(memcmp(pMsgBuffer+2, cRecBuf+9, LEN_MERCHNO+LEN_TERMINO)!=0)//+LEN_TERMINO {//比较商户号与终端号 trace_log(DBG, "The return data from encryptor is not match!!"); return false; } memcpy(pMsgBuffer, cRecBuf+6, recLen-7);//去掉LC,INS,SEQ,CR,CRC iLen = recLen-7; trace_log(DBG,"GetDataFromHsm->iLen=%d",iLen); return true; } else { trace_log(ERR, "GetDataFromHsm else CalcSum %d", recLen); return false ; } }else{ trace_log(ERR,errDesc); return false; }}
开发者ID:vagabond1132,项目名称:Code,代码行数:50,
示例27: trace_logint CTradeLogin::GetWorkCrypt(SAConnection *pSaconn,const BYTE *data,const BYTE* key, int nDataLen,TRADEDATA * pData){ if(!data || nDataLen <= 0) { trace_log(ERR, "Input paramedter error!"); return -1; } BYTE p[16+1] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; BYTE temp_data[128] = {0}; BYTE tpk[17] = {0}; //pin 密钥 BYTE tak[17] = {0}; //mac 密钥 BYTE tdk[17] = {0}; //磁道 密钥 int nKeyLen = 16; //密钥长度 trace_log(DBG,"data Len:%d",nDataLen); //获取pin密钥明文 memset((char *)temp_data,0x00,sizeof((char *)temp_data)); memcpy( temp_data,data, 16); des.THreeDes(temp_data,key,tpk,DECRYPT,TWO_3DES); des.THreeDes(temp_data+8,key,tpk+8,DECRYPT,TWO_3DES); memset((char *)temp_data,0x00,sizeof((char *)temp_data)); des.THreeDes(p,tpk,temp_data,ENCRYPT,TWO_3DES); if(memcmp(temp_data,data+16,4) != 0) return 1; Ccommon::Hex2Str(tpk,(char *)pData->bPinKey,nKeyLen); //获取MAc密钥明文 memset((char *)temp_data,0x00,sizeof((char *)temp_data)); memcpy( temp_data,data+20, 16); des.THreeDes(temp_data,key,tak,DECRYPT,TWO_3DES); des.THreeDes(temp_data+8,key,tak+8,DECRYPT,TWO_3DES); memset((char *)temp_data,0x00,sizeof((char *)temp_data)); des.DesEncrypt(ENCRYPT,p,tak,temp_data); if(memcmp(temp_data,data+36,4) != 0) return 1; Ccommon::Hex2Str(tak,(char *)pData->bMacKey,nKeyLen); return 0;}
开发者ID:vagabond1132,项目名称:Code,代码行数:42,
注:本文中的trace_log函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ trace_machine_suspend函数代码示例 C++ trace_init函数代码示例 |