AusweisApp2
Lade ...
Suche ...
Keine Treffer
StateGenericSendReceive.h
gehe zur Dokumentation dieser Datei
1
5#pragma once
6
7#include "AbstractState.h"
10#include "paos/PaosMessage.h"
11#include "paos/PaosType.h"
13
14#include <QSharedPointer>
15#include <QSslPreSharedKeyAuthenticator>
16#include <QVector>
17#include <optional>
18
19class test_StateGenericSendReceive;
20
21namespace governikus
22{
23
25 : public AbstractState
26 , public GenericContextContainer<AuthContext>
27{
28 Q_OBJECT
29 friend class ::test_StateGenericSendReceive;
30
31 private:
32 const PaosType mExpectedResponseType;
33 const QVector<PaosType> mOtherResponseTypes;
34 const bool mPersonalization;
35 QSharedPointer<QNetworkReply> mReply;
36
37 void setReceivedMessage(const QSharedPointer<PaosMessage>& pMessage);
38 std::optional<FailureCode> checkSslConnectionAndSaveCertificate(const QSslConfiguration& pSslConfiguration);
39 void onSslErrors(const QList<QSslError>& pErrors);
40 void onSslHandshakeDone();
41 void run() override;
42
43 protected:
45 const QSharedPointer<WorkflowContext>& pContext,
46 PaosType pExpectedResponseType,
47 const QVector<PaosType>& pOtherResponseTypes = {},
48 bool pPersonalization = false);
49
50 virtual QSharedPointer<ResponseType> getAsResponse() = 0;
51 virtual QSharedPointer<PaosCreator> getAsCreator() = 0;
52 virtual void emitStateMachineSignal(PaosType pResponseType);
53
54 private Q_SLOTS:
55 void onReplyFinished();
56 void onPreSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator* pAuthenticator);
57
58 public:
59 void onExit(QEvent* pEvent) override;
60};
61
64{
65 Q_OBJECT
66 friend class StateBuilder;
67
68 private:
69 explicit StateSendStartPaos(const QSharedPointer<WorkflowContext>& pContext)
70 : StateGenericSendReceive(pContext,
71 PaosType::INITIALIZE_FRAMEWORK,
72 {
73 PaosType::DID_AUTHENTICATE_EAC1,
74 PaosType::STARTPAOS_RESPONSE
75 })
76 {
77 }
78
79 protected:
80 QSharedPointer<ResponseType> getAsResponse() override
81 {
82 return QSharedPointer<ResponseType>();
83 }
84
85
86 QSharedPointer<PaosCreator> getAsCreator() override
87 {
88 return getContext()->getStartPaos();
89 }
90
91
92 void emitStateMachineSignal(PaosType pResponseType) override
93 {
94 if (pResponseType == PaosType::DID_AUTHENTICATE_EAC1)
95 {
97 }
98 else if (pResponseType == PaosType::STARTPAOS_RESPONSE)
99 {
101 }
102 }
103
104 Q_SIGNALS:
107
108
109};
110
113{
114 Q_OBJECT
115 friend class StateBuilder;
116
117 private:
118 explicit StateSendInitializeFrameworkResponse(const QSharedPointer<WorkflowContext>& pContext)
119 : StateGenericSendReceive(pContext,
120 PaosType::DID_AUTHENTICATE_EAC1,
121 {
122 PaosType::STARTPAOS_RESPONSE
123 })
124 {
125 }
126
127 protected:
128 QSharedPointer<ResponseType> getAsResponse() override
129 {
130 return getContext()->getInitializeFrameworkResponse();
131 }
132
133
134 QSharedPointer<PaosCreator> getAsCreator() override
135 {
136 return getContext()->getInitializeFrameworkResponse();
137 }
138
139
140 void emitStateMachineSignal(PaosType pResponseType) override
141 {
142 if (pResponseType == PaosType::STARTPAOS_RESPONSE)
143 {
145 }
146 }
147
148 Q_SIGNALS:
150
151
152};
153
156{
157 Q_OBJECT
158 friend class StateBuilder;
159
160 private:
161 explicit StateSendDIDAuthenticateResponseEAC1(const QSharedPointer<WorkflowContext>& pContext)
162 : StateGenericSendReceive(pContext,
163 PaosType::DID_AUTHENTICATE_EAC2,
164 {
165 PaosType::STARTPAOS_RESPONSE
166 })
167 {
169 }
170
171 protected:
172 QSharedPointer<ResponseType> getAsResponse() override
173 {
174 return getContext()->getDidAuthenticateResponseEac1();
175 }
176
177
178 QSharedPointer<PaosCreator> getAsCreator() override
179 {
180 return getContext()->getDidAuthenticateResponseEac1();
181 }
182
183
184};
185
188{
189 Q_OBJECT
190 friend class StateBuilder;
191
192 private:
193 explicit StateSendDIDAuthenticateResponseEACAdditionalInputType(const QSharedPointer<WorkflowContext>& pContext)
194 : StateGenericSendReceive(pContext,
195 PaosType::DID_AUTHENTICATE_EAC_ADDITIONAL_INPUT_TYPE,
196 {
197 PaosType::STARTPAOS_RESPONSE
198 })
199 {
201 }
202
203 protected:
204 QSharedPointer<ResponseType> getAsResponse() override
205 {
206 return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
207 }
208
209
210 QSharedPointer<PaosCreator> getAsCreator() override
211 {
212 return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
213 }
214
215
216};
217
220{
221 Q_OBJECT
222 friend class StateBuilder;
223
224 private:
225 explicit StateSendDIDAuthenticateResponseEAC2(const QSharedPointer<WorkflowContext>& pContext)
226 : StateGenericSendReceive(pContext,
227 PaosType::TRANSMIT,
228 {
229 PaosType::STARTPAOS_RESPONSE
230 })
231 {
233 }
234
235 protected:
236 QSharedPointer<ResponseType> getAsResponse() override
237 {
238 return getContext()->getDidAuthenticateResponseEac2();
239 }
240
241
242 QSharedPointer<PaosCreator> getAsCreator() override
243 {
244 return getContext()->getDidAuthenticateResponseEac2();
245 }
246
247
248};
249
252{
253 Q_OBJECT
254 friend class StateBuilder;
255
256 private:
257 explicit StateSendTransmitResponse(const QSharedPointer<WorkflowContext>& pContext)
258 : StateGenericSendReceive(pContext,
259 PaosType::STARTPAOS_RESPONSE,
260 {
261 PaosType::TRANSMIT
262 })
263 {
265 }
266
267 protected:
268 QSharedPointer<ResponseType> getAsResponse() override
269 {
270 return getContext()->getTransmitResponse();
271 }
272
273
274 QSharedPointer<PaosCreator> getAsCreator() override
275 {
276 return getContext()->getTransmitResponse();
277 }
278
279
280 void emitStateMachineSignal(PaosType pResponseType) override
281 {
282 if (pResponseType == PaosType::TRANSMIT)
283 {
284 Q_EMIT fireReceivedTransmit();
285 }
286 }
287
288 Q_SIGNALS:
290
291};
292
293} // namespace governikus
Definition: AbstractState.h:23
void setAbortOnCardRemoved()
Definition: AbstractState.cpp:34
Definition: GenericContextContainer.h:22
QSharedPointer< AuthContext > getContext() const
Definition: GenericContextContainer.h:34
Definition: StateBuilder.h:20
Definition: StateGenericSendReceive.h:27
virtual void emitStateMachineSignal(PaosType pResponseType)
Definition: StateGenericSendReceive.cpp:36
virtual QSharedPointer< PaosCreator > getAsCreator()=0
virtual QSharedPointer< ResponseType > getAsResponse()=0
void onExit(QEvent *pEvent) override
Definition: StateGenericSendReceive.cpp:164
Definition: StateGenericSendReceive.h:156
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:172
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:178
Definition: StateGenericSendReceive.h:220
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:236
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:242
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:204
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:210
Definition: StateGenericSendReceive.h:113
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:128
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:134
void emitStateMachineSignal(PaosType pResponseType) override
Definition: StateGenericSendReceive.h:140
Definition: StateGenericSendReceive.h:64
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:86
void emitStateMachineSignal(PaosType pResponseType) override
Definition: StateGenericSendReceive.h:92
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:80
Definition: StateGenericSendReceive.h:252
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:268
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:274
void emitStateMachineSignal(PaosType pResponseType) override
Definition: StateGenericSendReceive.h:280
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16