AusweisApp2
Card.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "CardReturnCode.h"
10 #include "SmartCardDefinitions.h"
11 #include "apdu/CommandApdu.h"
12 #include "apdu/ResponseApdu.h"
15 
16 #include <QObject>
17 #include <QPointer>
18 
19 
20 namespace governikus
21 {
22 
24 {
25  CardReturnCode mReturnCode = CardReturnCode::UNDEFINED;
26  QByteArray mEfCardSecurity = QByteArray();
27  QByteArray mAuthenticationToken = QByteArray();
28  QByteArray mNonce = QByteArray();
29 };
30 
31 #ifndef QT_NO_DEBUG
33 {
34  return pLeft.mReturnCode == pRight.mReturnCode
35  && pLeft.mEfCardSecurity == pRight.mEfCardSecurity
37  && pLeft.mNonce == pRight.mNonce;
38 }
39 
40 
41 #endif
42 
43 class Card
44  : public QObject
45 {
46  Q_OBJECT
47 
48  public:
49  Card();
50  ~Card() override = default;
51 
55  virtual CardReturnCode establishConnection() = 0;
56 
60  virtual CardReturnCode releaseConnection() = 0;
61 
65  virtual bool isConnected() const = 0;
66 
71  virtual void setProgressMessage(const QString& pMessage, int pProgress = -1);
72 
78  virtual ResponseApduResult transmit(const CommandApdu& pCmd) = 0;
79 
83  virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray& pChat, const QByteArray& pCertificateDescription, quint8 pTimeoutSeconds = 60);
84 
88  virtual CardReturnCode destroyPaceChannel();
89 
93  virtual ResponseApduResult setEidPin(quint8 pTimeoutSeconds);
94 
98  static QString generateProgressMessage(const QString& pMessage, int pProgress = -1);
99 
100  virtual EstablishPaceChannelOutput prepareIdentification(const QByteArray& pChat);
101 
103 
105  const CVCertificateChain& pTerminalCvcChain,
106  const QByteArray& pAuxiliaryData,
107  const QByteArray& pSignature,
108  const QByteArray& pPin,
109  const QByteArray& pEphemeralPublicKey);
110 };
111 
112 } // namespace governikus
Definition: CVCertificateChain.h:22
Definition: Card.h:45
virtual EstablishPaceChannelOutput prepareIdentification(const QByteArray &pChat)
Definition: Card.cpp:77
static QString generateProgressMessage(const QString &pMessage, int pProgress=-1)
Combines the message and progressvalue depending on the environment.
Definition: Card.cpp:56
virtual EstablishPaceChannelOutput establishPaceChannel(PacePasswordId pPasswordId, int pPreferredPinLength, const QByteArray &pChat, const QByteArray &pCertificateDescription, quint8 pTimeoutSeconds=60)
Establishes a PACE channel, i.e.
Definition: Card.cpp:28
virtual void setProgressMessage(const QString &pMessage, int pProgress=-1)
Sets the current workflow progress message.
Definition: Card.cpp:21
~Card() override=default
virtual ResponseApduResult transmit(const CommandApdu &pCmd)=0
Performs a transmit to the smart card.
virtual ResponseApduResult setEidPin(quint8 pTimeoutSeconds)
Sets a new eID PIN, i.e.
Definition: Card.cpp:47
Card()
Definition: Card.cpp:15
virtual CardReturnCode releaseConnection()=0
Destroys the previously established connection to the smart card.
virtual CardReturnCode destroyPaceChannel()
Destroys an existing PACE channel, i.e.
Definition: Card.cpp:40
virtual TerminalAndChipAuthenticationResult performTAandCA(const CVCertificateChain &pTerminalCvcChain, const QByteArray &pAuxiliaryData, const QByteArray &pSignature, const QByteArray &pPin, const QByteArray &pEphemeralPublicKey)
Definition: Card.cpp:94
virtual bool isConnected() const =0
Is the smart card connected, i.e.
virtual CardReturnCode establishConnection()=0
Establish a connection to the smart card.
virtual ResponseApduResult getChallenge()
Definition: Card.cpp:86
Definition: EstablishPaceChannelOutput.h:48
A simple template renderer.
Definition: ActivationContext.h:15
quint8
Definition: ResponseApdu.h:62
bool operator==(const CommandApdu &pLeft, const CommandApdu &pRight)
Definition: CommandApdu.h:100
Definition: ResponseApdu.h:115
QByteArray mAuthenticationToken
Definition: Card.h:27
QByteArray mNonce
Definition: Card.h:28
CardReturnCode mReturnCode
Definition: Card.h:25
QByteArray mEfCardSecurity
Definition: Card.h:26