AusweisApp2
Lade ...
Suche ...
Keine Treffer
WorkflowContext.h
gehe zur Dokumentation dieser Datei
1
9#pragma once
10
11#include "CardConnection.h"
12#include "ECardApiResult.h"
13#include "FailureCode.h"
14#include "GlobalStatus.h"
15#include "ReaderInfo.h"
17
18#include <QElapsedTimer>
19#include <QSharedPointer>
20#include <QString>
21#include <optional>
22
23namespace governikus
24{
25defineEnumType(Action,
26 AUTH,
27 SELF,
28 PIN,
30 REMOTE_SERVICE)
31
32class WorkflowContext
33 : public QObject
34{
35 Q_OBJECT
36
37 private:
38 const Action mAction;
39 bool mStateApproved;
40 bool mWorkflowKilled;
41 QString mCurrentState;
42 QVector<ReaderManagerPlugInType> mReaderPlugInTypes;
43 QString mReaderName;
44 QSharedPointer<CardConnection> mCardConnection;
45 int mCardVanishedDuringPacePinCount;
46 QElapsedTimer mCardVanishedDuringPacePinTimer;
47 QString mCan;
48 QString mPin;
49 QString mPuk;
50 PacePasswordId mEstablishPaceChannelType;
51 QScopedPointer<EstablishPaceChannelOutput> mPaceOutputData;
52 ReaderInfo mExpectedReader;
53 CardReturnCode mLastPaceResult;
54 GlobalStatus mStatus;
55 std::optional<FailureCode> mFailureCode;
56 ECardApiResult mStartPaosResult;
57 bool mErrorReportedToUser;
58 bool mPaceResultReportedToUser;
59 bool mWorkflowFinished;
60 bool mWorkflowCancelled;
61 bool mWorkflowCancelledInState;
62 bool mNextWorkflowPending;
63 bool mCurrentReaderHasEidCardButInsufficientApduLength;
64 bool mSkipStartScan;
65 int mProgressValue;
66 QString mProgressMessage;
67 bool mShowRemoveCardFeedback;
68 QString mClaimedBy;
69 bool mInterruptRequested;
70
71 private Q_SLOTS:
72 void onWorkflowCancelled();
73
74 Q_SIGNALS:
75 void fireStateApprovedChanged(bool pApproved);
76 void fireStateChanged(const QString& pNewState);
77 void fireReaderPlugInTypesChanged(bool pExplicitStart = false);
78 void fireReaderInfoChanged();
79 void fireReaderNameChanged();
80 void fireCardConnectionChanged();
81 void fireIsSmartCardAllowedChanged();
82 void fireCanChanged();
83 void firePinChanged();
84 void firePukChanged();
85 void firePaceResultUpdated();
86 void fireResultChanged();
87 void fireCanAllowedModeChanged();
88 void firePasswordTypeChanged();
89 void fireProgressChanged();
90 void fireRemoveCardFeedbackChanged();
91
92 void fireCancelWorkflow();
93
94 void fireNextWorkflowPending();
95
96 public:
97 explicit WorkflowContext(const Action mAction);
98 ~WorkflowContext() override;
99
100 [[nodiscard]] Action getAction() const
101 {
102 return mAction;
103 }
104
105
106 [[nodiscard]] bool wasClaimed() const;
107 void claim(const QObject* pClaimant);
108
109 [[nodiscard]] bool isErrorReportedToUser() const;
110 void setErrorReportedToUser(bool pErrorReportedToUser = true);
111
112 [[nodiscard]] bool isPaceResultReportedToUser() const;
113 void setPaceResultReportedToUser(bool pReported = true);
114
115 void setStateApproved(bool pApproved = true);
116 [[nodiscard]] bool isStateApproved() const;
117
118 void killWorkflow(GlobalStatus::Code pCode = GlobalStatus::Code::Workflow_Cancellation_By_User);
119 [[nodiscard]] bool isWorkflowKilled() const;
120
121 [[nodiscard]] const QString& getCurrentState() const;
122 void setCurrentState(const QString& pNewState);
123
124 [[nodiscard]] bool isSmartCardUsed() const;
125
126 [[nodiscard]] const QVector<ReaderManagerPlugInType>& getReaderPlugInTypes() const;
127 void setReaderPlugInTypes(const QVector<ReaderManagerPlugInType>& pReaderPlugInTypes);
128
129 [[nodiscard]] const QString& getReaderName() const;
130 void setReaderName(const QString& pReaderName);
131
132 [[nodiscard]] const QSharedPointer<CardConnection>& getCardConnection() const;
133 void setCardConnection(const QSharedPointer<CardConnection>& pCardConnection);
134 void resetCardConnection();
135
136 [[nodiscard]] bool isNpaRepositioningRequired() const;
137 void setNpaPositionVerified();
138 void handleWrongNpaPosition();
139
140 [[nodiscard]] virtual bool isRequestTransportPin() const;
141
142 [[nodiscard]] const QString& getPuk() const;
143 void setPuk(const QString& pPuk);
144
145 [[nodiscard]] const QString& getCan() const;
146 void setCan(const QString& pCan);
147
148 [[nodiscard]] const QString& getPin() const;
149 void setPin(const QString& pPin);
150
151 [[nodiscard]] PacePasswordId getEstablishPaceChannelType() const;
152 void setEstablishPaceChannelType(PacePasswordId pType);
153
154 virtual void resetPacePasswords();
155
156 [[nodiscard]] EstablishPaceChannelOutput* getPaceOutputData() const;
157 void setPaceOutputData(const EstablishPaceChannelOutput& pPaceOutputData);
158
159 bool isPinBlocked();
160 [[nodiscard]] CardReturnCode getLastPaceResult() const;
161 void setLastPaceResult(CardReturnCode pLastPaceResult);
162 void resetLastPaceResult();
163
164 void rememberReader();
165 [[nodiscard]] bool remembersReader() const;
166 [[nodiscard]] bool isExpectedReader() const;
167 [[nodiscard]] const ReaderInfo& getExpectedReader() const;
168
169 [[nodiscard]] int getExpectedRetryCounter() const;
170 void setExpectedRetryCounter(int pExpectedRetryCounter);
171
172 [[nodiscard]] const GlobalStatus& getStatus() const;
173 void setStatus(const GlobalStatus& pResult);
174
175 [[nodiscard]] std::optional<FailureCode> getFailureCode() const;
176 void setFailureCode(const FailureCode& pFailure);
177
178 [[nodiscard]] const ECardApiResult& getStartPaosResult() const;
179 void setStartPaosResult(const ECardApiResult& pStartPaosResult);
180
181 [[nodiscard]] bool isWorkflowFinished() const;
182 void setWorkflowFinished(bool pWorkflowFinished);
183
184 [[nodiscard]] bool isWorkflowCancelled() const;
185 [[nodiscard]] bool isWorkflowCancelledInState() const;
186 void setWorkflowCancelledInState();
187
188 [[nodiscard]] virtual bool isCanAllowedMode() const;
189
190 [[nodiscard]] bool hasNextWorkflowPending() const;
191 void setNextWorkflowPending(bool pNextWorkflowPending);
192
193 [[nodiscard]] bool currentReaderHasEidCardButInsufficientApduLength() const;
194 void setCurrentReaderHasEidCardButInsufficientApduLength(bool pState);
195
196 [[nodiscard]] bool skipStartScan() const;
197 void setSkipStartScan(bool pState);
198
199 [[nodiscard]] int getProgressValue() const
200 {
201 return mProgressValue;
202 }
203
204
205 [[nodiscard]] const QString& getProgressMessage() const
206 {
207 return mProgressMessage;
208 }
209
210
211 void setProgress(int pValue, const QString& pMessage);
212
213 [[nodiscard]] bool showRemoveCardFeedback() const
214 {
215 return mShowRemoveCardFeedback;
216 }
217
218
219 void setRemoveCardFeedback(bool pEnabled);
220
221 [[nodiscard]] virtual QVector<AcceptedEidType> getAcceptedEidTypes() const = 0;
222
223 bool isPhysicalCardRequired() const;
224
225 [[nodiscard]] bool interruptRequested() const;
226 void setInterruptRequested(bool pInterruptRequested);
227};
228
229} // namespace governikus
#define defineEnumType(enumName,...)
Definition: EnumHelper.h:98
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16
PERSONALIZATION
Definition: MsgTypes.h:33
AUTH
Definition: MsgTypes.h:32