pinpad_impl.cpp 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. //
  2. // Created by LocalUser on 2019/1/7.
  3. //
  4. #include "pinpad_impl.h"
  5. #include <cstring>
  6. #include "sample.h"
  7. PinPadClassImpl::PinPadClassImpl()
  8. :m_mode(0)
  9. {
  10. }
  11. PinPadClassImpl::~PinPadClassImpl()
  12. {
  13. }
  14. ErrorCodeEnum PinPadClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
  15. {
  16. ErrorCodeEnum err = Error_Succeed;
  17. std::strcpy(devCategory.szModel, "szModel");
  18. std::strcpy(devCategory.szType, "szCategory");
  19. std::strcpy(devCategory.szVendor, "szVendor");
  20. return err;
  21. }
  22. ErrorCodeEnum PinPadClassImpl::Reset()
  23. {
  24. ErrorCodeEnum err = Error_Unexpect;
  25. m_mode = 0;
  26. return err;
  27. }
  28. #if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
  29. ErrorCodeEnum PinPadClassImpl::DevOpen(int argNum, char* argArray)
  30. #else
  31. ErrorCodeEnum PinPadClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
  32. #endif
  33. {
  34. static int nums = 0;
  35. ErrorCodeEnum err = Error_Succeed;
  36. if (nums == 0)
  37. {
  38. err = Error_Unexpect;
  39. nums = 1;
  40. }
  41. return err;
  42. }
  43. ErrorCodeEnum PinPadClassImpl::DevClose()
  44. {
  45. ErrorCodeEnum err = Error_Succeed;
  46. return err;
  47. }
  48. ErrorCodeEnum PinPadClassImpl::KeyRead(BYTE &ch)
  49. {
  50. ErrorCodeEnum err = Error_Succeed;
  51. static int cursor = 0;
  52. if(m_mode == 0) {
  53. ch = 0x0d;
  54. cursor = 0;
  55. }
  56. else {
  57. ch = 0x3f;
  58. }
  59. return err;
  60. }
  61. ErrorCodeEnum PinPadClassImpl::StartPinInput(BYTE byLen)
  62. {
  63. ErrorCodeEnum err = Error_Succeed;
  64. m_mode = 1;
  65. return err;
  66. }
  67. ErrorCodeEnum PinPadClassImpl::StartPinInputConfirm(BYTE byLen)
  68. {
  69. ErrorCodeEnum err = Error_Succeed;
  70. m_mode = 1;
  71. return err;
  72. }
  73. ErrorCodeEnum PinPadClassImpl::StartPlainInput()
  74. {
  75. ErrorCodeEnum err = Error_Succeed;
  76. m_mode = 0;
  77. return err;
  78. }
  79. ErrorCodeEnum PinPadClassImpl::StopInput()
  80. {
  81. ErrorCodeEnum err = Error_Succeed;
  82. m_mode = 0;
  83. return err;
  84. }
  85. ErrorCodeEnum PinPadClassImpl::LoadMasterKey(MasterKeyParam masterKey)
  86. {
  87. ErrorCodeEnum err = Error_Succeed;
  88. return err;
  89. }
  90. ErrorCodeEnum PinPadClassImpl::LoadWorkingKey(WorkKeyParam wkKey)
  91. {
  92. ErrorCodeEnum err = Error_Succeed;
  93. return err;
  94. }
  95. ErrorCodeEnum PinPadClassImpl::ActiveWorkingKey(DWORD dwMkSN, DWORD dwWkSN)
  96. {
  97. ErrorCodeEnum err = Error_Succeed;
  98. return err;
  99. }
  100. ErrorCodeEnum PinPadClassImpl::SetParam(SetParamTypeEnum eType, SetParamValueEnum eValue)
  101. {
  102. ErrorCodeEnum err = Error_Succeed;
  103. return err;
  104. }
  105. ErrorCodeEnum PinPadClassImpl::EncryptData(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo)
  106. {
  107. ErrorCodeEnum err = Error_Succeed;
  108. memset(destInfo.data, 0, sizeof(destInfo.data));
  109. if(std::strcmp((const char*)srcInfo.data, "0000000000000000") == 0) {
  110. std::strcpy((char*)destInfo.data, "EC6162E6E08C7279");
  111. destInfo.dwSize = 16;
  112. } else if(std::strcmp((const char*)srcInfo.data, "1234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456") == 0) {
  113. std::strcpy((char*)destInfo.data, "9DFE47D355F40F33FC634AF5BA511337DC36261313DDF70F6B7E5696EC55BDE4C39F7CE724AA864AC3074B2F4A51FC87C2A160A9102507E8126312B204392EB4BDA42A724E2F75FC9B87EE02B4CB47813A0F9A734EF5680D20D897CB2DB4EB2EF0D24B8AE2FA277F569F222AABE660AA2D276B9432D8941AAA64D1E62209ABFC");
  114. destInfo.dwSize = 256;
  115. } else {
  116. err = Error_NotImpl;
  117. }
  118. return err;
  119. }
  120. ErrorCodeEnum PinPadClassImpl::MacEncrypt(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo)
  121. {
  122. ErrorCodeEnum err = Error_NotImpl;
  123. return err;
  124. }
  125. ErrorCodeEnum PinPadClassImpl::GetPinBlock(PinBlock &block)
  126. {
  127. ErrorCodeEnum err = Error_Succeed;
  128. std::strcpy((char*)block.data, "147DE54A44497DDB");
  129. block.dwSize = 16;
  130. return err;
  131. }
  132. ErrorCodeEnum PinPadClassImpl::SetAccNo(AccountInfo accInfo)
  133. {
  134. ErrorCodeEnum err = Error_Succeed;
  135. return err;
  136. }
  137. ErrorCodeEnum PinPadClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
  138. {
  139. strcpy(devErrInfo.szErrMsg, helloWorld());
  140. devErrInfo.dwErrMsgLen = strlen(helloWorld());
  141. return Error_Succeed;
  142. }
  143. #if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
  144. DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DWORD dwDevClassID, DeviceBaseClass*& pOutDevAptObj)
  145. #else
  146. DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pOutDevAptObj)
  147. #endif
  148. {
  149. pOutDevAptObj = new PinPadClassImpl();
  150. if(pOutDevAptObj == NULL)
  151. {
  152. return Error_Resource;
  153. }
  154. return Error_Succeed;
  155. }
  156. #if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
  157. DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DWORD dwDevClassID, DeviceBaseClass*& pInDevAptObj)
  158. #else
  159. DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
  160. #endif
  161. {
  162. if(pInDevAptObj == NULL)
  163. {
  164. return Error_Param;
  165. }
  166. if(PinPadClassImpl* pTmp = dynamic_cast<PinPadClassImpl*>(pInDevAptObj))
  167. {
  168. delete pTmp;
  169. pTmp = NULL;
  170. return Error_Succeed;
  171. }
  172. return Error_Param;
  173. }