From d1339f60f462c6dc8132cc8d89363dd0a464e20d Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 31 May 2013 12:10:28 +0200 Subject: [PATCH] example: add TLS example --- examples/Makefile.am | 2 +- examples/test-video.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/examples/Makefile.am b/examples/Makefile.am index 47b2cf9..4b753f6 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -5,4 +5,4 @@ noinst_PROGRAMS = test-video test-ogg test-mp4 test-readme \ #INCLUDES = -I$(top_srcdir) -I$(srcdir) AM_CFLAGS = $(GST_OBJ_CFLAGS) -AM_LDFLAGS = $(GST_OBJ_LIBS) +AM_LDFLAGS = $(GST_OBJ_LIBS) $(GIO_LIBS) diff --git a/examples/test-video.c b/examples/test-video.c index 2cfe483..05db5f3 100644 --- a/examples/test-video.c +++ b/examples/test-video.c @@ -25,6 +25,9 @@ * user/admin as the password */ #undef WITH_AUTH +/* define this if you want the server to use TLS */ +#undef WITH_TLS + /* this timeout is periodically run to clean up the expired sessions from the * pool. This needs to be run explicitly currently but might be done * automatically as part of the mainloop. */ @@ -51,6 +54,9 @@ main (int argc, char *argv[]) GstRTSPAuth *auth; gchar *basic; #endif +#ifdef WITH_TLS + GTlsCertificate *cert; +#endif gst_init (&argc, &argv); @@ -58,6 +64,33 @@ main (int argc, char *argv[]) /* create a server instance */ server = gst_rtsp_server_new (); +#ifdef WITH_TLS + cert = g_tls_certificate_new_from_pem ("-----BEGIN CERTIFICATE-----" + "MIICJjCCAY+gAwIBAgIBBzANBgkqhkiG9w0BAQUFADCBhjETMBEGCgmSJomT8ixk" + "ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRp" + "ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkq" + "hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTExMDExNzE5NDcxN1oXDTIxMDEx" + "NDE5NDcxN1owSzETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW" + "B0VYQU1QTEUxGzAZBgNVBAMTEnNlcnZlci5leGFtcGxlLmNvbTBcMA0GCSqGSIb3" + "DQEBAQUAA0sAMEgCQQDYScTxk55XBmbDM9zzwO+grVySE4rudWuzH2PpObIonqbf" + "hRoAalKVluG9jvbHI81eXxCdSObv1KBP1sbN5RzpAgMBAAGjIjAgMAkGA1UdEwQC" + "MAAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEFBQADgYEAYx6fMqT1" + "Gvo0jq88E8mc+bmp4LfXD4wJ7KxYeadQxt75HFRpj4FhFO3DOpVRFgzHlOEo3Fwk" + "PZOKjvkT0cbcoEq5whLH25dHoQxGoVQgFyAP5s+7Vp5AlHh8Y/vAoXeEVyy/RCIH" + "QkhUlAflfDMcrrYjsmwoOPSjhx6Mm/AopX4=" + "-----END CERTIFICATE-----" + "-----BEGIN PRIVATE KEY-----" + "MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEA2EnE8ZOeVwZmwzPc" + "88DvoK1ckhOK7nVrsx9j6TmyKJ6m34UaAGpSlZbhvY72xyPNXl8QnUjm79SgT9bG" + "zeUc6QIDAQABAkBRFJZ32VbqWMP9OVwDJLiwC01AlYLnka0mIQZbT/2xq9dUc9GW" + "U3kiVw4lL8v/+sPjtTPCYYdzHHOyDen6znVhAiEA9qJT7BtQvRxCvGrAhr9MS022" + "tTdPbW829BoUtIeH64cCIQDggG5i48v7HPacPBIH1RaSVhXl8qHCpQD3qrIw3FMw" + "DwIga8PqH5Sf5sHedy2+CiK0V4MRfoU4c3zQ6kArI+bEgSkCIQCLA1vXBiE31B5s" + "bdHoYa1BXebfZVd+1Hd95IfEM5mbRwIgSkDuQwV55BBlvWph3U8wVIMIb4GStaH8" + "W535W8UBbEg=" "-----END PRIVATE KEY-----", -1, NULL); + gst_rtsp_server_set_tls_certificate (server, cert); + g_object_unref (cert); +#endif /* get the mount points for this server, every server has a default object * that be used to map uri mount points to media factories */ @@ -99,7 +132,11 @@ main (int argc, char *argv[]) g_timeout_add_seconds (2, (GSourceFunc) timeout, server); /* start serving, this never stops */ +#ifdef WITH_TLS + g_print ("stream ready at rtsps://127.0.0.1:8554/test\n"); +#else g_print ("stream ready at rtsp://127.0.0.1:8554/test\n"); +#endif g_main_loop_run (loop); return 0; -- 2.7.4