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 Q_SIGNALS:
63};
64
67{
68 Q_OBJECT
69 friend class StateBuilder;
70
71 private:
72 explicit StateSendStartPaos(const QSharedPointer<WorkflowContext>& pContext)
73 : StateGenericSendReceive(pContext,
74 PaosType::INITIALIZE_FRAMEWORK,
75 {
76 PaosType::DID_AUTHENTICATE_EAC1
77 })
78 {
79 }
80
81 protected:
82 QSharedPointer<ResponseType> getAsResponse() override
83 {
84 return QSharedPointer<ResponseType>();
85 }
86
87
88 QSharedPointer<PaosCreator> getAsCreator() override
89 {
90 return getContext()->getStartPaos();
91 }
92
93
94 void emitStateMachineSignal(PaosType pResponseType) override
95 {
96 if (pResponseType == PaosType::DID_AUTHENTICATE_EAC1)
97 {
99 }
100 }
101
102 Q_SIGNALS:
104
105
106};
107
110{
111 Q_OBJECT
112 friend class StateBuilder;
113
114 private:
115 explicit StateSendInitializeFrameworkResponse(const QSharedPointer<WorkflowContext>& pContext)
116 : StateGenericSendReceive(pContext,
117 PaosType::DID_AUTHENTICATE_EAC1)
118 {
119 }
120
121 protected:
122 QSharedPointer<ResponseType> getAsResponse() override
123 {
124 return getContext()->getInitializeFrameworkResponse();
125 }
126
127
128 QSharedPointer<PaosCreator> getAsCreator() override
129 {
130 return getContext()->getInitializeFrameworkResponse();
131 }
132
133
134};
135
138{
139 Q_OBJECT
140 friend class StateBuilder;
141
142 private:
143 explicit StateSendDIDAuthenticateResponseEAC1(const QSharedPointer<WorkflowContext>& pContext)
144 : StateGenericSendReceive(pContext,
145 PaosType::DID_AUTHENTICATE_EAC2)
146 {
148 }
149
150 protected:
151 QSharedPointer<ResponseType> getAsResponse() override
152 {
153 return getContext()->getDidAuthenticateResponseEac1();
154 }
155
156
157 QSharedPointer<PaosCreator> getAsCreator() override
158 {
159 return getContext()->getDidAuthenticateResponseEac1();
160 }
161
162
163};
164
167{
168 Q_OBJECT
169 friend class StateBuilder;
170
171 private:
172 explicit StateSendDIDAuthenticateResponseEACAdditionalInputType(const QSharedPointer<WorkflowContext>& pContext)
173 : StateGenericSendReceive(pContext,
174 PaosType::DID_AUTHENTICATE_EAC_ADDITIONAL_INPUT_TYPE)
175 {
177 }
178
179 protected:
180 QSharedPointer<ResponseType> getAsResponse() override
181 {
182 return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
183 }
184
185
186 QSharedPointer<PaosCreator> getAsCreator() override
187 {
188 return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
189 }
190
191
192};
193
196{
197 Q_OBJECT
198 friend class StateBuilder;
199
200 private:
201 explicit StateSendDIDAuthenticateResponseEAC2(const QSharedPointer<WorkflowContext>& pContext)
202 : StateGenericSendReceive(pContext,
203 PaosType::TRANSMIT)
204 {
206 }
207
208 protected:
209 QSharedPointer<ResponseType> getAsResponse() override
210 {
211 return getContext()->getDidAuthenticateResponseEac2();
212 }
213
214
215 QSharedPointer<PaosCreator> getAsCreator() override
216 {
217 return getContext()->getDidAuthenticateResponseEac2();
218 }
219
220
221};
222
225{
226 Q_OBJECT
227 friend class StateBuilder;
228
229 private:
230 explicit StateSendTransmitResponse(const QSharedPointer<WorkflowContext>& pContext)
231 : StateGenericSendReceive(pContext,
232 PaosType::TRANSMIT)
233 {
235 }
236
237 protected:
238 QSharedPointer<ResponseType> getAsResponse() override
239 {
240 return getContext()->getTransmitResponse();
241 }
242
243
244 QSharedPointer<PaosCreator> getAsCreator() override
245 {
246 return getContext()->getTransmitResponse();
247 }
248
249
250};
251
252} // 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:138
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:151
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:157
Definition: StateGenericSendReceive.h:196
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:209
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:215
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:180
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:186
Definition: StateGenericSendReceive.h:110
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:122
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:128
Definition: StateGenericSendReceive.h:67
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:88
void emitStateMachineSignal(PaosType pResponseType) override
Definition: StateGenericSendReceive.h:94
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:82
Definition: StateGenericSendReceive.h:225
QSharedPointer< ResponseType > getAsResponse() override
Definition: StateGenericSendReceive.h:238
QSharedPointer< PaosCreator > getAsCreator() override
Definition: StateGenericSendReceive.h:244
Implementation of GeneralAuthenticate response APDUs.
Definition: CommandApdu.h:16