AusweisApp2
RemoteServiceSettings.h
gehe zur Dokumentation dieser Datei
1 
7 #pragma once
8 
9 #include "AbstractSettings.h"
10 
11 #include <QDateTime>
12 #include <QList>
13 #include <QSet>
14 #include <QSslCertificate>
15 #include <QSslKey>
16 #include <QString>
17 #include <QVector>
18 
19 class test_RemoteServiceSettings;
20 class test_RemoteConnector;
21 class test_RemoteTlsServer;
22 class test_RemoteWebSocketServer;
23 
24 namespace governikus
25 {
26 
28  : public AbstractSettings
29 {
30  Q_OBJECT
31 
32  friend class AppSettings;
33  friend class ::test_RemoteServiceSettings;
34  friend class ::test_RemoteConnector;
35  friend class ::test_RemoteTlsServer;
36  friend class ::test_RemoteWebSocketServer;
37 
38  public:
39  class RemoteInfo
40  {
41  friend class RemoteServiceSettings;
42  friend class ::test_RemoteServiceSettings;
43 
44  private:
45  QString mFingerprint;
46  QString mName;
47  QDateTime mLastConnected;
48 
49  RemoteInfo(const QString& pFingerprint,
50  const QDateTime& pLastConnected);
51 
52  public:
53  RemoteInfo() = default;
54 
55  static RemoteInfo fromJson(const QJsonObject&);
56  [[nodiscard]] QJsonObject toJson() const;
57 
58  [[nodiscard]] const QString& getFingerprint() const;
59 
60  [[nodiscard]] QString getNameEscaped() const;
61  void setNameUnescaped(const QString& pName);
62 
63  [[nodiscard]] const QDateTime& getLastConnected() const;
64  void setLastConnected(const QDateTime& pLastConnected);
65 
66  bool operator==(const RemoteInfo& pOther) const;
67  bool operator!=(const RemoteInfo& pOther) const;
68  };
69 
70  private:
71  QSharedPointer<QSettings> mStore;
72 
74  [[nodiscard]] QString getDefaultServerName() const;
75  void setTrustedCertificates(const QList<QSslCertificate>& pCertificates);
76  void setUniqueTrustedCertificates(const QSet<QSslCertificate>& pCertificates);
77 
78  void setRemoteInfos(const QVector<RemoteInfo>& pInfos);
79  void syncRemoteInfos(const QSet<QSslCertificate>& pCertificates);
80 
81  public:
82  static QString generateFingerprint(const QSslCertificate& pCert);
83  ~RemoteServiceSettings() override;
84  void save() override;
85 
86  [[nodiscard]] QString getServerName() const;
87  void setServerName(const QString& pName);
88 
89  [[nodiscard]] bool getPinPadMode() const;
90  void setPinPadMode(bool pPinPadMode);
91 
92  [[nodiscard]] QList<QSslCertificate> getTrustedCertificates() const;
93  void addTrustedCertificate(const QSslCertificate& pCertificate);
94  void removeTrustedCertificate(const QSslCertificate& pCertificate);
95  void removeTrustedCertificate(const QString& pFingerprint);
96 
97  bool checkAndGenerateKey(bool pForceGeneration = false);
98 
99  [[nodiscard]] QSslCertificate getCertificate() const;
100  void setCertificate(const QSslCertificate& pCert) const;
101 
102  [[nodiscard]] QSslKey getKey() const;
103  void setKey(const QSslKey& pKey) const;
104 
105  [[nodiscard]] RemoteInfo getRemoteInfo(const QSslCertificate& pCertificate) const;
106  [[nodiscard]] RemoteInfo getRemoteInfo(const QString& pFingerprint) const;
107  [[nodiscard]] QVector<RemoteInfo> getRemoteInfos() const;
108  bool updateRemoteInfo(const RemoteInfo& pInfo);
109 
110  static QString escapeDeviceName(const QString& pDeviceNameUnescaped);
111 
112  Q_SIGNALS:
115 };
116 
117 
118 } // namespace governikus
119 
governikus::RemoteServiceSettings::addTrustedCertificate
void addTrustedCertificate(const QSslCertificate &pCertificate)
Definition: RemoteServiceSettings.cpp:165
governikus::RemoteServiceSettings::save
void save() override
Definition: RemoteServiceSettings.cpp:63
governikus::RemoteServiceSettings::RemoteInfo::operator!=
bool operator!=(const RemoteInfo &pOther) const
Definition: RemoteServiceSettings.cpp:425
governikus::RemoteServiceSettings::getServerName
QString getServerName() const
Definition: RemoteServiceSettings.cpp:82
governikus::RemoteServiceSettings::escapeDeviceName
static QString escapeDeviceName(const QString &pDeviceNameUnescaped)
Definition: RemoteServiceSettings.cpp:352
governikus::RemoteServiceSettings::RemoteInfo
Definition: RemoteServiceSettings.h:40
governikus::RemoteServiceSettings::getKey
QSslKey getKey() const
Definition: RemoteServiceSettings.cpp:230
governikus::RemoteServiceSettings::removeTrustedCertificate
void removeTrustedCertificate(const QSslCertificate &pCertificate)
Definition: RemoteServiceSettings.cpp:173
governikus::RemoteServiceSettings::RemoteInfo::getFingerprint
const QString & getFingerprint() const
Definition: RemoteServiceSettings.cpp:387
RemoteServiceSettings.h
governikus::toString
char * toString(const MessageDispatcher::Msg &pMsg)
governikus::RemoteServiceSettings
Definition: RemoteServiceSettings.h:29
governikus::RemoteServiceSettings::~RemoteServiceSettings
~RemoteServiceSettings() override
Definition: RemoteServiceSettings.cpp:58
name
const char * name
Definition: http_parser.cpp:473
governikus::RemoteServiceSettings::RemoteInfo::operator==
bool operator==(const RemoteInfo &pOther) const
Definition: RemoteServiceSettings.cpp:417
governikus::RemoteServiceSettings::RemoteInfo::setLastConnected
void setLastConnected(const QDateTime &pLastConnected)
Definition: RemoteServiceSettings.cpp:411
SETTINGS_NAME
#define SETTINGS_NAME(_name, _key)
Definition: AbstractSettings.h:16
governikus::AppSettings
Represents application settings.
Definition: AppSettings.h:27
AbstractSettings.h
governikus::RemoteServiceSettings::RemoteInfo::getNameEscaped
QString getNameEscaped() const
Definition: RemoteServiceSettings.cpp:393
KeyPair.h
governikus::RemoteServiceSettings::RemoteInfo::setNameUnescaped
void setNameUnescaped(const QString &pName)
Definition: RemoteServiceSettings.cpp:399
governikus::RemoteServiceSettings::fireTrustedCertificatesChanged
void fireTrustedCertificatesChanged()
governikus::RemoteServiceSettings::RemoteInfo::RemoteInfo
RemoteInfo()=default
governikus::RemoteServiceSettings::getCertificate
QSslCertificate getCertificate() const
Definition: RemoteServiceSettings.cpp:218
governikus::RemoteServiceSettings::RemoteInfo::getLastConnected
const QDateTime & getLastConnected() const
Definition: RemoteServiceSettings.cpp:405
governikus::RemoteServiceSettings::RemoteInfo::toJson
QJsonObject toJson() const
Definition: RemoteServiceSettings.cpp:377
governikus::RemoteServiceSettings::getRemoteInfos
QVector< RemoteInfo > getRemoteInfos() const
Definition: RemoteServiceSettings.cpp:269
governikus
Implementation of ActivationContext for Intent based activation on Android systems.
Definition: ActivationContext.h:15
governikus::RemoteServiceSettings::checkAndGenerateKey
bool checkAndGenerateKey(bool pForceGeneration=false)
Definition: RemoteServiceSettings.cpp:195
DeviceInfo.h
governikus::RemoteServiceSettings::setServerName
void setServerName(const QString &pName)
Definition: RemoteServiceSettings.cpp:88
governikus::RemoteServiceSettings::getTrustedCertificates
QList< QSslCertificate > getTrustedCertificates() const
Definition: RemoteServiceSettings.cpp:113
governikus::RemoteServiceSettings::updateRemoteInfo
bool updateRemoteInfo(const RemoteInfo &pInfo)
Definition: RemoteServiceSettings.cpp:328
governikus::AbstractSettings
Definition: AbstractSettings.h:26
governikus::RemoteServiceSettings::setPinPadMode
void setPinPadMode(bool pPinPadMode)
Definition: RemoteServiceSettings.cpp:107
governikus::RemoteServiceSettings::fireTrustedRemoteInfosChanged
void fireTrustedRemoteInfosChanged()
governikus::DeviceInfo::getName
static QString getName()
Definition: DeviceInfo.cpp:49
governikus::RemoteServiceSettings::setKey
void setKey(const QSslKey &pKey) const
Definition: RemoteServiceSettings.cpp:242
governikus::RemoteServiceSettings::RemoteInfo::fromJson
static RemoteInfo fromJson(const QJsonObject &)
Definition: RemoteServiceSettings.cpp:367
governikus::KeyPair::generate
static KeyPair generate()
Definition: KeyPair.cpp:61
governikus::RemoteServiceSettings::getRemoteInfo
RemoteInfo getRemoteInfo(const QSslCertificate &pCertificate) const
Definition: RemoteServiceSettings.cpp:248
Q_DECLARE_TYPEINFO
Q_DECLARE_TYPEINFO(governikus::RemoteServiceSettings::RemoteInfo, Q_MOVABLE_TYPE)
governikus::RemoteServiceSettings::generateFingerprint
static QString generateFingerprint(const QSslCertificate &pCert)
Definition: RemoteServiceSettings.cpp:39
governikus::RemoteServiceSettings::setCertificate
void setCertificate(const QSslCertificate &pCert) const
Definition: RemoteServiceSettings.cpp:224
governikus::RemoteServiceSettings::getPinPadMode
bool getPinPadMode() const
Definition: RemoteServiceSettings.cpp:101