pinpad_impl.cpp 4.8 KB

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