|
@@ -518,17 +518,7 @@ void CAccessAuthFSM::doWarnMsg(int errReason, std::string errMsg, bool bNeedEven
|
|
|
#endif // RVC_OS_WIN
|
|
|
if (bNeedEvent)
|
|
|
{
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- std::string alaramMSg(fullErrMsg);
|
|
|
- if (alaramMSg.length() >= 255) {
|
|
|
- std::string tmp = alaramMSg.substr(0, 252);
|
|
|
- tmp += "...";
|
|
|
- alaramMSg = tmp;
|
|
|
- }
|
|
|
- const ErrorCodeEnum ec = m_pEntity->GetFunction()->SetSysVar("AuthErrMsg", alaramMSg.c_str(), true);
|
|
|
-#else
|
|
|
const ErrorCodeEnum ec = m_pEntity->GetFunction()->SetSysVar("AuthErrMsg", fullErrMsg.c_str(), true);
|
|
|
-#endif // RVC_OS_WIN
|
|
|
if (ec != Error_Succeed) {
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Update SysVar failed: 0x%X", ec);
|
|
|
}
|
|
@@ -739,22 +729,14 @@ bool CAccessAuthFSM::DecryptWithSessionKey(BYTE* encText, int encTextLen, BYTE*
|
|
|
{
|
|
|
BYTE key[16] = { 0 };
|
|
|
memcpy(key, ((CAccessAuthEntity*)m_pEntity)->m_AuthSessionKey, 16);
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- char* keyTmp = MyBase64::Str2Hex((char*)key, 16);
|
|
|
-#else
|
|
|
char* keyTmp = Str2Hex((char*)key, 16);
|
|
|
-#endif // RVC_OS_WIN
|
|
|
delete keyTmp;
|
|
|
|
|
|
if (!DecWithSM4_ECB(key, encText, encTextLen, decTest, &decTestLen)) {
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DecryptWithSessionKey ECB error.");
|
|
|
return false;
|
|
|
}
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- keyTmp = MyBase64::Str2Hex((char*)decTest, decTestLen);
|
|
|
-#else
|
|
|
keyTmp = Str2Hex((char*)decTest, decTestLen);
|
|
|
-#endif // RVC_OS_WIN
|
|
|
delete keyTmp;
|
|
|
return true;
|
|
|
}
|
|
@@ -852,17 +834,10 @@ DWORD CAccessAuthFSM::HandleGetToken(BYTE* enToken1, BYTE* sharedKey, BYTE* enTo
|
|
|
char* enToken1_acs, * sharedKey_acs, * enToken2_acs, * hash_acs;
|
|
|
int enToken1_acs_len = 0, sharedKey_acs_len = 0, enToken2_acs_len = 0, hash_acs_len = 0;
|
|
|
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- enToken1_acs = MyBase64::Hex2Str((char*)enToken1, enToken1_acs_len);
|
|
|
- sharedKey_acs = MyBase64::Hex2Str((char*)sharedKey, sharedKey_acs_len);
|
|
|
- enToken2_acs = MyBase64::Hex2Str((char*)enToken2, enToken2_acs_len);
|
|
|
- hash_acs = MyBase64::Hex2Str((char*)retHash, hash_acs_len);
|
|
|
-#else
|
|
|
enToken1_acs = Hex2Str((char*)enToken1, enToken1_acs_len);
|
|
|
sharedKey_acs = Hex2Str((char*)sharedKey, sharedKey_acs_len);
|
|
|
enToken2_acs = Hex2Str((char*)enToken2, enToken2_acs_len);
|
|
|
hash_acs = Hex2Str((char*)retHash, hash_acs_len);
|
|
|
-#endif // RVC_OS_WIN
|
|
|
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("HandleGetToken")("enToken1_acs_len=%d", enToken1_acs_len);
|
|
|
DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("HandleGetToken")("sharedKey_acs_len=%d", sharedKey_acs_len);
|
|
@@ -898,11 +873,7 @@ DWORD CAccessAuthFSM::HandleGetToken(BYTE* enToken1, BYTE* sharedKey, BYTE* enTo
|
|
|
rc = Error_Bug;
|
|
|
pEntity->SetAuthErrMsg("返回令牌校验不通过");
|
|
|
pEntity->GetFunction()->SetSysVar("AuthErrMsg", "返回令牌校验不通过", true);
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- char* sm3Ret = MyBase64::Str2Hex((char*)sm3, 32);
|
|
|
-#else
|
|
|
char* sm3Ret = Str2Hex((char*)sm3, 32);
|
|
|
-#endif // RVC_OS_WIN
|
|
|
delete sm3Ret;
|
|
|
doWarnMsg(ERR_ACCESSAUTH_TOKEN_HASH, "返回令牌校验不通过", true);
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(GetOutPutStr("%s%s", "Hash", "返回令牌校验不通过").c_str());
|
|
@@ -1096,11 +1067,7 @@ DWORD CAccessAuthFSM::GetTokenReq(CAccessAuthGetTokenReq* getTokenReq)
|
|
|
return ERR_ACCESSAUTH_GET_TERMINAL_FINGERPRINT;
|
|
|
}
|
|
|
char tmp[256] = { 0 };
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- char* fingerPrintHex = MyBase64::Str2Hex((char*)fingerPrint, 64);
|
|
|
-#else
|
|
|
char* fingerPrintHex = Str2Hex((char*)fingerPrint, 64);
|
|
|
-#endif // RVC_OS_WIN
|
|
|
memcpy(tmp, fingerPrintHex, 64);
|
|
|
getTokenReq->terminalCharacter = tmp;
|
|
|
delete fingerPrintHex;
|
|
@@ -1111,11 +1078,7 @@ DWORD CAccessAuthFSM::GetTokenReq(CAccessAuthGetTokenReq* getTokenReq)
|
|
|
DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetEncTerminalInfo failed:%d", rc);
|
|
|
return rc;
|
|
|
}
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- char* pTmp = MyBase64::Str2Hex((char*)encInfo.m_pData, encInfo.m_iLength);
|
|
|
-#else
|
|
|
char* pTmp = Str2Hex((char*)encInfo.m_pData, encInfo.m_iLength);
|
|
|
-#endif // RVC_OS_WIN
|
|
|
getTokenReq->encTerminalInfo = pTmp;
|
|
|
delete pTmp;
|
|
|
getTokenReq->terminalNo = si.strTerminalID.GetData();
|
|
@@ -1180,22 +1143,6 @@ void CAccessAuthFSM::UpdateWK()
|
|
|
|
|
|
DWORD CAccessAuthFSM::InitDevice(SpReqAnsContext<AccessAuthService_InitDev_Req, AccessAuthService_InitDev_Ans>::Pointer& ctx)
|
|
|
{
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- DWORD rc = 0;
|
|
|
-
|
|
|
- InitDeviceReq req;
|
|
|
- memset(&req, 0, sizeof(req));
|
|
|
- strncpy(req.CR1, (const char*)ctx->Req.EncR1, sizeof(req.CR1));
|
|
|
- strncpy(req.R2, (const char*)ctx->Req.R2, sizeof(req.R2));
|
|
|
- strncpy(req.CR3, (const char*)ctx->Req.EncR3, sizeof(req.CR3));
|
|
|
- strncpy(req.CDevPubKey, (const char*)ctx->Req.EncDevPubKey, sizeof(req.CDevPubKey));
|
|
|
- strncpy(req.Verdor, (const char*)ctx->Req.Vendor, sizeof(req.Verdor));
|
|
|
-
|
|
|
- m_ctxInitDev = ctx;
|
|
|
- CSmartPointer<InitDeviceTask> initDeviceTask = new InitDeviceTask(this, req);
|
|
|
- GetEntityBase()->GetFunction()->PostThreadPoolTask(initDeviceTask.GetRawPointer());
|
|
|
-#endif // RVC_OS_WIN
|
|
|
-
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
|