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
18class test_StateGenericSendReceive;
19
20namespace 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:
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
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
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
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
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
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
void onExit(QEvent *pEvent) override
Definition: StateGenericSendReceive.cpp:154
Definition: StateGenericSendReceive.h:155
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:171
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:177
Definition: StateGenericSendReceive.h:219
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:235
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:241
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:203
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:209
Definition: StateGenericSendReceive.h:112
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:127
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:133
void emitStateMachineSignal(PaosType pResponseType) override
Definition: StateGenericSendReceive.h:139
Definition: StateGenericSendReceive.h:63
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:85
void emitStateMachineSignal(PaosType pResponseType) override
Definition: StateGenericSendReceive.h:91
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:79
Definition: StateGenericSendReceive.h:251
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:267
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:273
void emitStateMachineSignal(PaosType pResponseType) override
Definition: StateGenericSendReceive.h:279
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16