finch/gntcertmgr.c

Tue, 03 May 2016 14:04:15 -0400

author
Youness Alaoui <kakaroto@kakaroto.homelinux.net>
date
Tue, 03 May 2016 14:04:15 -0400
changeset 37759
35e8677c6ce5
parent 37632
4879ef4db7cf
permissions
-rw-r--r--

oscar: Prepend server option instead of appending it

This allows server/port to be together and appear on top of the
advanced settings instead of having port on top and server at the bottom

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