AusweisApp
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 <QList>
15#include <QSharedPointer>
16#include <QSslPreSharedKeyAuthenticator>
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 QList<PaosType> mOtherResponseTypes;
34 const bool mPersonalization;
35 QSharedPointer<QNetworkReply> mReply;
36
37 void logRawData(const QByteArray& pMessage);
38 void setReceivedMessage(const QSharedPointer<PaosMessage>& pMessage) const;
39 std::optional<FailureCode> checkSslConnectionAndSaveCertificate(const QSslConfiguration& pSslConfiguration);
40 void onSslErrors(const QList<QSslError>& pErrors);
41 void onSslHandshakeDone();
42 void run() override;
43
44 protected:
46 const QSharedPointer<WorkflowContext>& pContext,
47 PaosType pExpectedResponseType,
48 const QList<PaosType>& pOtherResponseTypes = {},
49 bool pPersonalization = false);
50
51 virtual QSharedPointer<ResponseType> getAsResponse() = 0;
52 virtual QSharedPointer<PaosCreator> getAsCreator() = 0;
53 virtual void emitStateMachineSignal(PaosType pResponseType);
54
55 private Q_SLOTS:
56 void onReplyFinished();
57 void onPreSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator* pAuthenticator) const;
58
59 public:
60 void onExit(QEvent* pEvent) override;
61
62 Q_SIGNALS:
64};
65
68{
69 Q_OBJECT
70 friend class StateBuilder;
71
72 private:
73 explicit StateSendStartPaos(const QSharedPointer<WorkflowContext>& pContext)
74 : StateGenericSendReceive(pContext,
75 PaosType::INITIALIZE_FRAMEWORK,
76 {
77 PaosType::DID_AUTHENTICATE_EAC1
78 })
79 {
80 }
81
82 protected:
83 QSharedPointer<ResponseType> getAsResponse() override
84 {
85 return QSharedPointer<ResponseType>();
86 }
87
88
89 QSharedPointer<PaosCreator> getAsCreator() override
90 {
91 return getContext()->getStartPaos();
92 }
93
94
95 void emitStateMachineSignal(PaosType pResponseType) override
96 {
97 if (pResponseType == PaosType::DID_AUTHENTICATE_EAC1)
98 {
100 }
101 }
102
103 Q_SIGNALS:
105
106
107};
108
111{
112 Q_OBJECT
113 friend class StateBuilder;
114
115 private:
116 explicit StateSendInitializeFrameworkResponse(const QSharedPointer<WorkflowContext>& pContext)
117 : StateGenericSendReceive(pContext,
118 PaosType::DID_AUTHENTICATE_EAC1)
119 {
120 }
121
122 protected:
123 QSharedPointer<ResponseType> getAsResponse() override
124 {
125 return getContext()->getInitializeFrameworkResponse();
126 }
127
128
129 QSharedPointer<PaosCreator> getAsCreator() override
130 {
131 return getContext()->getInitializeFrameworkResponse();
132 }
133
134
135};
136
139{
140 Q_OBJECT
141 friend class StateBuilder;
142
143 private:
144 explicit StateSendDIDAuthenticateResponseEAC1(const QSharedPointer<WorkflowContext>& pContext)
145 : StateGenericSendReceive(pContext,
146 PaosType::DID_AUTHENTICATE_EAC2)
147 {
149 }
150
151 protected:
152 QSharedPointer<ResponseType> getAsResponse() override
153 {
154 return getContext()->getDidAuthenticateResponseEac1();
155 }
156
157
158 QSharedPointer<PaosCreator> getAsCreator() override
159 {
160 return getContext()->getDidAuthenticateResponseEac1();
161 }
162
163
164};
165
168{
169 Q_OBJECT
170 friend class StateBuilder;
171
172 private:
173 explicit StateSendDIDAuthenticateResponseEACAdditionalInputType(const QSharedPointer<WorkflowContext>& pContext)
174 : StateGenericSendReceive(pContext,
175 PaosType::DID_AUTHENTICATE_EAC_ADDITIONAL_INPUT_TYPE)
176 {
178 }
179
180 protected:
181 QSharedPointer<ResponseType> getAsResponse() override
182 {
183 return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
184 }
185
186
187 QSharedPointer<PaosCreator> getAsCreator() override
188 {
189 return getContext()->getDidAuthenticateResponseEacAdditionalInputType();
190 }
191
192
193};
194
197{
198 Q_OBJECT
199 friend class StateBuilder;
200
201 private:
202 explicit StateSendDIDAuthenticateResponseEAC2(const QSharedPointer<WorkflowContext>& pContext)
203 : StateGenericSendReceive(pContext,
204 PaosType::TRANSMIT)
205 {
207 }
208
209 protected:
210 QSharedPointer<ResponseType> getAsResponse() override
211 {
212 return getContext()->getDidAuthenticateResponseEac2();
213 }
214
215
216 QSharedPointer<PaosCreator> getAsCreator() override
217 {
218 return getContext()->getDidAuthenticateResponseEac2();
219 }
220
221
222};
223
226{
227 Q_OBJECT
228 friend class StateBuilder;
229
230 private:
231 explicit StateSendTransmitResponse(const QSharedPointer<WorkflowContext>& pContext)
232 : StateGenericSendReceive(pContext,
233 PaosType::TRANSMIT)
234 {
236 }
237
238 protected:
239 QSharedPointer<ResponseType> getAsResponse() override
240 {
241 return getContext()->getTransmitResponse();
242 }
243
244
245 QSharedPointer<PaosCreator> getAsCreator() override
246 {
247 return getContext()->getTransmitResponse();
248 }
249
250
251};
252
253} // namespace governikus
Definition AbstractState.h:36
void setAbortOnCardRemoved()
Definition AbstractState.cpp:34
Definition GenericContextContainer.h:22
QSharedPointer< AuthContext > getContext() const
Definition GenericContextContainer.h:34
Definition StateBuilder.h:19
Definition StateGenericSendReceive.h:27
virtual void emitStateMachineSignal(PaosType pResponseType)
Definition StateGenericSendReceive.cpp:36
StateGenericSendReceive(const QSharedPointer< WorkflowContext > &pContext, PaosType pExpectedResponseType, const QList< PaosType > &pOtherResponseTypes={}, bool pPersonalization=false)
Definition StateGenericSendReceive.cpp:21
virtual QSharedPointer< PaosCreator > getAsCreator()=0
virtual QSharedPointer< ResponseType > getAsResponse()=0
void onExit(QEvent *pEvent) override
Definition StateGenericSendReceive.cpp:184
Definition StateGenericSendReceive.h:139
QSharedPointer< ResponseType > getAsResponse() override
Definition StateGenericSendReceive.h:152
QSharedPointer< PaosCreator > getAsCreator() override
Definition StateGenericSendReceive.h:158
Definition StateGenericSendReceive.h:197
QSharedPointer< ResponseType > getAsResponse() override
Definition StateGenericSendReceive.h:210
QSharedPointer< PaosCreator > getAsCreator() override
Definition StateGenericSendReceive.h:216
QSharedPointer< ResponseType > getAsResponse() override
Definition StateGenericSendReceive.h:181
QSharedPointer< PaosCreator > getAsCreator() override
Definition StateGenericSendReceive.h:187
Definition StateGenericSendReceive.h:111
QSharedPointer< ResponseType > getAsResponse() override
Definition StateGenericSendReceive.h:123
QSharedPointer< PaosCreator > getAsCreator() override
Definition StateGenericSendReceive.h:129
Definition StateGenericSendReceive.h:68
QSharedPointer< PaosCreator > getAsCreator() override
Definition StateGenericSendReceive.h:89
void emitStateMachineSignal(PaosType pResponseType) override
Definition StateGenericSendReceive.h:95
QSharedPointer< ResponseType > getAsResponse() override
Definition StateGenericSendReceive.h:83
Definition StateGenericSendReceive.h:226
QSharedPointer< ResponseType > getAsResponse() override
Definition StateGenericSendReceive.h:239
QSharedPointer< PaosCreator > getAsCreator() override
Definition StateGenericSendReceive.h:245
Implementation of GeneralAuthenticate response APDUs.
Definition CommandApdu.h:17