AusweisApp2
StateCheckRefreshAddress.h
gehe zur Dokumentation dieser Datei
1 
8 #pragma once
9 
10 #include "AbstractState.h"
11 #include "context/AuthContext.h"
13 
14 #include <QNetworkReply>
15 #include <QSharedPointer>
16 #include <QSslCertificate>
17 #include <QSslError>
18 #include <QSslSocket>
19 
20 class test_StateCheckRefreshAddress;
21 
22 namespace governikus
23 {
24 
26  : public AbstractState
27  , public GenericContextContainer<AuthContext>
28 {
29  Q_OBJECT
30  friend class StateBuilder;
31  friend class ::test_StateCheckRefreshAddress;
32 
33  private:
34  QSharedPointer<QNetworkReply> mReply;
35  QUrl mUrl;
36  QUrl mSubjectUrl;
37  bool mCertificateFetched;
38  QVector<QUrl> mVerifiedRefreshUrlHosts;
39 
40  explicit StateCheckRefreshAddress(const QSharedPointer<WorkflowContext>& pContext);
41 
42  bool isMatchingSameOriginPolicyInDevMode() const;
43  virtual void run() override;
44 
45  QUrl determineSubjectUrl();
46 
47  void sendGetRequest();
48  void fetchServerCertificate();
49  bool checkSslConnectionAndSaveCertificate(const QSslConfiguration& pSslConfiguration);
50  void doneSuccess();
51  void reportCommunicationError(const GlobalStatus& pStatus);
52 
53  private Q_SLOTS:
54  void onSslHandshakeDone();
55  void onNetworkReply();
56  void onSslErrors(const QList<QSslError>& errors);
57  void onSslHandshakeDoneFetchingServerCertificate();
58  void onNetworkErrorFetchingServerCertificate(QNetworkReply::NetworkError pError);
59 
60  public:
61  void onEntry(QEvent* pEvent) override;
62 };
63 
64 } // namespace governikus
governikus::GlobalStatus::Code::Workflow_Network_Ssl_Hash_Not_In_Certificate_Description
@ Workflow_Network_Ssl_Hash_Not_In_Certificate_Description
AuthContext.h
governikus::CertificateChecker::checkAndSaveCertificate
static CertificateStatus checkAndSaveCertificate(const QSslCertificate &pCertificate, const QUrl &pUrl, const QSharedPointer< DIDAuthenticateEAC1 > &pEAC1, const QSharedPointer< const CVCertificate > &pDvCvc, const std::function< void(const QUrl &, const QSslCertificate &)> &pSaveCertificateFunc)
Checks certificate and, if OK, save it using a callback function.
Definition: CertificateChecker.cpp:20
TlsChecker.h
governikus::TlsChecker::getCertificateIssuerName
static QString getCertificateIssuerName(const QSslCertificate &pCertificate)
This method is only needed until QSslCertificate provides its own method issuerDisplayName in Qt 5....
Definition: TlsChecker.cpp:102
governikus::GlobalStatus::Code::Workflow_Network_Empty_Redirect_Url
@ Workflow_Network_Empty_Redirect_Url
governikus::NetworkManager::getLoggedStatusCode
static int getLoggedStatusCode(const QSharedPointer< const QNetworkReply > &pReply, const QMessageLogger &pLogger)
Definition: NetworkManager.cpp:298
governikus::NetworkManager::toNetworkError
static NetworkError toNetworkError(const QSharedPointer< const QNetworkReply > &pNetworkReply)
Definition: NetworkManager.cpp:169
governikus::GlobalStatus::Code::Network_TimeOut
@ Network_TimeOut
governikus::CertificateChecker::CertificateStatus::Unsupported_Algorithm_Or_Length
@ Unsupported_Algorithm_Or_Length
AppSettings.h
governikus::GlobalStatus::Code::Workflow_Network_Malformed_Redirect_Url
@ Workflow_Network_Malformed_Redirect_Url
LogHandler.h
governikus::GlobalStatus::ExternalInformation::REDIRECT_URL
@ REDIRECT_URL
governikus::CertificateChecker::CertificateStatus::Hash_Not_In_Description
@ Hash_Not_In_Description
governikus::AbstractState
Definition: AbstractState.h:20
governikus::GenericContextContainer< AuthContext >::getContext
virtual QSharedPointer< AuthContext > getContext()
Definition: GenericContextContainer.h:34
governikus::AbstractState::fireContinue
void fireContinue()
governikus::AbstractState::onEntry
void onEntry(QEvent *pEvent) override
Definition: AbstractState.cpp:66
governikus::StateCheckRefreshAddress
Definition: StateCheckRefreshAddress.h:28
governikus::GlobalStatus::ExternalInformation::LAST_URL
@ LAST_URL
governikus::AbstractState::fireAbort
void fireAbort()
GenericContextContainer.h
NetworkManager.h
governikus::NetworkManager::NetworkError::SecurityError
@ SecurityError
governikus::StateCheckRefreshAddress::onEntry
void onEntry(QEvent *pEvent) override
Definition: StateCheckRefreshAddress.cpp:427
StateCheckRefreshAddress.h
governikus::NetworkManager::NetworkError::ServiceUnavailable
@ ServiceUnavailable
governikus::StateBuilder
Definition: StateBuilder.h:18
CertificateChecker.h
AbstractState.h
governikus::GlobalStatus::ExternalInformation::URL_SCHEME
@ URL_SCHEME
http_parser.h
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::TlsChecker::hasValidEphemeralKeyLength
static bool hasValidEphemeralKeyLength(const QSslKey &pEphemeralServerKey)
Checks, whether the length of the ephemeral key is of sufficient length.
Definition: TlsChecker.cpp:62
governikus::GenericContextContainer
Definition: GenericContextContainer.h:20
governikus::GlobalStatus::ExternalInformation::CERTIFICATE_ISSUER_NAME
@ CERTIFICATE_ISSUER_NAME
governikus::TlsChecker::containsFatalError
static bool containsFatalError(const QSharedPointer< QNetworkReply > &pReply, const QList< QSslError > &pErrors)
Definition: TlsChecker.cpp:274
governikus::GlobalStatus::Code::Workflow_Network_Ssl_Certificate_Unsupported_Algorithm_Or_Length
@ Workflow_Network_Ssl_Certificate_Unsupported_Algorithm_Or_Length
spawnMessageLogger
#define spawnMessageLogger(category)
Definition: LogHandler.h:21
governikus::NetworkManager::NetworkError::ProxyError
@ ProxyError
governikus::CertificateChecker::CertificateStatus::Good
@ Good
StateRedirectBrowser.h
governikus::GlobalStatus
Definition: GlobalStatus.h:20
governikus::GlobalStatus::Code::Network_Ssl_Establishment_Error
@ Network_Ssl_Establishment_Error
governikus::AbstractState::updateStatus
void updateStatus(const GlobalStatus &pStatus)
Definition: AbstractState.cpp:127
governikus::GlobalStatus::Code::Network_Proxy_Error
@ Network_Proxy_Error
governikus::NetworkManager::NetworkError::TimeOut
@ TimeOut
governikus::GlobalStatus::Code::Workflow_Network_Invalid_Scheme
@ Workflow_Network_Invalid_Scheme
governikus::GlobalStatus::ExternalInformation::HTTP_STATUS_CODE
@ HTTP_STATUS_CODE
governikus::UrlUtil::isMatchingSameOriginPolicy
static bool isMatchingSameOriginPolicy(const QUrl &pUrl1, const QUrl &pUrl2)
Checks whether the same origin policy is satisfied for the two specified URL.
Definition: UrlUtil.cpp:42
governikus::GlobalStatus::Code::Network_ServiceUnavailable
@ Network_ServiceUnavailable
governikus::GlobalStatus::Code::Workflow_Network_Expected_Redirect
@ Workflow_Network_Expected_Redirect
UrlUtil.h
governikus::GlobalStatus::Code::Network_Other_Error
@ Network_Other_Error
governikus::TlsChecker::logSslConfig
static void logSslConfig(const QSslConfiguration &pCfg, const QMessageLogger &pLogger)
Definition: TlsChecker.cpp:294
governikus::AbstractState::mConnections
QVector< QMetaObject::Connection > mConnections
Definition: AbstractState.h:33
governikus::GlobalStatus::Code::Workflow_Network_Ssl_Connection_Unsupported_Algorithm_Or_Length
@ Workflow_Network_Ssl_Connection_Unsupported_Algorithm_Or_Length
governikus::NetworkManager::NetworkError::OtherError
@ OtherError
governikus::GlobalStatus::ExternalInfoMap
QMap< ExternalInformation, QString > ExternalInfoMap
Definition: GlobalStatus.h:134