AusweisApp2
StateGenericSendReceive.h
gehe zur Dokumentation dieser Datei
1 
5 #pragma once
6 
7 #include "AbstractState.h"
8 #include "context/AuthContext.h"
11 #include "paos/PaosMessage.h"
12 #include "paos/PaosType.h"
13 
14 #include <QSharedPointer>
15 #include <QSslPreSharedKeyAuthenticator>
16 #include <QVector>
17 
18 class test_StateGenericSendReceive;
19 
20 namespace governikus
21 {
22 
24  : public AbstractState
25  , public GenericContextContainer<AuthContext>
26 {
27  Q_OBJECT
28 
29  private:
30  friend class ::test_StateGenericSendReceive;
31  const QVector<PaosType> mTypesToReceive;
32  QSharedPointer<QNetworkReply> mReply;
33 
34  void setReceivedMessage(const QSharedPointer<PaosMessage>& pMessage);
35  GlobalStatus::Code checkAndSaveCertificate(const QSslCertificate& pCertificate);
36  void onSslErrors(const QList<QSslError>& pErrors);
37  void onSslHandshakeDone();
38  void run() override;
39 
40  protected:
41  explicit StateGenericSendReceive(const QSharedPointer<WorkflowContext>& pContext, const QVector<PaosType>& pTypesToReceive, bool pConnectOnCardRemoved = true);
42  explicit StateGenericSendReceive(const QSharedPointer<WorkflowContext>& pContext, PaosType pTypesToReceive);
43 
44  virtual QSharedPointer<PaosMessage> getAsMessage() = 0;
45  virtual QSharedPointer<ResponseType> getAsResponse() = 0;
46  virtual QSharedPointer<PaosCreator> getAsCreator() = 0;
47  virtual void emitStateMachineSignal(int result) = 0;
48 
49  private Q_SLOTS:
50  void onReplyFinished();
51  void onPreSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator* pAuthenticator);
52 
53  public:
54  void onExit(QEvent* pEvent) override;
55 };
56 
59 {
60  Q_OBJECT
61  friend class StateBuilder;
62 
63  explicit StateSendStartPaos(const QSharedPointer<WorkflowContext>& pContext)
64  : StateGenericSendReceive(pContext, QVector<PaosType>
65  {
66  PaosType::INITIALIZE_FRAMEWORK, PaosType::DID_LIST,
67  PaosType::DID_AUTHENTICATE_EAC1, PaosType::STARTPAOS_RESPONSE
68  }, false)
69  {
70  }
71 
72  protected:
73  QSharedPointer<PaosMessage> getAsMessage() override
74  {
75  return getContext()->getStartPaos();
76  }
77 
78 
79  QSharedPointer<ResponseType> getAsResponse() override
80  {
81  return QSharedPointer<ResponseType>();
82  }
83 
84 
85  QSharedPointer<PaosCreator> getAsCreator() override
86  {
87  return getContext()->getStartPaos();
88  }
89 
90 
91  void emitStateMachineSignal(int pResult) override
92  {
93  if (pResult == 3)
94  {
95  Q_EMIT fireReceivedDidList();
96  }
97  else if (pResult == 4)
98  {
100  }
101  else if (pResult == 5)
102  {
104  }
105  }
106 
107  Q_SIGNALS:
108  void fireReceivedDidList();
111 
112 
113 };
114 
116  : public StateGenericSendReceive
117 {
118  Q_OBJECT
119  friend class StateBuilder;
120 
121  explicit StateSendInitializeFrameworkResponse(const QSharedPointer<WorkflowContext>& pContext)
122  : StateGenericSendReceive(pContext, QVector<PaosType>
123  {
124  PaosType::DID_LIST, PaosType::DID_AUTHENTICATE_EAC1, PaosType::STARTPAOS_RESPONSE
125  }, false)
126  {
127  }
128 
129  protected:
130  QSharedPointer<PaosMessage> getAsMessage() override
131  {
132  return getContext()->getInitializeFrameworkResponse();
133  }
134 
135 
136  QSharedPointer<ResponseType> getAsResponse() override
137  {
138  return getContext()->getInitializeFrameworkResponse();
139  }
140 
141 
142  QSharedPointer<PaosCreator> getAsCreator() override
143  {
144  return getContext()->getInitializeFrameworkResponse();
145  }
146 
147 
148  void emitStateMachineSignal(int pResult) override
149  {
150  if (pResult == 3)
151  {
153  }
154  else if (pResult == 4)
155  {
157  }
158  }
159 
160  Q_SIGNALS:
163 
164 
165 };
166 
168  : public StateGenericSendReceive
169 {
170  Q_OBJECT
171  friend class StateBuilder;
172 
173  explicit StateSendDIDListResponse(const QSharedPointer<WorkflowContext>& pContext)
174  : StateGenericSendReceive(pContext, QVector<PaosType>
175  {
176  PaosType::DID_AUTHENTICATE_EAC1, PaosType::DISCONNECT, PaosType::STARTPAOS_RESPONSE
177  }, false)
178  {
179  }
180 
181  protected:
182  QSharedPointer<PaosMessage> getAsMessage() override
183  {
184  return getContext()->getDidListResponse();
185  }
186 
187 
188  QSharedPointer<ResponseType> getAsResponse() override
189  {
190  return getContext()->getDidListResponse();
191  }
192 
193 
194  QSharedPointer<PaosCreator> getAsCreator() override
195  {
196  return getContext()->getDidListResponse();
197  }
198 
199 
200  void emitStateMachineSignal(int pResult) override
201  {
202  if (pResult == 3)
203  {
204  Q_EMIT fireReceivedDisconnect();
205  }
206  else if (pResult == 4)
207  {
209  }
210  }
211 
212  Q_SIGNALS:
213  void fireReceivedDisconnect();
215 
216 };
217 
219  : public StateGenericSendReceive
220 {
221  Q_OBJECT
222  friend class StateBuilder;
223 
224  explicit StateSendDIDAuthenticateResponseEAC1(const QSharedPointer<WorkflowContext>& pContext)
225  : StateGenericSendReceive(pContext, QVector<PaosType>
226  {
227  PaosType::DID_AUTHENTICATE_EAC2, PaosType::DISCONNECT, PaosType::STARTPAOS_RESPONSE
228  })
229  {
230  }
231 
232  protected:
233  QSharedPointer<PaosMessage> getAsMessage() override
234  {
235  return getContext()->getDidAuthenticateResponseEac1();
236  }
237 
238 
239  QSharedPointer<ResponseType> getAsResponse() override
240  {
241  return getContext()->getDidAuthenticateResponseEac1();
242  }
243 
244 
245  QSharedPointer<PaosCreator> getAsCreator() override
246  {
247  return getContext()->getDidAuthenticateResponseEac1();
248  }
249 
250 
251  void emitStateMachineSignal(int pResult) override
252  {
253  if (pResult == 3)
254  {
255  Q_EMIT fireReceivedDisconnect();
256  }
257  else if (pResult == 4)
258  {
260  }
261  }
262 
263  Q_SIGNALS:
264  void fireReceivedDisconnect();
266 
267 };
268 
270  : public StateGenericSendReceive
271 {
272  Q_OBJECT
273  friend class StateBuilder;
274 
275  explicit StateSendDIDAuthenticateResponseEACAdditionalInputType(const QSharedPointer<WorkflowContext>& pContext)
276  : StateGenericSendReceive(pContext, QVector<PaosType>
277  {
278  PaosType::DID_AUTHENTICATE_EAC_ADDITIONAL_INPUT_TYPE, PaosType::STARTPAOS_RESPONSE
279  })
280  {
281  }
282 
283  protected:
284  QSharedPointer<PaosMessage> getAsMessage() override
285  {
286  return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
287  }
288 
289 
290  QSharedPointer<ResponseType> getAsResponse() override
291  {
292  return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
293  }
294 
295 
296  QSharedPointer<PaosCreator> getAsCreator() override
297  {
298  return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
299  }
300 
301 
302  void emitStateMachineSignal(int pResult) override
303  {
304  if (pResult == 3)
305  {
307  }
308  }
309 
310  Q_SIGNALS:
312 
313 };
314 
316  : public StateGenericSendReceive
317 {
318  Q_OBJECT
319  friend class StateBuilder;
320 
321  explicit StateSendDIDAuthenticateResponseEAC2(const QSharedPointer<WorkflowContext>& pContext)
322  : StateGenericSendReceive(pContext, QVector<PaosType>
323  {
324  PaosType::TRANSMIT, PaosType::DISCONNECT, PaosType::STARTPAOS_RESPONSE
325  })
326  {
327  }
328 
329  protected:
330  QSharedPointer<PaosMessage> getAsMessage() override
331  {
332  return getContext()->getDidAuthenticateResponseEac2();
333  }
334 
335 
336  QSharedPointer<ResponseType> getAsResponse() override
337  {
338  return getContext()->getDidAuthenticateResponseEac2();
339  }
340 
341 
342  QSharedPointer<PaosCreator> getAsCreator() override
343  {
344  return getContext()->getDidAuthenticateResponseEac2();
345  }
346 
347 
348  void emitStateMachineSignal(int pResult) override
349  {
350  if (pResult == 3)
351  {
352  Q_EMIT fireReceivedDisconnect();
353  }
354  else if (pResult == 4)
355  {
357  }
358  }
359 
360  Q_SIGNALS:
361  void fireReceivedDisconnect();
363 
364 };
365 
367  : public StateGenericSendReceive
368 {
369  Q_OBJECT
370  friend class StateBuilder;
371 
372  explicit StateSendTransmitResponse(const QSharedPointer<WorkflowContext>& pContext)
373  : StateGenericSendReceive(pContext, QVector<PaosType>
374  {
375  PaosType::TRANSMIT, PaosType::DISCONNECT, PaosType::STARTPAOS_RESPONSE
376  })
377  {
378  }
379 
380  protected:
381  QSharedPointer<PaosMessage> getAsMessage() override
382  {
383  return getContext()->getTransmitResponses().constLast();
384  }
385 
386 
387  QSharedPointer<ResponseType> getAsResponse() override
388  {
389  return getContext()->getTransmitResponses().constLast();
390  }
391 
392 
393  QSharedPointer<PaosCreator> getAsCreator() override
394  {
395  return getContext()->getTransmitResponses().constLast();
396  }
397 
398 
399  void emitStateMachineSignal(int pResult) override
400  {
401  if (pResult == 3)
402  {
403  Q_EMIT fireReceivedDisconnect();
404  }
405  else if (pResult == 4)
406  {
408  }
409  }
410 
411  Q_SIGNALS:
412  void fireReceivedDisconnect();
414 
415 
416 };
417 
419  : public StateGenericSendReceive
420 {
421  Q_OBJECT
422  friend class StateBuilder;
423 
424  explicit StateSendDisconnectResponse(const QSharedPointer<WorkflowContext>& pContext)
425  : StateGenericSendReceive(pContext, PaosType::STARTPAOS_RESPONSE)
426  {
427  }
428 
429  protected:
430  QSharedPointer<PaosMessage> getAsMessage() override
431  {
432  return getContext()->getDisconnectResponse();
433  }
434 
435 
436  QSharedPointer<ResponseType> getAsResponse() override
437  {
438  return getContext()->getDisconnectResponse();
439  }
440 
441 
442  QSharedPointer<PaosCreator> getAsCreator() override
443  {
444  return getContext()->getDisconnectResponse();
445  }
446 
447 
448  void emitStateMachineSignal(int pResult) override
449  {
450  Q_UNUSED(pResult)
451  }
452 
453 
454 };
455 
456 } // namespace governikus
QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:430
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:342
Definition: StateGenericSendReceive.h:315
void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:302
QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:381
void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:200
Code
Definition: GlobalStatus.h:25
QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:73
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:442
virtual void emitStateMachineSignal(int result)=0
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:336
void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:251
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:387
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:136
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:436
Definition: AbstractState.h:18
QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:182
Definition: StateGenericSendReceive.h:57
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:239
virtual QSharedPointer< AuthContext > getContext()
Definition: GenericContextContainer.h:34
virtual QSharedPointer< PaosCreator > getAsCreator()=0
Definition: StateGenericSendReceive.h:167
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:14
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:245
QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:330
Definition: StateGenericSendReceive.h:115
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:393
StateGenericSendReceive(const QSharedPointer< WorkflowContext > &pContext, const QVector< PaosType > &pTypesToReceive, bool pConnectOnCardRemoved=true)
Definition: StateGenericSendReceive.cpp:20
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:194
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:142
void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:399
void onExit(QEvent *pEvent) override
Definition: StateGenericSendReceive.cpp:186
QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:284
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:290
void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:91
Definition: GenericContextContainer.h:19
Definition: StateGenericSendReceive.h:418
void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:148
Definition: StateGenericSendReceive.h:23
Definition: StateGenericSendReceive.h:366
virtual QSharedPointer< ResponseType > getAsResponse()=0
virtual QSharedPointer< PaosMessage > getAsMessage()=0
QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:130
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:296
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:79
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:188
Definition: StateGenericSendReceive.h:218
void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:448
QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:233
void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:348
Definition: StateBuilder.h:17
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:85