AusweisApp2
CardInfo.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "FileRef.h"
10 #include "SmartCardDefinitions.h"
11 #include "asn1/SecurityInfos.h"
12 
13 #include <QCoreApplication>
14 #include <QSharedPointer>
15 
16 class test_CardInfo;
17 
18 namespace governikus
19 {
20 
21 class CardConnectionWorker;
22 class Reader;
23 class ReaderInfo;
24 
29 class CardInfo
30 {
31  Q_DECLARE_TR_FUNCTIONS(governikus::CardInfo)
32  friend class Reader;
33  friend QDebug operator<<(QDebug, const CardInfo&);
34 
35  public:
36  enum class TagType
37  {
38  UNKNOWN,
39  NFC_4A,
40  NFC_4B
41  };
42 
43  private:
44  CardType mCardType;
45  QSharedPointer<const EFCardAccess> mEfCardAccess;
46  int mRetryCounter;
47  bool mPinDeactivated;
48  bool mPukInoperative;
49  bool mPinInitial;
50  TagType mTagType;
51  static const int UNDEFINED_RETRY_COUNTER;
52 
53  public:
54  CardInfo(CardType pCardType, const QSharedPointer<const EFCardAccess>& = QSharedPointer<const EFCardAccess>(),
55  int pRetryCounter = UNDEFINED_RETRY_COUNTER, bool pPinDeactivated = false, bool pPukInoperative = false, bool pPinInitial = false);
56 
57  void setCardType(CardType pCardType);
58  [[nodiscard]] CardType getCardType() const;
59  [[nodiscard]] QString getCardTypeString() const;
60 
61  [[nodiscard]] QSharedPointer<const EFCardAccess> getEfCardAccess() const;
62  [[nodiscard]] MobileEidType getMobileEidType() const;
63 
64  [[nodiscard]] int getRetryCounter() const;
65  void setRetryCounter(int pRetryCounter);
66 
67  [[nodiscard]] TagType getTagType() const;
68  void setTagType(TagType pTagType);
69 
70  [[nodiscard]] bool isRetryCounterDetermined() const;
71 
75  [[nodiscard]] bool isPinDeactivated() const;
76 
80  [[nodiscard]] bool isPukInoperative() const;
81 
82  [[nodiscard]] bool isPinInitial() const;
83 };
84 
85 
90 {
91  friend class ::test_CardInfo;
92 
93  public:
98  static CardInfo create(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
99 
100  private:
101  static bool selectApplication(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker, const FileRef& pFileRef);
102 
106  static bool detectCard(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
107  static bool detectEid(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker, const FileRef& pRef);
108 
112  static QSharedPointer<EFCardAccess> readEfCardAccess(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker);
113 
118  static bool checkEfCardAccess(const QSharedPointer<EFCardAccess>& pEfCardAccess);
119 };
120 
121 
122 QDebug operator<<(QDebug pDbg, const CardInfo& pCardInfo);
123 
124 
125 } // namespace governikus
Factory for creation of CardInfo instances.
Definition: CardInfo.h:90
static CardInfo create(const QSharedPointer< CardConnectionWorker > &pCardConnectionWorker)
In order to create a CardInfo instance a connection is established to the smart card and data is read...
Definition: CardInfo.cpp:157
Holds smart card information.
Definition: CardInfo.h:30
void setCardType(CardType pCardType)
Definition: CardInfo.cpp:41
MobileEidType getMobileEidType() const
Definition: CardInfo.cpp:132
void setRetryCounter(int pRetryCounter)
Definition: CardInfo.cpp:90
CardInfo(CardType pCardType, const QSharedPointer< const EFCardAccess > &=QSharedPointer< const EFCardAccess >(), int pRetryCounter=UNDEFINED_RETRY_COUNTER, bool pPinDeactivated=false, bool pPukInoperative=false, bool pPinInitial=false)
Definition: CardInfo.cpp:29
QString getCardTypeString() const
Definition: CardInfo.cpp:53
bool isPukInoperative() const
The PUK is inoperative.
Definition: CardInfo.cpp:108
bool isPinDeactivated() const
The online identification function has not been activated by the competent authority.
Definition: CardInfo.cpp:102
int getRetryCounter() const
Definition: CardInfo.cpp:84
CardType getCardType() const
Definition: CardInfo.cpp:47
void setTagType(TagType pTagType)
Definition: CardInfo.cpp:126
TagType getTagType() const
Definition: CardInfo.cpp:120
bool isRetryCounterDetermined() const
Definition: CardInfo.cpp:96
TagType
Definition: CardInfo.h:37
QSharedPointer< const EFCardAccess > getEfCardAccess() const
Definition: CardInfo.cpp:78
bool isPinInitial() const
Definition: CardInfo.cpp:114
Definition: FileRef.h:17
Definition: Reader.h:19
A simple template renderer.
Definition: ActivationContext.h:15
UNKNOWN
Definition: ResponseApdu.h:63
QDebug operator<<(QDebug pDbg, const CommandApdu &pCommandApdu)
Definition: CommandApdu.h:91