AusweisApp2
CardConnectionWorker.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "CardReturnCode.h"
10 #include "FileRef.h"
11 #include "Reader.h"
12 #include "SmartCardDefinitions.h"
13 #include "apdu/CommandApdu.h"
14 #include "apdu/ResponseApdu.h"
16 #include "asn1/SecurityInfos.h"
17 #include "pace/SecureMessaging.h"
19 
20 #include <QByteArray>
21 #include <QTimer>
22 
23 
24 namespace governikus
25 {
26 
31  : public QObject
32  , public QEnableSharedFromThis<CardConnectionWorker>
33 {
34  Q_OBJECT
35 
36  private:
40  QPointer<Reader> mReader;
41 
45  QScopedPointer<SecureMessaging> mSecureMessaging;
46 
47  QTimer mKeepAliveTimer;
48 
49  inline QSharedPointer<const EFCardAccess> getEfCardAccess() const;
50 
51  void stopSecureMessaging();
52 
53  private Q_SLOTS:
54  void onKeepAliveTimeout();
55 
56  protected:
61  explicit CardConnectionWorker(Reader* pReader);
62 
66  ~CardConnectionWorker() override;
67 
68  public:
69  static QSharedPointer<CardConnectionWorker> create(Reader* pReader);
70 
71  Q_INVOKABLE ReaderInfo getReaderInfo() const;
72 
73  void setPukInoperative();
74 
75  virtual CardReturnCode updateRetryCounter();
76 
77  virtual CardReturnCode readFile(const FileRef& pFileRef, QByteArray& pFileContent, int pLe = CommandApdu::SHORT_MAX_LE);
78 
79  virtual ResponseApduResult transmit(const CommandApdu& pCommandApdu);
80 
86  virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId,
87  const QByteArray& pPasswordValue,
88  const QByteArray& pChat,
89  const QByteArray& pCertificateDescription);
90 
94  virtual CardReturnCode destroyPaceChannel();
95 
96  virtual void setKeepAlive(bool pEnabled);
97 
102  virtual void setProgressMessage(const QString& pMessage, int pProgress = -1);
103 
104  virtual ResponseApduResult setEidPin(const QByteArray& pNewPin, quint8 pTimeoutSeconds);
105 
106  EstablishPaceChannelOutput prepareIdentification(const QByteArray& pChat);
107 
109 
111  const CVCertificateChain& pTerminalCvcChain,
112  const QByteArray& pAuxiliaryData,
113  const QByteArray& pSignature,
114  const QByteArray& pPin,
115  const QByteArray& pEphemeralPublicKey);
116 
117  Q_SIGNALS:
118  void fireReaderInfoChanged(const ReaderInfo& pReaderInfo);
120 };
121 
122 } // namespace governikus
Definition: CVCertificateChain.h:22
This class represents a connection to a smart card.
Definition: CardConnectionWorker.h:33
virtual CardReturnCode destroyPaceChannel()
Destroys a previously established PACE channel.
Definition: CardConnectionWorker.cpp:298
~CardConnectionWorker() override
Destroys the CardConnection and disconnects from the card.
Definition: CardConnectionWorker.cpp:37
CardConnectionWorker(Reader *pReader)
The Card hold by the Reader is expected to be connected.
Definition: CardConnectionWorker.cpp:21
Q_INVOKABLE ReaderInfo getReaderInfo() const
Definition: CardConnectionWorker.cpp:53
virtual CardReturnCode updateRetryCounter()
Definition: CardConnectionWorker.cpp:65
virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, const QByteArray &pPasswordValue, const QByteArray &pChat, const QByteArray &pCertificateDescription)
Performs PACE and establishes a PACE channel for later terminal authentication.
Definition: CardConnectionWorker.cpp:230
static QSharedPointer< CardConnectionWorker > create(Reader *pReader)
Definition: CardConnectionWorker.cpp:47
void setPukInoperative()
Definition: CardConnectionWorker.cpp:59
ResponseApduResult getChallenge()
Definition: CardConnectionWorker.cpp:367
virtual void setKeepAlive(bool pEnabled)
Definition: CardConnectionWorker.cpp:208
virtual ResponseApduResult transmit(const CommandApdu &pCommandApdu)
Definition: CardConnectionWorker.cpp:109
virtual ResponseApduResult setEidPin(const QByteArray &pNewPin, quint8 pTimeoutSeconds)
Definition: CardConnectionWorker.cpp:322
virtual CardReturnCode readFile(const FileRef &pFileRef, QByteArray &pFileContent, int pLe=CommandApdu::SHORT_MAX_LE)
Definition: CardConnectionWorker.cpp:155
virtual void setProgressMessage(const QString &pMessage, int pProgress=-1)
Sets the current workflow progress message.
Definition: CardConnectionWorker.cpp:220
void fireReaderInfoChanged(const ReaderInfo &pReaderInfo)
EstablishPaceChannelOutput prepareIdentification(const QByteArray &pChat)
Definition: CardConnectionWorker.cpp:352
TerminalAndChipAuthenticationResult performTAandCA(const CVCertificateChain &pTerminalCvcChain, const QByteArray &pAuxiliaryData, const QByteArray &pSignature, const QByteArray &pPin, const QByteArray &pEphemeralPublicKey)
Definition: CardConnectionWorker.cpp:387
Definition: EstablishPaceChannelOutput.h:48
Definition: FileRef.h:17
Definition: ReaderInfo.h:18
Definition: Reader.h:19
A simple template renderer.
Definition: ActivationContext.h:15
quint8
Definition: ResponseApdu.h:62
Definition: ResponseApdu.h:115