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