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 
39  bool sendMessage(const QSharedPointer<const RemoteMessage>& pMessage, RemoteCardMessageType pExpectedAnswer, unsigned long pTimeout);
40 
41  private Q_SLOTS:
42  void onMessageReceived(RemoteCardMessageType pMessageTpe, const QJsonObject& pJsonObject);
43  void onDispatcherClosed(GlobalStatus::Code pCloseCode, const QString& pId);
44 
45  Q_SIGNALS:
47 
48  public:
49  RemoteCard(const QSharedPointer<RemoteDispatcherClient>& pRemoteDispatcher, const QString& pReaderName);
50  virtual ~RemoteCard() override;
51 
52  virtual CardReturnCode connect() override;
53  virtual CardReturnCode disconnect() override;
54  virtual bool isConnected() override;
55 
56  virtual ResponseApduResult transmit(const CommandApdu& pCmd) override;
57 
58  virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, const QByteArray& pChat, const QByteArray& pCertificateDescription, quint8 pTimeoutSeconds = 60) override;
59 
60  virtual ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override;
61 };
62 
63 } // 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::EstablishPaceChannel::setCertificateDescription
void setCertificateDescription(const QByteArray &pCertificateDescription)
Definition: EstablishPaceChannel.cpp:55
governikus::EstablishPaceChannelOutput::parseFromCcid
void parseFromCcid(const QByteArray &pOutput, PacePasswordId pPasswordId)
Definition: EstablishPaceChannelOutput.cpp:231
governikus::quint8
quint8
Definition: ResponseApdu.h:62
governikus::IfdEstablishPaceChannelResponse::getOutputData
const QByteArray & getOutputData() const
Definition: IfdEstablishPaceChannelResponse.cpp:55
governikus::GlobalStatus::Code
Code
Definition: GlobalStatus.h:26
governikus::RemoteCard::fireCardRemoved
void fireCardRemoved()
governikus::RemoteDispatcher::fireReceived
void fireReceived(RemoteCardMessageType pMessageType, const QJsonObject &pJsonObject, const QString &pId)
IfdDisconnect.h
governikus::RemoteCard::establishPaceChannel
virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, const QByteArray &pChat, const QByteArray &pCertificateDescription, quint8 pTimeoutSeconds=60) override
Establishes a PACE channel, i.e.
Definition: RemoteCard.cpp:197
governikus::IfdEstablishPaceChannelResponse
Definition: IfdEstablishPaceChannelResponse.h:14
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:45
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
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::IfdTransmitResponse
Definition: IfdTransmitResponse.h:16
governikus::RemoteCard::~RemoteCard
virtual ~RemoteCard() override
Definition: RemoteCard.cpp:116
IfdEstablishPaceChannel.h
governikus::RemoteCard::setEidPin
virtual ResponseApduResult setEidPin(quint8 pTimeoutSeconds) override
Sets a new eID PIN, i.e.
Definition: RemoteCard.cpp:232
governikus::PinModifyOutput::getResponseApdu
const ResponseApdu & getResponseApdu() const
Definition: PinModifyOutput.cpp:80
governikus::EstablishPaceChannel::setChat
void setChat(const QByteArray &pChat)
Definition: EstablishPaceChannel.cpp:61
RemoteMessage.h
governikus::IfdTransmitResponse::getResponseApdu
const QByteArray & getResponseApdu() const
Definition: IfdTransmitResponse.cpp:83
governikus::IfdModifyPinResponse::getOutputData
const QByteArray & getOutputData() const
Definition: IfdModifyPinResponse.cpp:55
governikus::RemoteCard::disconnect
virtual CardReturnCode disconnect() override
Destroys the previously established connection to the smart card.
Definition: RemoteCard.cpp:146
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
virtual bool isConnected() override
Is the smart card connected, i.e.
Definition: RemoteCard.cpp:169
IfdTransmitResponse.h
PinModifyOutput.h
governikus::EstablishPaceChannel::setPasswordId
void setPasswordId(PacePasswordId pPasswordId)
Definition: EstablishPaceChannel.cpp:67
PinModify.h
governikus::EstablishPaceChannel::createCommandDataCcid
CommandApdu createCommandDataCcid()
Definition: EstablishPaceChannel.cpp:118
governikus::RemoteDispatcher::fireClosed
void fireClosed(GlobalStatus::Code pCloseCode, const QString &pId)
governikus::ResponseApduResult
Definition: ResponseApdu.h:107
IfdConnect.h
governikus::PinModify::createCcidForRemote
QByteArray createCcidForRemote() const
Definition: PinModify.cpp:112
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
virtual ResponseApduResult transmit(const CommandApdu &pCmd) override
Performs a transmit to the smart card.
Definition: RemoteCard.cpp:175
Card.h
governikus::RemoteCard
Definition: RemoteCard.h:24
governikus::RemoteCard::connect
virtual CardReturnCode connect() override
Establish a connection to the smart card.
Definition: RemoteCard.cpp:122