1 /*!
2 * \copyright Copyright (c) 2018-2021 Governikus GmbH & Co. KG, Germany
3 */
4
5 #include "MockCardConnectionWorker.h"
6
7 using namespace governikus;
8
9
MockCardConnectionWorker(Reader * pReader)10 MockCardConnectionWorker::MockCardConnectionWorker(Reader* pReader)
11 : CardConnectionWorker(pReader)
12 , mReader(pReader)
13 , mResponseCodes()
14 , mResponseData()
15 , mPaceCodes()
16 {
17 }
18
19
~MockCardConnectionWorker()20 MockCardConnectionWorker::~MockCardConnectionWorker()
21 {
22 if (!mReader.isNull())
23 {
24 mReader->deleteLater();
25 }
26 }
27
28
addResponse(CardReturnCode pCode,const QByteArray & pData)29 void MockCardConnectionWorker::addResponse(CardReturnCode pCode, const QByteArray& pData)
30 {
31 mResponseCodes += pCode;
32 mResponseData += pData;
33 }
34
35
addPaceCode(CardReturnCode pCode)36 void MockCardConnectionWorker::addPaceCode(CardReturnCode pCode)
37 {
38 mPaceCodes += pCode;
39 }
40
41
getMockedResponse()42 ResponseApduResult MockCardConnectionWorker::getMockedResponse()
43 {
44 if (mResponseData.empty())
45 {
46 return {CardReturnCode::UNDEFINED};
47 }
48
49 return {mResponseCodes.takeFirst(), ResponseApdu(mResponseData.takeFirst())};
50 }
51
52
transmit(const CommandApdu & pCommandApdu)53 ResponseApduResult MockCardConnectionWorker::transmit(const CommandApdu& pCommandApdu)
54 {
55 Q_UNUSED(pCommandApdu)
56 return getMockedResponse();
57 }
58
59
updateRetryCounter()60 CardReturnCode MockCardConnectionWorker::updateRetryCounter()
61 {
62 if (!mReader->getReaderInfo().hasCard())
63 {
64 return CardReturnCode::CARD_NOT_FOUND;
65 }
66 return CardReturnCode::OK;
67 }
68
69
establishPaceChannel(PacePasswordId pPasswordId,const QByteArray & pPasswordValue,const QByteArray & pChat,const QByteArray & pCertificateDescription)70 EstablishPaceChannelOutput MockCardConnectionWorker::establishPaceChannel(PacePasswordId pPasswordId,
71 const QByteArray& pPasswordValue,
72 const QByteArray& pChat,
73 const QByteArray& pCertificateDescription)
74 {
75 Q_UNUSED(pPasswordId)
76 Q_UNUSED(pPasswordValue)
77 Q_UNUSED(pChat)
78 Q_UNUSED(pCertificateDescription)
79 return EstablishPaceChannelOutput(mPaceCodes.empty() ? CardReturnCode::UNDEFINED : mPaceCodes.takeFirst());
80 }
81
82
destroyPaceChannel()83 CardReturnCode MockCardConnectionWorker::destroyPaceChannel()
84 {
85 return mPaceCodes.empty() ? CardReturnCode::UNDEFINED : mPaceCodes.takeFirst();
86 }
87
88
setEidPin(const QByteArray & pNewPin,quint8 pTimeoutSeconds)89 ResponseApduResult MockCardConnectionWorker::setEidPin(const QByteArray& pNewPin, quint8 pTimeoutSeconds)
90 {
91 Q_UNUSED(pNewPin)
92 Q_UNUSED(pTimeoutSeconds)
93 return getMockedResponse();
94 }
95