AusweisApp2
SecureStorage.h
gehe zur Dokumentation dieser Datei
1 
8 #pragma once
9 
10 #include "Env.h"
11 #include "TlsConfiguration.h"
12 
13 #include <QByteArrayList>
14 #include <QDateTime>
15 #include <QJsonArray>
16 #include <QJsonObject>
17 #include <QSslCertificate>
18 #include <QSslCipher>
19 #include <QString>
20 #include <QUrl>
21 #include <QVector>
22 
23 
24 class test_SecureStorage;
25 class MockSecureStorage;
26 
27 namespace governikus
28 {
29 
31 {
32  Q_GADGET
33 
34  friend class Env;
35  friend class ::MockSecureStorage;
36  friend class ::test_SecureStorage;
37 
38  private:
39  bool mLoaded;
40  QString mVendor;
41  QByteArrayList mCvcas;
42  QByteArrayList mCvcasTest;
43  QVector<QSslCertificate> mUpdateCertificates;
44  QUrl mSelfAuthenticationUrl;
45  QUrl mSelfAuthenticationTestUrl;
46  QUrl mUpdateServerBaseUrl;
47  QUrl mWhitelistServerBaseUrl;
48  QUrl mAppcastUpdateUrl;
49  QUrl mAppcastBetaUpdateUrl;
50  QString mSmartPersonalizationUrl;
51  QString mSmartPersonalizationTestUrl;
52  QString mSmartServiceId;
53  QString mSmartVersionTag;
54  QString mSmartSsdAid;
55  QString mLocalIfdPackageName;
56  QString mLocalIfdMinVersion;
57  QByteArrayList mLocalIfAllowedCertificateHashes;
58  int mLocalIfdMinPskSize;
59 
60  TlsConfiguration mTlsConfig;
61  TlsConfiguration mTlsConfigPsk;
62  TlsConfiguration mTlsConfigRemoteIfd;
63  TlsConfiguration mTlsConfigRemoteIfdPairing;
64  TlsConfiguration mTlsConfigLocalIfd;
65  QMap<QSsl::KeyAlgorithm, int> mMinStaticKeySizes;
66  QMap<QSsl::KeyAlgorithm, int> mMinEphemeralKeySizes;
67 
68  [[nodiscard]] QJsonArray readJsonArray(const QJsonObject& pConfig, const QLatin1String pName) const;
69  [[nodiscard]] QString readGroup(const QJsonObject& pConfig, const QLatin1String pGroup, const QLatin1String pName) const;
70  [[nodiscard]] QMap<QSsl::KeyAlgorithm, int> readKeySizes(const QJsonObject& pConfig, const QLatin1String pKey) const;
71  [[nodiscard]] QByteArrayList readByteArrayList(const QJsonObject& pConfig, const QLatin1String pName) const;
72 
73  [[nodiscard]] QJsonObject loadFile(const QStringList& pFiles) const;
74  void load();
75 
76  QByteArrayList loadTestCvcsFromAppDir();
77  [[nodiscard]] QByteArray loadTestCvc(const QString& pPath) const;
78 
79  protected:
81  ~SecureStorage() = default;
83 
84  public:
85  enum class TlsSuite
86  {
87  DEFAULT, PSK,
88  };
89 
90  [[nodiscard]] const QString& getVendor() const;
91  [[nodiscard]] const QByteArrayList& getCVRootCertificates(bool pProductive) const;
92  [[nodiscard]] const QVector<QSslCertificate>& getUpdateCertificates() const;
93  [[nodiscard]] const QUrl& getSelfAuthenticationUrl(bool pTest = false) const;
94  [[nodiscard]] const QUrl& getUpdateServerBaseUrl() const;
95  [[nodiscard]] const QUrl& getWhitelistServerBaseUrl() const;
96  [[nodiscard]] const QUrl& getAppcastUpdateUrl() const;
97  [[nodiscard]] const QUrl& getAppcastBetaUpdateUrl() const;
98  [[nodiscard]] const QString& getSmartPersonalizationUrl(bool pTest = false) const;
99  [[nodiscard]] const QString& getSmartServiceId() const;
100  [[nodiscard]] const QString& getSmartVersionTag() const;
101  [[nodiscard]] const QString& getSmartSsdAid() const;
102  [[nodiscard]] const QString& getLocalIfdPackageName() const;
103  [[nodiscard]] const QString& getLocalIfdMinVersion() const;
104  [[nodiscard]] const QByteArrayList& getLocalIfdAllowedCertificateHashes() const;
105  [[nodiscard]] int getLocalIfdMinPskSize() const;
106  [[nodiscard]] const TlsConfiguration& getTlsConfig(TlsSuite pTlsSuite = TlsSuite::DEFAULT) const;
107  [[nodiscard]] const TlsConfiguration& getTlsConfigRemoteIfd(TlsSuite pTlsSuite = TlsSuite::DEFAULT) const;
108  [[nodiscard]] const TlsConfiguration& getTlsConfigLocalIfd() const;
109  [[nodiscard]] int getMinimumStaticKeySize(QSsl::KeyAlgorithm pKeyAlgorithm) const;
110  [[nodiscard]] int getMinimumEphemeralKeySize(QSsl::KeyAlgorithm pKeyAlgorithm) const;
111  [[nodiscard]] bool isLoaded() const;
112 
113  [[nodiscard]] QString getDeveloperConfig() const;
114  [[nodiscard]] QString getCustomConfig() const;
115  [[nodiscard]] QString getEmbeddedConfig() const;
116 };
117 
118 
119 } // namespace governikus
Definition: Env.h:44
Definition: SecureStorage.h:31
const QString & getSmartServiceId() const
Definition: SecureStorage.cpp:373
QString getEmbeddedConfig() const
Definition: SecureStorage.cpp:142
const QString & getSmartPersonalizationUrl(bool pTest=false) const
Definition: SecureStorage.cpp:367
const QByteArrayList & getLocalIfdAllowedCertificateHashes() const
Definition: SecureStorage.cpp:421
static SecureStorage & getInstance()
const TlsConfiguration & getTlsConfigLocalIfd() const
Definition: SecureStorage.cpp:403
const QString & getLocalIfdPackageName() const
Definition: SecureStorage.cpp:409
const QUrl & getAppcastBetaUpdateUrl() const
Definition: SecureStorage.cpp:361
const TlsConfiguration & getTlsConfig(TlsSuite pTlsSuite=TlsSuite::DEFAULT) const
Definition: SecureStorage.cpp:391
const QVector< QSslCertificate > & getUpdateCertificates() const
Definition: SecureStorage.cpp:331
const QString & getLocalIfdMinVersion() const
Definition: SecureStorage.cpp:415
const TlsConfiguration & getTlsConfigRemoteIfd(TlsSuite pTlsSuite=TlsSuite::DEFAULT) const
Definition: SecureStorage.cpp:397
const QString & getSmartSsdAid() const
Definition: SecureStorage.cpp:385
bool isLoaded() const
Definition: SecureStorage.cpp:113
int getMinimumEphemeralKeySize(QSsl::KeyAlgorithm pKeyAlgorithm) const
Definition: SecureStorage.cpp:443
const QString & getSmartVersionTag() const
Definition: SecureStorage.cpp:379
const QUrl & getWhitelistServerBaseUrl() const
Definition: SecureStorage.cpp:349
int getMinimumStaticKeySize(QSsl::KeyAlgorithm pKeyAlgorithm) const
Definition: SecureStorage.cpp:433
QString getDeveloperConfig() const
Definition: SecureStorage.cpp:119
const QUrl & getUpdateServerBaseUrl() const
Definition: SecureStorage.cpp:343
const QString & getVendor() const
Definition: SecureStorage.cpp:319
QString getCustomConfig() const
Definition: SecureStorage.cpp:130
int getLocalIfdMinPskSize() const
Definition: SecureStorage.cpp:427
const QByteArrayList & getCVRootCertificates(bool pProductive) const
Definition: SecureStorage.cpp:325
const QUrl & getAppcastUpdateUrl() const
Definition: SecureStorage.cpp:355
TlsSuite
Definition: SecureStorage.h:86
const QUrl & getSelfAuthenticationUrl(bool pTest=false) const
Definition: SecureStorage.cpp:337
Definition: TlsConfiguration.h:45
A simple template renderer.
Definition: ActivationContext.h:15