diff options
Diffstat (limited to 'src/qmlnetwork/ssl/qqmlsslconfiguration_p.h')
-rw-r--r-- | src/qmlnetwork/ssl/qqmlsslconfiguration_p.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/qmlnetwork/ssl/qqmlsslconfiguration_p.h b/src/qmlnetwork/ssl/qqmlsslconfiguration_p.h new file mode 100644 index 0000000000..a88b990e5b --- /dev/null +++ b/src/qmlnetwork/ssl/qqmlsslconfiguration_p.h @@ -0,0 +1,109 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#ifndef QQMLSSLCONFIGURATION_P_H +#define QQMLSSLCONFIGURATION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <qtqmlnetworkexports.h> +#include "qqmlsslkey_p.h" + +#include <QtCore/QByteArray> +#include <QtCore/QMetaType> +#include <QtQml/qqml.h> +#include <QtNetwork/qsslconfiguration.h> +#include <QtNetwork/qsslsocket.h> +#include <QtNetwork/qssl.h> + +QT_BEGIN_NAMESPACE + +class Q_QMLNETWORK_EXPORT QQmlSslConfiguration +{ + Q_GADGET + + Q_PROPERTY(QString ciphers READ ciphers WRITE setCiphers) + Q_PROPERTY(QList<QSsl::SslOption> sslOptions READ sslOptions WRITE setSslOptions) + Q_PROPERTY(QSsl::SslProtocol protocol READ protocol WRITE setProtocol) + Q_PROPERTY(QSslSocket::PeerVerifyMode peerVerifyMode READ peerVerifyMode + WRITE setPeerVerifyMode) + Q_PROPERTY(int peerVerifyDepth READ peerVerifyDepth WRITE setPeerVerifyDepth) + Q_PROPERTY(QByteArray sessionTicket READ sessionTicket WRITE setSessionTicket) + +public: + Q_INVOKABLE void setCertificateFiles(const QStringList &certificateFiles); + Q_INVOKABLE void setPrivateKey(const QQmlSslKey &privateKey); + + QString ciphers() const; + QList<QSsl::SslOption> sslOptions() const; + QSsl::SslProtocol protocol() const; + QSslSocket::PeerVerifyMode peerVerifyMode() const; + int peerVerifyDepth() const; + QByteArray sessionTicket() const; + QSslConfiguration const configuration(); + + void setProtocol(QSsl::SslProtocol protocol); + void setPeerVerifyMode(QSslSocket::PeerVerifyMode mode); + void setPeerVerifyDepth(int depth); + void setCiphers(const QString &ciphers); + void setSslOptions(const QList<QSsl::SslOption> &options); + void setSessionTicket(const QByteArray &sessionTicket); + +private: + inline friend bool operator==(const QQmlSslConfiguration &lval, + const QQmlSslConfiguration &rval) + { + return lval.m_certificateFiles == rval.m_certificateFiles + && lval.m_ciphers == rval.m_ciphers + && lval.m_sslOptions == rval.m_sslOptions + && lval.m_configuration == rval.m_configuration; + } + + inline friend bool operator!=(const QQmlSslConfiguration &lval, + const QQmlSslConfiguration &rval) + { + return !(lval == rval); + } + +protected: + void setSslOptionsList(const QSslConfiguration &configuration); + void setCiphersList(const QSslConfiguration &configuration); + + QStringList m_certificateFiles; + QString m_ciphers; + QList<QSsl::SslOption> m_sslOptions; + QSslConfiguration m_configuration; +}; + +class Q_QMLNETWORK_EXPORT QQmlSslDefaultConfiguration : public QQmlSslConfiguration +{ + Q_GADGET + QML_NAMED_ELEMENT(sslConfiguration) + QML_ADDED_IN_VERSION(6, 7) + +public: + QQmlSslDefaultConfiguration(); +}; + +class Q_QMLNETWORK_EXPORT QQmlSslDefaultDtlsConfiguration : public QQmlSslConfiguration +{ + Q_GADGET + QML_NAMED_ELEMENT(sslDtlsConfiguration) + QML_ADDED_IN_VERSION(6, 7) + +public: + QQmlSslDefaultDtlsConfiguration(); +}; + +QT_END_NAMESPACE + +#endif // QQMLSSLCONFIGURATION_P_H |