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  virtual 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 
56 {
57  Q_OBJECT
58  friend class StateBuilder;
59 
60  explicit StateSendStartPaos(const QSharedPointer<WorkflowContext>& pContext)
61  : StateGenericSendReceive(pContext, QVector<PaosType>
62  {
63  PaosType::INITIALIZE_FRAMEWORK, PaosType::DID_LIST,
64  PaosType::DID_AUTHENTICATE_EAC1, PaosType::STARTPAOS_RESPONSE
65  }, false)
66  {
67  }
68 
69  protected:
70  virtual QSharedPointer<PaosMessage> getAsMessage() override
71  {
72  return getContext()->getStartPaos();
73  }
74 
75 
76  virtual QSharedPointer<ResponseType> getAsResponse() override
77  {
78  return QSharedPointer<ResponseType>();
79  }
80 
81 
82  virtual QSharedPointer<PaosCreator> getAsCreator() override
83  {
84  return getContext()->getStartPaos();
85  }
86 
87 
88  virtual void emitStateMachineSignal(int pResult) override
89  {
90  if (pResult == 3)
91  {
92  Q_EMIT fireReceivedDidList();
93  }
94  else if (pResult == 4)
95  {
97  }
98  else if (pResult == 5)
99  {
101  }
102  }
103 
104  Q_SIGNALS:
108 
109 
110 };
111 
113  : public StateGenericSendReceive
114 {
115  Q_OBJECT
116  friend class StateBuilder;
117 
118  explicit StateSendInitializeFrameworkResponse(const QSharedPointer<WorkflowContext>& pContext)
119  : StateGenericSendReceive(pContext, QVector<PaosType>
120  {
121  PaosType::DID_LIST, PaosType::DID_AUTHENTICATE_EAC1, PaosType::STARTPAOS_RESPONSE
122  }, false)
123  {
124  }
125 
126  protected:
127  virtual QSharedPointer<PaosMessage> getAsMessage() override
128  {
129  return getContext()->getInitializeFrameworkResponse();
130  }
131 
132 
133  virtual QSharedPointer<ResponseType> getAsResponse() override
134  {
135  return getContext()->getInitializeFrameworkResponse();
136  }
137 
138 
139  virtual QSharedPointer<PaosCreator> getAsCreator() override
140  {
141  return getContext()->getInitializeFrameworkResponse();
142  }
143 
144 
145  virtual void emitStateMachineSignal(int pResult) override
146  {
147  if (pResult == 3)
148  {
150  }
151  else if (pResult == 4)
152  {
154  }
155  }
156 
157  Q_SIGNALS:
160 
161 
162 };
163 
165  : public StateGenericSendReceive
166 {
167  Q_OBJECT
168  friend class StateBuilder;
169 
170  explicit StateSendDIDListResponse(const QSharedPointer<WorkflowContext>& pContext)
171  : StateGenericSendReceive(pContext, QVector<PaosType>
172  {
173  PaosType::DID_AUTHENTICATE_EAC1, PaosType::DISCONNECT, PaosType::STARTPAOS_RESPONSE
174  }, false)
175  {
176  }
177 
178  protected:
179  virtual QSharedPointer<PaosMessage> getAsMessage() override
180  {
181  return getContext()->getDidListResponse();
182  }
183 
184 
185  virtual QSharedPointer<ResponseType> getAsResponse() override
186  {
187  return getContext()->getDidListResponse();
188  }
189 
190 
191  virtual QSharedPointer<PaosCreator> getAsCreator() override
192  {
193  return getContext()->getDidListResponse();
194  }
195 
196 
197  virtual void emitStateMachineSignal(int pResult) override
198  {
199  if (pResult == 3)
200  {
201  Q_EMIT fireReceivedDisconnect();
202  }
203  else if (pResult == 4)
204  {
206  }
207  }
208 
209  Q_SIGNALS:
212 
213 };
214 
216  : public StateGenericSendReceive
217 {
218  Q_OBJECT
219  friend class StateBuilder;
220 
221  explicit StateSendDIDAuthenticateResponseEAC1(const QSharedPointer<WorkflowContext>& pContext)
222  : StateGenericSendReceive(pContext, QVector<PaosType>
223  {
224  PaosType::DID_AUTHENTICATE_EAC2, PaosType::DISCONNECT, PaosType::STARTPAOS_RESPONSE
225  })
226  {
227  }
228 
229  protected:
230  virtual QSharedPointer<PaosMessage> getAsMessage() override
231  {
232  return getContext()->getDidAuthenticateResponseEac1();
233  }
234 
235 
236  virtual QSharedPointer<ResponseType> getAsResponse() override
237  {
238  return getContext()->getDidAuthenticateResponseEac1();
239  }
240 
241 
242  virtual QSharedPointer<PaosCreator> getAsCreator() override
243  {
244  return getContext()->getDidAuthenticateResponseEac1();
245  }
246 
247 
248  virtual void emitStateMachineSignal(int pResult) override
249  {
250  if (pResult == 3)
251  {
252  Q_EMIT fireReceivedDisconnect();
253  }
254  else if (pResult == 4)
255  {
257  }
258  }
259 
260  Q_SIGNALS:
263 
264 };
265 
267  : public StateGenericSendReceive
268 {
269  Q_OBJECT
270  friend class StateBuilder;
271 
272  explicit StateSendDIDAuthenticateResponseEACAdditionalInputType(const QSharedPointer<WorkflowContext>& pContext)
273  : StateGenericSendReceive(pContext, QVector<PaosType>
274  {
275  PaosType::DID_AUTHENTICATE_EAC_ADDITIONAL_INPUT_TYPE, PaosType::STARTPAOS_RESPONSE
276  })
277  {
278  }
279 
280  protected:
281  virtual QSharedPointer<PaosMessage> getAsMessage() override
282  {
283  return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
284  }
285 
286 
287  virtual QSharedPointer<ResponseType> getAsResponse() override
288  {
289  return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
290  }
291 
292 
293  virtual QSharedPointer<PaosCreator> getAsCreator() override
294  {
295  return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
296  }
297 
298 
299  virtual void emitStateMachineSignal(int pResult) override
300  {
301  if (pResult == 3)
302  {
304  }
305  }
306 
307  Q_SIGNALS:
309 
310 };
311 
313  : public StateGenericSendReceive
314 {
315  Q_OBJECT
316  friend class StateBuilder;
317 
318  explicit StateSendDIDAuthenticateResponseEAC2(const QSharedPointer<WorkflowContext>& pContext)
319  : StateGenericSendReceive(pContext, QVector<PaosType>
320  {
321  PaosType::TRANSMIT, PaosType::DISCONNECT, PaosType::STARTPAOS_RESPONSE
322  })
323  {
324  }
325 
326  protected:
327  virtual QSharedPointer<PaosMessage> getAsMessage() override
328  {
329  return getContext()->getDidAuthenticateResponseEac2();
330  }
331 
332 
333  virtual QSharedPointer<ResponseType> getAsResponse() override
334  {
335  return getContext()->getDidAuthenticateResponseEac2();
336  }
337 
338 
339  virtual QSharedPointer<PaosCreator> getAsCreator() override
340  {
341  return getContext()->getDidAuthenticateResponseEac2();
342  }
343 
344 
345  virtual void emitStateMachineSignal(int pResult) override
346  {
347  if (pResult == 3)
348  {
349  Q_EMIT fireReceivedDisconnect();
350  }
351  else if (pResult == 4)
352  {
354  }
355  }
356 
357  Q_SIGNALS:
360 
361 };
362 
364  : public StateGenericSendReceive
365 {
366  Q_OBJECT
367  friend class StateBuilder;
368 
369  explicit StateSendTransmitResponse(const QSharedPointer<WorkflowContext>& pContext)
370  : StateGenericSendReceive(pContext, QVector<PaosType>
371  {
372  PaosType::TRANSMIT, PaosType::DISCONNECT, PaosType::STARTPAOS_RESPONSE
373  })
374  {
375  }
376 
377  protected:
378  virtual QSharedPointer<PaosMessage> getAsMessage() override
379  {
380  return getContext()->getTransmitResponses().constLast();
381  }
382 
383 
384  virtual QSharedPointer<ResponseType> getAsResponse() override
385  {
386  return getContext()->getTransmitResponses().constLast();
387  }
388 
389 
390  virtual QSharedPointer<PaosCreator> getAsCreator() override
391  {
392  return getContext()->getTransmitResponses().constLast();
393  }
394 
395 
396  virtual void emitStateMachineSignal(int pResult) override
397  {
398  if (pResult == 3)
399  {
400  Q_EMIT fireReceivedDisconnect();
401  }
402  else if (pResult == 4)
403  {
405  }
406  }
407 
408  Q_SIGNALS:
411 
412 
413 };
414 
416  : public StateGenericSendReceive
417 {
418  Q_OBJECT
419  friend class StateBuilder;
420 
421  explicit StateSendDisconnectResponse(const QSharedPointer<WorkflowContext>& pContext)
422  : StateGenericSendReceive(pContext, PaosType::STARTPAOS_RESPONSE)
423  {
424  }
425 
426  protected:
427  virtual QSharedPointer<PaosMessage> getAsMessage() override
428  {
429  return getContext()->getDisconnectResponse();
430  }
431 
432 
433  virtual QSharedPointer<ResponseType> getAsResponse() override
434  {
435  return getContext()->getDisconnectResponse();
436  }
437 
438 
439  virtual QSharedPointer<PaosCreator> getAsCreator() override
440  {
441  return getContext()->getDisconnectResponse();
442  }
443 
444 
445  virtual void emitStateMachineSignal(int pResult) override
446  {
447  Q_UNUSED(pResult)
448  }
449 
450 
451 };
452 
453 } // namespace governikus
Definition: AbstractState.h:20
Definition: GenericContextContainer.h:20
virtual QSharedPointer< AuthContext > getContext()
Definition: GenericContextContainer.h:34
Code
Definition: GlobalStatus.h:26
Definition: StateBuilder.h:18
Definition: StateGenericSendReceive.h:26
virtual QSharedPointer< PaosCreator > getAsCreator()=0
virtual QSharedPointer< ResponseType > getAsResponse()=0
StateGenericSendReceive(const QSharedPointer< WorkflowContext > &pContext, const QVector< PaosType > &pTypesToReceive, bool pConnectOnCardRemoved=true)
Definition: StateGenericSendReceive.cpp:24
virtual QSharedPointer< PaosMessage > getAsMessage()=0
virtual void emitStateMachineSignal(int result)=0
Definition: StateGenericSendReceive.h:217
virtual QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:236
virtual void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:248
virtual QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:230
virtual QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:242
Definition: StateGenericSendReceive.h:314
virtual void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:345
virtual QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:333
virtual QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:327
virtual QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:339
virtual QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:293
virtual QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:287
virtual void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:299
virtual QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:281
Definition: StateGenericSendReceive.h:166
virtual void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:197
virtual QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:185
virtual QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:191
virtual QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:179
Definition: StateGenericSendReceive.h:417
virtual QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:433
virtual void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:445
virtual QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:427
virtual QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:439
Definition: StateGenericSendReceive.h:114
virtual QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:133
virtual QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:127
virtual QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:139
virtual void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:145
Definition: StateGenericSendReceive.h:56
virtual void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:88
virtual QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:70
virtual QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:82
virtual QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:76
Definition: StateGenericSendReceive.h:365
virtual QSharedPointer< PaosMessage > getAsMessage() override
Definition: StateGenericSendReceive.h:378
virtual QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:384
virtual void emitStateMachineSignal(int pResult) override
Definition: StateGenericSendReceive.h:396
virtual QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:390
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15