/* * Copyright 2020 (C) Ruslan N. Marchenko * * SPDX-License-Identifier: LGPL-2.1-or-later */ #include "config.h" #include #include "gtesttlsbackend.h" static void get_tls_channel_binding (void) { GTlsBackend *backend; gchar *not_null = "NOT_NULL"; GTlsConnection *tls = NULL; GError *error = NULL; backend = g_tls_backend_get_default (); g_assert_nonnull (backend); /* check unimplemented GTlsConnection API sanity */ tls = G_TLS_CONNECTION (g_object_new ( g_tls_backend_get_client_connection_type (backend), NULL)); g_assert_nonnull (tls); g_assert_false (g_tls_connection_get_channel_binding_data (tls, G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, NULL)); g_assert_false (g_tls_connection_get_channel_binding_data (tls, G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, &error)); g_assert_error (error, G_TLS_CHANNEL_BINDING_ERROR, G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED); g_clear_error (&error); if (g_test_subprocess ()) g_assert_false (g_tls_connection_get_channel_binding_data (tls, G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, (GError **)¬_null)); g_object_unref (tls); g_test_trap_subprocess (NULL, 0, 0); g_test_trap_assert_failed (); g_test_trap_assert_stderr ("*GLib-GIO-CRITICAL*"); } static void get_dtls_channel_binding (void) { GTlsBackend *backend; gchar *not_null = "NOT_NULL"; GDtlsConnection *dtls = NULL; GError *error = NULL; backend = g_tls_backend_get_default (); g_assert_nonnull (backend); /* repeat for the dtls now */ dtls = G_DTLS_CONNECTION (g_object_new ( g_tls_backend_get_dtls_client_connection_type (backend), NULL)); g_assert_nonnull (dtls); g_assert_false (g_dtls_connection_get_channel_binding_data (dtls, G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, NULL)); g_assert_false (g_dtls_connection_get_channel_binding_data (dtls, G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, &error)); g_assert_error (error, G_TLS_CHANNEL_BINDING_ERROR, G_TLS_CHANNEL_BINDING_ERROR_NOT_IMPLEMENTED); g_clear_error (&error); if (g_test_subprocess ()) g_assert_false (g_dtls_connection_get_channel_binding_data (dtls, G_TLS_CHANNEL_BINDING_TLS_UNIQUE, NULL, (GError **)¬_null)); g_object_unref (dtls); g_test_trap_subprocess (NULL, 0, 0); g_test_trap_assert_failed (); g_test_trap_assert_stderr ("*GLib-GIO-CRITICAL*"); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); _g_test_tls_backend_get_type (); g_test_add_func ("/tls-connection/get-tls-channel-binding", get_tls_channel_binding); g_test_add_func ("/tls-connection/get-dtls-channel-binding", get_dtls_channel_binding); return g_test_run (); }