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{
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 mWorkflowFinished;
59 bool mWorkflowCancelled;
60 bool mWorkflowCancelledInState;
61 bool mNextWorkflowPending;
62 bool mCurrentReaderHasEidCardButInsufficientApduLength;
63 bool mSkipStartScan;
64 int mProgressValue;
65 QString mProgressMessage;
66 bool mShowRemoveCardFeedback;
67 QString mClaimedBy;
68 bool mInterruptRequested;
69 bool mInitialInputErrorShown;
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 void fireInitialInputErrorShownChanged();
93
94 void fireCancelWorkflow();
95
96 void fireNextWorkflowPending();
97
98 public:
99 explicit WorkflowContext(const Action mAction, bool pActivateUi = true);
100 ~WorkflowContext() override;
101
102 [[nodiscard]] Action getAction() const
103 {
104 return mAction;
105 }
106
107
108 [[nodiscard]] bool isActivateUi() const
109 {
110 return mActivateUi;
111 }
112
113
114 [[nodiscard]] bool wasClaimed() const;
115 void claim(const QObject* pClaimant);
116
117 void setStateApproved(bool pApproved = true);
118 [[nodiscard]] bool isStateApproved() const;
119
120 void killWorkflow(GlobalStatus::Code pCode = GlobalStatus::Code::Workflow_Cancellation_By_User);
121 [[nodiscard]] bool isWorkflowKilled() const;
122
123 [[nodiscard]] const QString& getCurrentState() const;
124 void setCurrentState(const QString& pNewState);
125
126 [[nodiscard]] bool isSmartCardUsed() const;
127
128 [[nodiscard]] const QList<ReaderManagerPluginType>& getReaderPluginTypes() const;
129 void setReaderPluginTypes(const QList<ReaderManagerPluginType>& pReaderPluginTypes);
130
131 [[nodiscard]] const QString& getReaderName() const;
132 void setReaderName(const QString& pReaderName);
133
134 [[nodiscard]] const QSharedPointer<CardConnection>& getCardConnection() const;
135 void setCardConnection(const QSharedPointer<CardConnection>& pCardConnection);
136 void resetCardConnection();
137
138 [[nodiscard]] bool isNpaRepositioningRequired() const;
139 void setNpaPositionVerified();
140 void handleWrongNpaPosition();
141
142 [[nodiscard]] virtual bool isRequestTransportPin() const;
143
144 [[nodiscard]] const QString& getPuk() const;
145 void setPuk(const QString& pPuk);
146
147 [[nodiscard]] const QString& getCan() const;
148 void setCan(const QString& pCan);
149
150 [[nodiscard]] const QString& getPin() const;
151 void setPin(const QString& pPin);
152
153 [[nodiscard]] PacePasswordId getEstablishPaceChannelType() const;
154 void setEstablishPaceChannelType(PacePasswordId pType);
155
156 virtual void resetPacePasswords();
157
158 [[nodiscard]] EstablishPaceChannelOutput* getPaceOutputData() const;
159 void setPaceOutputData(const EstablishPaceChannelOutput& pPaceOutputData);
160
161 bool isPinBlocked();
162 [[nodiscard]] CardReturnCode getLastPaceResult() const;
163 void setLastPaceResult(CardReturnCode pLastPaceResult);
164 void resetLastPaceResult();
165
166 void rememberReader();
167 [[nodiscard]] bool remembersReader() const;
168 [[nodiscard]] bool isExpectedReader() const;
169 [[nodiscard]] const ReaderInfo& getExpectedReader() const;
170
171 [[nodiscard]] int getExpectedRetryCounter() const;
172 void setExpectedRetryCounter(int pExpectedRetryCounter);
173
174 [[nodiscard]] const GlobalStatus& getStatus() const;
175 void setStatus(const GlobalStatus& pResult);
176
177 [[nodiscard]] std::optional<FailureCode> getFailureCode() const;
178 void setFailureCode(const FailureCode& pFailure);
179
180 [[nodiscard]] const ECardApiResult& getStartPaosResult() const;
181 void setStartPaosResult(const ECardApiResult& pStartPaosResult);
182
183 [[nodiscard]] bool isWorkflowFinished() const;
184 void setWorkflowFinished(bool pWorkflowFinished);
185
186 [[nodiscard]] bool isWorkflowCancelled() const;
187 [[nodiscard]] bool isWorkflowCancelledInState() const;
188 void setWorkflowCancelledInState();
189
190 [[nodiscard]] virtual bool isCanAllowedMode() const;
191
192 [[nodiscard]] bool hasNextWorkflowPending() const;
193 void setNextWorkflowPending(bool pNextWorkflowPending);
194
195 [[nodiscard]] bool currentReaderHasEidCardButInsufficientApduLength() const;
196 void setCurrentReaderHasEidCardButInsufficientApduLength(bool pState);
197
198 [[nodiscard]] bool skipStartScan() const;
199 void setSkipStartScan(bool pState);
200
201 [[nodiscard]] int getProgressValue() const
202 {
203 return mProgressValue;
204 }
205
206
207 [[nodiscard]] const QString& getProgressMessage() const
208 {
209 return mProgressMessage;
210 }
211
212
213 void setProgress(int pValue, const QString& pMessage);
214
215 [[nodiscard]] bool showRemoveCardFeedback() const
216 {
217 return mShowRemoveCardFeedback;
218 }
219
220
221 void setInterruptRequested(bool pInterruptRequested);
222 [[nodiscard]] bool interruptRequested() const
223 {
224 return mInterruptRequested;
225 }
226
227
228 void setRemoveCardFeedback(bool pEnabled);
229
230 [[nodiscard]] virtual QList<AcceptedEidType> getAcceptedEidTypes() const = 0;
231
232 [[nodiscard]] bool eidTypeMismatch() const;
233 [[nodiscard]] bool isMobileEidTypeAllowed(const MobileEidType& mobileEidType) const;
234
235 [[nodiscard]] bool isInitialInputErrorShown() const;
236 void setInitialInputErrorShown();
237};
238
239} // namespace governikus
#define defineEnumType(enumName,...)
Definition EnumHelper.h:85
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:17
PERSONALIZATION
Definition MsgTypes.h:34
AUTH
Definition MsgTypes.h:33
QSharedPointer< T > decodeObject(const QByteArray &pData, bool pLogging=true)
Template function for decoding an OpenSSL type from DER encoded QByteArray.
Definition ASN1TemplateUtil.h:114