18#include <QElapsedTimer>
19#include <QSharedPointer>
39 const bool mActivateUi;
42 QString mCurrentState;
43 QList<ReaderManagerPluginType> mReaderPluginTypes;
45 QSharedPointer<CardConnection> mCardConnection;
46 int mCardVanishedDuringPacePinCount;
47 QElapsedTimer mCardVanishedDuringPacePinTimer;
51 PacePasswordId mEstablishPaceChannelType;
52 QScopedPointer<EstablishPaceChannelOutput> mPaceOutputData;
53 ReaderInfo mExpectedReader;
54 CardReturnCode mLastPaceResult;
56 std::optional<FailureCode> mFailureCode;
57 ECardApiResult mStartPaosResult;
58 bool mWorkflowFinished;
59 bool mWorkflowCancelled;
60 bool mWorkflowCancelledInState;
61 bool mNextWorkflowPending;
62 bool mCurrentReaderHasEidCardButInsufficientApduLength;
65 QString mProgressMessage;
66 bool mShowRemoveCardFeedback;
68 bool mInterruptRequested;
69 bool mInitialInputErrorShown;
72 void onWorkflowCancelled();
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();
94 void fireCancelWorkflow();
96 void fireNextWorkflowPending();
99 explicit WorkflowContext(
const Action mAction,
bool pActivateUi =
true);
100 ~WorkflowContext()
override;
102 [[nodiscard]] Action getAction()
const
108 [[nodiscard]]
bool isActivateUi()
const
114 [[nodiscard]]
bool wasClaimed()
const;
115 void claim(
const QObject* pClaimant);
117 void setStateApproved(
bool pApproved =
true);
118 [[nodiscard]]
bool isStateApproved()
const;
120 void killWorkflow(GlobalStatus::Code pCode = GlobalStatus::Code::Workflow_Cancellation_By_User);
121 [[nodiscard]]
bool isWorkflowKilled()
const;
123 [[nodiscard]]
const QString& getCurrentState()
const;
124 void setCurrentState(
const QString& pNewState);
126 [[nodiscard]]
bool isSmartCardUsed()
const;
128 [[nodiscard]]
const QList<ReaderManagerPluginType>& getReaderPluginTypes()
const;
129 void setReaderPluginTypes(
const QList<ReaderManagerPluginType>& pReaderPluginTypes);
131 [[nodiscard]]
const QString& getReaderName()
const;
132 void setReaderName(
const QString& pReaderName);
134 [[nodiscard]]
const QSharedPointer<CardConnection>& getCardConnection()
const;
135 void setCardConnection(
const QSharedPointer<CardConnection>& pCardConnection);
136 void resetCardConnection();
138 [[nodiscard]]
bool isNpaRepositioningRequired()
const;
139 void setNpaPositionVerified();
140 void handleWrongNpaPosition();
142 [[nodiscard]]
virtual bool isRequestTransportPin()
const;
144 [[nodiscard]]
const QString& getPuk()
const;
145 void setPuk(
const QString& pPuk);
147 [[nodiscard]]
const QString& getCan()
const;
148 void setCan(
const QString& pCan);
150 [[nodiscard]]
const QString& getPin()
const;
151 void setPin(
const QString& pPin);
153 [[nodiscard]] PacePasswordId getEstablishPaceChannelType()
const;
154 void setEstablishPaceChannelType(PacePasswordId pType);
156 virtual void resetPacePasswords();
158 [[nodiscard]] EstablishPaceChannelOutput* getPaceOutputData()
const;
159 void setPaceOutputData(
const EstablishPaceChannelOutput& pPaceOutputData);
162 [[nodiscard]] CardReturnCode getLastPaceResult()
const;
163 void setLastPaceResult(CardReturnCode pLastPaceResult);
164 void resetLastPaceResult();
166 void rememberReader();
167 [[nodiscard]]
bool remembersReader()
const;
168 [[nodiscard]]
bool isExpectedReader()
const;
169 [[nodiscard]]
const ReaderInfo& getExpectedReader()
const;
171 [[nodiscard]]
int getExpectedRetryCounter()
const;
172 void setExpectedRetryCounter(
int pExpectedRetryCounter);
174 [[nodiscard]]
const GlobalStatus& getStatus()
const;
175 void setStatus(
const GlobalStatus& pResult);
177 [[nodiscard]] std::optional<FailureCode> getFailureCode()
const;
178 void setFailureCode(
const FailureCode& pFailure);
180 [[nodiscard]]
const ECardApiResult& getStartPaosResult()
const;
181 void setStartPaosResult(
const ECardApiResult& pStartPaosResult);
183 [[nodiscard]]
bool isWorkflowFinished()
const;
184 void setWorkflowFinished(
bool pWorkflowFinished);
186 [[nodiscard]]
bool isWorkflowCancelled()
const;
187 [[nodiscard]]
bool isWorkflowCancelledInState()
const;
188 void setWorkflowCancelledInState();
190 [[nodiscard]]
virtual bool isCanAllowedMode()
const;
192 [[nodiscard]]
bool hasNextWorkflowPending()
const;
193 void setNextWorkflowPending(
bool pNextWorkflowPending);
195 [[nodiscard]]
bool currentReaderHasEidCardButInsufficientApduLength()
const;
196 void setCurrentReaderHasEidCardButInsufficientApduLength(
bool pState);
198 [[nodiscard]]
bool skipStartScan()
const;
199 void setSkipStartScan(
bool pState);
201 [[nodiscard]]
int getProgressValue()
const
203 return mProgressValue;
207 [[nodiscard]]
const QString& getProgressMessage()
const
209 return mProgressMessage;
213 void setProgress(
int pValue,
const QString& pMessage);
215 [[nodiscard]]
bool showRemoveCardFeedback()
const
217 return mShowRemoveCardFeedback;
221 void setInterruptRequested(
bool pInterruptRequested);
222 [[nodiscard]]
bool interruptRequested()
const
224 return mInterruptRequested;
228 void setRemoveCardFeedback(
bool pEnabled);
230 [[nodiscard]]
virtual QList<AcceptedEidType> getAcceptedEidTypes()
const = 0;
232 [[nodiscard]]
bool eidTypeMismatch()
const;
233 [[nodiscard]]
bool isMobileEidTypeAllowed(
const MobileEidType& mobileEidType)
const;
235 [[nodiscard]]
bool isInitialInputErrorShown()
const;
236 void setInitialInputErrorShown();
#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