Add purple_media_set_require_encryption api purple-media-require-encryption-api-addition

Sun, 14 Jul 2019 22:53:31 +0200

author
Fabrice Bellet <fabrice@bellet.info>
date
Sun, 14 Jul 2019 22:53:31 +0200
branch
purple-media-require-encryption-api-addition
changeset 39717
610670ae4776
parent 39716
c71e718084c8
child 39718
81dd8064aa48

Add purple_media_set_require_encryption api

ChangeLog.API file | annotate | diff | comparison | revisions
libpurple/media.c file | annotate | diff | comparison | revisions
libpurple/media.h file | annotate | diff | comparison | revisions
libpurple/media/backend-fs2.c file | annotate | diff | comparison | revisions
libpurple/media/backend-iface.c file | annotate | diff | comparison | revisions
libpurple/media/backend-iface.h file | annotate | diff | comparison | revisions
--- a/ChangeLog.API	Thu Jul 18 18:30:08 2019 +0000
+++ b/ChangeLog.API	Sun Jul 14 22:53:31 2019 +0200
@@ -5,6 +5,7 @@
 		Added:
 		* purple_media_manager_enumerate_elements
 		* purple_request_screenshare_media
+		* purple_media_set_require_encryption
 
 version 2.13.0:
 	libpurple:
--- a/libpurple/media.c	Thu Jul 18 18:30:08 2019 +0000
+++ b/libpurple/media.c	Sun Jul 14 22:53:31 2019 +0200
@@ -1318,6 +1318,19 @@
 }
 
 gboolean
+purple_media_set_require_encryption(PurpleMedia *media, const gchar *sess_id,
+		const gchar *participant, const gboolean require_encryption)
+{
+#ifdef USE_VV
+	g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+	return purple_media_backend_set_require_encryption(media->priv->backend,
+			sess_id, participant, require_encryption);
+#else
+	return FALSE;
+#endif
+}
+
+gboolean
 purple_media_codecs_ready(PurpleMedia *media, const gchar *sess_id)
 {
 #ifdef USE_VV
--- a/libpurple/media.h	Thu Jul 18 18:30:08 2019 +0000
+++ b/libpurple/media.h	Sun Jul 14 22:53:31 2019 +0200
@@ -386,6 +386,20 @@
 		const gchar *key, gsize key_len);
 
 /**
+ * Sets whether a session participant's media requires encryption.
+ *
+ * @param media The media object to find the session in.
+ * @param sess_id The session id of the session to set parameters of.
+ * @param participant The participant of the session to set parameters of.
+ * @param require-encryption TRUE is the media requires encryption.
+ *
+ * @since 2.14.0
+ */
+gboolean purple_media_set_require_encryption(PurpleMedia *media,
+		const gchar *sess_id, const gchar *participant,
+		gboolean require_encryption);
+
+/**
  * Gets whether a session's codecs are ready to be used.
  *
  * @param media The media object to find the session in.
--- a/libpurple/media/backend-fs2.c	Thu Jul 18 18:30:08 2019 +0000
+++ b/libpurple/media/backend-fs2.c	Sun Jul 14 22:53:31 2019 +0200
@@ -97,6 +97,9 @@
 		PurpleMediaBackend *self, const gchar *sess_id,
 		const gchar *participant, const gchar *cipher,
 		const gchar *auth, const gchar *key, gsize key_len);
+static gboolean purple_media_backend_fs2_set_require_encryption(
+		PurpleMediaBackend *self, const gchar *sess_id,
+		const gchar *participant, const gboolean require_encryption);
 #endif
 static gboolean purple_media_backend_fs2_set_remote_codecs(
 		PurpleMediaBackend *self,
@@ -580,6 +583,8 @@
 			purple_media_backend_fs2_set_encryption_parameters;
 	iface->set_decryption_parameters =
 			purple_media_backend_fs2_set_decryption_parameters;
+	iface->set_require_encryption =
+			purple_media_backend_fs2_set_require_encryption;
 #endif
 	iface->set_params = purple_media_backend_fs2_set_params;
 	iface->get_available_params = purple_media_backend_fs2_get_available_params;
@@ -2802,6 +2807,27 @@
 	gst_structure_free(srtp);
 	return result;
 }
+
+static gboolean
+purple_media_backend_fs2_set_require_encryption (PurpleMediaBackend *self,
+		const gchar *sess_id, const gchar *participant,
+		const gboolean require_encryption)
+{
+	PurpleMediaBackendFs2Stream *stream;
+	gboolean result;
+
+	g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), FALSE);
+
+	stream = get_stream(PURPLE_MEDIA_BACKEND_FS2(self), sess_id,
+			participant);
+	if (!stream)
+		return FALSE;
+
+	g_object_set (stream->stream, "require-encryption",
+			require_encryption, NULL);
+	return TRUE;
+}
+
 #endif /* GST 1.0+ */
 
 static gboolean
--- a/libpurple/media/backend-iface.c	Thu Jul 18 18:30:08 2019 +0000
+++ b/libpurple/media/backend-iface.c	Sun Jul 14 22:53:31 2019 +0200
@@ -222,6 +222,20 @@
 			sess_id, participant, cipher, auth, key, key_len);
 }
 
+gboolean
+purple_media_backend_set_require_encryption(PurpleMediaBackend *self,
+		const gchar *sess_id, const gchar *participant,
+		const gboolean require_encryption)
+{
+	PurpleMediaBackendIface *backend_iface;
+
+	g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND(self), FALSE);
+	backend_iface = PURPLE_MEDIA_BACKEND_GET_INTERFACE(self);
+	g_return_val_if_fail(backend_iface->set_require_encryption, FALSE);
+	return backend_iface->set_require_encryption(self,
+			sess_id, participant, require_encryption);
+}
+
 void
 purple_media_backend_set_params(PurpleMediaBackend *self,
 		guint num_params, GParameter *params)
--- a/libpurple/media/backend-iface.h	Thu Jul 18 18:30:08 2019 +0000
+++ b/libpurple/media/backend-iface.h	Sun Jul 14 22:53:31 2019 +0200
@@ -75,6 +75,9 @@
 		const gchar *sess_id, const gchar *participant,
 		const gchar *cipher, const gchar *auth,
 		const gchar *key, gsize key_len);
+	gboolean (*set_require_encryption) (PurpleMediaBackend *self,
+		const gchar *sess_id, const gchar *participant,
+		const gboolean require_encryption);
 	void (*set_params) (PurpleMediaBackend *self,
 		guint num_params, GParameter *params);
 	const gchar **(*get_available_params) (void);
@@ -244,6 +247,20 @@
 		const gchar *key, gsize key_len);
 
 /**
+ * Sets whether a session participant's media requires encryption.
+ *
+ * @param self he media object to find the session in.
+ * @param sess_id The session id of the session to set parameters of.
+ * @param participant The participant of the session to set parameters of.
+ * @param require-encryption TRUE is the media requires encryption.
+ *
+ * @since 2.14.0
+ */
+gboolean purple_media_backend_set_require_encryption(PurpleMediaBackend *self,
+                const gchar *sess_id, const gchar *participant,
+                gboolean require_encryption);
+
+/**
  * Sets various optional parameters of the media backend.
  *
  * @param self The media backend to set the parameters on.

mercurial