/*! * \brief Configuration options for TLS channels * * \copyright Copyright (c) 2016-2018 Governikus GmbH & Co. KG, Germany */ #pragma once #include #include #include #include #include #include #include #include class test_TlsConfiguration; namespace governikus { class SecureStorage; using SignatureAlgorithmPair = QPair; class SslCipherList : public QList { public: SslCipherList& operator +=(const QString& pCipherName); }; class SslEllipticCurveVector : public QVector { public: SslEllipticCurveVector& operator +=(const QString& pEllipticCurveName); }; class TlsConfiguration final { friend class SecureStorage; friend class ::test_TlsConfiguration; friend bool operator==(const TlsConfiguration& pLeft, const TlsConfiguration& pRight); private: QSslConfiguration mConfiguration; TlsConfiguration(); ~TlsConfiguration(); bool readJsonArray(QJsonArray& pArray, const QJsonObject& pConfig, const QLatin1String pName); QSsl::SslProtocol readSslProtocol(const QJsonObject& pConfig, const QLatin1String pName); QVector readSignatureAlgorithms(const QJsonObject& pConfig, const QLatin1String pKey); public: void load(const QJsonObject& pConfig); QSsl::SslProtocol getProtocolVersion() const; QList getCiphers() const; QVector getEllipticCurves() const; QVector getSignatureAlgorithms() const; const QSslConfiguration& getConfiguration() const; }; inline bool operator==(const TlsConfiguration& pLeft, const TlsConfiguration& pRight) { return &pLeft == &pRight || ( pLeft.mConfiguration == pRight.mConfiguration); } inline bool operator!=(const TlsConfiguration& pLeft, const TlsConfiguration& pRight) { return !(pLeft == pRight); } } // namespace governikus