AusweisApp
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 const bool mActivateUi;
40 bool mStateApproved;
41 bool mWorkflowKilled;
42 QString mCurrentState;
43 QList<ReaderManagerPlugInType> mReaderPlugInTypes;
44 QString mReaderName;
45 QSharedPointer<CardConnection> mCardConnection;
46 int mCardVanishedDuringPacePinCount;
47 QElapsedTimer mCardVanishedDuringPacePinTimer;
48 QString mCan;
49 QString mPin;
50 QString mPuk;
51 PacePasswordId mEstablishPaceChannelType;
52 QScopedPointer<EstablishPaceChannelOutput> mPaceOutputData;
53 ReaderInfo mExpectedReader;
54 CardReturnCode mLastPaceResult;
55 GlobalStatus mStatus;
56 std::optional<FailureCode> mFailureCode;
57 ECardApiResult mStartPaosResult;
58 bool mErrorReportedToUser;
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 fireAcceptedEidTypesChanged();
82 void fireEidTypeMismatchChanged();
83 void fireCanChanged();
84 void firePinChanged();
85 void firePukChanged();
86 void firePaceResultUpdated();
87 void fireResultChanged();
88 void fireCanAllowedModeChanged();
89 void firePasswordTypeChanged();
90 void fireProgressChanged();
91 void fireRemoveCardFeedbackChanged();
92
93 void fireCancelWorkflow();
94
95 void fireNextWorkflowPending();
96
97 public:
98 explicit WorkflowContext(const Action mAction, bool pActivateUi = true);
99 ~WorkflowContext() override;
100
101 [[nodiscard]] Action getAction() const
102 {
103 return mAction;
104 }
105
106
107 [[nodiscard]] bool isActivateUi() const
108 {
109 return mActivateUi;
110 }
111
112
113 [[nodiscard]] bool wasClaimed() const;
114 void claim(const QObject* pClaimant);
115
116 [[nodiscard]] bool isErrorReportedToUser() const;
117 void setErrorReportedToUser(bool pErrorReportedToUser = true);
118
119 void setStateApproved(bool pApproved = true);
120 [[nodiscard]] bool isStateApproved() const;
121
122 void killWorkflow(GlobalStatus::Code pCode = GlobalStatus::Code::Workflow_Cancellation_By_User);
123 [[nodiscard]] bool isWorkflowKilled() const;
124
125 [[nodiscard]] const QString& getCurrentState() const;
126 void setCurrentState(const QString& pNewState);
127
128 [[nodiscard]] bool isSmartCardUsed() const;
129
130 [[nodiscard]] const QList<ReaderManagerPlugInType>& getReaderPlugInTypes() const;
131 void setReaderPlugInTypes(const QList<ReaderManagerPlugInType>& pReaderPlugInTypes);
132
133 [[nodiscard]] const QString& getReaderName() const;
134 void setReaderName(const QString& pReaderName);
135
136 [[nodiscard]] const QSharedPointer<CardConnection>& getCardConnection() const;
137 void setCardConnection(const QSharedPointer<CardConnection>& pCardConnection);
138 void resetCardConnection();
139
140 [[nodiscard]] bool isNpaRepositioningRequired() const;
141 void setNpaPositionVerified();
142 void handleWrongNpaPosition();
143
144 [[nodiscard]] virtual bool isRequestTransportPin() const;
145
146 [[nodiscard]] const QString& getPuk() const;
147 void setPuk(const QString& pPuk);
148
149 [[nodiscard]] const QString& getCan() const;
150 void setCan(const QString& pCan);
151
152 [[nodiscard]] const QString& getPin() const;
153 void setPin(const QString& pPin);
154
155 [[nodiscard]] PacePasswordId getEstablishPaceChannelType() const;
156 void setEstablishPaceChannelType(PacePasswordId pType);
157
158 virtual void resetPacePasswords();
159
160 [[nodiscard]] EstablishPaceChannelOutput* getPaceOutputData() const;
161 void setPaceOutputData(const EstablishPaceChannelOutput& pPaceOutputData);
162
163 bool isPinBlocked();
164 [[nodiscard]] CardReturnCode getLastPaceResult() const;
165 void setLastPaceResult(CardReturnCode pLastPaceResult);
166 void resetLastPaceResult();
167
168 void rememberReader();
169 [[nodiscard]] bool remembersReader() const;
170 [[nodiscard]] bool isExpectedReader() const;
171 [[nodiscard]] const ReaderInfo& getExpectedReader() const;
172
173 [[nodiscard]] int getExpectedRetryCounter() const;
174 void setExpectedRetryCounter(int pExpectedRetryCounter);
175
176 [[nodiscard]] const GlobalStatus& getStatus() const;
177 void setStatus(const GlobalStatus& pResult);
178
179 [[nodiscard]] std::optional<FailureCode> getFailureCode() const;
180 void setFailureCode(const FailureCode& pFailure);
181
182 [[nodiscard]] const ECardApiResult& getStartPaosResult() const;
183 void setStartPaosResult(const ECardApiResult& pStartPaosResult);
184
185 [[nodiscard]] bool isWorkflowFinished() const;
186 void setWorkflowFinished(bool pWorkflowFinished);
187
188 [[nodiscard]] bool isWorkflowCancelled() const;
189 [[nodiscard]] bool isWorkflowCancelledInState() const;
190 void setWorkflowCancelledInState();
191
192 [[nodiscard]] virtual bool isCanAllowedMode() const;
193
194 [[nodiscard]] bool hasNextWorkflowPending() const;
195 void setNextWorkflowPending(bool pNextWorkflowPending);
196
197 [[nodiscard]] bool currentReaderHasEidCardButInsufficientApduLength() const;
198 void setCurrentReaderHasEidCardButInsufficientApduLength(bool pState);
199
200 [[nodiscard]] bool skipStartScan() const;
201 void setSkipStartScan(bool pState);
202
203 [[nodiscard]] int getProgressValue() const
204 {
205 return mProgressValue;
206 }
207
208
209 [[nodiscard]] const QString& getProgressMessage() const
210 {
211 return mProgressMessage;
212 }
213
214
215 void setProgress(int pValue, const QString& pMessage);
216
217 [[nodiscard]] bool showRemoveCardFeedback() const
218 {
219 return mShowRemoveCardFeedback;
220 }
221
222
223 void setInterruptRequested(bool pInterruptRequested);
224 [[nodiscard]] bool interruptRequested() const
225 {
226 return mInterruptRequested;
227 }
228
229
230 void setRemoveCardFeedback(bool pEnabled);
231
232 [[nodiscard]] virtual QList<AcceptedEidType> getAcceptedEidTypes() const = 0;
233
234 [[nodiscard]] bool eidTypeMismatch() const;
235 [[nodiscard]] bool isMobileEidTypeAllowed(const MobileEidType& mobileEidType) const;
236};
237
238} // namespace governikus
#define defineEnumType(enumName,...)
Definition EnumHelper.h:90
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:16
PERSONALIZATION
Definition MsgTypes.h:33
AUTH
Definition MsgTypes.h:32