aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppJingleIq.h
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-10-03 13:14:32 +0200
committerGitHub <noreply@github.com>2022-10-03 13:14:32 +0200
commitb020af2439342e3f748ecdcad6d4db4d5a8a2880 (patch)
tree7d478009ac9d76cce201d9d6ec6b11ec0f351aa8 /src/base/QXmppJingleIq.h
parentcdf9984a6543f29b7a307a5a45e3e10d0fb28db4 (diff)
downloadqxmpp-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.h59
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);