AusweisApp2
WorkflowContext.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "CardConnection.h"
10 #include "ECardApiResult.h"
11 #include "GlobalStatus.h"
12 #include "ReaderInfo.h"
13 #include "SmartCardDefinitions.h"
14 
15 #include <QElapsedTimer>
16 #include <QSharedPointer>
17 #include <QString>
18 
19 namespace governikus
20 {
21 defineEnumType(Action,
22  AUTH,
23  SELF,
24  PIN,
26  REMOTE_SERVICE)
27 
28 class WorkflowContext
29  : public QObject
30 {
31  Q_OBJECT
32 
33  private:
34  const Action mAction;
35  bool mStateApproved;
36  bool mWorkflowKilled;
37  QString mCurrentState;
38  QVector<ReaderManagerPlugInType> mReaderPlugInTypes;
39  QString mReaderName;
40  QSharedPointer<CardConnection> mCardConnection;
41  int mCardVanishedDuringPacePinCount;
42  QElapsedTimer mCardVanishedDuringPacePinTimer;
43  QString mCan;
44  QString mPin;
45  QString mPuk;
46  PacePasswordId mEstablishPaceChannelType;
47  QScopedPointer<EstablishPaceChannelOutput> mPaceOutputData;
48  ReaderInfo mExpectedReader;
49  CardReturnCode mLastPaceResult;
50  GlobalStatus mStatus;
51  ECardApiResult mStartPaosResult;
52  bool mErrorReportedToUser;
53  bool mPaceResultReportedToUser;
54  bool mWorkflowFinished;
55  bool mWorkflowCancelled;
56  bool mWorkflowCancelledInState;
57  bool mNextWorkflowPending;
58  bool mCurrentReaderHasEidCardButInsufficientApduLength;
59  bool mSkipStartScan;
60  int mProgressValue;
61  QString mProgressMessage;
62  bool mShowRemoveCardFeedback;
63  QString mClaimedBy;
64 
65  private Q_SLOTS:
66  void onWorkflowCancelled();
67 
68  Q_SIGNALS:
69  void fireStateApprovedChanged(bool pApproved);
70  void fireStateChanged(const QString& pNewState);
71  void fireReaderPlugInTypesChanged();
72  void fireReaderInfoChanged();
73  void fireReaderNameChanged();
74  void fireCardConnectionChanged();
75  void fireIsSmartCardAllowedChanged();
76  void fireCanChanged();
77  void firePinChanged();
78  void firePukChanged();
79  void firePaceResultUpdated();
80  void fireResultChanged();
81  void fireCanAllowedModeChanged();
82  void firePasswordTypeChanged();
83  void fireProgressChanged();
84  void fireRemoveCardFeedbackChanged();
85 
86  void fireCancelWorkflow();
87 
88  void fireNextWorkflowPending();
89 
90  public:
91  explicit WorkflowContext(const Action mAction);
92  ~WorkflowContext() override;
93 
94  [[nodiscard]] Action getAction() const
95  {
96  return mAction;
97  }
98 
99 
100  [[nodiscard]] bool wasClaimed() const;
101  void claim(const QObject* pClaimant);
102 
103  [[nodiscard]] bool isErrorReportedToUser() const;
104  void setErrorReportedToUser(bool pErrorReportedToUser = true);
105 
106  [[nodiscard]] bool isPaceResultReportedToUser() const;
107  void setPaceResultReportedToUser(bool pReported = true);
108 
109  void setStateApproved(bool pApproved = true);
110  [[nodiscard]] bool isStateApproved() const;
111 
113  [[nodiscard]] bool isWorkflowKilled() const;
114 
115  [[nodiscard]] const QString& getCurrentState() const;
116  void setCurrentState(const QString& pNewState);
117 
118  [[nodiscard]] bool isSmartCardUsed() const;
119 
120  [[nodiscard]] const QVector<ReaderManagerPlugInType>& getReaderPlugInTypes() const;
121  void setReaderPlugInTypes(const QVector<ReaderManagerPlugInType>& pReaderPlugInTypes);
122 
123  [[nodiscard]] const QString& getReaderName() const;
124  void setReaderName(const QString& pReaderName);
125 
126  [[nodiscard]] const QSharedPointer<CardConnection>& getCardConnection() const;
127  void setCardConnection(const QSharedPointer<CardConnection>& pCardConnection);
128  void resetCardConnection();
129 
130  [[nodiscard]] bool isNpaRepositioningRequired() const;
131  void setNpaPositionVerified();
132  void handleWrongNpaPosition();
133 
134  [[nodiscard]] virtual bool isRequestTransportPin() const;
135 
136  [[nodiscard]] const QString& getPuk() const;
137  void setPuk(const QString& pPuk);
138 
139  [[nodiscard]] const QString& getCan() const;
140  void setCan(const QString& pCan);
141 
142  [[nodiscard]] const QString& getPin() const;
143  void setPin(const QString& pPin);
144 
145  [[nodiscard]] PacePasswordId getEstablishPaceChannelType() const;
146  void setEstablishPaceChannelType(PacePasswordId pType);
147 
148  virtual void resetPacePasswords();
149 
150  [[nodiscard]] EstablishPaceChannelOutput* getPaceOutputData() const;
151  void setPaceOutputData(const EstablishPaceChannelOutput& pPaceOutputData);
152 
153  bool isPinBlocked();
154  [[nodiscard]] CardReturnCode getLastPaceResult() const;
155  void setLastPaceResult(CardReturnCode pLastPaceResult);
156  void resetLastPaceResult();
157 
158  void rememberReader();
159  [[nodiscard]] bool remembersReader() const;
160  [[nodiscard]] bool isExpectedReader() const;
161  [[nodiscard]] const ReaderInfo& getExpectedReader() const;
162 
163  [[nodiscard]] int getExpectedRetryCounter() const;
164  void setExpectedRetryCounter(int pExpectedRetryCounter);
165 
166  [[nodiscard]] const GlobalStatus& getStatus() const;
167  void setStatus(const GlobalStatus& pResult);
168 
169  [[nodiscard]] const ECardApiResult& getStartPaosResult() const;
170  void setStartPaosResult(const ECardApiResult& pStartPaosResult);
171 
172  [[nodiscard]] bool isWorkflowFinished() const;
173  void setWorkflowFinished(bool pWorkflowFinished);
174 
175  [[nodiscard]] bool isWorkflowCancelled() const;
176  [[nodiscard]] bool isWorkflowCancelledInState() const;
177  void setWorkflowCancelledInState();
178 
179  [[nodiscard]] virtual bool isCanAllowedMode() const;
180 
181  [[nodiscard]] bool hasNextWorkflowPending() const;
182  void setNextWorkflowPending(bool pNextWorkflowPending);
183 
184  [[nodiscard]] bool currentReaderHasEidCardButInsufficientApduLength() const;
185  void setCurrentReaderHasEidCardButInsufficientApduLength(bool pState);
186 
187  [[nodiscard]] bool skipStartScan() const;
188  void setSkipStartScan(bool pState);
189 
190  [[nodiscard]] int getProgressValue() const
191  {
192  return mProgressValue;
193  }
194 
195 
196  [[nodiscard]] const QString& getProgressMessage() const
197  {
198  return mProgressMessage;
199  }
200 
201 
202  void setProgress(int pValue, const QString& pMessage);
203 
204  [[nodiscard]] bool showRemoveCardFeedback() const
205  {
206  return mShowRemoveCardFeedback;
207  }
208 
209 
210  void setRemoveCardFeedback(bool pEnabled);
211 
212  [[nodiscard]] virtual QVector<AcceptedEidType> getAcceptedEidTypes() const = 0;
213 
214  bool isPhysicalCardRequired() const;
215 };
216 
217 } // namespace governikus
Code
Definition: GlobalStatus.h:26
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
PERSONALIZATION
Definition: MsgTypes.h:31
defineEnumType(KnownOid, ID_SIGNED_DATA, EC_PS_PUBLICKEY, STANDARDIZED_DOMAINPARAMETERS, BSI_DE_PROTOCOLS_SMARTCARD, ID_PK, ID_PK_DH, ID_PK_ECDH, ID_PS_PK, ID_PS_PK_ECDH_ESCHNORR, ID_TA, ID_TA_RSA, ID_TA_RSA_V1_5_SHA_1, ID_TA_RSA_V1_5_SHA_256, ID_TA_RSA_PSS_SHA_1, ID_TA_RSA_PSS_SHA_256, ID_TA_RSA_V1_5_SHA_512, ID_TA_RSA_PSS_SHA_512, ID_TA_ECDSA, ID_TA_ECDSA_SHA_1, ID_TA_ECDSA_SHA_224, ID_TA_ECDSA_SHA_256, ID_TA_ECDSA_SHA_384, ID_TA_ECDSA_SHA_512, ID_CA, ID_CA_DH, ID_CA_DH_3DES_CBC_CBC, ID_CA_DH_AES_CBC_CMAC_128, ID_CA_DH_AES_CBC_CMAC_192, ID_CA_DH_AES_CBC_CMAC_256, ID_CA_ECDH, ID_CA_ECDH_3DES_CBC_CBC, ID_CA_ECDH_AES_CBC_CMAC_128, ID_CA_ECDH_AES_CBC_CMAC_192, ID_CA_ECDH_AES_CBC_CMAC_256, ID_PACE, ID_PACE_DH_GM, ID_PACE_DH_GM_3DES_CBC_CBC, ID_PACE_DH_GM_AES_CBC_CMAC_128, ID_PACE_DH_GM_AES_CBC_CMAC_192, ID_PACE_DH_GM_AES_CBC_CMAC_256, ID_PACE_ECDH_GM, ID_PACE_ECDH_GM_3DES_CBC_CBC, ID_PACE_ECDH_GM_AES_CBC_CMAC_128, ID_PACE_ECDH_GM_AES_CBC_CMAC_192, ID_PACE_ECDH_GM_AES_CBC_CMAC_256, ID_PACE_DH_IM, ID_PACE_DH_IM_3DES_CBC_CBC, ID_PACE_DH_IM_AES_CBC_CMAC_128, ID_PACE_DH_IM_AES_CBC_CMAC_192, ID_PACE_DH_IM_AES_CBC_CMAC_256, ID_PACE_ECDH_IM, ID_PACE_ECDH_IM_3DES_CBC_CBC, ID_PACE_ECDH_IM_AES_CBC_CMAC_128, ID_PACE_ECDH_IM_AES_CBC_CMAC_192, ID_PACE_ECDH_IM_AES_CBC_CMAC_256, ID_PACE_ECDH_CAM, ID_PACE_ECDH_CAM_AES_CBC_CMAC_128, ID_PACE_ECDH_CAM_AES_CBC_CMAC_192, ID_PACE_ECDH_CAM_AES_CBC_CMAC_256, ID_RI, ID_RI_DH, ID_RI_DH_SHA_1, ID_RI_DH_SHA_224, ID_RI_DH_SHA_256, ID_RI_DH_SHA_384, ID_RI_DH_SHA_512, ID_RI_ECDH, ID_RI_ECDH_SHA_1, ID_RI_ECDH_SHA_224, ID_RI_ECDH_SHA_256, ID_RI_ECDH_SHA_384, ID_RI_ECDH_SHA_512, ID_CI, ID_EID_SECURITY, ID_PT, ID_PS, ID_PSA, ID_PSA_ECDH_ECSCHNORR, ID_PSA_ECDH_ECSCHNORR_SHA_256, ID_PSA_ECDH_ECSCHNORR_SHA_384, ID_PSA_ECDH_ECSCHNORR_SHA_512, ID_PASSWORDTYPE, ID_PASSWORDTYPE_MRZ, ID_PASSWORDTYPE_CAN, ID_PASSWORDTYPE_PIN, ID_PASSWORDTYPE_PUK, ID_AUXILIARY_DATA, ID_DATE_OF_BIRTH, ID_DATE_OF_EXPIRY, ID_MUNICIPALITY_ID, ID_PSM_MESSAGE, ID_SECURITY_OBJECT, ID_ROLES, ID_IS, ID_AT, ID_ST, ID_EXTENSIONS, ID_DESCRIPTION, ID_PLAIN_FORMAT, ID_HTML_FORMAT, ID_PFD_FORMAT, ID_SECTOR, ID_EID_TYPE, ID_CARD_EID_TYPE, ID_MOBILE_EID_TYPE, ID_MOBILE_EID_TYPE_SE_CERTIFIED, ID_MOBILE_EID_TYPE_SE_ENDORSED, ID_MOBILE_EID_TYPE_HW_KEYSTORE) class Oid
Definition: Oid.h:21
AUTH
Definition: MsgTypes.h:30