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_IfdConnector;
21 class test_RemoteTlsServer;
22 class test_RemoteWebSocketServer;
23 
24 namespace governikus
25 {
26 
28  : public AbstractSettings
29 {
30  Q_OBJECT
31  friend class AppSettings;
32  friend class ::test_RemoteServiceSettings;
33  friend class ::test_IfdConnector;
34  friend class ::test_RemoteTlsServer;
35  friend class ::test_RemoteWebSocketServer;
36 
37  public:
38  class RemoteInfo
39  {
40  friend class RemoteServiceSettings;
41  friend class ::test_RemoteServiceSettings;
42 
43  private:
44  QString mFingerprint;
45  QString mName;
46  QDateTime mLastConnected;
47 
48  RemoteInfo(const QString& pFingerprint,
49  const QDateTime& pLastConnected);
50 
51  public:
52  RemoteInfo() = default;
53 
54  static RemoteInfo fromJson(const QJsonObject&);
55  [[nodiscard]] QJsonObject toJson() const;
56 
57  [[nodiscard]] const QString& getFingerprint() const;
58 
59  [[nodiscard]] QString getNameEscaped() const;
60  void setNameUnescaped(const QString& pName);
61 
62  [[nodiscard]] const QDateTime& getLastConnected() const;
63  void setLastConnected(const QDateTime& pLastConnected);
64 
65  bool operator==(const RemoteInfo& pOther) const;
66  bool operator!=(const RemoteInfo& pOther) const;
67  };
68 
69  private:
70  QSharedPointer<QSettings> mStore;
71 
73  [[nodiscard]] QString getDefaultServerName() const;
74  void setTrustedCertificates(const QList<QSslCertificate>& pCertificates);
75  void setUniqueTrustedCertificates(const QSet<QSslCertificate>& pCertificates);
76 
77  void setRemoteInfos(const QVector<RemoteInfo>& pInfos);
78  void syncRemoteInfos(const QSet<QSslCertificate>& pCertificates);
79 
80  public:
81  static QString generateFingerprint(const QSslCertificate& pCert);
82  ~RemoteServiceSettings() override = default;
83  void save() override;
84 
85  [[nodiscard]] QString getServerName() const;
86  void setServerName(const QString& pName);
87 
88  [[nodiscard]] bool getPinPadMode() const;
89  void setPinPadMode(bool pPinPadMode);
90 
91  [[nodiscard]] QList<QSslCertificate> getTrustedCertificates() const;
92  void addTrustedCertificate(const QSslCertificate& pCertificate);
93  void removeTrustedCertificate(const QSslCertificate& pCertificate);
94  void removeTrustedCertificate(const QString& pFingerprint);
95 
96  bool checkAndGenerateKey(bool pForceGeneration = false);
97 
98  [[nodiscard]] QSslCertificate getCertificate() const;
99  void setCertificate(const QSslCertificate& pCert) const;
100 
101  [[nodiscard]] QSslKey getKey() const;
102  void setKey(const QSslKey& pKey) const;
103 
104  [[nodiscard]] RemoteInfo getRemoteInfo(const QSslCertificate& pCertificate) const;
105  [[nodiscard]] RemoteInfo getRemoteInfo(const QString& pFingerprint) const;
106  [[nodiscard]] QVector<RemoteInfo> getRemoteInfos() const;
107  bool updateRemoteInfo(const RemoteInfo& pInfo);
108 
109  static QString escapeDeviceName(const QString& pDeviceNameUnescaped);
110 
111  Q_SIGNALS:
114 };
115 
116 
117 } // namespace governikus
118 
Q_DECLARE_TYPEINFO(governikus::RemoteServiceSettings::RemoteInfo, Q_MOVABLE_TYPE)
Definition: AbstractSettings.h:26
Represents application settings.
Definition: AppSettings.h:27
Definition: RemoteServiceSettings.h:39
bool operator!=(const RemoteInfo &pOther) const
Definition: RemoteServiceSettings.cpp:420
QString getNameEscaped() const
Definition: RemoteServiceSettings.cpp:388
void setLastConnected(const QDateTime &pLastConnected)
Definition: RemoteServiceSettings.cpp:406
static RemoteInfo fromJson(const QJsonObject &)
Definition: RemoteServiceSettings.cpp:362
void setNameUnescaped(const QString &pName)
Definition: RemoteServiceSettings.cpp:394
QJsonObject toJson() const
Definition: RemoteServiceSettings.cpp:372
const QDateTime & getLastConnected() const
Definition: RemoteServiceSettings.cpp:400
const QString & getFingerprint() const
Definition: RemoteServiceSettings.cpp:382
bool operator==(const RemoteInfo &pOther) const
Definition: RemoteServiceSettings.cpp:412
Definition: RemoteServiceSettings.h:29
void removeTrustedCertificate(const QSslCertificate &pCertificate)
Definition: RemoteServiceSettings.cpp:162
void setCertificate(const QSslCertificate &pCert) const
Definition: RemoteServiceSettings.cpp:213
bool updateRemoteInfo(const RemoteInfo &pInfo)
Definition: RemoteServiceSettings.cpp:323
QSslKey getKey() const
Definition: RemoteServiceSettings.cpp:219
RemoteInfo getRemoteInfo(const QSslCertificate &pCertificate) const
Definition: RemoteServiceSettings.cpp:237
void save() override
Definition: RemoteServiceSettings.cpp:58
void setKey(const QSslKey &pKey) const
Definition: RemoteServiceSettings.cpp:231
bool checkAndGenerateKey(bool pForceGeneration=false)
Definition: RemoteServiceSettings.cpp:184
bool getPinPadMode() const
Definition: RemoteServiceSettings.cpp:96
void setPinPadMode(bool pPinPadMode)
Definition: RemoteServiceSettings.cpp:102
QList< QSslCertificate > getTrustedCertificates() const
Definition: RemoteServiceSettings.cpp:108
QVector< RemoteInfo > getRemoteInfos() const
Definition: RemoteServiceSettings.cpp:258
QSslCertificate getCertificate() const
Definition: RemoteServiceSettings.cpp:207
QString getServerName() const
Definition: RemoteServiceSettings.cpp:77
~RemoteServiceSettings() override=default
void addTrustedCertificate(const QSslCertificate &pCertificate)
Definition: RemoteServiceSettings.cpp:154
static QString generateFingerprint(const QSslCertificate &pCert)
Definition: RemoteServiceSettings.cpp:39
static QString escapeDeviceName(const QString &pDeviceNameUnescaped)
Definition: RemoteServiceSettings.cpp:347
void setServerName(const QString &pName)
Definition: RemoteServiceSettings.cpp:83
A simple template renderer.
Definition: ActivationContext.h:15