Branch data Line data Source code
1 : : /* 2 : : * Copyright 2020 (C) Ruslan N. Marchenko <me@ruff.mobi> 3 : : * 4 : : * SPDX-License-Identifier: LGPL-2.1-or-later 5 : : */ 6 : : 7 : : #include "config.h" 8 : : 9 : : #include <gio/gio.h> 10 : : 11 : : #include "gtesttlsbackend.h" 12 : : 13 : : static void 14 : 1 : get_tls_channel_binding (void) 15 : : { 16 : : GTlsBackend *backend; 17 : 1 : gchar *not_null = "NOT_NULL"; 18 : 1 : GTlsConnection *tls = NULL; 19 : 1 : GError *error = NULL; 20 : : 21 : 1 : backend = g_tls_backend_get_default (); 22 : 1 : g_assert_nonnull (backend); 23 : : 24 : : /* check unimplemented GTlsConnection API sanity */ 25 : 1 : tls = G_TLS_CONNECTION (g_object_new ( 26 : : g_tls_backend_get_client_connection_type (backend), NULL)); 27 : 1 : g_assert_nonnull (tls); 28 : : 29 : 1 : g_assert_false (g_tls_connection_get_channel_binding_data (tls, 30 : : G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, NULL)); 31 : : 32 : 1 : g_assert_false (g_tls_connection_get_channel_binding_data (tls, 33 : : G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, &error)); 34 : 1 : g_assert_error (error, G_TLS_CHANNEL_BINDING_ERROR, 35 : : G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED); 36 : 1 : g_clear_error (&error); 37 : : 38 [ - + ]: 1 : if (g_test_subprocess ()) 39 : 0 : g_assert_false (g_tls_connection_get_channel_binding_data (tls, 40 : : G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, (GError **)¬_null)); 41 : : 42 : 1 : g_object_unref (tls); 43 : 1 : g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT); 44 : 1 : g_test_trap_assert_failed (); 45 : 1 : g_test_trap_assert_stderr ("*GLib-GIO-CRITICAL*"); 46 : 1 : } 47 : : 48 : : static void 49 : 1 : get_dtls_channel_binding (void) 50 : : { 51 : : GTlsBackend *backend; 52 : 1 : gchar *not_null = "NOT_NULL"; 53 : 1 : GDtlsConnection *dtls = NULL; 54 : 1 : GError *error = NULL; 55 : : 56 : 1 : backend = g_tls_backend_get_default (); 57 : 1 : g_assert_nonnull (backend); 58 : : 59 : : /* repeat for the dtls now */ 60 : 1 : dtls = G_DTLS_CONNECTION (g_object_new ( 61 : : g_tls_backend_get_dtls_client_connection_type (backend), NULL)); 62 : 1 : g_assert_nonnull (dtls); 63 : : 64 : 1 : g_assert_false (g_dtls_connection_get_channel_binding_data (dtls, 65 : : G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, NULL)); 66 : : 67 : 1 : g_assert_false (g_dtls_connection_get_channel_binding_data (dtls, 68 : : G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, &error)); 69 : 1 : g_assert_error (error, G_TLS_CHANNEL_BINDING_ERROR, 70 : : G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED); 71 : 1 : g_clear_error (&error); 72 : : 73 [ - + ]: 1 : if (g_test_subprocess ()) 74 : 0 : g_assert_false (g_dtls_connection_get_channel_binding_data (dtls, 75 : : G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, (GError **)¬_null)); 76 : : 77 : 1 : g_object_unref (dtls); 78 : 1 : g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT); 79 : 1 : g_test_trap_assert_failed (); 80 : 1 : g_test_trap_assert_stderr ("*GLib-GIO-CRITICAL*"); 81 : 1 : } 82 : : 83 : : int 84 : 1 : main (int argc, 85 : : char *argv[]) 86 : : { 87 : 1 : g_test_init (&argc, &argv, NULL); 88 : : 89 : 1 : _g_test_tls_backend_get_type (); 90 : : 91 : 1 : g_test_add_func ("/tls-connection/get-tls-channel-binding", get_tls_channel_binding); 92 : 1 : g_test_add_func ("/tls-connection/get-dtls-channel-binding", get_dtls_channel_binding); 93 : : 94 : 1 : return g_test_run (); 95 : : }