25#include <QLoggingCategory>
28class test_CardConnection;
38 friend class ::test_CardConnection;
41 static const QLoggingCategory& getLoggingCategory();
46 QSharedPointer<CardConnectionWorker> mCardConnectionWorker;
49 bool mPaceCanSuccessful;
50 bool mPacePinSuccessful;
52 TransmitCommand* createTransmitCommand(
const QList<InputAPDUInfo>& pInputApduInfos,
const QString& pSlotHandle);
56 EstablishPaceChannelCommand* createEstablishPaceChannelCommand(PacePasswordId pPacePasswordId,
const QByteArray& pPacePassword,
const QByteArray& pEffectiveChat,
const QByteArray& pCertificateDescription);
62 const QByteArray& pEphemeralPublicKeyAsHex,
63 const QByteArray& pSignatureAsHex,
64 const QByteArray& pAuthenticatedAuxiliaryDataAsBinary,
65 const QByteArray& pPin);
68 QMetaObject::Connection call(
BaseCardCommand* pCommand,
const typename QtPrivate::FunctionPointer<T>::Object* pReceiver,
T pFunc)
70 pCommand->moveToThread(mCardConnectionWorker->thread());
80 qCCritical(getLoggingCategory()) <<
"Cannot invoke card command:" << pCommand->metaObject()->className();
81 pCommand->deleteLater();
84 return resultConnection;
88 void onReaderInfoChanged(
const ReaderInfo& pReaderInfo);
94 explicit CardConnection(
const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
119 auto command = createDidAuthenticateEAC1Command();
120 return call(command, pReceiver, pFunc);
127 const QByteArray& pEphemeralPublicKeyAsHex,
128 const QByteArray& pSignatureAsHex,
129 const QByteArray& pAuthenticatedAuxiliaryDataAsBinary,
130 const QByteArray& pPin)
132 auto command = createDidAuthenticateEAC2Command(pCvcChain, pEphemeralPublicKeyAsHex, pSignatureAsHex, pAuthenticatedAuxiliaryDataAsBinary, pPin);
133 return call(command, pReceiver, pFunc);
139 PacePasswordId pPacePasswordId,
const QByteArray& pPacePassword,
const QByteArray& pEffectiveChat = QByteArray(),
const QByteArray& pCertificateDescription = QByteArray())
141 EstablishPaceChannelCommand* command = createEstablishPaceChannelCommand(pPacePasswordId, pPacePassword, pEffectiveChat, pCertificateDescription);
143 if (pPacePasswordId == PacePasswordId::PACE_CAN)
146 mPaceCanSuccessful = pCommand->getReturnCode() == CardReturnCode::OK;
149 else if (pPacePasswordId == PacePasswordId::PACE_PIN)
152 mPacePinSuccessful = pCommand->getReturnCode() == CardReturnCode::OK;
153 if (!mPacePinSuccessful)
155 mPaceCanSuccessful =
false;
160 return call(command, pReceiver, pFunc);
165 QMetaObject::Connection
callSetEidPinCommand(
const typename QtPrivate::FunctionPointer<T>::Object* pReceiver,
T pFunc,
166 const QByteArray& pNewPin,
169 auto command = createSetEidPinCommand(pNewPin, pTimeoutSeconds);
170 return call(command, pReceiver, pFunc);
176 const QString& pSlotHandle = QString())
178 auto command = createDestroyPaceChannelCommand(pSlotHandle);
179 return call(command, pReceiver, pFunc);
184 QMetaObject::Connection
callTransmitCommand(
const typename QtPrivate::FunctionPointer<T>::Object* pReceiver,
T pFunc,
185 const QList<InputAPDUInfo>& pInputApduInfos,
const QString& pSlotHandle = QString())
187 auto command = createTransmitCommand(pInputApduInfos, pSlotHandle);
188 return call(command, pReceiver, pFunc);
194 const QString& pSlotHandle = QString())
196 auto command = createUpdateRetryCounterCommand(pSlotHandle);
197 return call(command, pReceiver, pFunc);
204 auto command = createResetRetryCounterCommand();
205 return call(command, pReceiver, pFunc);
Definition BaseCardCommand.h:21
void commandDone(QSharedPointer< BaseCardCommand > pCommand)
void run()
Definition BaseCardCommand.cpp:30
Definition CVCertificateChain.h:24
Definition CardConnection.h:35
QMetaObject::Connection callResetRetryCounterCommand(const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pFunc)
Definition CardConnection.h:202
void fireReaderInfoChanged(const ReaderInfo &pReaderInfo)
friend class MockCardConnection
Definition CardConnection.h:37
QMetaObject::Connection callDestroyPaceChannelCommand(const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pFunc, const QString &pSlotHandle=QString())
Definition CardConnection.h:175
void setErrorMessage(const QString &pMessage)
Definition CardConnection.cpp:78
QMetaObject::Connection callSetEidPinCommand(const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pFunc, const QByteArray &pNewPin, quint8 pTimeoutSeconds=Card::DEFAULT_PINPAD_TIMEOUT)
Definition CardConnection.h:165
~CardConnection() override=default
Destroys the CardConnection and disconnects from the card.
bool getPacePinSuccessful() const
Definition CardConnection.cpp:56
virtual const ReaderInfo & getReaderInfo()
This method returns a stored copy of the reader info object.
Definition CardConnection.cpp:44
QMetaObject::Connection callUpdateRetryCounterCommand(const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pFunc, const QString &pSlotHandle=QString())
Definition CardConnection.h:193
QMetaObject::Connection callTransmitCommand(const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pFunc, const QList< InputAPDUInfo > &pInputApduInfos, const QString &pSlotHandle=QString())
Definition CardConnection.h:184
bool getPaceCanSuccessful() const
Definition CardConnection.cpp:50
CardConnection()
Definition CardConnection.cpp:34
QMetaObject::Connection callEstablishPaceChannelCommand(const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pFunc, PacePasswordId pPacePasswordId, const QByteArray &pPacePassword, const QByteArray &pEffectiveChat=QByteArray(), const QByteArray &pCertificateDescription=QByteArray())
Definition CardConnection.h:138
QMetaObject::Connection callDidAuthenticateEAC1Command(const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pFunc)
Definition CardConnection.h:117
QMetaObject::Connection callDidAuthenticateEAC2Command(const typename QtPrivate::FunctionPointer< T >::Object *pReceiver, T pFunc, const CVCertificateChain &pCvcChain, const QByteArray &pEphemeralPublicKeyAsHex, const QByteArray &pSignatureAsHex, const QByteArray &pAuthenticatedAuxiliaryDataAsBinary, const QByteArray &pPin)
Definition CardConnection.h:125
void setProgressMessage(const QString &pMessage, int pProgress=-1)
Definition CardConnection.cpp:70
void setKeepAlive(bool pEnabled)
Definition CardConnection.cpp:62
static constexpr int DEFAULT_PINPAD_TIMEOUT
Definition Card.h:47
Definition DestroyPaceChannelCommand.h:21
Definition DidAuthenticateEAC1Command.h:20
Definition DidAuthenticateEAC2Command.h:20
Definition EstablishPaceChannelCommand.h:19
Definition ReaderInfo.h:18
Definition ResetRetryCounterCommand.h:16
Definition SetEidPinCommand.h:19
Definition TransmitCommand.h:20
Definition UpdateRetryCounterCommand.h:18
#define T(v)
Definition http_parser.cpp:237
Defines the AccessRight and AccessRole enum.
Definition CommandApdu.h:17
quint8
Definition ResponseApdu.h:65