~khurshid-alam/unity-control-center/use-usd-schemas

« back to all changes in this revision

Viewing changes to panels/network/wireless-security/eap-method-ttls.c

  • Committer: Sebastien Bacher
  • Author(s): Khurshid Alam
  • Date: 2019-05-17 07:34:33 UTC
  • mfrom: (12920.1.1 unity-control-center)
  • Revision ID: seb128@ubuntu.com-20190517073433-ch2kybdhhzpkmvq4
Network: Port to libnm 1.2 (lp: #1744619)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 
2
/* NetworkManager Applet -- allow user control over networking
 
3
 *
 
4
 * Dan Williams <dcbw@redhat.com>
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License as published by
 
8
 * the Free Software Foundation; either version 2 of the License, or
 
9
 * (at your option) any later version.
 
10
 *
 
11
 * This program is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 * GNU General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License along
 
17
 * with this program; if not, write to the Free Software Foundation, Inc.,
 
18
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
19
 *
 
20
 * Copyright 2007 - 2014 Red Hat, Inc.
 
21
 */
 
22
 
 
23
#include "nm-default.h"
 
24
 
 
25
#include <ctype.h>
 
26
#include <string.h>
 
27
 
 
28
#include "eap-method.h"
 
29
#include "wireless-security.h"
 
30
#include "utils.h"
 
31
 
 
32
#define I_NAME_COLUMN   0
 
33
#define I_METHOD_COLUMN 1
 
34
 
 
35
struct _EAPMethodTTLS {
 
36
        EAPMethod parent;
 
37
 
 
38
        GtkSizeGroup *size_group;
 
39
        WirelessSecurity *sec_parent;
 
40
        gboolean is_editor;
 
41
};
 
42
 
 
43
static void
 
44
destroy (EAPMethod *parent)
 
45
{
 
46
        EAPMethodTTLS *method = (EAPMethodTTLS *) parent;
 
47
 
 
48
        if (method->size_group)
 
49
                g_object_unref (method->size_group);
 
50
}
 
51
 
 
52
static gboolean
 
53
validate (EAPMethod *parent, GError **error)
 
54
{
 
55
        GtkWidget *widget;
 
56
        GtkTreeModel *model;
 
57
        GtkTreeIter iter;
 
58
        EAPMethod *eap = NULL;
 
59
        gboolean valid = FALSE;
 
60
        GError *local = NULL;
 
61
 
 
62
        if (!eap_method_validate_filepicker (parent->builder, "eap_ttls_ca_cert_button", TYPE_CA_CERT, NULL, NULL, &local)) {
 
63
                g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-TTLS CA certificate: %s"), local->message);
 
64
                g_clear_error (&local);
 
65
                return FALSE;
 
66
        }
 
67
        if (eap_method_ca_cert_required (parent->builder, "eap_ttls_ca_cert_not_required_checkbox", "eap_ttls_ca_cert_button")) {
 
68
                g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("invalid EAP-TTLS CA certificate: no certificate specified"));
 
69
                return FALSE;
 
70
        }
 
71
 
 
72
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_inner_auth_combo"));
 
73
        g_assert (widget);
 
74
 
 
75
        model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
 
76
        gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter);
 
77
        gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
 
78
        g_assert (eap);
 
79
        valid = eap_method_validate (eap, error);
 
80
        eap_method_unref (eap);
 
81
        return valid;
 
82
}
 
83
 
 
84
static void
 
85
ca_cert_not_required_toggled (GtkWidget *ignored, gpointer user_data)
 
86
{
 
87
        EAPMethod *parent = user_data;
 
88
 
 
89
        eap_method_ca_cert_not_required_toggled (parent->builder, "eap_ttls_ca_cert_not_required_checkbox", "eap_ttls_ca_cert_button");
 
90
}
 
91
 
 
92
static void
 
93
add_to_size_group (EAPMethod *parent, GtkSizeGroup *group)
 
94
{
 
95
        EAPMethodTTLS *method = (EAPMethodTTLS *) parent;
 
96
        GtkWidget *widget;
 
97
        GtkTreeModel *model;
 
98
        GtkTreeIter iter;
 
99
        EAPMethod *eap;
 
100
 
 
101
        if (method->size_group)
 
102
                g_object_unref (method->size_group);
 
103
        method->size_group = g_object_ref (group);
 
104
 
 
105
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_ca_cert_not_required_checkbox"));
 
106
        g_assert (widget);
 
107
        gtk_size_group_add_widget (group, widget);
 
108
 
 
109
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_anon_identity_label"));
 
110
        g_assert (widget);
 
111
        gtk_size_group_add_widget (group, widget);
 
112
 
 
113
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_ca_cert_label"));
 
114
        g_assert (widget);
 
115
        gtk_size_group_add_widget (group, widget);
 
116
 
 
117
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_inner_auth_label"));
 
118
        g_assert (widget);
 
119
        gtk_size_group_add_widget (group, widget);
 
120
 
 
121
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_inner_auth_combo"));
 
122
        g_assert (widget);
 
123
 
 
124
        model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
 
125
        gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter);
 
126
        gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
 
127
        g_assert (eap);
 
128
        eap_method_add_to_size_group (eap, group);
 
129
        eap_method_unref (eap);
 
130
}
 
131
 
 
132
static void
 
133
fill_connection (EAPMethod *parent, NMConnection *connection, NMSettingSecretFlags flags)
 
134
{
 
135
        NMSetting8021x *s_8021x;
 
136
        NMSetting8021xCKFormat format = NM_SETTING_802_1X_CK_FORMAT_UNKNOWN;
 
137
        GtkWidget *widget;
 
138
        const char *text;
 
139
        char *filename;
 
140
        EAPMethod *eap = NULL;
 
141
        GtkTreeModel *model;
 
142
        GtkTreeIter iter;
 
143
        GError *error = NULL;
 
144
        gboolean ca_cert_error = FALSE;
 
145
 
 
146
        s_8021x = nm_connection_get_setting_802_1x (connection);
 
147
        g_assert (s_8021x);
 
148
 
 
149
        nm_setting_802_1x_add_eap_method (s_8021x, "ttls");
 
150
 
 
151
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_anon_identity_entry"));
 
152
        g_assert (widget);
 
153
        text = gtk_entry_get_text (GTK_ENTRY (widget));
 
154
        if (text && strlen (text))
 
155
                g_object_set (s_8021x, NM_SETTING_802_1X_ANONYMOUS_IDENTITY, text, NULL);
 
156
 
 
157
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_ca_cert_button"));
 
158
        g_assert (widget);
 
159
        filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget));
 
160
        if (!nm_setting_802_1x_set_ca_cert (s_8021x, filename, NM_SETTING_802_1X_CK_SCHEME_PATH, &format, &error)) {
 
161
                g_warning ("Couldn't read CA certificate '%s': %s", filename, error ? error->message : "(unknown)");
 
162
                g_clear_error (&error);
 
163
                ca_cert_error = TRUE;
 
164
        }
 
165
        eap_method_ca_cert_ignore_set (parent, connection, filename, ca_cert_error);
 
166
        g_free (filename);
 
167
 
 
168
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_inner_auth_combo"));
 
169
        model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
 
170
        gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter);
 
171
        gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
 
172
        g_assert (eap);
 
173
 
 
174
        eap_method_fill_connection (eap, connection, flags);
 
175
        eap_method_unref (eap);
 
176
}
 
177
 
 
178
static void
 
179
inner_auth_combo_changed_cb (GtkWidget *combo, gpointer user_data)
 
180
{
 
181
        EAPMethod *parent = (EAPMethod *) user_data;
 
182
        EAPMethodTTLS *method = (EAPMethodTTLS *) parent;
 
183
        GtkWidget *vbox;
 
184
        EAPMethod *eap = NULL;
 
185
        GList *elt, *children;
 
186
        GtkTreeModel *model;
 
187
        GtkTreeIter iter;
 
188
        GtkWidget *eap_widget;
 
189
 
 
190
        vbox = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_inner_auth_vbox"));
 
191
        g_assert (vbox);
 
192
 
 
193
        /* Remove any previous wireless security widgets */
 
194
        children = gtk_container_get_children (GTK_CONTAINER (vbox));
 
195
        for (elt = children; elt; elt = g_list_next (elt))
 
196
                gtk_container_remove (GTK_CONTAINER (vbox), GTK_WIDGET (elt->data));
 
197
        g_list_free (children);
 
198
 
 
199
        model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
 
200
        gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combo), &iter);
 
201
        gtk_tree_model_get (model, &iter, I_METHOD_COLUMN, &eap, -1);
 
202
        g_assert (eap);
 
203
 
 
204
        eap_widget = eap_method_get_widget (eap);
 
205
        g_assert (eap_widget);
 
206
        gtk_widget_unparent (eap_widget);
 
207
 
 
208
        if (method->size_group)
 
209
                eap_method_add_to_size_group (eap, method->size_group);
 
210
        gtk_container_add (GTK_CONTAINER (vbox), eap_widget);
 
211
 
 
212
        eap_method_unref (eap);
 
213
 
 
214
        wireless_security_changed_cb (combo, method->sec_parent);
 
215
}
 
216
 
 
217
static GtkWidget *
 
218
inner_auth_combo_init (EAPMethodTTLS *method,
 
219
                       NMConnection *connection,
 
220
                       NMSetting8021x *s_8021x,
 
221
                       gboolean secrets_only)
 
222
{
 
223
        EAPMethod *parent = (EAPMethod *) method;
 
224
        GtkWidget *combo;
 
225
        GtkListStore *auth_model;
 
226
        GtkTreeIter iter;
 
227
        EAPMethodSimple *em_pap;
 
228
        EAPMethodSimple *em_mschap;
 
229
        EAPMethodSimple *em_mschap_v2;
 
230
        EAPMethodSimple *em_plain_mschap_v2;
 
231
        EAPMethodSimple *em_chap;
 
232
        EAPMethodSimple *em_md5;
 
233
        EAPMethodSimple *em_gtc;
 
234
        guint32 active = 0;
 
235
        const char *phase2_auth = NULL;
 
236
        EAPMethodSimpleFlags simple_flags;
 
237
 
 
238
        auth_model = gtk_list_store_new (2, G_TYPE_STRING, eap_method_get_type ());
 
239
 
 
240
        if (s_8021x) {
 
241
                if (nm_setting_802_1x_get_phase2_auth (s_8021x))
 
242
                        phase2_auth = nm_setting_802_1x_get_phase2_auth (s_8021x);
 
243
                else if (nm_setting_802_1x_get_phase2_autheap (s_8021x))
 
244
                        phase2_auth = nm_setting_802_1x_get_phase2_autheap (s_8021x);
 
245
        }
 
246
 
 
247
        simple_flags = EAP_METHOD_SIMPLE_FLAG_PHASE2 | EAP_METHOD_SIMPLE_FLAG_AUTHEAP_ALLOWED;
 
248
        if (method->is_editor)
 
249
                simple_flags |= EAP_METHOD_SIMPLE_FLAG_IS_EDITOR;
 
250
        if (secrets_only)
 
251
                simple_flags |= EAP_METHOD_SIMPLE_FLAG_SECRETS_ONLY;
 
252
 
 
253
        em_pap = eap_method_simple_new (method->sec_parent,
 
254
                                        connection,
 
255
                                        EAP_METHOD_SIMPLE_TYPE_PAP,
 
256
                                        simple_flags);
 
257
        gtk_list_store_append (auth_model, &iter);
 
258
        gtk_list_store_set (auth_model, &iter,
 
259
                            I_NAME_COLUMN, _("PAP"),
 
260
                            I_METHOD_COLUMN, em_pap,
 
261
                            -1);
 
262
        eap_method_unref (EAP_METHOD (em_pap));
 
263
 
 
264
        /* Check for defaulting to PAP */
 
265
        if (phase2_auth && !strcasecmp (phase2_auth, "pap"))
 
266
                active = 0;
 
267
 
 
268
        em_mschap = eap_method_simple_new (method->sec_parent,
 
269
                                           connection,
 
270
                                           EAP_METHOD_SIMPLE_TYPE_MSCHAP,
 
271
                                           simple_flags);
 
272
        gtk_list_store_append (auth_model, &iter);
 
273
        gtk_list_store_set (auth_model, &iter,
 
274
                            I_NAME_COLUMN, _("MSCHAP"),
 
275
                            I_METHOD_COLUMN, em_mschap,
 
276
                            -1);
 
277
        eap_method_unref (EAP_METHOD (em_mschap));
 
278
 
 
279
        /* Check for defaulting to MSCHAP */
 
280
        if (phase2_auth && !strcasecmp (phase2_auth, "mschap"))
 
281
                active = 1;
 
282
 
 
283
        em_mschap_v2 = eap_method_simple_new (method->sec_parent,
 
284
                                              connection,
 
285
                                              EAP_METHOD_SIMPLE_TYPE_MSCHAP_V2,
 
286
                                              simple_flags);
 
287
        gtk_list_store_append (auth_model, &iter);
 
288
        gtk_list_store_set (auth_model, &iter,
 
289
                            I_NAME_COLUMN, _("MSCHAPv2"),
 
290
                            I_METHOD_COLUMN, em_mschap_v2,
 
291
                            -1);
 
292
        eap_method_unref (EAP_METHOD (em_mschap_v2));
 
293
 
 
294
        /* Check for defaulting to MSCHAPv2 */
 
295
        if (phase2_auth && !strcasecmp (phase2_auth, "mschapv2") &&
 
296
            nm_setting_802_1x_get_phase2_autheap (s_8021x) != NULL)
 
297
                active = 2;
 
298
 
 
299
        em_plain_mschap_v2 = eap_method_simple_new (method->sec_parent,
 
300
                                                    connection,
 
301
                                                    EAP_METHOD_SIMPLE_TYPE_PLAIN_MSCHAP_V2,
 
302
                                                    simple_flags);
 
303
        gtk_list_store_append (auth_model, &iter);
 
304
        gtk_list_store_set (auth_model, &iter,
 
305
                            I_NAME_COLUMN, _("MSCHAPv2 (no EAP)"),
 
306
                            I_METHOD_COLUMN, em_plain_mschap_v2,
 
307
                            -1);
 
308
        eap_method_unref (EAP_METHOD (em_plain_mschap_v2));
 
309
 
 
310
        /* Check for defaulting to plain MSCHAPv2 */
 
311
        if (phase2_auth && !strcasecmp (phase2_auth, "mschapv2") &&
 
312
            nm_setting_802_1x_get_phase2_auth (s_8021x) != NULL)
 
313
                active = 3;
 
314
 
 
315
        em_chap = eap_method_simple_new (method->sec_parent,
 
316
                                         connection,
 
317
                                         EAP_METHOD_SIMPLE_TYPE_CHAP,
 
318
                                         simple_flags);
 
319
        gtk_list_store_append (auth_model, &iter);
 
320
        gtk_list_store_set (auth_model, &iter,
 
321
                            I_NAME_COLUMN, _("CHAP"),
 
322
                            I_METHOD_COLUMN, em_chap,
 
323
                            -1);
 
324
        eap_method_unref (EAP_METHOD (em_chap));
 
325
 
 
326
        /* Check for defaulting to CHAP */
 
327
        if (phase2_auth && !strcasecmp (phase2_auth, "chap"))
 
328
                active = 4;
 
329
 
 
330
        em_md5 = eap_method_simple_new (method->sec_parent,
 
331
                                        connection,
 
332
                                        EAP_METHOD_SIMPLE_TYPE_MD5,
 
333
                                        simple_flags);
 
334
        gtk_list_store_append (auth_model, &iter);
 
335
        gtk_list_store_set (auth_model, &iter,
 
336
                            I_NAME_COLUMN, _("MD5"),
 
337
                            I_METHOD_COLUMN, em_md5,
 
338
                            -1);
 
339
        eap_method_unref (EAP_METHOD (em_md5));
 
340
 
 
341
        /* Check for defaulting to MD5 */
 
342
        if (phase2_auth && !strcasecmp (phase2_auth, "md5"))
 
343
                active = 5;
 
344
 
 
345
        em_gtc = eap_method_simple_new (method->sec_parent,
 
346
                                        connection,
 
347
                                        EAP_METHOD_SIMPLE_TYPE_GTC,
 
348
                                        simple_flags);
 
349
        gtk_list_store_append (auth_model, &iter);
 
350
        gtk_list_store_set (auth_model, &iter,
 
351
                            I_NAME_COLUMN, _("GTC"),
 
352
                            I_METHOD_COLUMN, em_gtc,
 
353
                            -1);
 
354
        eap_method_unref (EAP_METHOD (em_gtc));
 
355
 
 
356
        /* Check for defaulting to GTC */
 
357
        if (phase2_auth && !strcasecmp (phase2_auth, "gtc"))
 
358
                active = 6;
 
359
 
 
360
        combo = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_inner_auth_combo"));
 
361
        g_assert (combo);
 
362
 
 
363
        gtk_combo_box_set_model (GTK_COMBO_BOX (combo), GTK_TREE_MODEL (auth_model));
 
364
        g_object_unref (G_OBJECT (auth_model));
 
365
        gtk_combo_box_set_active (GTK_COMBO_BOX (combo), active);
 
366
 
 
367
        g_signal_connect (G_OBJECT (combo), "changed",
 
368
                          (GCallback) inner_auth_combo_changed_cb,
 
369
                          method);
 
370
        return combo;
 
371
}
 
372
 
 
373
static void
 
374
update_secrets (EAPMethod *parent, NMConnection *connection)
 
375
{
 
376
        eap_method_phase2_update_secrets_helper (parent,
 
377
                                                 connection,
 
378
                                                 "eap_ttls_inner_auth_combo",
 
379
                                                 I_METHOD_COLUMN);
 
380
}
 
381
 
 
382
EAPMethodTTLS *
 
383
eap_method_ttls_new (WirelessSecurity *ws_parent,
 
384
                     NMConnection *connection,
 
385
                     gboolean is_editor,
 
386
                     gboolean secrets_only)
 
387
{
 
388
        EAPMethod *parent;
 
389
        EAPMethodTTLS *method;
 
390
        GtkWidget *widget, *widget_ca_not_required_checkbox;
 
391
        GtkFileFilter *filter;
 
392
        NMSetting8021x *s_8021x = NULL;
 
393
        const char *filename;
 
394
 
 
395
        parent = eap_method_init (sizeof (EAPMethodTTLS),
 
396
                                  validate,
 
397
                                  add_to_size_group,
 
398
                                  fill_connection,
 
399
                                  update_secrets,
 
400
                                  destroy,
 
401
                                  "/org/freedesktop/network-manager-applet/eap-method-ttls.ui",
 
402
                                  "eap_ttls_notebook",
 
403
                                  "eap_ttls_anon_identity_entry",
 
404
                                  FALSE);
 
405
        if (!parent)
 
406
                return NULL;
 
407
 
 
408
        parent->password_flags_name = NM_SETTING_802_1X_PASSWORD;
 
409
        method = (EAPMethodTTLS *) parent;
 
410
        method->sec_parent = ws_parent;
 
411
        method->is_editor = is_editor;
 
412
 
 
413
        if (connection)
 
414
                s_8021x = nm_connection_get_setting_802_1x (connection);
 
415
 
 
416
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_ca_cert_not_required_checkbox"));
 
417
        g_assert (widget);
 
418
        g_signal_connect (G_OBJECT (widget), "toggled",
 
419
                          (GCallback) ca_cert_not_required_toggled,
 
420
                          parent);
 
421
        g_signal_connect (G_OBJECT (widget), "toggled",
 
422
                          (GCallback) wireless_security_changed_cb,
 
423
                          ws_parent);
 
424
        widget_ca_not_required_checkbox = widget;
 
425
 
 
426
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_ca_cert_button"));
 
427
        g_assert (widget);
 
428
        gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (widget), TRUE);
 
429
        gtk_file_chooser_button_set_title (GTK_FILE_CHOOSER_BUTTON (widget),
 
430
                                           _("Choose a Certificate Authority certificate"));
 
431
        g_signal_connect (G_OBJECT (widget), "selection-changed",
 
432
                          (GCallback) wireless_security_changed_cb,
 
433
                          ws_parent);
 
434
        filter = eap_method_default_file_chooser_filter_new (FALSE);
 
435
        gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (widget), filter);
 
436
        if (connection && s_8021x) {
 
437
                filename = NULL;
 
438
                if (nm_setting_802_1x_get_ca_cert_scheme (s_8021x) == NM_SETTING_802_1X_CK_SCHEME_PATH) {
 
439
                        filename = nm_setting_802_1x_get_ca_cert_path (s_8021x);
 
440
                        if (filename)
 
441
                                gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (widget), filename);
 
442
                }
 
443
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget_ca_not_required_checkbox),
 
444
                                              !filename && eap_method_ca_cert_ignore_get (parent, connection));
 
445
        }
 
446
 
 
447
        widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_anon_identity_entry"));
 
448
        if (s_8021x && nm_setting_802_1x_get_anonymous_identity (s_8021x))
 
449
                gtk_entry_set_text (GTK_ENTRY (widget), nm_setting_802_1x_get_anonymous_identity (s_8021x));
 
450
        g_signal_connect (G_OBJECT (widget), "changed",
 
451
                          (GCallback) wireless_security_changed_cb,
 
452
                          ws_parent);
 
453
 
 
454
        widget = inner_auth_combo_init (method, connection, s_8021x, secrets_only);
 
455
        inner_auth_combo_changed_cb (widget, (gpointer) method);
 
456
 
 
457
        if (secrets_only) {
 
458
                widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_anon_identity_label"));
 
459
                gtk_widget_hide (widget);
 
460
                widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_anon_identity_entry"));
 
461
                gtk_widget_hide (widget);
 
462
                widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_ca_cert_label"));
 
463
                gtk_widget_hide (widget);
 
464
                widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_ca_cert_button"));
 
465
                gtk_widget_hide (widget);
 
466
                widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_ca_cert_not_required_checkbox"));
 
467
                gtk_widget_hide (widget);
 
468
                widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_inner_auth_label"));
 
469
                gtk_widget_hide (widget);
 
470
                widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "eap_ttls_inner_auth_combo"));
 
471
                gtk_widget_hide (widget);
 
472
        }
 
473
 
 
474
        return method;
 
475
}
 
476