AusweisApp2
Lade ...
Suche ...
Keine Treffer
AuthContext.h
gehe zur Dokumentation dieser Datei
1
7#pragma once
8
11#include "ActivationContext.h"
14#include "NetworkManager.h"
30#include "TcToken.h"
31#include "UrlUtil.h"
32
33#include <QDebug>
34#include <QPointer>
35#include <QSharedPointer>
36#include <QSslCertificate>
37#include <QUrl>
38
39class test_StateRedirectBrowser;
40class test_StatePreVerification;
41class test_StateCertificateDescriptionCheck;
42
43namespace governikus
44{
45class TestAuthContext;
46
48 : public WorkflowContext
49{
50 Q_OBJECT
51
52 private:
53 friend class ::test_StateRedirectBrowser;
54 friend class ::test_StatePreVerification;
55 friend class ::test_StateProcessCertificatesFromEac2;
56 friend class ::test_StateCertificateDescriptionCheck;
57 friend class TestAuthContext;
58
59 int mProgressValue;
60 QString mProgressMessage;
61 bool mTcTokenNotFound;
62 bool mErrorReportedToServer;
63 bool mSkipRedirect;
64
65 QSharedPointer<ActivationContext> mActivationContext;
66 QUrl mTcTokenUrl;
67 QSharedPointer<const TcToken> mTcToken;
68 QUrl mRefreshUrl;
69 QString mReceivedMessageId;
70 QSharedPointer<StartPaos> mStartPaos;
71 QSharedPointer<InitializeFramework> mInitializeFramework;
72 QSharedPointer<InitializeFrameworkResponse> mInitializeFrameworkResponse;
73 QSharedPointer<DIDList> mDIDList;
74 QSharedPointer<DIDListResponse> mDIDListResponse;
75 QSharedPointer<DIDAuthenticateEAC1> mDIDAuthenticateEAC1;
76 QSharedPointer<DIDAuthenticateResponseEAC1> mDIDAuthenticateResponseEAC1;
77 QSharedPointer<DIDAuthenticateEAC2> mDIDAuthenticateEAC2;
78 QSharedPointer<DIDAuthenticateResponseEAC2> mDIDAuthenticateResponseEACAdditionalInputType;
79 QSharedPointer<DIDAuthenticateEACAdditional> mDIDAuthenticateEACAdditionalInputType;
80 QSharedPointer<DIDAuthenticateResponseEAC2> mDIDAuthenticateResponseEAC2;
81 QVector<QSharedPointer<Transmit>> mTransmits;
82 QVector<QSharedPointer<TransmitResponse>> mTransmitResponses;
83 QSharedPointer<Disconnect> mDisconnect;
84 QSharedPointer<DisconnectResponse> mDisconnectResponse;
85 QSharedPointer<StartPaosResponse> mStartPaosResponse;
86 QSharedPointer<AccessRightManager> mAccessRightManager;
87 QMultiMap<QUrl, QSslCertificate> mCertificates;
88 QSharedPointer<const CVCertificate> mDvCvc;
89 CVCertificateChainBuilder mCvcChainBuilderProd, mCvcChainBuilderTest;
90 QByteArray mSslSession;
91
92 Q_SIGNALS:
95 void fireAccessRightManagerCreated(QSharedPointer<AccessRightManager> pAccessRightManager);
96
97 public:
98 explicit AuthContext(const QSharedPointer<ActivationContext>& pActivationContext);
99
100 [[nodiscard]] bool isErrorReportedToServer() const
101 {
102 return mErrorReportedToServer;
103 }
104
105
106 void setErrorReportedToServer(bool pErrorReportedToServer)
107 {
108 mErrorReportedToServer = pErrorReportedToServer;
109 }
110
111
112 [[nodiscard]] int getProgressValue() const
113 {
114 return mProgressValue;
115 }
116
117
118 [[nodiscard]] const QString getProgressMessage() const
119 {
120 return mProgressMessage;
121 }
122
123
124 void setProgress(int pValue, const QString& pMessage);
125
126
127 [[nodiscard]] bool isTcTokenNotFound() const
128 {
129 return mTcTokenNotFound;
130 }
131
132
133 void setTcTokenNotFound(bool pTcTokenNotFound)
134 {
135 mTcTokenNotFound = pTcTokenNotFound;
136 }
137
138
139 [[nodiscard]] bool isSkipRedirect() const
140 {
141 return mSkipRedirect;
142 }
143
144
145 void setSkipRedirect(bool pSkipRedirect)
146 {
147 mSkipRedirect = pSkipRedirect;
148 }
149
150
151 [[nodiscard]] QList<QSslCertificate> getCertificateList() const
152 {
153 return mCertificates.values();
154 }
155
156
157 [[nodiscard]] bool containsCertificateFor(const QUrl& pUrl) const
158 {
159 return mCertificates.contains(UrlUtil::getUrlOrigin(pUrl));
160 }
161
162
163 void addCertificateData(const QUrl& pUrl, const QSslCertificate& pCert)
164 {
165 QUrl originUrl = UrlUtil::getUrlOrigin(pUrl);
166 qDebug() << "Adding certificate CN=" << pCert.subjectInfo(QSslCertificate::CommonName) << "SN=" << pCert.serialNumber() << "for URL origin" << originUrl;
167 mCertificates.insert(originUrl, pCert);
168 }
169
170
172 {
173 return mActivationContext.data();
174 }
175
176
177 [[nodiscard]] const QUrl& getTcTokenUrl() const
178 {
179 return mTcTokenUrl;
180 }
181
182
183 void setTcTokenUrl(const QUrl& pTcTokenUrl)
184 {
185 mTcTokenUrl = pTcTokenUrl;
186 }
187
188
189 [[nodiscard]] const QSharedPointer<const TcToken>& getTcToken() const
190 {
191 return mTcToken;
192 }
193
194
195 void setTcToken(const QSharedPointer<const TcToken>& pTcToken)
196 {
197 mTcToken = pTcToken;
198 }
199
200
201 [[nodiscard]] const QString& getReceivedMessageId() const
202 {
203 return mReceivedMessageId;
204 }
205
206
207 void setReceivedMessageId(const QString& pReceivedMessageId)
208 {
209 mReceivedMessageId = pReceivedMessageId;
210 }
211
212
213 [[nodiscard]] const QUrl& getRefreshUrl() const
214 {
215 return mRefreshUrl;
216 }
217
218
219 void setRefreshUrl(const QUrl& pRefreshUrl)
220 {
221 mRefreshUrl = pRefreshUrl;
222 }
223
224
225 [[nodiscard]] const QSharedPointer<DIDAuthenticateEAC1>& getDidAuthenticateEac1() const
226 {
227 return mDIDAuthenticateEAC1;
228 }
229
230
231 void setDidAuthenticateEac1(const QSharedPointer<DIDAuthenticateEAC1>& pDIDAuthenticateEAC1)
232 {
233 mDIDAuthenticateEAC1 = pDIDAuthenticateEAC1;
235 }
236
237
238 [[nodiscard]] const QSharedPointer<DIDAuthenticateEAC2>& getDidAuthenticateEac2() const
239 {
240 return mDIDAuthenticateEAC2;
241 }
242
243
244 void setDidAuthenticateEac2(const QSharedPointer<DIDAuthenticateEAC2>& pDidAuthenticateEac2)
245 {
246 mDIDAuthenticateEAC2 = pDidAuthenticateEac2;
247 }
248
249
250 [[nodiscard]] const QSharedPointer<DIDAuthenticateResponseEAC1>& getDidAuthenticateResponseEac1() const
251 {
252 return mDIDAuthenticateResponseEAC1;
253 }
254
255
256 void setDidAuthenticateResponseEac1(const QSharedPointer<DIDAuthenticateResponseEAC1>& pDidAuthenticateResponseEac1)
257 {
258 mDIDAuthenticateResponseEAC1 = pDidAuthenticateResponseEac1;
259 }
260
261
262 [[nodiscard]] const QSharedPointer<DIDAuthenticateResponseEAC2>& getDidAuthenticateResponseEacAdditionalInputType() const
263 {
264 return mDIDAuthenticateResponseEACAdditionalInputType;
265 }
266
267
268 void setDidAuthenticateResponseEacAdditionalInputType(const QSharedPointer<DIDAuthenticateResponseEAC2>& pDidAuthenticateResponseEacAdditionalInputType)
269 {
270 mDIDAuthenticateResponseEACAdditionalInputType = pDidAuthenticateResponseEacAdditionalInputType;
271 }
272
273
274 [[nodiscard]] const QSharedPointer<DIDAuthenticateEACAdditional>& getDidAuthenticateEacAdditional() const
275 {
276 return mDIDAuthenticateEACAdditionalInputType;
277 }
278
279
280 void setDidAuthenticateEacAdditional(const QSharedPointer<DIDAuthenticateEACAdditional>& pDidAuthenticateEacAdditionalInputType)
281 {
282 mDIDAuthenticateEACAdditionalInputType = pDidAuthenticateEacAdditionalInputType;
283 }
284
285
286 [[nodiscard]] const QSharedPointer<DIDAuthenticateResponseEAC2>& getDidAuthenticateResponseEac2() const
287 {
288 return mDIDAuthenticateResponseEAC2;
289 }
290
291
292 void setDidAuthenticateResponseEac2(const QSharedPointer<DIDAuthenticateResponseEAC2>& pDidAuthenticateResponseEac2)
293 {
294 mDIDAuthenticateResponseEAC2 = pDidAuthenticateResponseEac2;
295 }
296
297
298 [[nodiscard]] const QSharedPointer<DIDList>& getDidList() const
299 {
300 return mDIDList;
301 }
302
303
304 void setDidList(const QSharedPointer<DIDList>& pDidList)
305 {
306 mDIDList = pDidList;
307 }
308
309
310 const QSharedPointer<DIDListResponse>& getDidListResponse()
311 {
312 return mDIDListResponse;
313 }
314
315
316 void setDidListResponse(const QSharedPointer<DIDListResponse>& pDidListResponse)
317 {
318 mDIDListResponse = pDidListResponse;
319 }
320
321
322 [[nodiscard]] const QSharedPointer<InitializeFramework>& getInitializeFramework() const
323 {
324 return mInitializeFramework;
325 }
326
327
328 void setInitializeFramework(const QSharedPointer<InitializeFramework>& pInitializeFramework)
329 {
330 mInitializeFramework = pInitializeFramework;
331 }
332
333
334 [[nodiscard]] const QSharedPointer<InitializeFrameworkResponse>& getInitializeFrameworkResponse() const
335 {
336 return mInitializeFrameworkResponse;
337 }
338
339
340 void setInitializeFrameworkResponse(const QSharedPointer<InitializeFrameworkResponse>& pInitializeFrameworkResponse)
341 {
342 mInitializeFrameworkResponse = pInitializeFrameworkResponse;
343 }
344
345
346 [[nodiscard]] const QSharedPointer<Disconnect>& getDisconnect() const
347 {
348 return mDisconnect;
349 }
350
351
352 void setDisconnect(const QSharedPointer<Disconnect>& pDisconnect)
353 {
354 mDisconnect = pDisconnect;
355 }
356
357
358 const QSharedPointer<DisconnectResponse>& getDisconnectResponse()
359 {
360 return mDisconnectResponse;
361 }
362
363
364 void setDisconnectResponse(const QSharedPointer<DisconnectResponse>& pDisconnectResponse)
365 {
366 mDisconnectResponse = pDisconnectResponse;
367 }
368
369
370 [[nodiscard]] const QSharedPointer<StartPaosResponse>& getStartPaosResponse() const
371 {
372 return mStartPaosResponse;
373 }
374
375
376 void setStartPaosResponse(const QSharedPointer<StartPaosResponse>& pStartPaosResponse)
377 {
378 mStartPaosResponse = pStartPaosResponse;
379 }
380
381
382 const QVector<QSharedPointer<TransmitResponse>>& getTransmitResponses()
383 {
384 return mTransmitResponses;
385 }
386
387
388 void addTransmitResponse(const QSharedPointer<TransmitResponse>& pTransmitResponse)
389 {
390 Q_ASSERT(!pTransmitResponse.isNull());
391 mTransmitResponses += pTransmitResponse;
392 }
393
394
395 const QVector<QSharedPointer<Transmit>>& getTransmits()
396 {
397 return mTransmits;
398 }
399
400
401 void addTransmit(const QSharedPointer<Transmit>& pTransmit)
402 {
403 Q_ASSERT(!pTransmit.isNull());
404 mTransmits += pTransmit;
405 }
406
407
408 [[nodiscard]] QSharedPointer<AccessRightManager> getAccessRightManager() const
409 {
410 return mAccessRightManager;
411 }
412
413
414 QByteArray encodeEffectiveChat();
415
416
417 [[nodiscard]] const QSharedPointer<StartPaos>& getStartPaos() const
418 {
419 return mStartPaos;
420 }
421
422
423 void setStartPaos(const QSharedPointer<StartPaos>& pStartPaos)
424 {
425 mStartPaos = pStartPaos;
426 }
427
428
429 [[nodiscard]] CVCertificateChain getChainStartingWith(const QSharedPointer<const CVCertificate>& pChainRoot) const;
430
431
432 [[nodiscard]] bool hasChainForCertificationAuthority(const EstablishPaceChannelOutput& pPaceOutput) const;
433
434
436
437
438 void initCvcChainBuilder(const QVector<QSharedPointer<const CVCertificate>>& pAdditionalCertificates = QVector<QSharedPointer<const CVCertificate>>());
439
440
441 [[nodiscard]] const QSharedPointer<const CVCertificate>& getDvCvc() const
442 {
443 return mDvCvc;
444 }
445
446
447 void setDvCvc(const QSharedPointer<const CVCertificate>& dvCvc)
448 {
449 mDvCvc = dvCvc;
450 }
451
452
453 void initAccessRightManager(const QSharedPointer<const CVCertificate>& pTerminalCvc);
454 [[nodiscard]] bool isCanAllowedMode() const override;
455
456 [[nodiscard]] const QByteArray& getSslSession() const;
457 void setSslSession(const QByteArray& pSession);
458};
459
460} // namespace governikus
Definition: ActivationContext.h:19
Definition: AuthContext.h:49
void setDidList(const QSharedPointer< DIDList > &pDidList)
Definition: AuthContext.h:304
bool isSkipRedirect() const
Definition: AuthContext.h:139
const QSharedPointer< const TcToken > & getTcToken() const
Definition: AuthContext.h:189
const QString & getReceivedMessageId() const
Definition: AuthContext.h:201
friend class TestAuthContext
Definition: AuthContext.h:57
bool isTcTokenNotFound() const
Definition: AuthContext.h:127
const QSharedPointer< Disconnect > & getDisconnect() const
Definition: AuthContext.h:346
const QVector< QSharedPointer< TransmitResponse > > & getTransmitResponses()
Definition: AuthContext.h:382
const QSharedPointer< DIDListResponse > & getDidListResponse()
Definition: AuthContext.h:310
const QSharedPointer< InitializeFramework > & getInitializeFramework() const
Definition: AuthContext.h:322
const QSharedPointer< DisconnectResponse > & getDisconnectResponse()
Definition: AuthContext.h:358
void setTcTokenNotFound(bool pTcTokenNotFound)
Definition: AuthContext.h:133
void addCertificateData(const QUrl &pUrl, const QSslCertificate &pCert)
Definition: AuthContext.h:163
void setReceivedMessageId(const QString &pReceivedMessageId)
Definition: AuthContext.h:207
const QByteArray & getSslSession() const
Definition: AuthContext.cpp:91
void setTcToken(const QSharedPointer< const TcToken > &pTcToken)
Definition: AuthContext.h:195
void fireAccessRightManagerCreated(QSharedPointer< AccessRightManager > pAccessRightManager)
void setDidAuthenticateEacAdditional(const QSharedPointer< DIDAuthenticateEACAdditional > &pDidAuthenticateEacAdditionalInputType)
Definition: AuthContext.h:280
void setTcTokenUrl(const QUrl &pTcTokenUrl)
Definition: AuthContext.h:183
void setSkipRedirect(bool pSkipRedirect)
Definition: AuthContext.h:145
const QSharedPointer< const CVCertificate > & getDvCvc() const
Definition: AuthContext.h:441
const QString getProgressMessage() const
Definition: AuthContext.h:118
void setDidAuthenticateEac1(const QSharedPointer< DIDAuthenticateEAC1 > &pDIDAuthenticateEAC1)
Definition: AuthContext.h:231
void setErrorReportedToServer(bool pErrorReportedToServer)
Definition: AuthContext.h:106
bool isCanAllowedMode() const override
Definition: AuthContext.cpp:85
const QSharedPointer< DIDAuthenticateEAC2 > & getDidAuthenticateEac2() const
Definition: AuthContext.h:238
void setRefreshUrl(const QUrl &pRefreshUrl)
Definition: AuthContext.h:219
const QSharedPointer< StartPaos > & getStartPaos() const
Definition: AuthContext.h:417
const QSharedPointer< DIDAuthenticateResponseEAC2 > & getDidAuthenticateResponseEacAdditionalInputType() const
Definition: AuthContext.h:262
void setDidListResponse(const QSharedPointer< DIDListResponse > &pDidListResponse)
Definition: AuthContext.h:316
bool isErrorReportedToServer() const
Definition: AuthContext.h:100
QByteArray encodeEffectiveChat()
Definition: AuthContext.cpp:103
void setProgress(int pValue, const QString &pMessage)
Definition: AuthContext.cpp:56
void setSslSession(const QByteArray &pSession)
Definition: AuthContext.cpp:97
void setStartPaos(const QSharedPointer< StartPaos > &pStartPaos)
Definition: AuthContext.h:423
QSharedPointer< AccessRightManager > getAccessRightManager() const
Definition: AuthContext.h:408
const QVector< QSharedPointer< Transmit > > & getTransmits()
Definition: AuthContext.h:395
const QSharedPointer< StartPaosResponse > & getStartPaosResponse() const
Definition: AuthContext.h:370
const QUrl & getRefreshUrl() const
Definition: AuthContext.h:213
void setDidAuthenticateEac2(const QSharedPointer< DIDAuthenticateEAC2 > &pDidAuthenticateEac2)
Definition: AuthContext.h:244
void setDvCvc(const QSharedPointer< const CVCertificate > &dvCvc)
Definition: AuthContext.h:447
bool containsCertificateFor(const QUrl &pUrl) const
Definition: AuthContext.h:157
bool hasChainForCertificationAuthority(const EstablishPaceChannelOutput &pPaceOutput) const
Definition: AuthContext.cpp:134
const QSharedPointer< InitializeFrameworkResponse > & getInitializeFrameworkResponse() const
Definition: AuthContext.h:334
void addTransmit(const QSharedPointer< Transmit > &pTransmit)
Definition: AuthContext.h:401
const QSharedPointer< DIDAuthenticateResponseEAC2 > & getDidAuthenticateResponseEac2() const
Definition: AuthContext.h:286
int getProgressValue() const
Definition: AuthContext.h:112
void setDisconnectResponse(const QSharedPointer< DisconnectResponse > &pDisconnectResponse)
Definition: AuthContext.h:364
QList< QSslCertificate > getCertificateList() const
Definition: AuthContext.h:151
const QSharedPointer< DIDAuthenticateResponseEAC1 > & getDidAuthenticateResponseEac1() const
Definition: AuthContext.h:250
const QSharedPointer< DIDAuthenticateEACAdditional > & getDidAuthenticateEacAdditional() const
Definition: AuthContext.h:274
void addTransmitResponse(const QSharedPointer< TransmitResponse > &pTransmitResponse)
Definition: AuthContext.h:388
void setInitializeFramework(const QSharedPointer< InitializeFramework > &pInitializeFramework)
Definition: AuthContext.h:328
void setDisconnect(const QSharedPointer< Disconnect > &pDisconnect)
Definition: AuthContext.h:352
CVCertificateChain getChainForCertificationAuthority(const EstablishPaceChannelOutput &pPaceOutput) const
Definition: AuthContext.cpp:140
void setDidAuthenticateResponseEac1(const QSharedPointer< DIDAuthenticateResponseEAC1 > &pDidAuthenticateResponseEac1)
Definition: AuthContext.h:256
void fireDidAuthenticateEac1Changed()
const QUrl & getTcTokenUrl() const
Definition: AuthContext.h:177
const QSharedPointer< DIDList > & getDidList() const
Definition: AuthContext.h:298
void setInitializeFrameworkResponse(const QSharedPointer< InitializeFrameworkResponse > &pInitializeFrameworkResponse)
Definition: AuthContext.h:340
ActivationContext * getActivationContext() const
Definition: AuthContext.h:171
void initCvcChainBuilder(const QVector< QSharedPointer< const CVCertificate > > &pAdditionalCertificates=QVector< QSharedPointer< const CVCertificate > >())
Definition: AuthContext.cpp:152
CVCertificateChain getChainStartingWith(const QSharedPointer< const CVCertificate > &pChainRoot) const
Definition: AuthContext.cpp:114
void setDidAuthenticateResponseEac2(const QSharedPointer< DIDAuthenticateResponseEAC2 > &pDidAuthenticateResponseEac2)
Definition: AuthContext.h:292
void initAccessRightManager(const QSharedPointer< const CVCertificate > &pTerminalCvc)
Definition: AuthContext.cpp:76
const QSharedPointer< DIDAuthenticateEAC1 > & getDidAuthenticateEac1() const
Definition: AuthContext.h:225
void setDidAuthenticateResponseEacAdditionalInputType(const QSharedPointer< DIDAuthenticateResponseEAC2 > &pDidAuthenticateResponseEacAdditionalInputType)
Definition: AuthContext.h:268
void setStartPaosResponse(const QSharedPointer< StartPaosResponse > &pStartPaosResponse)
Definition: AuthContext.h:376
Definition: CVCertificateChainBuilder.h:20
Definition: CVCertificateChain.h:22
Definition: EstablishPaceChannelOutput.h:48
static QUrl getUrlOrigin(const QUrl &pUrl)
Determines the URL origin, i.e.
Definition: UrlUtil.cpp:19
Definition: WorkflowContext.h:24
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15