finch/gntcertmgr.c

Fri, 27 Jun 2008 01:29:59 +0000

author
Justin Rodriguez <ffdragon@soc.pidgin.im>
date
Fri, 27 Jun 2008 01:29:59 +0000
branch
soc.2008.themes
changeset 23649
5da5fe967d10
parent 22385
d14ac3ae2007
child 27829
94b279f7c38c
permissions
-rw-r--r--

Working sound themes (option 1) theme is saved in prefs and there is no seperate custom theme, everything
else is backwards compatiable, sound plays but the theme is not always found

19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 /**
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 * @file gntcertmgr.c GNT Certificate Manager API
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 * @ingroup finch
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
6 /* finch
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 *
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * 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
9 * 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
10 * source distribution.
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 free software; you can redistribute it and/or modify
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * 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
14 * 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
15 * (at your option) any later version.
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 * 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
18 * 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
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
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 * 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
23 * 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
24 * 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
25 *
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27
22340
5a20c8e2a79e Include finch.h from these files, instead of internal.h.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22269
diff changeset
28 #include "finch.h"
19691
1b2dab4c0f32 Fix building on older glib versions.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19687
diff changeset
29
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 #include "certificate.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31 #include "debug.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32 #include "notify.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 #include "request.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35 #include "gntcertmgr.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 #include "gntbutton.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38 #include "gntlabel.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39 #include "gnttree.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
40 #include "gntutils.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41 #include "gntwindow.h"
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
43 struct {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
44 GntWidget *window;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45 GntWidget *tree;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46 PurpleCertificatePool *pool;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 } certmgr;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49 /* Pretty much Xerox of gtkcertmgr */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
50
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
51 /* Add certificate */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
52 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
53 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
54 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55 PurpleCertificate *crt = (PurpleCertificate *) data;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
56 const char *id = result;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
57
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58 /* TODO: Perhaps prompt if you're overwriting a cert? */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 purple_certificate_pool_store(purple_certificate_find_pool("x509", "tls_peers"), id, crt);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61 purple_certificate_destroy(crt);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
63
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
64 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
65 tls_peers_mgmt_import_cancel2_cb(gpointer data, const char *result)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
66 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
67 PurpleCertificate *crt = (PurpleCertificate *) data;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
68 purple_certificate_destroy(crt);
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 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
74 PurpleCertificateScheme *x509;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
75 PurpleCertificate *crt;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
77 x509 = purple_certificate_pool_get_scheme(purple_certificate_find_pool("x509", "tls_peers"));
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 crt = purple_certificate_import(x509, filename);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
81 if (crt != NULL) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
82 gchar *default_hostname;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
83 default_hostname = purple_certificate_get_subject_name(crt);
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
84 purple_request_input(NULL,
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
85 _("Certificate Import"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
86 _("Specify a hostname"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
87 _("Type the host name this certificate is for."),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
88 default_hostname, FALSE, FALSE, NULL,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
89 _("OK"), G_CALLBACK(tls_peers_mgmt_import_ok2_cb),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
90 _("Cancel"), G_CALLBACK(tls_peers_mgmt_import_cancel2_cb),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91 NULL, NULL, NULL,
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
92 crt);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
93 g_free(default_hostname);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
94 } else {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95 gchar * secondary;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
96 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
97 purple_notify_error(NULL,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
98 _("Certificate Import Error"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
99 _("X.509 certificate import failed"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
100 secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
101 g_free(secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 add_cert_cb(GntWidget *button, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 {
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
108 purple_request_file(NULL,
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 _("Select a PEM certificate"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 "certificate.pem",
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
111 FALSE,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
112 G_CALLBACK(tls_peers_mgmt_import_ok_cb),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113 NULL,
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
114 NULL, NULL, NULL, NULL );
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117 /* Save certs in some file */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
118 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119 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
120 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
121 PurpleCertificate *crt = (PurpleCertificate *) data;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
122
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
123 if (!purple_certificate_export(filename, crt)) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124 gchar * secondary;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
125
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
126 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
127 purple_notify_error(NULL,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128 _("Certificate Export Error"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
129 _("X.509 certificate export failed"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
130 secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
131 g_free(secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
132 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
133
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
134 purple_certificate_destroy(crt);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
135 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
136
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
137 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
138 save_cert_cb(GntWidget *button, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
139 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
140 PurpleCertificate *crt;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
141 const char *key;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
142
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
143 if (!certmgr.window)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 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
147 if (!key)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
148 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
150 crt = purple_certificate_pool_retrieve(certmgr.pool, key);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151 if (!crt) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152 purple_debug_error("gntcertmgr/tls_peers_mgmt",
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
153 "Id %s was not in the peers cache?!\n", key);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
154 return;
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
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
157 purple_request_file((void*)key,
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
158 _("PEM X.509 Certificate Export"),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
159 "certificate.pem", TRUE,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
160 G_CALLBACK(tls_peers_mgmt_export_ok_cb),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
161 G_CALLBACK(purple_certificate_destroy),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
162 NULL, NULL, NULL,
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
163 crt);
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
164 }
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 /* Show information about a cert */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
168 info_cert_cb(GntWidget *button, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
169 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
170 const char *key;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171 PurpleCertificate *crt;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 gchar *subject;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173 GByteArray *fpr_sha1;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
174 gchar *fpr_sha1_asc;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
175 gchar *primary, *secondary;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
176
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
177 if (!certmgr.window)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180 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
181 if (!key)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
184 crt = purple_certificate_pool_retrieve(certmgr.pool, key);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
185 g_return_if_fail(crt);
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 primary = g_strdup_printf(_("Certificate for %s"), key);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189 fpr_sha1 = purple_certificate_get_fingerprint_sha1(crt);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190 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
191 fpr_sha1->len);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 subject = purple_certificate_get_subject_name(crt);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
193
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194 secondary = g_strdup_printf(_("Common name: %s\n\nSHA1 fingerprint:\n%s"), subject, fpr_sha1_asc);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196 purple_notify_info(NULL,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
197 _("SSL Host Certificate"), primary, secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
198
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
199 g_free(primary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
200 g_free(secondary);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
201 g_byte_array_free(fpr_sha1, TRUE);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
202 g_free(fpr_sha1_asc);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
203 g_free(subject);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
204 purple_certificate_destroy(crt);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
205 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
206
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
207 /* Delete a cert */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209 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
210 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
211 if (!purple_certificate_pool_delete(certmgr.pool, id)) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
212 purple_debug_warning("gntcertmgr/tls_peers_mgmt",
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
213 "Deletion failed on id %s\n", id);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
214 };
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
215
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216 g_free(id);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
218
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
219 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
220 delete_cert_cb(GntWidget *button, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
221 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
222 gchar *primary;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
223 const char *key;
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 if (!certmgr.window)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
226 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
227
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
228 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
229 if (!key)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
230 return;
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 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
233
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
234 purple_request_close_with_handle((void *)key);
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
235 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
236 primary, NULL,
22385
d14ac3ae2007 The Gnome Human Interface Guidelines say, "if pressing this button by
Mark Doliner <markdoliner@pidgin.im>
parents: 22340
diff changeset
237 0,
21653
621c47778132 merge of '73ae9aeda3c58fbf8437421da68d19d06f93e686'
Evan Schoenberg <evands@pidgin.im>
parents: 21233
diff changeset
238 NULL, NULL, NULL,
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
239 g_strdup(key),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
240 tls_peers_mgmt_delete_confirm_cb,
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
241 g_free);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
242
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
243 g_free(primary);
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
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
246 /* populate the list */
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
247 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
248 populate_cert_list(void)
19687
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
249 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
250 GList *idlist, *l;
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 if (!certmgr.window)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
253 return;
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 gnt_tree_remove_all(GNT_TREE(certmgr.tree));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
256
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
257 idlist = purple_certificate_pool_get_idlist(purple_certificate_find_pool("x509", "tls_peers"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
258 for (l = idlist; l; l = l->next) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
259 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
260 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
261 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
262 purple_certificate_pool_destroy_idlist(idlist);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
263 }
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 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
266 cert_list_added(PurpleCertificatePool *pool, const char *id, gpointer null)
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
267 {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
268 g_return_if_fail(certmgr.window);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
269 gnt_tree_add_row_last(GNT_TREE(certmgr.tree), g_strdup(id),
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
270 gnt_tree_create_row(GNT_TREE(certmgr.tree), id), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
271 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
272
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
273 static void
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
274 cert_list_removed(PurpleCertificatePool *pool, const char *id, gpointer null)
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_return_if_fail(certmgr.window);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
277 purple_request_close_with_handle((void*)id);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
278 gnt_tree_remove(GNT_TREE(certmgr.tree), (void*)id);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
279 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
280
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
281 void finch_certmgr_show(void)
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 GntWidget *win, *tree, *box, *button;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
284 PurpleCertificatePool *pool;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
285
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
286 if (certmgr.window) {
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
287 gnt_window_present(certmgr.window);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
288 return;
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
289 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
290
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
291 certmgr.window = win = gnt_vwindow_new(FALSE);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
292 gnt_box_set_title(GNT_BOX(win), _("Certificate Manager"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
293 gnt_box_set_pad(GNT_BOX(win), 0);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
294
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
295 certmgr.tree = tree = gnt_tree_new();
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
296 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
297 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
298 gnt_tree_set_show_title(GNT_TREE(tree), TRUE);
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 gnt_box_add_widget(GNT_BOX(win), tree);
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 box = gnt_hbox_new(FALSE);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
303 gnt_box_add_widget(GNT_BOX(win), box);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
304
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
305 button = gnt_button_new(_("Add"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
306 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
307 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
308 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
309
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
310 button = gnt_button_new(_("Save"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
311 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
312 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
313
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
314 button = gnt_button_new(_("Info"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
315 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
316 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
317
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
318 button = gnt_button_new(_("Delete"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
319 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
320 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
321 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
322
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
323 button = gnt_button_new(_("Close"));
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
324 gnt_box_add_widget(GNT_BOX(box), button);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
325 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
326
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
327 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
328
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
329 populate_cert_list();
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
330
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
331 pool = certmgr.pool = purple_certificate_find_pool("x509", "tls_peers");
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
332 purple_signal_connect(pool, "certificate-stored",
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
333 win, PURPLE_CALLBACK(cert_list_added), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
334 purple_signal_connect(pool, "certificate-deleted",
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
335 win, PURPLE_CALLBACK(cert_list_removed), NULL);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
336 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
337
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
338 gnt_widget_show(certmgr.window);
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
339 }
13159f49d3a8 Add certificate UI in finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
340

mercurial