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  static bool detectEid(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker, const FileRef& pRef);
92 
96  static QSharedPointer<EFCardAccess> readEfCardAccess(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
97 
102  static bool checkEfCardAccess(const QSharedPointer<EFCardAccess>& pEfCardAccess);
103 };
104 
105 
106 QDebug operator<<(QDebug pDbg, const CardInfo& pCardInfo);
107 
108 
109 } // namespace governikus
void setRetryCounter(int pRetryCounter)
Definition: CardInfo.cpp:94
Holds smart card informations.
Definition: CardInfo.h:28
int getRetryCounter() const
Definition: CardInfo.cpp:88
bool isAvailable() const
Definition: CardInfo.cpp:64
bool isPinDeactivated() const
The online identification function has not been activated by the competent authority.
Definition: CardInfo.cpp:106
friend QDebug operator<<(QDebug, const CardInfo &)
Definition: CardInfo.cpp:287
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
Definition: Reader.h:17
Definition: ReaderInfo.h:16
Factory for creation of CardInfo instances.
Definition: CardInfo.h:75
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
QSharedPointer< const EFCardAccess > getEfCardAccess() const
Definition: CardInfo.cpp:82
bool isPassport() const
Definition: CardInfo.cpp:76
Definition: FileRef.h:14
bool isRetryCounterDetermined() const
Definition: CardInfo.cpp:100
QDebug operator<<(QDebug pDbg, const CardInfo &pCardInfo)
Definition: CardInfo.cpp:287
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
bool isPukInoperative() const
The PUK is inoperative.
Definition: CardInfo.cpp:112
bool isEid() const
Definition: CardInfo.cpp:70
QString getCardTypeString() const
Definition: CardInfo.cpp:38