AusweisApp2
CardInfo.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "asn1/SecurityInfos.h"
10 #include "FileRef.h"
11 #include "SmartCardDefinitions.h"
12 
13 #include <QCoreApplication>
14 #include <QSharedPointer>
15 
16 
17 namespace governikus
18 {
19 
20 class CardConnectionWorker;
21 class Reader;
22 class ReaderInfo;
23 
28 class CardInfo
29 {
30  Q_DECLARE_TR_FUNCTIONS(governikus::CardInfo)
31 
32  private:
33  CardType mCardType;
34  QSharedPointer<const EFCardAccess> mEfCardAccess;
35  int mRetryCounter;
36  bool mPinDeactivated;
37  bool mPukInoperative;
38  static const int UNDEFINED_RETRY_COUNTER;
39 
40  friend QDebug operator<<(QDebug, const CardInfo&);
41 
42  public:
43  CardInfo(CardType pCardType, const QSharedPointer<const EFCardAccess>& = QSharedPointer<const EFCardAccess>(),
44  int pRetryCounter = UNDEFINED_RETRY_COUNTER, bool pPinDeactivated = false, bool pPukInoperative = false);
45 
46  [[nodiscard]] QString getCardTypeString() const;
47  [[nodiscard]] bool isAvailable() const;
48  [[nodiscard]] bool isEid() const;
49  [[nodiscard]] bool isPassport() const;
50 
51  [[nodiscard]] QSharedPointer<const EFCardAccess> getEfCardAccess() const;
52 
53  [[nodiscard]] int getRetryCounter() const;
54  void setRetryCounter(int pRetryCounter);
55 
56  [[nodiscard]] bool isRetryCounterDetermined() const;
57 
61  [[nodiscard]] bool isPinDeactivated() const;
62 
66  [[nodiscard]] bool isPukInoperative() const;
67 
68  friend class Reader;
69 };
70 
71 
76 {
77  public:
82  static bool create(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker, ReaderInfo& pReaderInfo);
83 
84  private:
85  static bool selectApplication(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker, const FileRef& pFileRef);
86 
90  static CardType detectCard(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
91 
95  static QSharedPointer<EFCardAccess> readEfCardAccess(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
96 
101  static bool checkEfCardAccess(const QSharedPointer<EFCardAccess>& pEfCardAccess);
102 };
103 
104 
105 QDebug operator<<(QDebug pDbg, const CardInfo& pCardInfo);
106 
107 
108 } // namespace governikus
Factory for creation of CardInfo instances.
Definition: CardInfo.h:76
static bool create(const QSharedPointer< CardConnectionWorker > &pCardConnectionWorker, ReaderInfo &pReaderInfo)
In order to create a CardInfo instance a connection is established to the smart card and data is read...
Definition: CardInfo.cpp:118
Holds smart card informations.
Definition: CardInfo.h:29
void setRetryCounter(int pRetryCounter)
Definition: CardInfo.cpp:94
bool isPassport() const
Definition: CardInfo.cpp:76
QString getCardTypeString() const
Definition: CardInfo.cpp:38
bool isPukInoperative() const
The PUK is inoperative.
Definition: CardInfo.cpp:112
bool isEid() const
Definition: CardInfo.cpp:70
bool isPinDeactivated() const
The online identification function has not been activated by the competent authority.
Definition: CardInfo.cpp:106
CardInfo(CardType pCardType, const QSharedPointer< const EFCardAccess > &=QSharedPointer< const EFCardAccess >(), int pRetryCounter=UNDEFINED_RETRY_COUNTER, bool pPinDeactivated=false, bool pPukInoperative=false)
Definition: CardInfo.cpp:28
int getRetryCounter() const
Definition: CardInfo.cpp:88
friend QDebug operator<<(QDebug, const CardInfo &)
Definition: CardInfo.cpp:281
bool isRetryCounterDetermined() const
Definition: CardInfo.cpp:100
bool isAvailable() const
Definition: CardInfo.cpp:64
QSharedPointer< const EFCardAccess > getEfCardAccess() const
Definition: CardInfo.cpp:82
Definition: ReaderInfo.h:17
Definition: Reader.h:19
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
QDebug operator<<(QDebug pDbg, const CardInfo &pCardInfo)
Definition: CardInfo.cpp:281
Definition: FileRef.h:15