From 53c7ad0c8723e2bb95aafef6f92ec59de0203d7f Mon Sep 17 00:00:00 2001 From: Aleix Conchillo Flaque Date: Fri, 1 Nov 2013 07:25:01 -0700 Subject: [PATCH] rtspconnection: allow setting tls certificate validation 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 | 47 +++++++++++++++++++++++++++++++++++ gst-libs/gst/rtsp/gstrtspconnection.h | 2 ++ 2 files changed, 49 insertions(+) diff --git a/gst-libs/gst/rtsp/gstrtspconnection.c b/gst-libs/gst/rtsp/gstrtspconnection.c index 6946c94..6f0905e 100644 --- a/gst-libs/gst/rtsp/gstrtspconnection.c +++ b/gst-libs/gst/rtsp/gstrtspconnection.c @@ -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) { diff --git a/gst-libs/gst/rtsp/gstrtspconnection.h b/gst-libs/gst/rtsp/gstrtspconnection.h index dbd3ada..dd21636 100644 --- a/gst-libs/gst/rtsp/gstrtspconnection.h +++ b/gst-libs/gst/rtsp/gstrtspconnection.h @@ -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 */ -- 2.7.4