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
70 private Q_SLOTS:
71 void onWorkflowCancelled();
72
73 Q_SIGNALS:
74 void fireStateApprovedChanged(bool pApproved);
75 void fireStateChanged(const QString& pNewState);
76 void fireReaderPlugInTypesChanged();
77 void fireReaderInfoChanged();
78 void fireReaderNameChanged();
79 void fireCardConnectionChanged();
80 void fireIsSmartCardAllowedChanged();
81 void fireCanChanged();
82 void firePinChanged();
83 void firePukChanged();
84 void firePaceResultUpdated();
85 void fireResultChanged();
86 void fireCanAllowedModeChanged();
87 void firePasswordTypeChanged();
88 void fireProgressChanged();
89 void fireRemoveCardFeedbackChanged();
90
91 void fireCancelWorkflow();
92
93 void fireNextWorkflowPending();
94
95 public:
96 explicit WorkflowContext(const Action mAction);
97 ~WorkflowContext() override;
98
99 [[nodiscard]] Action getAction() const
100 {
101 return mAction;
102 }
103
104
105 [[nodiscard]] bool wasClaimed() const;
106 void claim(const QObject* pClaimant);
107
108 [[nodiscard]] bool isErrorReportedToUser() const;
109 void setErrorReportedToUser(bool pErrorReportedToUser = true);
110
111 [[nodiscard]] bool isPaceResultReportedToUser() const;
112 void setPaceResultReportedToUser(bool pReported = true);
113
114 void setStateApproved(bool pApproved = true);
115 [[nodiscard]] bool isStateApproved() const;
116
117 void killWorkflow(GlobalStatus::Code pCode = GlobalStatus::Code::Workflow_Cancellation_By_User);
118 [[nodiscard]] bool isWorkflowKilled() const;
119
120 [[nodiscard]] const QString& getCurrentState() const;
121 void setCurrentState(const QString& pNewState);
122
123 [[nodiscard]] bool isSmartCardUsed() const;
124
125 [[nodiscard]] const QVector<ReaderManagerPlugInType>& getReaderPlugInTypes() const;
126 void setReaderPlugInTypes(const QVector<ReaderManagerPlugInType>& pReaderPlugInTypes);
127
128 [[nodiscard]] const QString& getReaderName() const;
129 void setReaderName(const QString& pReaderName);
130
131 [[nodiscard]] const QSharedPointer<CardConnection>& getCardConnection() const;
132 void setCardConnection(const QSharedPointer<CardConnection>& pCardConnection);
133 void resetCardConnection();
134
135 [[nodiscard]] bool isNpaRepositioningRequired() const;
136 void setNpaPositionVerified();
137 void handleWrongNpaPosition();
138
139 [[nodiscard]] virtual bool isRequestTransportPin() const;
140
141 [[nodiscard]] const QString& getPuk() const;
142 void setPuk(const QString& pPuk);
143
144 [[nodiscard]] const QString& getCan() const;
145 void setCan(const QString& pCan);
146
147 [[nodiscard]] const QString& getPin() const;
148 void setPin(const QString& pPin);
149
150 [[nodiscard]] PacePasswordId getEstablishPaceChannelType() const;
151 void setEstablishPaceChannelType(PacePasswordId pType);
152
153 virtual void resetPacePasswords();
154
155 [[nodiscard]] EstablishPaceChannelOutput* getPaceOutputData() const;
156 void setPaceOutputData(const EstablishPaceChannelOutput& pPaceOutputData);
157
158 bool isPinBlocked();
159 [[nodiscard]] CardReturnCode getLastPaceResult() const;
160 void setLastPaceResult(CardReturnCode pLastPaceResult);
161 void resetLastPaceResult();
162
163 void rememberReader();
164 [[nodiscard]] bool remembersReader() const;
165 [[nodiscard]] bool isExpectedReader() const;
166 [[nodiscard]] const ReaderInfo& getExpectedReader() const;
167
168 [[nodiscard]] int getExpectedRetryCounter() const;
169 void setExpectedRetryCounter(int pExpectedRetryCounter);
170
171 [[nodiscard]] const GlobalStatus& getStatus() const;
172 void setStatus(const GlobalStatus& pResult);
173
174 [[nodiscard]] std::optional<FailureCode> getFailureCode() const;
175 void setFailureCode(const FailureCode& pFailure);
176
177 [[nodiscard]] const ECardApiResult& getStartPaosResult() const;
178 void setStartPaosResult(const ECardApiResult& pStartPaosResult);
179
180 [[nodiscard]] bool isWorkflowFinished() const;
181 void setWorkflowFinished(bool pWorkflowFinished);
182
183 [[nodiscard]] bool isWorkflowCancelled() const;
184 [[nodiscard]] bool isWorkflowCancelledInState() const;
185 void setWorkflowCancelledInState();
186
187 [[nodiscard]] virtual bool isCanAllowedMode() const;
188
189 [[nodiscard]] bool hasNextWorkflowPending() const;
190 void setNextWorkflowPending(bool pNextWorkflowPending);
191
192 [[nodiscard]] bool currentReaderHasEidCardButInsufficientApduLength() const;
193 void setCurrentReaderHasEidCardButInsufficientApduLength(bool pState);
194
195 [[nodiscard]] bool skipStartScan() const;
196 void setSkipStartScan(bool pState);
197
198 [[nodiscard]] int getProgressValue() const
199 {
200 return mProgressValue;
201 }
202
203
204 [[nodiscard]] const QString& getProgressMessage() const
205 {
206 return mProgressMessage;
207 }
208
209
210 void setProgress(int pValue, const QString& pMessage);
211
212 [[nodiscard]] bool showRemoveCardFeedback() const
213 {
214 return mShowRemoveCardFeedback;
215 }
216
217
218 void setRemoveCardFeedback(bool pEnabled);
219
220 [[nodiscard]] virtual QVector<AcceptedEidType> getAcceptedEidTypes() const = 0;
221
222 bool isPhysicalCardRequired() const;
223};
224
225} // 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