AusweisApp2
RemoteCard.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "Card.h"
10 #include "messages/RemoteMessage.h"
11 #include "RemoteDispatcherClient.h"
12 
13 #include <QMutex>
14 #include <QSharedPointer>
15 #include <QString>
16 #include <QWaitCondition>
17 
18 
19 namespace governikus
20 {
21 
23  : public Card
24 {
25  Q_OBJECT
26 
27  private:
28  bool mWaitingForAnswer;
29  QWaitCondition mWaitCondition;
30  QMutex mResponseAvailable, mProcessResponse;
31 
32  RemoteCardMessageType mExpectedAnswerType;
33  QJsonObject mResponse;
34  const QSharedPointer<RemoteDispatcherClient> mRemoteDispatcher;
35  QString mReaderName;
36  QString mSlotHandle;
37  bool mConnected;
38  QString mProgressMessage;
39 
40  bool sendMessage(const QSharedPointer<const RemoteMessage>& pMessage, RemoteCardMessageType pExpectedAnswer, unsigned long pTimeout);
41 
42  private Q_SLOTS:
43  void onMessageReceived(RemoteCardMessageType pMessageTpe, const QJsonObject& pJsonObject);
44  void onDispatcherClosed(GlobalStatus::Code pCloseCode, const QString& pId);
45 
46  Q_SIGNALS:
48 
49  public:
50  RemoteCard(const QSharedPointer<RemoteDispatcherClient>& pRemoteDispatcher, const QString& pReaderName);
51  ~RemoteCard() override;
52 
53  CardReturnCode connect() override;
54  CardReturnCode disconnect() override;
55  bool isConnected() override;
56  void setProgressMessage(const QString& pMessage, int pProgress = -1) override;
57 
58  ResponseApduResult transmit(const CommandApdu& pCmd) override;
59 
60  EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray& pChat, const QByteArray& pCertificateDescription, quint8 pTimeoutSeconds = 60) override;
61 
62  ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override;
63 };
64 
65 } // namespace governikus
governikus::Card
Definition: Card.h:24
IfdTransmit.h
governikus::CommandApdu
Definition: CommandApdu.h:16
governikus::IfdConnectResponse::getSlotHandle
const QString & getSlotHandle() const
Definition: IfdConnectResponse.cpp:45
governikus::RemoteMessageResponse::getResultMinor
ECardApiResult::Minor getResultMinor() const
Definition: RemoteMessageResponse.cpp:64
governikus::ResponseApdu
Definition: ResponseApdu.h:84
governikus::quint8
quint8
Definition: ResponseApdu.h:62
governikus::GlobalStatus::Code
Code
Definition: GlobalStatus.h:26
governikus::RemoteCard::fireCardRemoved
void fireCardRemoved()
governikus::RemoteCard::setProgressMessage
void setProgressMessage(const QString &pMessage, int pProgress=-1) override
Sets the current workflow progress message.
Definition: RemoteCard.cpp:176
governikus::RemoteDispatcher::fireReceived
void fireReceived(RemoteCardMessageType pMessageType, const QJsonObject &pJsonObject, const QString &pId)
IfdDisconnect.h
governikus::IfdEstablishPaceChannelResponse
Definition: IfdEstablishPaceChannelResponse.h:15
governikus::RemoteCard::RemoteCard
RemoteCard(const QSharedPointer< RemoteDispatcherClient > &pRemoteDispatcher, const QString &pReaderName)
Definition: RemoteCard.cpp:96
governikus::RemoteMessageResponse::resultHasError
bool resultHasError() const
Definition: RemoteMessageResponse.cpp:58
IfdModifyPinResponse.h
governikus::EstablishPaceChannel
Definition: EstablishPaceChannel.h:43
RemoteDispatcherClient.h
RemoteCard.h
governikus::ECardApiResult::Minor::IFDL_Terminal_NoCard
@ IFDL_Terminal_NoCard
IfdConnectResponse.h
governikus::Apdu::getBuffer
const QByteArray & getBuffer() const
Definition: Apdu.cpp:31
IfdDisconnectResponse.h
governikus::EstablishPaceChannelOutput
Definition: EstablishPaceChannelOutput.h:48
governikus::IfdModifyPinResponse
Definition: IfdModifyPinResponse.h:15
governikus::Card::generateProgressMessage
static QString generateProgressMessage(const QString &pMessage, int pProgress=-1)
Combines the message and progressvalue depending on the environment.
Definition: Card.cpp:56
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::IfdEstablishPaceChannelResponse::getOutputData
const EstablishPaceChannelOutput & getOutputData() const
Definition: IfdEstablishPaceChannelResponse.cpp:92
governikus::IfdTransmitResponse
Definition: IfdTransmitResponse.h:16
governikus::RemoteCard::establishPaceChannel
EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray &pChat, const QByteArray &pCertificateDescription, quint8 pTimeoutSeconds=60) override
Establishes a PACE channel, i.e.
Definition: RemoteCard.cpp:206
governikus::RemoteCard::~RemoteCard
~RemoteCard() override
Definition: RemoteCard.cpp:117
IfdEstablishPaceChannel.h
governikus::RemoteCard::setEidPin
ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition: RemoteCard.cpp:235
governikus::PinModifyOutput::getResponseApdu
const ResponseApdu & getResponseApdu() const
Definition: PinModifyOutput.cpp:80
RemoteMessage.h
governikus::IfdTransmitResponse::getResponseApdu
const QByteArray & getResponseApdu() const
Definition: IfdTransmitResponse.cpp:104
governikus::PinModify::createCcid
QByteArray createCcid() const
Definition: PinModify.cpp:36
governikus::IfdModifyPinResponse::getOutputData
const QByteArray & getOutputData() const
Definition: IfdModifyPinResponse.cpp:55
governikus::RemoteCard::disconnect
CardReturnCode disconnect() override
Destroys the previously established connection to the smart card.
Definition: RemoteCard.cpp:147
governikus::PinModifyOutput::getReturnCode
CardReturnCode getReturnCode() const
Definition: PinModifyOutput.cpp:74
governikus::IfdConnectResponse
Definition: IfdConnectResponse.h:14
IfdModifyPin.h
governikus::IfdDisconnectResponse
Definition: IfdDisconnectResponse.h:14
governikus::RemoteCard::isConnected
bool isConnected() override
Is the smart card connected, i.e.
Definition: RemoteCard.cpp:170
IfdTransmitResponse.h
PinModifyOutput.h
PinModify.h
governikus::RemoteDispatcher::fireClosed
void fireClosed(GlobalStatus::Code pCloseCode, const QString &pId)
governikus::ResponseApduResult
Definition: ResponseApdu.h:107
IfdConnect.h
IfdEstablishPaceChannelResponse.h
governikus::PinModify
Definition: PinModify.h:16
governikus::PinModifyOutput
Definition: PinModifyOutput.h:17
EstablishPaceChannel.h
governikus::IfdModifyPinResponse::getReturnCode
CardReturnCode getReturnCode() const
Definition: IfdModifyPinResponse.cpp:61
governikus::RemoteCard::transmit
ResponseApduResult transmit(const CommandApdu &pCmd) override
Performs a transmit to the smart card.
Definition: RemoteCard.cpp:182
Card.h
governikus::RemoteCard
Definition: RemoteCard.h:24
governikus::RemoteCard::connect
CardReturnCode connect() override
Establish a connection to the smart card.
Definition: RemoteCard.cpp:123