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 : : }
|