rtspconnection: allow setting tls certificate validation
authorAleix Conchillo Flaque <aleix@oblong.com>
Fri, 1 Nov 2013 14:25:01 +0000 (07:25 -0700)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 1 Nov 2013 15:42:34 +0000 (16:42 +0100)
Added new functions gst_rtsp_connection_set_tls_validation_flags() to
allow setting the TLS certificate validation flags when establishing a
TLS connection.
A getter is also available, gst_rtsp_connection_get_tls_validation_flags().

https://bugzilla.gnome.org/show_bug.cgi?id=711231

gst-libs/gst/rtsp/gstrtspconnection.c
gst-libs/gst/rtsp/gstrtspconnection.h

index 6946c94..6f0905e 100644 (file)
@@ -446,6 +446,53 @@ gst_rtsp_connection_get_tls (GstRTSPConnection * conn, GError ** error)
   return result;
 }
 
+/**
+ * gst_rtsp_connection_set_tls_validation_flags:
+ * @conn: a #GstRTSPConnection
+ * @flags: the validation flags.
+ *
+ * Sets the TLS validation flags to be used to verify the peer
+ * certificate when a TLS connection is established.
+ *
+ * Returns: TRUE if the validation flags are set correctly, or FALSE if
+ * @conn is NULL or is not a TLS connection.
+ *
+ * Since: 1.2.1
+ */
+gboolean
+gst_rtsp_connection_set_tls_validation_flags (GstRTSPConnection * conn,
+    GTlsCertificateFlags flags)
+{
+  gboolean res = FALSE;
+
+  g_return_val_if_fail (conn != NULL, FALSE);
+
+  res = g_socket_client_get_tls (conn->client);
+  if (res)
+    g_socket_client_set_tls_validation_flags (conn->client, flags);
+
+  return res;
+}
+
+/**
+ * gst_rtsp_connection_get_tls_validation_flags:
+ * @conn: a #GstRTSPConnection
+ *
+ * Gets the TLS validation flags used to verify the peer certificate
+ * when a TLS connection is established.
+ *
+ * Returns: the validationg flags.
+ *
+ * Since: 1.2.1
+ */
+GTlsCertificateFlags
+gst_rtsp_connection_get_tls_validation_flags (GstRTSPConnection * conn)
+{
+  g_return_val_if_fail (conn != NULL, 0);
+
+  return g_socket_client_get_tls_validation_flags (conn->client);
+}
+
 static GstRTSPResult
 setup_tunneling (GstRTSPConnection * conn, GTimeVal * timeout, gchar * uri)
 {
index dbd3ada..dd21636 100644 (file)
@@ -74,6 +74,8 @@ GstRTSPResult      gst_rtsp_connection_free           (GstRTSPConnection *conn);
 
 /* TLS connections */
 GTlsConnection *   gst_rtsp_connection_get_tls        (GstRTSPConnection * conn, GError ** error);
+gboolean           gst_rtsp_connection_set_tls_validation_flags (GstRTSPConnection * conn, GTlsCertificateFlags flags);
+GTlsCertificateFlags gst_rtsp_connection_get_tls_validation_flags (GstRTSPConnection * conn);
 
 
 /* sending/receiving raw bytes */