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:
47  void fireCardRemoved();
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
void setProgressMessage(const QString &pMessage, int pProgress=-1) override
Sets the current workflow progress message.
Definition: RemoteCard.cpp:176
Code
Definition: GlobalStatus.h:25
Definition: RemoteCard.h:22
CardReturnCode disconnect() override
Destroys the previously established connection to the smart card.
Definition: RemoteCard.cpp:147
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:209
ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition: RemoteCard.cpp:238
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
ResponseApduResult transmit(const CommandApdu &pCmd) override
Performs a transmit to the smart card.
Definition: RemoteCard.cpp:182
Definition: CommandApdu.h:14
Definition: ResponseApdu.h:104
~RemoteCard() override
Definition: RemoteCard.cpp:117
Definition: EstablishPaceChannelOutput.h:47
CardReturnCode connect() override
Establish a connection to the smart card.
Definition: RemoteCard.cpp:123
RemoteCard(const QSharedPointer< RemoteDispatcherClient > &pRemoteDispatcher, const QString &pReaderName)
Definition: RemoteCard.cpp:96
quint8
Definition: ResponseApdu.h:60
bool isConnected() override
Is the smart card connected, i.e.
Definition: RemoteCard.cpp:170
Definition: Card.h:22