//连接WIFI int WifiConfig(void) //add by wuc 2014.9.9 { int iRet; /* iRet = SelectWifiMode(); if(iRet) { return iRet; } */ while(1) { //linzhao iRet = SelectWifiMode(); if(iRet) { break; } iRet = SetWifiLocalIpPara(); if(iRet) { break; } if(glConfiged) { glConfiged = 0; } else { iRet = ManualWifiAps(); if (iRet) { break; } } ScrCls(); PubDispString(_T("CONNECT..."), DISP_LINE_CENTER|3); //CONNECTING iRet = WifiApLogin(); if(iRet == 0) { ScrCls(); PubDispString(_T("WIFI CONNECTED"), DISP_LINE_CENTER|3); PubWaitKey(3); break; } else { ScrCls(); PubDispString(_T("CONNECT FAIL"), DISP_LINE_CENTER|3); //CONNECT FAIL PubWaitKey(3); continue; } } return iRet; }
int TmkActivation(void) { int i, iRet; iRet = TransInit(LOGON); if( iRet!=0 ) { return iRet; } ScrCls(); PubDispString(_T("TMK ACTIVATION"), 0 | DISP_LINE_LEFT | DISP_LINE_REVER); //set common field for TMK Activation field SetKeyCommfield(KEY_TYPE_TMK2); iRet = SendRecvPacket(); if(iRet!=0) { return iRet; } if( memcmp(glProcInfo.stTranLog.szRspCode, "00", 2)!=0 ) { return -1; } return 0; }
//选择WIFI打开模式, 是扫描周围的热点,还是手工输入SSID int SelectWifiMode(void) { int iRet = 0; uchar ucKey; while(1) { kbflush(); ScrCls(); PubDispString(_T("WIFI"), DISP_LINE_CENTER|0); ScrPrint(0, 1, 0, _T("1 - SEARCH NETWORK")); ScrPrint(0, 2, 0, _T("2 - MANUAL")); ucKey = PubWaitKey(USER_OPER_TIMEOUT); if (ucKey == KEY1) { iRet = ScanWifiAps(); if (iRet) { //add by wuc 2014.3.24 if(WIFI_ERR_SCAN == iRet) { WifiClose(); iRet = WifiOpen(); if(iRet) { ScrClrBelow(1); ScrPrint(0, 2, 0, "OpenWifi err=%d", iRet); PubWaitKey(5); break; } } continue; } break; } if (ucKey == KEY2) { iRet = ManualWifiAps(); if (iRet) { continue; } break; } if (ucKey == KEYCANCEL || ucKey == NOKEY) { return ucKey; } } return iRet; }
//connect wifi at the first fun. linzhao 2015.1.26 void WifiPrompt(void) { ST_WIFI_AP WifiAp; while( WifiCheck(&WifiAp)<0 ) { ScrCls(); PubDispString(_T("Configure WIFI network"), DISP_LINE_CENTER|3); PubDispString(_T("Press F2"), DISP_LINE_CENTER|4); if ( KEYF2==getkey() && 0==WifiConfig() ) { #ifdef _SSL_ONLY_ glSysCtrl.ucCommType = SSL_USE; #else glSysCtrl.ucCommType = WIFI_USE; #endif break; } } }
//输入WIFI SSID int GetWifiSsid(uchar *psOut) { uchar ucRet; uchar ucTempBuf[100]; memset(ucTempBuf, 0, sizeof(ucTempBuf)); strcpy(ucTempBuf, glSysCtrl.stAppWifiPara.Ssid); ScrCls(); PubDispString(ucTempBuf, DISP_LINE_CENTER|1); PubDispString(_T("SSID:"), DISP_LINE_CENTER|2); ScrGotoxyEx (0, 96); ucRet = GetString(ucTempBuf, 0xF5, 0, KEY_WPA_MAXLEN); if (ucRet) { return ucRet; } memcpy(psOut, &ucTempBuf[1], ucTempBuf[0]); return 0; }
//1.RSA 2,TMK 3,Active TMK void KeyDownload(void) { int iRet; memcpy(&glCurAcq, &glSysParam.stAcqList[1], sizeof(ACQUIRER)); //set the default Acq by richard 20170223 iRet = RsaKeyDownload(); if(iRet !=0) { ScrClrLine(2, 7); PubDispString(_T("RSA DOWN ERR"), 3 | DISP_LINE_CENTER); PubWaitKey(3); return; } iRet = TmkDownload(); if(iRet !=0) { ScrClrLine(2, 7); PubDispString(_T("TMK DOWN ERR"), 3 | DISP_LINE_CENTER); PubWaitKey(3); return; } iRet = TmkActivation(); if(iRet !=0) { ScrClrLine(2, 7); PubDispString(_T("TMK ACTIVE ERR"), 3 | DISP_LINE_CENTER); PubWaitKey(3); } else { PubBeepOk(); ScrClrLine(2, 7); PubDispString(_T("DOWNLOAD SUCCESS!"), 3 | DISP_LINE_CENTER); PubWaitKey(3); } }
//设置WIFI 本地IP参数 int SetWifiLocalIpPara(void) { int iRet = 0; uchar ucKey; while(1) { kbflush(); ScrCls(); PubDispString(_T("PROTOCOL"), DISP_LINE_CENTER|0); ScrPrint(0, 1, 0, _T("1 - DHCP")); ScrPrint(0, 2, 0, _T("2 - MANUAL")); ucKey = PubWaitKey(USER_OPER_TIMEOUT); if (ucKey == KEY1) { glSysCtrl.stAppWifiPara.DhcpEnable= 1; glConfiged = 1; break; } if (ucKey == KEY2) { glSysCtrl.stAppWifiPara.DhcpEnable = 0; iRet = ManualWifiIps(); if (iRet) { return iRet; } iRet = ConfirmConfig(); if(iRet) { return iRet; } break; } if (ucKey == KEYCANCEL || ucKey == NOKEY) { return ucKey; } /*if(ucKey == KEYENTER) { break; }*/ } return iRet; }
void UnLockTerminal(void) { if( ChkEdcOption(EDC_NOT_KEYBOARD_LOCKED) ) { return; } while( !ChkEdcOption(EDC_NOT_KEYBOARD_LOCKED) ) { PubShowTitle(TRUE, (uchar *)_T("TERMINAL LOCKED")); PubDispString(_T("MERCHANT PWD"), 4|DISP_LINE_LEFT); PubWaitKey(-1); if( PasswordMerchant()==0 ) { glSysParam.stEdcInfo.sOption[EDC_NOT_KEYBOARD_LOCKED>>8] |= (EDC_NOT_KEYBOARD_LOCKED & 0xFF); SaveEdcParam(); PubBeepOk(); } }
//输入WIFI 加密方式 int GetWifiSecMode(uchar *psName, uchar *psOut) { uchar ucKey; ScrCls(); PubDispString(_T("ENCRYPTION"), DISP_LINE_CENTER|1); ScrPrint(0, 3, 0, _T("1 - NONE")); ScrPrint(0, 4, 0, _T("2 - WEP")); ScrPrint(0, 5, 0, _T("3 - WPA/WPA2")); ScrPrint(0, 6, 0, _T("4 - WPA-PSK/WPA2-PSK")); do { ucKey = PubWaitKey(USER_OPER_TIMEOUT); } while(ucKey!=KEY1 && ucKey!=KEY2 && ucKey!=KEY3 && ucKey!=KEY4 && ucKey!=KEYCANCEL); if (ucKey == KEY1) { *psOut = 0; } if (ucKey == KEY2) { *psOut = 1; } if (ucKey == KEY3) { *psOut = 2; } if (ucKey == KEY4) { *psOut = 3; } if (ucKey == KEYCANCEL || ucKey == NOKEY) { return ucKey; } return 0; }
//输入WIFI 密码 int GetWifiKey(uchar *psName, int iSecMode, uchar *psOut) { uchar ucRet; uchar ucTempBuf[100]; uchar ucWEPMode; if (iSecMode < 1 || iSecMode > 3) { return 0; } ScrCls(); PubDispString(psName, DISP_LINE_CENTER|1); if(iSecMode == 1) { PubDispString(_T("SELECT WEP MODE"), DISP_LINE_CENTER|2); ScrPrint(0, 3, 0, _T("1. ASCII")); ScrPrint(0, 4, 0, _T("2. HEX")); while(1) { ucRet = PubWaitKey(USER_OPER_TIMEOUT); if(ucRet == KEY1) { ucWEPMode = 0; break; } else if(ucRet == KEY2) { ucWEPMode = 1; break; } else if(ucRet == KEYCANCEL || ucRet == NOKEY) { return ucRet; } } ScrClrBelow(2); } PubDispString(_T("TYPE PASSWORD:"), DISP_LINE_CENTER|2); ScrGotoxyEx (0, 96); memset(ucTempBuf, 0, sizeof(ucTempBuf)); if (iSecMode == 1) //WEP { if(glSysCtrl.ucWepMode == 0) //ascii { strcpy(ucTempBuf, glSysCtrl.stAppWifiPara.Wep); } else //hex { PubBcd2Asc0(glSysCtrl.stAppWifiPara.Wep, 5, ucTempBuf); } ucRet = GetString(ucTempBuf, 0xF5, (uchar)(ucWEPMode==0 ? 5:10), (uchar)(ucWEPMode==0 ? 5:10)); glSysCtrl.ucWepMode = ucWEPMode; } else //WPA { strcpy(ucTempBuf, glSysCtrl.stAppWifiPara.Wpa); ucRet = GetString(ucTempBuf, 0xF5, 1, KEY_WPA_MAXLEN); } if (ucRet == 0x00) { if((iSecMode == 1) && (ucWEPMode == 1)) { PubAsc2Bcd(&ucTempBuf[1], ucTempBuf[0], psOut); } else { memcpy(psOut, &ucTempBuf[1], ucTempBuf[0]); } return 0; } if (ucRet == 0x0D) { return 0; } return ucRet; }
//扫描周围的热点 int ScanWifiAps(void) { int i, iRet, iApCount; uchar ucKey, ucTempBuf[100]; ST_WIFI_AP stWifiAps[16]; ScrClrBelow(1); ScrPrint(0, 1, 0, _T("SCANNING AP...")); //scanning ap if(strlen(glSysCtrl.stAppWifiPara.Ssid) != 0) { WifiDisconAp(); } iApCount = 8; memset(&stWifiAps, 0, sizeof(stWifiAps)); iRet = WifiScanAps(&stWifiAps[0], iApCount); if(iRet == 0) { ScrClrBelow(1); ScrPrint(0, 2, 0, _T("NO AVAILABLE AP")); getkey(); return WIFI_ERR_NULL; } if(iRet < 0) { ScrClrBelow(1); ScrPrint(0, 2, 0, "ScanAps err=%d", iRet); getkey(); return WIFI_ERR_SCAN; } ScrCls(); PubDispString(_T("SEARCH NETWORK"), DISP_LINE_CENTER|0); //please select //显示搜索到的热点 for (i=0; i<iRet; i++) { ScrPrint(0, (uchar)(i + 1), 0, "%d - %s",i, stWifiAps[i].Ssid); } while (1) { kbflush(); ucKey = PubWaitKey(USER_OPER_TIMEOUT); if (ucKey == KEYCANCEL || ucKey == NOKEY) { return ucKey; //modify by wuc 2014.4.1 } i = ucKey - 0x30; if(i<0 || i>iRet) { continue; } break; } strcpy(glSysCtrl.stAppWifiPara.Ssid, stWifiAps[i].Ssid); //判断是否需要密码 if(stWifiAps[i].SecMode == 0) //无加密 { glSysCtrl.stAppWifiPara.SecMode = 0; } else if(stWifiAps[i].SecMode == 1) //WEP加密 { glSysCtrl.stAppWifiPara.SecMode = 1; memset(ucTempBuf, 0, sizeof(ucTempBuf)); iRet = GetWifiKey(stWifiAps[i].Ssid, stWifiAps[i].SecMode, ucTempBuf); if(iRet) { return iRet; } strcpy(glSysCtrl.stAppWifiPara.Wep, ucTempBuf); } else if(stWifiAps[i].SecMode == 2) //WPA/WPA2加密 TKIP { glSysCtrl.stAppWifiPara.SecMode = 2; memset(ucTempBuf, 0, sizeof(ucTempBuf)); iRet = GetWifiKey(stWifiAps[i].Ssid, stWifiAps[i].SecMode, ucTempBuf); if(iRet) { return iRet; } strcpy(glSysCtrl.stAppWifiPara.Wpa, ucTempBuf); } else if(stWifiAps[i].SecMode == 3) //WPA-PSK/WPA2-PSK加密 AES { glSysCtrl.stAppWifiPara.SecMode = 3; memset(ucTempBuf, 0, sizeof(ucTempBuf)); iRet = GetWifiKey(stWifiAps[i].Ssid, stWifiAps[i].SecMode, ucTempBuf); if(iRet) { return iRet; } strcpy(glSysCtrl.stAppWifiPara.Wpa, ucTempBuf); } else { ScrClrRect(0, 24, 319, 215); ScrGotoxyEx(0, 24); Lcdprintf("%s\n", stWifiAps[i].Ssid); Lcdprintf(_T("UNSUPPORTED MODE\n")); getkey(); return WIFI_ERR_CANCEL; } return 0; }
int TmkDownload(void) { int i, iRet, offset=0; uchar szBuff[32 + 1], TmpBuff[32 + 1], ck_value[8 + 1]; uchar randomkeybuf[16 + 1]; uchar TMKResult[16]; uchar RSAData[256]={0}; uchar szDataIn[256]={0}; int mod_len = 2048, RSADataLen=0; //uchar dataIn_en[1024] = {0}; //uchar inch[300], exp[4], modulch[300], outch[300]; R_RSA_PUBLIC_KEY_CS publicKey = {0}; R_RANDOM_STRUCT randomStruct = {0}; ST_KEY_INFO KeyInfoIn = {0}; ST_KCV_INFO KcvInfoIn = {0}; iRet = TransInit(LOGON); if( iRet!=0 ) { return iRet; } ScrCls(); PubDispString(_T("TMK DOWNLOAD"), 0 | DISP_LINE_LEFT | DISP_LINE_REVER); for (i = 0; i < 16; i++) //generating random data { szBuff[i] = (uchar)rand(); } memcpy(randomkeybuf, szBuff, 16); //encrypt 0 data with the random key, and get check value memset(TmpBuff, 0x00, sizeof(TmpBuff)); PubDes(TRI_ENCRYPT, TmpBuff, randomkeybuf, ck_value); memset(szDataIn, 0xFF, 128); memcpy(szDataIn, "\x00\x02", 2); memcpy(szDataIn + 128 - 16 - 1, "\x00", 1); memcpy(szDataIn + 128 - 16, randomkeybuf, 16); iRet = PedRsaRecover(1, szDataIn, RSAData, NULL); if (0 != iRet) return iRet; //set common field for TMK Exchange field SetKeyCommfield(KEY_TYPE_TMK1); memcpy(rsa_down.RadomEncryptKey, RSAData, 128); memcpy(rsa_down.RadomEncryptKeyCheck, ck_value, 4); offset = 2; offset += SetTlvData(glSendPack.sField62+offset, "\x9F\x06", rsa_down.PubKeyRID, 5); offset += SetTlvData(glSendPack.sField62+offset, "\x9F\x22", &rsa_down.PubKeyIndex, 1); /*if(ChkExistAcq("CUP_DSB")) { offset += SetTlvData(glSendPack.sField62+offset, "\xDF\x02", rsa_down.RadomEncryptKey, 128); offset += SetTlvData(glSendPack.sField62+offset, "\xDF\x04", rsa_down.RadomEncryptKeyCheck, 4); } else {*/ offset += SetTlvData(glSendPack.sField62+offset, "\xDF\x23", rsa_down.RadomEncryptKey, 128); offset += SetTlvData(glSendPack.sField62+offset, "\xDF\x24", rsa_down.RadomEncryptKeyCheck, 4); //} PubLong2Char((ulong)offset-2, 2, glSendPack.sField62); iRet = SendRecvPacket(); if(iRet!=0) { return iRet; } if( memcmp(glProcInfo.stTranLog.szRspCode, "00", 2)!=0 ) //response code incorrect { return -1; } iRet = GetTlvData(glRecvPack.sField62, "\xDF\x21", rsa_down.EncryptTMK); if(iRet<0) { return iRet; } iRet = GetTlvData(glRecvPack.sField62, "\xDF\x22", rsa_down.TMKCheckValue); if(iRet<0) { return iRet; } for (i = 0; i < 2; i++) { PubDes(TRI_DECRYPT, rsa_down.EncryptTMK + i * 8, randomkeybuf, TMKResult + i * 8); } memset(TmpBuff, 0x00, sizeof(TmpBuff)); PubDes(TRI_ENCRYPT, TmpBuff, TMKResult, ck_value); //write TMK, and verify check value if(memcmp(rsa_down.TMKCheckValue, ck_value, 4) == 0) { PedErase(); KeyInfoIn.ucSrcKeyType = PED_TMK; KeyInfoIn.ucSrcKeyIdx = 0; KeyInfoIn.ucDstKeyType = PED_TMK; KeyInfoIn.ucDstKeyIdx = CUP_TMK_ID; KeyInfoIn.iDstKeyLen = 16; memcpy(KeyInfoIn.aucDstKeyValue, TMKResult, KeyInfoIn.iDstKeyLen); KcvInfoIn.iCheckMode = 0x00; iRet = PedWriteKey(&KeyInfoIn, &KcvInfoIn); return iRet; } else { return -1;//check value incorrect } }
void TerminalSignOn(void) { int iRet; ST_KEY_INFO KeyInfoIn = {0}; ST_KCV_INFO KcvInfoIn = {0}; memcpy(&glCurAcq, &glSysParam.stAcqList[1], sizeof(ACQUIRER)); //set the default Acq by richard 20170223 iRet = TransInit(LOGON); if( iRet!=0 ) { return iRet; } SaveRevInfo(FALSE); //for test, TODO need to delete, ScrCls(); PubDispString(_T("TERM SIGNON"), 0 | DISP_LINE_LEFT | DISP_LINE_REVER); SetKeyCommfield(KEY_TYPE_TPK); //set field63 memcpy(glSendPack.sField63, "\x00\x03", 2); memcpy(glSendPack.sField63+2, "000", 3); iRet = SendRecvPacket(); if(iRet!=0) { return iRet; } if( memcmp(glProcInfo.stTranLog.szRspCode, "00", 2)!=0 ) { return -1; } //TODO , deal with other response field data. //get the TPK and check value KeyInfoIn.iDstKeyLen = 16; KcvInfoIn.aucCheckBuf[0] = 0x04; memcpy(KeyInfoIn.aucDstKeyValue, glRecvPack.sField62+2, 16); memcpy(KcvInfoIn.aucCheckBuf+1, glRecvPack.sField62+18, 4); KeyInfoIn.ucSrcKeyType = PED_TMK; KeyInfoIn.ucSrcKeyIdx = CUP_TMK_ID; KeyInfoIn.ucDstKeyType = PED_TPK; KeyInfoIn.ucDstKeyIdx = CUP_TPK_ID; KcvInfoIn.iCheckMode = 0x01; iRet = PedWriteKey(&KeyInfoIn, &KcvInfoIn); if(iRet != 0) { ScrClrLine(2, 7); PubDispString(_T("SignOn Failed!"), 3 | DISP_LINE_CENTER); PubWaitKey(3); } else { PubBeepOk(); ScrClrLine(2, 7); PubDispString(_T("SignOn SUCCESS!"), 3 | DISP_LINE_CENTER); PubWaitKey(3); } }
int wifiConnect(uchar *inIp, uchar *inPort) { int i = 0; int ret; int trans_port; int event; int ret_num; char sBuff[33]; ST_WIFI_AP WifiAp; struct net_sockaddr server_addr; for (i = 0;i < 1; i++) // change 5 to 1 by wuc 2014.9.2 { ret = WifiCheck(&WifiAp); if (ret < 0) { ret = WifiApLogin(); if (ret != 0 && i != 4) { continue; } else if (ret != 0 && i == 4) { return ret; } else { break; } } else if (ret == 0) { DelayMs(500); continue; } else { break; } } trans_port = atoi(inPort); //如果TCP仍然连接,就不用再连接 if(wnet_socket_id >= 0) { event = Netioctl(wnet_socket_id, CMD_EVENT_GET, 0); if(event&(SOCK_EVENT_CONN|SOCK_EVENT_WRITE|SOCK_EVENT_READ)) { return 0; } } if(wnet_socket_id >= 0) { NetCloseSocket(wnet_socket_id); wnet_socket_id = -1; } ret = NetSocket(NET_AF_INET, NET_SOCK_STREAM, 0); if(ret < 0) { return -1; } wnet_socket_id = ret; /*ret = Netioctl(wnet_socket_id, CMD_TO_SET, 30*1000);//advice from S/W department if (ret != 0) { DebugOutput("ret = [%d]", ret); return ret; }*/ SockAddrSet(&server_addr, (char*)inIp, (short)trans_port); ret_num = NetConnect(wnet_socket_id, &server_addr, sizeof(server_addr)); if(ret_num < 0) { switch (ret_num) { case NET_ERR_ABRT: case NET_ERR_CONN: case NET_ERR_IF://linzhao strcpy(sBuff,_T("CONN FAIL")); break; case NET_ERR_RST: strcpy(sBuff,_T("CONN RESET")); break; case NET_ERR_CLSD: strcpy(sBuff,_T("CONN CLOSE")); break; case NET_ERR_RTE: strcpy(sBuff,_T("ROUTE ERR")); break; case NET_ERR_ISCONN: strcpy(sBuff,_T("CONN EXIST")); break; case NET_ERR_TIMEOUT: strcpy(sBuff,_T("CONN TIMOUT")); break; case NET_ERR_PASSWD: strcpy(sBuff,_T("PASSWORD ERR")); break; case NET_ERR_MODEM: strcpy(sBuff,_T("PPP FAIL")); break; case NET_ERR_LINKDOWN: case NET_ERR_LOGOUT: case NET_ERR_PPP: strcpy(sBuff,_T("RETRY PPP")); break; default: strcpy(sBuff,_T("UNKNOW ERR")); break; } ScrClrBelow(2); PubDispString(sBuff, DISP_LINE_LEFT|2); //Cielo要求去除返回码, linzhao // sprintf(sBuff, _T("code=%d "), ret_num); // PubDispString(sBuff, DISP_LINE_LEFT|3); PubWaitKey(2); NetCloseSocket(wnet_socket_id); wnet_socket_id = -1; return -1; } else return 0; }
int ShowLastAP(void) //add by wuc 2014.9.9 { int iRet; //读取参数并显示 kbflush(); ScrCls(); //add by wuc 2014.1.10 PubDispString(_T("CONFIGURATIONS"), DISP_LINE_CENTER|0); if(strlen(glSysCtrl.stAppWifiPara.Ssid) == 0) { ScrPrint(0, 1, 0, _T("NO AP CONNECTED")); } else { ScrPrint(0, 1, 0, _T("NETWORK: %s\n"), glSysCtrl.stAppWifiPara.Ssid); if (glSysCtrl.stAppWifiPara.SecMode == 1) { if(glSysCtrl.ucWepMode == 0) { ScrPrint(0, 2, 0, _T("MODE:WEP(ASCII)")); ScrPrint(0, 3, 0, _T("PASSWORD:%s\n"), glSysCtrl.stAppWifiPara.Wep); } else { ScrPrint(0, 2, 0, _T("MODE:WEP(HEX)")); ScrPrint(0, 3, 0, _T("PASSWORD:%02x%02x%02x%02x%02x\n"), glSysCtrl.stAppWifiPara.Wep[0], glSysCtrl.stAppWifiPara.Wep[1], glSysCtrl.stAppWifiPara.Wep[2], glSysCtrl.stAppWifiPara.Wep[3], glSysCtrl.stAppWifiPara.Wep[4]); } } else if (glSysCtrl.stAppWifiPara.SecMode == 2) { ScrPrint(0, 2, 0, _T("MODE:WPA/WPA2")); ScrPrint(0, 3, 0, _T("PASSWORD:%s\n"), glSysCtrl.stAppWifiPara.Wpa); } else if (glSysCtrl.stAppWifiPara.SecMode == 3) { ScrPrint(0, 2, 0, _T("MODE:WPA-PSK/WPA2-PSK")); ScrPrint(0, 3, 0, _T("PASSWORD:%s\n"), glSysCtrl.stAppWifiPara.Wpa); } else { ScrPrint(0, 2, 0, _T("MODE:NONE")); } if (glSysCtrl.stAppWifiPara.DhcpEnable == 1) { ScrPrint(0, 4, 0, _T("DHCP: OPEN")); } else { ScrPrint(0, 4, 0, _T("DHCP: CLOSE")); } } PubDispString(_T("(PRESS ENTER TO CONTINUE)"), DISP_LINE_CENTER|6); while(1) { iRet = PubWaitKey(USER_OPER_TIMEOUT); if(iRet == KEYCANCEL || iRet == NOKEY) { return iRet; } if(iRet == KEYENTER) { break; } } return 0; }
////发送数据 int WifiNetTcpTxd(uchar *psTxdData, ushort usDataLen, ushort uiTimeOutSec) { int iRet; int iSendLen; int iSumLen; uchar sBuff[128]; #ifdef DEBUG_USE DelayMs(500); return 0; #endif // Netioctl(wnet_socket_id, CMD_TO_SET, uiTimeOutSec*1000); // 系统默认为2秒 iSumLen = 0; while(1) { if (usDataLen > TCPMAXSENDLEN) { iSendLen = TCPMAXSENDLEN; usDataLen = usDataLen - TCPMAXSENDLEN; } else { iSendLen = usDataLen; } iRet = NetSend(wnet_socket_id, psTxdData+iSumLen, iSendLen, 0); { DebugOutput("%s--%d--%s, netsend : iRet = %d\n", __FILE__, __LINE__, __FUNCTION__, iRet); }//linzhao if (iRet < 0) { memset(sBuff, 0, sizeof(sBuff)); switch (iRet) { case NET_ERR_MEM: strcpy(sBuff,_T("MEM ERROR")); break; case NET_ERR_BUF: strcpy(sBuff,_T("BUF ERROR")); break; case NET_ERR_CLSD: strcpy(sBuff,_T("CONNE CLOSED")); break; case NET_ERR_CONN: strcpy(sBuff,_T("CONNE NOT EST")); break; case NET_ERR_LINKDOWN: strcpy(sBuff,_T("LINK DOWN")); break; default: sprintf(sBuff,"ret_send=%d",iRet); break; } DxxScrClrLine(2, 7); PubDispString(sBuff,4|DISP_LINE_CENTER); PubWaitKey(5); return iRet; } iSumLen = iSumLen + iSendLen; if (iSendLen <= TCPMAXSENDLEN) { break; } } return 0; }
int RsaKeyDownload(void) { int iRet; ST_RSA_KEY stRsaKey={0}; iRet = TransInit(LOGON); if( iRet!=0 ) { return iRet; } ScrCls(); PubDispString(_T("RSA KEY DOWNLOAD"), 0 | DISP_LINE_LEFT | DISP_LINE_REVER); //set Rsa request field SetKeyCommfield(KEY_TYPE_RSA); iRet = SendRecvPacket(); PubDebugTx("SendRecvPacket:%d\n", iRet); if(iRet!=0) { return iRet; } PubDebugTx("glProcInfo.stTranLog.szRspCode:%s\n", glProcInfo.stTranLog.szRspCode); if( memcmp(glProcInfo.stTranLog.szRspCode, "00", 2)!=0 ) //response code incorrect { return -1; } //field62, RSA information //memcpy(glRecvPack.sField62, "\x9F\x06\x05\x00\x00\x02\x77\xD6", 8); /*for(iRet=0; iRet<185; iRet++) PubDebugTx(" %02X", glRecvPack.sField62[iRet]); PubDebugTx("\n");*/ iRet = GetTlvData((uchar *)glRecvPack.sField62, "\x9F\x06", rsa_down.PubKeyRID); //PubDebugTx("GetTlvData 9f06:%d %02X %02X\n", iRet, rsa_down.PubKeyRID[3], rsa_down.PubKeyRID[4]); if(iRet<0) { return iRet; } iRet = GetTlvData(glRecvPack.sField62, "\x9F\x22", &rsa_down.PubKeyIndex); //PubDebugTx("GetTlvData 9f22:%d %d\n", iRet, rsa_down.PubKeyIndex); if(iRet<0) { return iRet; } iRet = GetTlvData(glRecvPack.sField62, "\xDF\x02", rsa_down.PubKeyModule); if(iRet<0) { return iRet; } memmove(rsa_down.PubKeyModule, &rsa_down.PubKeyModule[29], 128); //PubDebugTx("GetTlvData DF02:%d %02X %02X\n", iRet, rsa_down.PubKeyModule[0], rsa_down.PubKeyModule[1]); iRet = GetTlvData(glRecvPack.sField62, "\xDF\x04", rsa_down.PubKeyExponential); s_expLen = iRet; //PubDebugTx("GetTlvData DF04:%d %02X %02X\n", iRet, rsa_down.PubKeyExponential[0], rsa_down.PubKeyExponential[1]); if(iRet<0) { return iRet; } stRsaKey.iModulusLen = 1024; memcpy(&stRsaKey.aucModulus[512-128], rsa_down.PubKeyModule, 128); stRsaKey.iExponentLen = s_expLen*8; memcpy(&stRsaKey.aucExponent[512-s_expLen], rsa_down.PubKeyExponential, s_expLen); iRet = PedWriteRsaKey(1, &stRsaKey); if(iRet!=0) { PubDebugTx("PedWriteRsaKey: %d\n", iRet); return iRet; } return 0; }