|
@@ -444,157 +444,7 @@ ErrorCodeEnum CAccessAuthEntity::ReleaseKMC()
|
|
|
// 加载新WK
|
|
|
DWORD CAccessAuthEntity::LoadPinPadWK(bool bSM)
|
|
|
{
|
|
|
- /*
|
|
|
-#ifdef IGNORE_PINPAD
|
|
|
- return Error_Succeed;
|
|
|
-#else
|
|
|
- // 1:3des only; 2: sm4 only; 3: both 3des and sm4
|
|
|
- //int nCapability = GetPinPadCapability();
|
|
|
- //Dbg("pinpad capability: %d", nCapability);
|
|
|
|
|
|
- CSimpleStringA strErrMsg;
|
|
|
- CSmartPointer<IEntityFunction> spFunction = this->GetFunction();
|
|
|
-
|
|
|
- char *retKeyBuf = NULL;
|
|
|
- if (!bSM)
|
|
|
- {
|
|
|
- // support des key
|
|
|
- // 读取工作密钥TPK
|
|
|
- char keyBuf[64];
|
|
|
- memset(keyBuf, 0, 64);
|
|
|
-
|
|
|
- retKeyBuf = RvcGetKey(m_pkeys, TPK, keyBuf);
|
|
|
- if (NULL == retKeyBuf)
|
|
|
- {
|
|
|
- strErrMsg = CSimpleStringA::Format("在加载密钥至PinPad时调用KMC接口(DES TPK)失败, ErrMsg: [%s]", (const char*)GetKMCLastErrMsg());
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_GET_KEY,
|
|
|
- GetOutPutStr("%s%s%s%s", "RvcGetKey", retKeyBuf, "strErrMsg", (const char*)GetKMCLastErrMsg()).c_str());
|
|
|
- return ERR_ACCESSAUTH_GET_KEY;
|
|
|
- }
|
|
|
-
|
|
|
- PinPadService_LoadKeys_Req req = {};
|
|
|
- req.initializeflag = false;
|
|
|
- req.workingkey1 = keyBuf;
|
|
|
-
|
|
|
- // 读取加密密钥EDK
|
|
|
- memset(keyBuf, 0, 64);
|
|
|
- retKeyBuf = RvcGetKey(m_pkeys, EDK, keyBuf);
|
|
|
- if (NULL == retKeyBuf)
|
|
|
- {
|
|
|
- strErrMsg = CSimpleStringA::Format("在加载密钥至PinPad时调用KMC接口(DES EDK)失败,ErrMsg: [%s]", (const char*)GetKMCLastErrMsg());
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_GET_KEY,
|
|
|
- GetOutPutStr("%s%s%s%s", "RvcGetKey", retKeyBuf, "strErrMsg", (const char*)GetKMCLastErrMsg()).c_str());
|
|
|
- return ERR_ACCESSAUTH_GET_KEY;
|
|
|
- }
|
|
|
-
|
|
|
- req.workingkey2 = keyBuf;
|
|
|
-
|
|
|
- Dbg("load des key to pinpad...");
|
|
|
- PinPadService_ClientBase *pPinPad = new PinPadService_ClientBase(this);
|
|
|
- DWORD rc = pPinPad->Connect();
|
|
|
- if (rc == Error_Succeed)
|
|
|
- {
|
|
|
- PinPadService_LoadKeys_Ans ans = {};
|
|
|
- rc = pPinPad->LoadKeys(req, ans, 30000);
|
|
|
- if (rc == Error_Succeed)
|
|
|
- Dbg("load des key to pinpad succ");
|
|
|
- else
|
|
|
- {
|
|
|
- strErrMsg = "加载DES密钥到PinPad失败";
|
|
|
- SetAuthErrMsg((const char*)strErrMsg);
|
|
|
- spFunction->SetSysVar("AuthErrMsg", (const char*)strErrMsg, true);
|
|
|
-
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_LOAD_KEYS_TO_PINPAD,
|
|
|
- GetOutPutStr("%s%08x%s%s", "LoadKeys", rc, "strErrMsg", strErrMsg).c_str());
|
|
|
- rc = ERR_ACCESSAUTH_LOAD_KEYS_TO_PINPAD;
|
|
|
- }
|
|
|
-
|
|
|
- pPinPad->GetFunction()->CloseSession();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- strErrMsg = "连接PinPad实体失败";
|
|
|
- SetAuthErrMsg((const char*)strErrMsg);
|
|
|
- spFunction->SetSysVar("AuthErrMsg", (const char*)strErrMsg, true);
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_CONNECT_PINPAD,
|
|
|
- GetOutPutStr("%s%08x%s%s", "Connect", rc, "strErrMsg", strErrMsg).c_str());
|
|
|
- rc = ERR_ACCESSAUTH_CONNECT_PINPAD;
|
|
|
- }
|
|
|
- pPinPad->SafeDelete();
|
|
|
- return rc;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // support sm key
|
|
|
- // 读取工作密钥TPK
|
|
|
- char keyBuf[64];
|
|
|
- memset(keyBuf, 0, 64);
|
|
|
-
|
|
|
- retKeyBuf = RvcGetKey(m_pkeys, TPK, keyBuf);
|
|
|
- if (NULL == retKeyBuf)
|
|
|
- {
|
|
|
- strErrMsg = CSimpleStringA::Format("在加载密钥至PinPad时调用KMC接口(SM TPK)失败, ErrMsg: [%s]", (const char*)GetKMCLastErrMsg());
|
|
|
-
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_GET_KEY,
|
|
|
- GetOutPutStr("%s%s%s%s", "RvcGetKey", retKeyBuf, "strErrMsg", (const char*)GetKMCLastErrMsg()).c_str());
|
|
|
- return ERR_ACCESSAUTH_GET_KEY;
|
|
|
- }
|
|
|
-
|
|
|
- PinPadService_LoadKeysSM_Req req = {};
|
|
|
- req.smflag = 1;
|
|
|
- req.initializeflag = false;
|
|
|
- req.workingkey1 = keyBuf;
|
|
|
-
|
|
|
- // 读取加密密钥EDK
|
|
|
- memset(keyBuf, 0, 64);
|
|
|
- retKeyBuf = RvcGetKey(m_pkeys, EDK, keyBuf);
|
|
|
- if (NULL == retKeyBuf)
|
|
|
- {
|
|
|
- strErrMsg = CSimpleStringA::Format("在加载密钥至PinPad时调用KMC接口(SM EDK)失败, ErrMsg: [%s]", (const char*)GetKMCLastErrMsg());
|
|
|
-
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_GET_KEY,
|
|
|
- GetOutPutStr("%s%s%s%s", "RvcGetKey", retKeyBuf, "strErrMsg", (const char*)GetKMCLastErrMsg()).c_str());
|
|
|
- return ERR_ACCESSAUTH_GET_KEY;
|
|
|
- }
|
|
|
-
|
|
|
- req.workingkey2 = keyBuf;
|
|
|
-
|
|
|
- Dbg("load sm key to pinpad...");
|
|
|
- PinPadService_ClientBase *pPinPad = new PinPadService_ClientBase(this);
|
|
|
- DWORD rc = pPinPad->Connect();
|
|
|
- if (rc == Error_Succeed)
|
|
|
- {
|
|
|
- PinPadService_LoadKeysSM_Ans ans = {};
|
|
|
- rc = pPinPad->LoadKeysSM(req, ans, 30000);
|
|
|
- if (rc == Error_Succeed)
|
|
|
- Dbg("load sm key to pinpad succ");
|
|
|
- else
|
|
|
- {
|
|
|
- strErrMsg = "加载SM密钥到PinPad失败";
|
|
|
- SetAuthErrMsg((const char*)strErrMsg);
|
|
|
- spFunction->SetSysVar("AuthErrMsg", (const char*)strErrMsg, true);
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_LOAD_KEYS_TO_PINPAD,
|
|
|
- GetOutPutStr("%s%08x%s%s", "LoadKeys", rc, "strErrMsg", strErrMsg).c_str());
|
|
|
- rc = ERR_ACCESSAUTH_LOAD_KEYS_TO_PINPAD;
|
|
|
- }
|
|
|
-
|
|
|
- pPinPad->GetFunction()->CloseSession();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- strErrMsg = "连接PinPad实体失败";
|
|
|
- SetAuthErrMsg((const char*)strErrMsg);
|
|
|
- spFunction->SetSysVar("AuthErrMsg", (const char*)strErrMsg, true);
|
|
|
-
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_CONNECT_PINPAD,
|
|
|
- GetOutPutStr("%s%08x%s%s", "Connect", rc, "strErrMsg", strErrMsg).c_str());
|
|
|
- rc = ERR_ACCESSAUTH_CONNECT_PINPAD;
|
|
|
- }
|
|
|
- pPinPad->SafeDelete();
|
|
|
- return rc;
|
|
|
- }
|
|
|
-#endif
|
|
|
-*/
|
|
|
//@test
|
|
|
//return Error_Succeed;
|
|
|
|
|
@@ -608,7 +458,7 @@ DWORD CAccessAuthEntity::LoadPinPadWK(bool bSM)
|
|
|
|
|
|
PinPadService_LoadKeysSM_Req req = {};
|
|
|
req.smflag = 1;
|
|
|
- req.initializeflag = false;
|
|
|
+ req.initializeflag = true;
|
|
|
if (m_bGetKMCKey) {
|
|
|
Dbg("使用云接口更新KMC密钥");
|
|
|
req.masterkey = m_TMK.c_str();
|
|
@@ -623,12 +473,22 @@ DWORD CAccessAuthEntity::LoadPinPadWK(bool bSM)
|
|
|
LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_GET_KMC_NULL,
|
|
|
GetOutPutStr("%s%s", "m_bGetKMCKey", "False").c_str());
|
|
|
rc = ERR_ACCESSAUTH_GET_KMC_NULL;
|
|
|
- pPinPad->SafeDelete();
|
|
|
+ //pPinPad->SafeDelete();
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+ if (req.initializeflag) Dbg("initializeflag is true");
|
|
|
+ else Dbg("initializeflag is false");
|
|
|
+ Dbg("req.smflag=%d", req.smflag);
|
|
|
+ Dbg("req.masterkey=%s", req.masterkey.GetData());
|
|
|
+ Dbg("req.workingkey1=%s", req.workingkey1.GetData());
|
|
|
+ Dbg("req.workingkey2=%s", req.workingkey2.GetData());
|
|
|
+ Dbg("req.reserved3=%s", req.reserved3.GetData());
|
|
|
+
|
|
|
PinPadService_LoadKeysSM_Ans ans = {};
|
|
|
+ Dbg("1");
|
|
|
rc = pPinPad->LoadKeysSM(req, ans, 30000);
|
|
|
+ Dbg("2");
|
|
|
if (rc == Error_Succeed)
|
|
|
Dbg("load sm key to pinpad succ");
|
|
|
else
|
|
@@ -637,7 +497,7 @@ DWORD CAccessAuthEntity::LoadPinPadWK(bool bSM)
|
|
|
SetAuthErrMsg((const char*)strErrMsg);
|
|
|
spFunction->SetSysVar("AuthErrMsg", (const char*)strErrMsg, true);
|
|
|
LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_LOAD_KEYS_TO_PINPAD,
|
|
|
- GetOutPutStr("%s%08x%s%s", "LoadKeys", rc, "strErrMsg", strErrMsg).c_str());
|
|
|
+ GetOutPutStr("%s%08x%s%s", "LoadKeysSM", rc, "strErrMsg", strErrMsg).c_str());
|
|
|
rc = ERR_ACCESSAUTH_LOAD_KEYS_TO_PINPAD;
|
|
|
}
|
|
|
|
|
@@ -652,7 +512,8 @@ DWORD CAccessAuthEntity::LoadPinPadWK(bool bSM)
|
|
|
GetOutPutStr("%s%08x%s%s", "Connect", rc, "strErrMsg", strErrMsg).c_str());
|
|
|
rc = ERR_ACCESSAUTH_CONNECT_PINPAD;
|
|
|
}
|
|
|
- pPinPad->SafeDelete();
|
|
|
+ //@test 调此接口会挂
|
|
|
+ //pPinPad->SafeDelete();
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
@@ -773,7 +634,7 @@ DWORD CAccessAuthEntity::EncryptDataWithPinPad(const CBlob &raw, CBlob &enc)
|
|
|
GetOutPutStr("%s%08x%s%s", "Connect", rc, "strErrMsg", strErrMsg).c_str());
|
|
|
rc = ERR_ACCESSAUTH_CONNECT_PINPAD;
|
|
|
}
|
|
|
- pPinPad->SafeDelete();
|
|
|
+ //pPinPad->SafeDelete();
|
|
|
if (rc != Error_Succeed)
|
|
|
return rc;
|
|
|
|
|
@@ -860,7 +721,7 @@ DWORD CAccessAuthEntity::SaveSM2KeyPair(const CBlob &pubKey, const CBlob &priKey
|
|
|
Dbg("set sm2 key pair succ");
|
|
|
}
|
|
|
|
|
|
- pTokenServiceClient->SafeDelete();
|
|
|
+ //pTokenServiceClient->SafeDelete();
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
@@ -918,7 +779,7 @@ ErrorCodeEnum CAccessAuthEntity::SaveTokenAndSharedSK(const CBlob &token, const
|
|
|
pTokenServiceClient->GetFunction()->CloseSession();
|
|
|
}
|
|
|
|
|
|
- pTokenServiceClient->SafeDelete();
|
|
|
+ //pTokenServiceClient->SafeDelete();
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
@@ -987,7 +848,7 @@ bool CAccessAuthEntity::HasPinPad()
|
|
|
pPinPadClient->GetFunction()->CloseSession();
|
|
|
}
|
|
|
|
|
|
- pPinPadClient->SafeDelete();
|
|
|
+ //pPinPadClient->SafeDelete();
|
|
|
pPinPadClient = NULL;
|
|
|
return bPinPadExist;
|
|
|
}
|
|
@@ -1038,7 +899,7 @@ int CAccessAuthEntity::GetPinPadCapability()
|
|
|
LogWarn(Severity_Middle, Error_Unexpect, ERR_ACCESSAUTH_CONNECT_PINPAD,
|
|
|
GetOutPutStr("%s%08X%s%s", "Connect", rc,"AuthErrMsg", "连接PinPad实体失败").c_str());
|
|
|
}
|
|
|
- pPinPad->SafeDelete();
|
|
|
+ //pPinPad->SafeDelete();
|
|
|
|
|
|
return nCapability;
|
|
|
}
|
|
@@ -1108,7 +969,10 @@ bool CAccessAuthEntity::SaveAuthVerAndKey(int nAuthVer, BYTE *pKey)
|
|
|
return false;
|
|
|
}
|
|
|
delete[] pDecodedPrivateKey;
|
|
|
- Dbg("DecWithSM4_ECB succeess.");
|
|
|
+ //添加调试信息
|
|
|
+ char * pEncPriKey = Str2Hex((char*)pDecryptPrivateKey, decryprtLen);
|
|
|
+ Dbg("DecWithSM4_ECB succeess.privateKey=%s", pEncPriKey);
|
|
|
+ delete pEncPriKey;
|
|
|
|
|
|
char pPlainKey[KEY_SIZE];
|
|
|
int plainKeyLen = KEY_SIZE;
|
|
@@ -1545,7 +1409,7 @@ int CAccessAuthEntity::GetPinPadIDAndDeviceID(CSimpleStringA &strPinPadID, CSimp
|
|
|
GetOutPutStr("%s%08X%s%s", "Connect", rc, "strErrMsg", "连接PinPad实体失败").c_str());
|
|
|
}
|
|
|
|
|
|
- pPinPadClient->SafeDelete();
|
|
|
+ //pPinPadClient->SafeDelete();
|
|
|
pPinPadClient = NULL;
|
|
|
|
|
|
if (bPinPadID)
|
|
@@ -1671,7 +1535,7 @@ bool CAccessAuthEntity::HasCkCodeFlg()
|
|
|
GetOutPutStr("%s%s", "strErrMsg", strErrMsg).c_str());
|
|
|
}
|
|
|
|
|
|
- pPinPadClient->SafeDelete();
|
|
|
+ //pPinPadClient->SafeDelete();
|
|
|
pPinPadClient = NULL;
|
|
|
|
|
|
return bCheckCode? true:false;
|