30 class test_CardConnection;
43 friend class ::test_CardConnection;
50 QSharedPointer<CardConnectionWorker> mCardConnectionWorker;
53 bool mPaceCanSuccessful;
54 bool mPacePinSuccessful;
56 TransmitCommand* createTransmitCommand(
const QVector<InputAPDUInfo>& pInputApduInfos,
const QString& pSlotHandle);
60 EstablishPaceChannelCommand* createEstablishPaceChannelCommand(PacePasswordId pPacePasswordId,
const QByteArray& pPacePassword,
const QByteArray& pEffectiveChat,
const QByteArray& pCertificateDescription);
66 const QByteArray& pEphemeralPublicKeyAsHex,
67 const QByteArray& pSignatureAsHex,
68 const QByteArray& pAuthenticatedAuxiliaryDataAsBinary);
71 QMetaObject::Connection call(
BaseCardCommand* pCommand,
const typename QtPrivate::FunctionPointer<T>::Object* pReceiver,
T pFunc)
73 pCommand->moveToThread(mCardConnectionWorker->thread());
83 qCCritical(card) <<
"Cannot invoke card command:" << pCommand->metaObject()->className();
84 pCommand->deleteLater();
87 return resultConnection;
91 void onReaderInfoChanged(
const ReaderInfo& pReaderInfo);
97 explicit CardConnection(
const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
121 auto command = createDidAuthenticateEAC1Command();
122 return call(command, pReceiver, pFunc);
129 const QByteArray& pEphemeralPublicKeyAsHex,
130 const QByteArray& pSignatureAsHex,
131 const QByteArray& pAuthenticatedAuxiliaryDataAsBinary)
133 auto command = createDidAuthenticateEAC2Command(pCvcChain, pEphemeralPublicKeyAsHex, pSignatureAsHex, pAuthenticatedAuxiliaryDataAsBinary);
134 return call(command, pReceiver, pFunc);
140 const QByteArray& pPuk)
142 auto command = createUnblockPinCommand(pPuk);
143 return call(command, pReceiver, pFunc);
149 PacePasswordId pPacePasswordId,
const QByteArray& pPacePassword,
const QByteArray& pEffectiveChat = QByteArray(),
const QByteArray& pCertificateDescription = QByteArray())
151 EstablishPaceChannelCommand* command = createEstablishPaceChannelCommand(pPacePasswordId, pPacePassword, pEffectiveChat, pCertificateDescription);
156 mPaceCanSuccessful = pCommand->getReturnCode() == CardReturnCode::OK;
162 mPacePinSuccessful = pCommand->getReturnCode() == CardReturnCode::OK;
163 if (!mPacePinSuccessful)
165 mPaceCanSuccessful =
false;
170 return call(command, pReceiver, pFunc);
175 QMetaObject::Connection
callSetEidPinCommand(
const typename QtPrivate::FunctionPointer<T>::Object* pReceiver,
T pFunc,
176 const QByteArray& pNewPin,
177 quint8 pTimeoutSeconds = 60)
179 auto command = createSetEidPinCommand(pNewPin, pTimeoutSeconds);
180 return call(command, pReceiver, pFunc);
187 auto command = createDestroyPaceChannelCommand();
188 return call(command, pReceiver, pFunc);
193 QMetaObject::Connection
callTransmitCommand(
const typename QtPrivate::FunctionPointer<T>::Object* pReceiver,
T pFunc,
194 const QVector<InputAPDUInfo>& pInputApduInfos,
const QString& pSlotHandle = QString())
196 auto command = createTransmitCommand(pInputApduInfos, pSlotHandle);
197 return call(command, pReceiver, pFunc);
204 auto command = createUpdateRetryCounterCommand();
205 return call(command, pReceiver, pFunc);