finch/gntcertmgr.c

Tue, 06 Nov 2018 16:22:07 -0600

author
Mike Ruprecht <cmaiku@gmail.com>
date
Tue, 06 Nov 2018 16:22:07 -0600
changeset 39284
d30abd418ba0
parent 37632
4879ef4db7cf
permissions
-rw-r--r--

minidialog: Add missing closing tag to <entry> block

20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
1 /* finch
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 *
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 * Finch is the legal property of its developers, whose names are too numerous
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5 * source distribution.
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 *
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 *
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 *
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19691
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
20 *
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22
29106
51c7b2177e42 Fix all the remaining files for which internal.h doesn't end up being the first include.
Paul Aurich <darkrain42@pidgin.im>
parents: 27829
diff changeset
23 #include <internal.h>
22340
5a20c8e2a79e Include finch.h from these files, instead of internal.h.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22269
diff changeset
24 #include "finch.h"
19691
1b2dab4c0f32 Fix building on older glib versions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19687
diff changeset
25
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 #include "debug.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 #include "notify.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28 #include "request.h"
37632
4879ef4db7cf Move Tls Certificate parsing code into tls-certificate-info.[ch]
Mike Ruprecht <cmaiku@gmail.com>
parents: 37626
diff changeset
29 #include "tls-certificate.h"
4879ef4db7cf Move Tls Certificate parsing code into tls-certificate-info.[ch]
Mike Ruprecht <cmaiku@gmail.com>
parents: 37626
diff changeset
30 #include "tls-certificate-info.h"
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32 #include "gntcertmgr.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34 #include "gntbutton.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35 #include "gntlabel.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36 #include "gnttree.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 #include "gntutils.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38 #include "gntwindow.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
40 struct {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41 GntWidget *window;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42 GntWidget *tree;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
43 } certmgr;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
44
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45 /* Pretty much Xerox of gtkcertmgr */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 /* Add certificate */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49 tls_peers_mgmt_import_ok2_cb(gpointer data, const char *result)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
50 {
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
51 GTlsCertificate *crt = data;
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
52 const char *id = result;
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
53 GError *error = NULL;
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
54
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55 /* TODO: Perhaps prompt if you're overwriting a cert? */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
56
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
57 if (purple_tls_certificate_trust(id, crt, &error)) {
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
58 gnt_tree_add_row_last(GNT_TREE(certmgr.tree), g_strdup(id),
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
59 gnt_tree_create_row(GNT_TREE(certmgr.tree), id),
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
60 NULL);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
61 } else {
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
62 purple_debug_error("gntcertmgr/tls_peers_mgmt",
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
63 "Failure trusting peer certificate '%s': %s",
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
64 id, error->message);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
65 g_clear_error(&error);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
66 }
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
67
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
68 g_object_unref(crt);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
69 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
70
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 tls_peers_mgmt_import_ok_cb(gpointer data, const char *filename)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
73 {
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
74 GTlsCertificate *crt;
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
75 GError *error = NULL;
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
77 crt = g_tls_certificate_new_from_file(filename, &error);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
78
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
79 if (crt != NULL) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80 gchar *default_hostname;
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
81 PurpleTlsCertificateInfo *info;
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
82
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
83 info = purple_tls_certificate_get_info(crt);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
84 default_hostname = purple_tls_certificate_info_get_subject_name(info);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
85 purple_tls_certificate_info_free(info);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
86
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
87 purple_request_input(NULL,
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
88 _("Certificate Import"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
89 _("Specify a hostname"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
90 _("Type the host name this certificate is for."),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91 default_hostname, FALSE, FALSE, NULL,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
92 _("OK"), G_CALLBACK(tls_peers_mgmt_import_ok2_cb),
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
93 _("Cancel"), G_CALLBACK(g_object_unref),
34329
ddbc1337332c Request API refactoring: introduce PurpleRequestCommonParameters and switch purple_request_input to it
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 31294
diff changeset
94 NULL, crt);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95 g_free(default_hostname);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
96 } else {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
97 gchar * secondary;
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
98
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
99 purple_debug_error("gntcertmgr/tls_peers_mgmt",
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
100 "Failed to import certificate '%s': %s",
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
101 filename, error->message);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
102 g_clear_error(&error);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
103
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 secondary = g_strdup_printf(_("File %s could not be imported.\nMake sure that the file is readable and in PEM format.\n"), filename);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105 purple_notify_error(NULL,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 _("Certificate Import Error"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 _("X.509 certificate import failed"),
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
108 secondary, NULL);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 g_free(secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
111 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
112
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
114 add_cert_cb(GntWidget *button, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115 {
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
116 purple_request_file(NULL,
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117 _("Select a PEM certificate"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
118 "certificate.pem",
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119 FALSE,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
120 G_CALLBACK(tls_peers_mgmt_import_ok_cb),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
121 NULL,
34333
b92698241603 Request API refactoring: switch purple_request_file to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34331
diff changeset
122 NULL, NULL );
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
123 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
125 /* Save certs in some file */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
126 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
127 tls_peers_mgmt_export_ok_cb(gpointer data, const char *filename)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128 {
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
129 GTlsCertificate *crt = data;
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
130 gchar *pem = NULL;
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
131 GError *error = NULL;
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
132
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
133 g_object_get(crt, "certificate-pem", &pem, NULL);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
134 g_return_if_fail(crt != NULL);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
135
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
136 if (!g_file_set_contents(filename, pem, -1, &error)) {
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
137 gchar * secondary;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
138
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
139 purple_debug_error("gntcertmgr/tls_peers_mgmt",
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
140 "Failed to export certificate '%s': %s",
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
141 filename, error->message);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
142 g_clear_error(&error);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
143
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 secondary = g_strdup_printf(_("Export to file %s failed.\nCheck that you have write permission to the target path\n"), filename);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145 purple_notify_error(NULL,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 _("Certificate Export Error"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
147 _("X.509 certificate export failed"),
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
148 secondary, NULL);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149 g_free(secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
150 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
152 g_free(pem);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
153 g_object_unref(crt);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
154 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
155
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
156 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
157 save_cert_cb(GntWidget *button, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
158 {
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
159 GTlsCertificate *crt;
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
160 const char *key;
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
161 GError *error = NULL;
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
162
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
163 if (!certmgr.window)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
164 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
165
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
166 key = gnt_tree_get_selection_data(GNT_TREE(certmgr.tree));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 if (!key)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
168 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
169
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
170 crt = purple_tls_certificate_new_from_id(key, &error);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
171
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 if (!crt) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173 purple_debug_error("gntcertmgr/tls_peers_mgmt",
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
174 "Failed to fetch trusted certificate '%s': %s",
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
175 key, error->message);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
176 g_clear_error(&error);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
177 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
180 purple_request_file((void*)key,
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 _("PEM X.509 Certificate Export"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182 "certificate.pem", TRUE,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183 G_CALLBACK(tls_peers_mgmt_export_ok_cb),
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
184 G_CALLBACK(g_object_unref),
34333
b92698241603 Request API refactoring: switch purple_request_file to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34331
diff changeset
185 NULL, crt);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
186 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
187
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 /* Show information about a cert */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190 info_cert_cb(GntWidget *button, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 const char *key;
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
193 GTlsCertificate *crt;
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
194 PurpleTlsCertificateInfo *info;
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 gchar *subject;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 GByteArray *fpr_sha1;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197 gchar *fpr_sha1_asc;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198 gchar *primary, *secondary;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
199
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
200 if (!certmgr.window)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
201 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
202
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
203 key = gnt_tree_get_selection_data(GNT_TREE(certmgr.tree));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
204 if (!key)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
205 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
206
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
207 crt = purple_tls_certificate_new_from_id(key, NULL);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 g_return_if_fail(crt);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
210 primary = g_strdup_printf(_("Certificate for %s"), key);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
212 fpr_sha1 = purple_tls_certificate_get_fingerprint_sha1(crt);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
213 fpr_sha1_asc = purple_base16_encode_chunked(fpr_sha1->data,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
214 fpr_sha1->len);
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
215
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
216 info = purple_tls_certificate_get_info(crt);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
217 subject = purple_tls_certificate_info_get_subject_name(info);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
218 purple_tls_certificate_info_free(info);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
219
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
220 secondary = g_strdup_printf(_("Common name: %s\n\nSHA1 fingerprint:\n%s"), subject, fpr_sha1_asc);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29106
diff changeset
221
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
222 purple_notify_info(NULL,
34449
bbcb198650b7 Notify API: extend purple_notify_message with PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
223 _("SSL Host Certificate"), primary, secondary, NULL);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
224
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
225 g_free(primary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
226 g_free(secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
227 g_byte_array_free(fpr_sha1, TRUE);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
228 g_free(fpr_sha1_asc);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
229 g_free(subject);
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
230 g_object_unref(crt);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
231 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
232
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
233 /* Delete a cert */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
234 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
235 tls_peers_mgmt_delete_confirm_cb(gchar *id, gint dontcare)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
236 {
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
237 GError *error = NULL;
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
238
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
239 if (!purple_tls_certificate_distrust(id, &error)) {
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
240 purple_debug_warning("gntcertmgr/tls_peers_mgmt",
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
241 "Deletion failed on id '%s': %s\n",
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
242 id, error->message);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
243 g_clear_error(&error);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
244 };
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
245
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
246 purple_request_close_with_handle((void*)id);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
247 gnt_tree_remove(GNT_TREE(certmgr.tree), (void*)id);
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
248
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
249 g_free(id);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
250 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
251
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
252 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
253 delete_cert_cb(GntWidget *button, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
254 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
255 gchar *primary;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
256 const char *key;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
257
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
258 if (!certmgr.window)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
259 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
260
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
261 key = gnt_tree_get_selection_data(GNT_TREE(certmgr.tree));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
262 if (!key)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
263 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
264
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
265 primary = g_strdup_printf(_("Really delete certificate for %s?"), key);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
266
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
267 purple_request_close_with_handle((void *)key);
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
268 purple_request_yes_no((void *)key, _("Confirm certificate delete"),
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
269 primary, NULL,
22385
d14ac3ae2007 The Gnome Human Interface Guidelines say, "if pressing this button by
Mark Doliner <markdoliner@pidgin.im>
parents: 22340
diff changeset
270 0,
34331
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34329
diff changeset
271 NULL,
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
272 g_strdup(key),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
273 tls_peers_mgmt_delete_confirm_cb,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
274 g_free);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
275
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
276 g_free(primary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
277 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
278
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
279 /* populate the list */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
280 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21653
diff changeset
281 populate_cert_list(void)
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
282 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
283 GList *idlist, *l;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
284
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
285 if (!certmgr.window)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
286 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
287
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
288 gnt_tree_remove_all(GNT_TREE(certmgr.tree));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
289
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
290 idlist = purple_tls_certificate_list_ids();
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
291 for (l = idlist; l; l = l->next) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
292 gnt_tree_add_row_last(GNT_TREE(certmgr.tree), g_strdup(l->data),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
293 gnt_tree_create_row(GNT_TREE(certmgr.tree), l->data), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
294 }
37626
397e415f570c Port Finch to use TLS Certificate API
Mike Ruprecht <cmaiku@gmail.com>
parents: 35454
diff changeset
295 purple_tls_certificate_free_ids(idlist);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
296 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
297
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
298 void finch_certmgr_show(void)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
299 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
300 GntWidget *win, *tree, *box, *button;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
301
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
302 if (certmgr.window) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
303 gnt_window_present(certmgr.window);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
304 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
305 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
306
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
307 certmgr.window = win = gnt_vwindow_new(FALSE);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
308 gnt_box_set_title(GNT_BOX(win), _("Certificate Manager"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
309 gnt_box_set_pad(GNT_BOX(win), 0);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
310
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
311 certmgr.tree = tree = gnt_tree_new();
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
312 gnt_tree_set_hash_fns(GNT_TREE(tree), g_str_hash, g_str_equal, g_free);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
313 gnt_tree_set_column_title(GNT_TREE(tree), 0, _("Hostname"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
314 gnt_tree_set_show_title(GNT_TREE(tree), TRUE);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
315
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
316 gnt_box_add_widget(GNT_BOX(win), tree);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
317
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
318 box = gnt_hbox_new(FALSE);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
319 gnt_box_add_widget(GNT_BOX(win), box);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
320
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
321 button = gnt_button_new(_("Add"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
322 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
323 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(add_cert_cb), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
324 gnt_util_set_trigger_widget(GNT_WIDGET(tree), GNT_KEY_INS, button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
325
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
326 button = gnt_button_new(_("Save"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
327 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
328 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(save_cert_cb), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
329
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
330 button = gnt_button_new(_("Info"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
331 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
332 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(info_cert_cb), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
333
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
334 button = gnt_button_new(_("Delete"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
335 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
336 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(delete_cert_cb), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
337 gnt_util_set_trigger_widget(GNT_WIDGET(tree), GNT_KEY_DEL, button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
338
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
339 button = gnt_button_new(_("Close"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
340 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
341 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gnt_widget_destroy), win);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
342
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
343 g_signal_connect_swapped(G_OBJECT(win), "destroy", G_CALLBACK(g_nullify_pointer), &certmgr.window);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
344
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
345 populate_cert_list();
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
346
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
347 g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(purple_signals_disconnect_by_handle), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
348
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
349 gnt_widget_show(certmgr.window);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
350 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
351

mercurial