diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-10-03 13:14:32 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-03 13:14:32 +0200 |
| commit | b020af2439342e3f748ecdcad6d4db4d5a8a2880 (patch) | |
| tree | 7d478009ac9d76cce201d9d6ec6b11ec0f351aa8 /src/base/QXmppJingleIq.h | |
| parent | cdf9984a6543f29b7a307a5a45e3e10d0fb28db4 (diff) | |
| download | qxmpp-b020af2439342e3f748ecdcad6d4db4d5a8a2880.tar.gz | |
Implement XEP-0167: Jingle RTP Sessions SRTP negotiation (#487)
Diffstat (limited to 'src/base/QXmppJingleIq.h')
| -rw-r--r-- | src/base/QXmppJingleIq.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/base/QXmppJingleIq.h b/src/base/QXmppJingleIq.h index 5d8de1f8..f5da136c 100644 --- a/src/base/QXmppJingleIq.h +++ b/src/base/QXmppJingleIq.h @@ -16,6 +16,8 @@ class QXmppJingleCandidatePrivate; class QXmppJingleIqContentPrivate; class QXmppJingleIqPrivate; class QXmppJinglePayloadTypePrivate; +class QXmppJingleRtpCryptoElementPrivate; +class QXmppJingleRtpEncryptionPrivate; class QXmppJingleRtpFeedbackPropertyPrivate; class QXmppJingleRtpHeaderExtensionPropertyPrivate; class QXmppSdpParameterPrivate; @@ -44,6 +46,60 @@ private: QSharedDataPointer<QXmppSdpParameterPrivate> d; }; +class QXMPP_EXPORT QXmppJingleRtpCryptoElement +{ +public: + QXmppJingleRtpCryptoElement(); + + QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpCryptoElement) + + uint32_t tag() const; + void setTag(uint32_t tag); + + QString cryptoSuite() const; + void setCryptoSuite(const QString &cryptoSuite); + + QString keyParams() const; + void setKeyParams(const QString &keyParams); + + QString sessionParams() const; + void setSessionParams(const QString &sessionParams); + + /// \cond + void parse(const QDomElement &element); + void toXml(QXmlStreamWriter *writer) const; + /// \endcond + + static bool isJingleRtpCryptoElement(const QDomElement &element); + +private: + QSharedDataPointer<QXmppJingleRtpCryptoElementPrivate> d; +}; + +class QXMPP_EXPORT QXmppJingleRtpEncryption +{ +public: + QXmppJingleRtpEncryption(); + + QXMPP_PRIVATE_DECLARE_RULE_OF_SIX(QXmppJingleRtpEncryption) + + bool isRequired() const; + void setRequired(bool isRequired); + + QVector<QXmppJingleRtpCryptoElement> cryptoElements() const; + void setCryptoElements(const QVector<QXmppJingleRtpCryptoElement> &cryptoElements); + + /// \cond + void parse(const QDomElement &element); + void toXml(QXmlStreamWriter *writer) const; + /// \endcond + + static bool isJingleRtpEncryption(const QDomElement &element); + +private: + QSharedDataPointer<QXmppJingleRtpEncryptionPrivate> d; +}; + class QXMPP_EXPORT QXmppJingleRtpFeedbackProperty { public: @@ -350,6 +406,9 @@ public: bool isRtpMultiplexingSupported() const; void setRtpMultiplexingSupported(bool isRtpMultiplexingSupported); + std::optional<QXmppJingleRtpEncryption> rtpEncryption() const; + void setRtpEncryption(const std::optional<QXmppJingleRtpEncryption> &rtpEncryption); + void addPayloadType(const QXmppJinglePayloadType &payload); QList<QXmppJinglePayloadType> payloadTypes() const; void setPayloadTypes(const QList<QXmppJinglePayloadType> &payloadTypes); |
