Commit f0f0131f8c5d4118a4354e57ff3c696dd8be9d34

Authored by liuye
1 parent 0344002f

feat<etadeclient>:替换硬件接口

替换原有硬件接口,采用新接口,支持so库的版本。
etrade_card_client/Config/application_config.json
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 "client_cert_subject": "*.diligrp.com", 9 "client_cert_subject": "*.diligrp.com",
10 "client_cert_filename": "", 10 "client_cert_filename": "",
11 "client_cert_password": "", 11 "client_cert_password": "",
12 - "security_level": 2, 12 + "security_level": 0,
13 "encrypt_type": 1, 13 "encrypt_type": 1,
14 "id_reader": 1 14 "id_reader": 1
15 } 15 }
16 \ No newline at end of file 16 \ No newline at end of file
etrade_card_client/ETradeClient.vcxproj
@@ -45,6 +45,8 @@ @@ -45,6 +45,8 @@
45 <PropertyGroup Label="UserMacros" /> 45 <PropertyGroup Label="UserMacros" />
46 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 46 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
47 <LinkIncremental>true</LinkIncremental> 47 <LinkIncremental>true</LinkIncremental>
  48 + <LibraryPath>$(ProjectDir)\ExLib\hardware\id_card_reader;$(ProjectDir)\ExLib\hardware\dili_card_device;D:\GitProject\etradeclient\etrade_card_client;$(LibraryPath)</LibraryPath>
  49 + <LibraryWPath>$(LibraryWPath)</LibraryWPath>
48 </PropertyGroup> 50 </PropertyGroup>
49 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> 51 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
50 <LinkIncremental>false</LinkIncremental> 52 <LinkIncremental>false</LinkIncremental>
etrade_card_client/ETradeClient/hardware/DLCardManager.h
  1 +// 作者:刘野
  2 +// 卡片硬件操作库导出接口。
  3 +// 包含dll导出接口和so库导出接口
  4 +
1 #ifndef DL_CARD_MANAGER_H 5 #ifndef DL_CARD_MANAGER_H
2 #define DL_CARD_MANAGER_H 6 #define DL_CARD_MANAGER_H
3 7
4 #define DL_DLL_API extern "C" __declspec(dllexport) 8 #define DL_DLL_API extern "C" __declspec(dllexport)
5 9
6 -DL_DLL_API int __stdcall ConnectDLDevice();  
7 -DL_DLL_API int __stdcall FindDLCard();  
8 -DL_DLL_API int __stdcall AuthenticationDLKey(unsigned char* pKey);  
9 -DL_DLL_API int __stdcall ReadDLCardData(unsigned char* pDirID, unsigned char cFileID, short u16Offset, int u32DateLen, unsigned char* pData, unsigned char* pKey = 0);  
10 -DL_DLL_API int __stdcall WriteDLCardData(unsigned char* pDirID, unsigned char cFileID, unsigned char cOffset, unsigned short cDateLen, unsigned char* pData, unsigned char* pKey);  
11 -DL_DLL_API int __stdcall InstallDLKey(unsigned char* pDirID, unsigned char cKeyID, unsigned char* pNewKey, int iKeyType, unsigned char* pMainKey);  
12 -DL_DLL_API int __stdcall DisconnectDLDevice();  
13 10
14 -#endif  
15 \ No newline at end of file 11 \ No newline at end of file
  12 +/* 连接读卡器 */
  13 +DL_DLL_API int __stdcall DLCConnectDevice();
  14 +
  15 +/* 关闭读卡器 */
  16 +DL_DLL_API int __stdcall DLCDisconnectDevice();
  17 +
  18 +/* 寻卡 */
  19 +DL_DLL_API int __stdcall DLCFindCard();
  20 +
  21 +/*
  22 + * 验证秘钥
  23 + * 输入16字节秘钥key_。
  24 + * 返回值返回结果
  25 + * */
  26 +DL_DLL_API int __stdcall DLCAuthenticationKey(const unsigned char* dir, const unsigned char key_id, const unsigned char* key);
  27 +
  28 +/*
  29 + * 读取数据
  30 + * 输入dir2字节目录标识、file_id1字节文件标识、read_offset2字节、
  31 + * data_len2字节、read_key16字节读秘钥(没有置空)和read_data(长度依据读取长度而定)。
  32 + * 输出结果填入read_data。
  33 + * */
  34 +DL_DLL_API int __stdcall DLCReadCardData(const unsigned char* dir, const unsigned char file_id, const unsigned int data_offset, const unsigned int data_len, const unsigned char* read_key, unsigned char* read_data);
  35 +
  36 +/*
  37 +* 写入数据
  38 +* 输入dir2字节目录标识、file_id2字节文件标识、read_offset2字节、
  39 +* data_len2字节、read_key16字节读秘钥(没有置空)和read_data(长度依据读取长度而定)。
  40 +* 输出结果填入read_data。
  41 +* */
  42 +DL_DLL_API int __stdcall DLCWriteCardData(const unsigned char* dir, const unsigned char file_id, const unsigned int data_offset, const unsigned int data_len, const unsigned char* write_key, const unsigned char* write_data);
  43 +
  44 +/*
  45 + * 安装/更新秘钥
  46 + * 输入dir2字节目录标识、key_id1字节文件标识、key_type32位秘钥类型、
  47 + * main_key16字节主控秘钥(没有置空)、new_key16字节新秘钥。
  48 + **/
  49 +DL_DLL_API int __stdcall DLCInstallKey(const unsigned char* dir, const unsigned char key_id, const int key_type, const unsigned char* main_key, const unsigned char* new_key);
  50 +
  51 +/*
  52 + * 建立文件
  53 + * 输入parent_dir2字节父目录、parent_key2字节父目录主控秘钥、file_name2字节文件标识、
  54 + * file_size2字节文件大小、safe_type4字节安全类型和file_type4字节文件类型
  55 + **/
  56 +DL_DLL_API int __stdcall DLCCreateFile(const unsigned char* parent_dir, const unsigned char* parent_key, const unsigned char* file_name, const unsigned char* file_size, const int file_type);
  57 +
  58 +
  59 +DL_DLL_API int __stdcall DLCSelectFile(const unsigned char* dir);
  60 +
  61 +//SO库API
  62 +//
  63 +/*
  64 + * 该函数用以获取8字节随机数
  65 + * 输入5字节的无符号字符型数组指针,函数将更改数组内容,输出5字节指令。
  66 + * 返回值返回错误码。
  67 + */
  68 +int __stdcall DLCSOGetRandom(unsigned char* get_randam_cmd);
  69 +
  70 +/*
  71 + * 该函数用于验证秘钥。
  72 + * 输入key_id1字节秘钥标识、key16字节16进制秘钥值和random8字节16进制随机数,返回cmd13字节16进制指令。
  73 + * 返回值返回结果。
  74 + */
  75 +int __stdcall DLCSOAuthenticationKey(const unsigned char key_id, const unsigned char* key, const unsigned char* random, unsigned char* cmd);
  76 +
  77 +/*
  78 + * 该函数用于读取数据。
  79 + * 输入data_offfset数据初始偏移,data_offfset最大为ffff,data_len数据长度,data_len最大为ff,返回16进制cmd指令,cmd数组长度 = data_len + 5。
  80 + * 读出的数据将存在data_中。
  81 + * 返回值返回错误码。
  82 + */
  83 +int __stdcall DLCSOReadData(const unsigned int data_offfset, const unsigned int data_len, unsigned char* cmd);
  84 +
  85 +/*
  86 +* 该函数用于写入数据。
  87 +* 输入write_key字节16进制读秘钥(没有置空)、random8字节16进制随机数(没有置空)、data_offfset2字节数据初始偏移、data_len2字节数据长度和data16进制数据,cmd数组长度 = data_len + 9。
  88 +* 返回值返回错误码。
  89 +*/
  90 +int __stdcall DLCSOWriteData(const unsigned char* write_key, const unsigned char* random, const unsigned int data_offfset, const unsigned int data_len, const unsigned char* data, unsigned char* cmd);
  91 +
  92 +
  93 +/*该函数用于选择目录
  94 + *输入dir两字节16进制目录标识,返回cmd7字节16进制指令
  95 + **/
  96 +int __stdcall DLCSOSelectDir(const unsigned char* dir, unsigned char* cmd);
  97 +
  98 +#endif //end DL_CARD_MANAGER_H
16 \ No newline at end of file 99 \ No newline at end of file
etrade_card_client/ETradeClient/hardware/dili_card_device.cpp
@@ -113,7 +113,7 @@ namespace DILICard @@ -113,7 +113,7 @@ namespace DILICard
113 { 113 {
114 bool bResult = true; 114 bool bResult = true;
115 115
116 - int iResult = ConnectDLDevice(); 116 + int iResult = DLCConnectDevice();
117 if (0 != iResult) 117 if (0 != iResult)
118 { 118 {
119 bResult = false; 119 bResult = false;
@@ -124,7 +124,7 @@ namespace DILICard @@ -124,7 +124,7 @@ namespace DILICard
124 } 124 }
125 void RWDevice::Disconnect() const 125 void RWDevice::Disconnect() const
126 { 126 {
127 - DisconnectDLDevice(); 127 + DLCDisconnectDevice();
128 } 128 }
129 void RWDevice::Beep(uint32_t time) const 129 void RWDevice::Beep(uint32_t time) const
130 { 130 {
@@ -134,7 +134,7 @@ namespace DILICard @@ -134,7 +134,7 @@ namespace DILICard
134 { 134 {
135 bool bResult = true; 135 bool bResult = true;
136 136
137 - int iResult = FindDLCard(); 137 + int iResult = DLCFindCard();
138 if (0 != iResult) 138 if (0 != iResult)
139 { 139 {
140 bResult = false; 140 bResult = false;
@@ -457,11 +457,11 @@ namespace DILICard @@ -457,11 +457,11 @@ namespace DILICard
457 if (NULL != key_id) 457 if (NULL != key_id)
458 { 458 {
459 memcpy(aucKey, key.c_str(), 32); 459 memcpy(aucKey, key.c_str(), 32);
460 - iResult = ReadDLCardData(aucDir, file_id, offset, length, aucData, aucKey); 460 + iResult = DLCReadCardData(aucDir, file_id, offset, length, aucData, aucKey);
461 } 461 }
462 else 462 else
463 { 463 {
464 - iResult = ReadDLCardData(aucDir, file_id, offset, length, aucData); 464 + iResult = DLCReadCardData(aucDir, file_id, offset, length, NULL, aucData);
465 } 465 }
466 466
467 467
@@ -499,7 +499,7 @@ namespace DILICard @@ -499,7 +499,7 @@ namespace DILICard
499 { 499 {
500 unsigned char aucDataBlock[DATA_MAX_LEN] = { 0 }; 500 unsigned char aucDataBlock[DATA_MAX_LEN] = { 0 };
501 memcpy(aucDataBlock, data.substr(iStartIndex, DATA_MAX_LEN).c_str(), DATA_MAX_LEN); 501 memcpy(aucDataBlock, data.substr(iStartIndex, DATA_MAX_LEN).c_str(), DATA_MAX_LEN);
502 - iResult = WriteDLCardData(aucDir, file_id, iOffset, DATA_MAX_LEN, aucDataBlock, aucKey); 502 + iResult = DLCWriteCardData(aucDir, file_id, iOffset, DATA_MAX_LEN, aucKey, aucDataBlock);
503 if (0 != iResult) 503 if (0 != iResult)
504 { 504 {
505 err_msg << "Write data to file failed, FILE: " << file_id << ", ErrorCode: " << iResult; 505 err_msg << "Write data to file failed, FILE: " << file_id << ", ErrorCode: " << iResult;
@@ -514,7 +514,7 @@ namespace DILICard @@ -514,7 +514,7 @@ namespace DILICard
514 { 514 {
515 unsigned char aucData[DATA_MAX_LEN] = { 0 }; 515 unsigned char aucData[DATA_MAX_LEN] = { 0 };
516 memcpy(aucData, data.substr(iStartIndex, iDataLength).c_str(), iDataLength); 516 memcpy(aucData, data.substr(iStartIndex, iDataLength).c_str(), iDataLength);
517 - iResult = WriteDLCardData(aucDir, file_id, iOffset, iDataLength, aucData, aucKey); 517 + iResult = DLCWriteCardData(aucDir, file_id, iOffset, iDataLength, aucKey, aucData);
518 if (0 != iResult) 518 if (0 != iResult)
519 { 519 {
520 err_msg << "Write data to file failed, FILE: " << file_id << ", ErrorCode: " << iResult; 520 err_msg << "Write data to file failed, FILE: " << file_id << ", ErrorCode: " << iResult;
@@ -536,7 +536,7 @@ namespace DILICard @@ -536,7 +536,7 @@ namespace DILICard
536 memcpy(aucDir, dir.c_str(), 4); 536 memcpy(aucDir, dir.c_str(), 4);
537 memcpy(aucMainKey, main_key.c_str(), 32); 537 memcpy(aucMainKey, main_key.c_str(), 32);
538 memcpy(aucNewKey, install_key.c_str(), 32); 538 memcpy(aucNewKey, install_key.c_str(), 32);
539 - int iResult = InstallDLKey(aucDir, key_id, aucNewKey, emKeyType, aucMainKey); 539 + int iResult = DLCInstallKey(aucDir, key_id, emKeyType, aucMainKey, aucNewKey);
540 if (0 != iResult) 540 if (0 != iResult)
541 { 541 {
542 err_msg << "Update key failed, key to be updated: " << install_key << ", ErrorCode: " << iResult; 542 err_msg << "Update key failed, key to be updated: " << install_key << ", ErrorCode: " << iResult;
@@ -549,7 +549,7 @@ namespace DILICard @@ -549,7 +549,7 @@ namespace DILICard
549 bool bResult = true; 549 bool bResult = true;
550 unsigned char aucKey[32] = { 0 }; 550 unsigned char aucKey[32] = { 0 };
551 memcpy(aucKey, sKey.c_str(), 32); 551 memcpy(aucKey, sKey.c_str(), 32);
552 - int iResult = AuthenticationDLKey(aucKey); 552 + int iResult = DLCAuthenticationKey((const unsigned char*)"3f00", 0, aucKey);
553 if (iResult) 553 if (iResult)
554 { 554 {
555 bResult = false; 555 bResult = false;
etrade_card_client/ETradeClient/mfc_ui/ConfigDialog.cpp
@@ -53,7 +53,7 @@ void CConfigDialog::DoDataExchange(CDataExchange* pDX) @@ -53,7 +53,7 @@ void CConfigDialog::DoDataExchange(CDataExchange* pDX)
53 DDV_MinMaxInt(pDX, m_pin_pad_pwd_len, kMinPwdLen, kMaxPwdLen); 53 DDV_MinMaxInt(pDX, m_pin_pad_pwd_len, kMinPwdLen, kMaxPwdLen);
54 54
55 DDX_Text(pDX, IDC_EDIT_PIN_PAD_TIMEOUT, m_pin_pad_timeout); 55 DDX_Text(pDX, IDC_EDIT_PIN_PAD_TIMEOUT, m_pin_pad_timeout);
56 - DDV_MinMaxInt(pDX, m_pin_pad_timeout, kMinTimeoutSeconds, kMaxTimeoutSeconds); 56 + //DDV_MinMaxInt(pDX, m_pin_pad_timeout, kMinTimeoutSeconds, kMaxTimeoutSeconds);
57 57
58 DDX_Radio(pDX, IDC_RADIO_HUASHIDIANZI, m_id_reader_type); 58 DDX_Radio(pDX, IDC_RADIO_HUASHIDIANZI, m_id_reader_type);
59 } 59 }