annotate finch/gntcertmgr.c @ 21119:7a87450fdafe

Since the XMPP PurpleConnection is created before we know we need a password, after prompting for the password, the password is never set inside the PurpleConnection, only the PurpleAccount. Now if there's no password on the PurpleConnection, we look for one on the PurpleAccount. fixes #3552
author Nathan Walp <nwalp@pidgin.im>
date Sat, 03 Nov 2007 16:19:50 +0000
parents 6bf32c9e15a7
children 591267f6f1d5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19516
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1 /**
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
2 * @file gntcertmgr.c GNT Certificate Manager API
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
3 * @ingroup finch
20074
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19681
diff changeset
4 */
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19681
diff changeset
5
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 19681
diff changeset
6 /* finch
19516
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
7 *
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
8 * Finch is the legal property of its developers, whose names are too numerous
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
10 * source distribution.
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
11 *
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
15 * (at your option) any later version.
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
16 *
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
20 * GNU General Public License for more details.
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
21 *
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19681
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19528
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19516
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
25 *
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
26 */
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
27
19528
b7fa8fa4de5b Fix building on older glib versions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19516
diff changeset
28 #include "internal.h"
b7fa8fa4de5b Fix building on older glib versions.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19516
diff changeset
29
19516
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
30 #include "certificate.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
31 #include "debug.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
32 #include "notify.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
33 #include "request.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
34
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
35 #include "finch.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
36 #include "gntcertmgr.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
37
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
38 #include "gntbutton.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
39 #include "gntlabel.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
40 #include "gnttree.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
41 #include "gntutils.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
42 #include "gntwindow.h"
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
43
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
44 struct {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
45 GntWidget *window;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
46 GntWidget *tree;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
47 PurpleCertificatePool *pool;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
48 } certmgr;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
49
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
50 /* Pretty much Xerox of gtkcertmgr */
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
51
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
52 /* Add certificate */
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
53 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
54 tls_peers_mgmt_import_ok2_cb(gpointer data, const char *result)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
55 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
56 PurpleCertificate *crt = (PurpleCertificate *) data;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
57 const char *id = result;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
58
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
59 /* TODO: Perhaps prompt if you're overwriting a cert? */
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
60
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
61 purple_certificate_pool_store(purple_certificate_find_pool("x509", "tls_peers"), id, crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
62 purple_certificate_destroy(crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
63 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
64
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
65 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
66 tls_peers_mgmt_import_cancel2_cb(gpointer data, const char *result)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
67 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
68 PurpleCertificate *crt = (PurpleCertificate *) data;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
69 purple_certificate_destroy(crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
70 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
71
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
72 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
73 tls_peers_mgmt_import_ok_cb(gpointer data, const char *filename)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
74 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
75 PurpleCertificateScheme *x509;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
76 PurpleCertificate *crt;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
77
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
78 x509 = purple_certificate_pool_get_scheme(purple_certificate_find_pool("x509", "tls_peers"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
79
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
80 crt = purple_certificate_import(x509, filename);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
81
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
82 if (crt != NULL) {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
83 gchar *default_hostname;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
84 default_hostname = purple_certificate_get_subject_name(crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
85 purple_request_input(NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
86 _("Certificate Import"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
87 _("Specify a hostname"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
88 _("Type the host name this certificate is for."),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
89 default_hostname, FALSE, FALSE, NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
90 _("OK"), G_CALLBACK(tls_peers_mgmt_import_ok2_cb),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
91 _("Cancel"), G_CALLBACK(tls_peers_mgmt_import_cancel2_cb),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
92 NULL, NULL, NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
93 crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
94 g_free(default_hostname);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
95 } else {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
96 gchar * secondary;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
97 secondary = g_strdup_printf(_("File %s could not be imported.\nMake sure that the file is readable and in PEM format.\n"), filename);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
98 purple_notify_error(NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
99 _("Certificate Import Error"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
100 _("X.509 certificate import failed"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
101 secondary);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
102 g_free(secondary);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
103 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
104 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
105
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
106 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
107 add_cert_cb(GntWidget *button, gpointer null)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
108 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
109 purple_request_file(NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
110 _("Select a PEM certificate"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
111 "certificate.pem",
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
112 FALSE,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
113 G_CALLBACK(tls_peers_mgmt_import_ok_cb),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
114 NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
115 NULL, NULL, NULL, NULL );
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
116 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
117
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
118 /* Save certs in some file */
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
119 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
120 tls_peers_mgmt_export_ok_cb(gpointer data, const char *filename)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
121 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
122 PurpleCertificate *crt = (PurpleCertificate *) data;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
123
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
124 if (!purple_certificate_export(filename, crt)) {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
125 gchar * secondary;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
126
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
127 secondary = g_strdup_printf(_("Export to file %s failed.\nCheck that you have write permission to the target path\n"), filename);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
128 purple_notify_error(NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
129 _("Certificate Export Error"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
130 _("X.509 certificate export failed"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
131 secondary);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
132 g_free(secondary);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
133 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
134
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
135 purple_certificate_destroy(crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
136 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
137
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
138 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
139 save_cert_cb(GntWidget *button, gpointer null)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
140 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
141 PurpleCertificate *crt;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
142 const char *key;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
143
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
144 if (!certmgr.window)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
145 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
146
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
147 key = gnt_tree_get_selection_data(GNT_TREE(certmgr.tree));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
148 if (!key)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
149 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
150
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
151 crt = purple_certificate_pool_retrieve(certmgr.pool, key);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
152 if (!crt) {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
153 purple_debug_error("gntcertmgr/tls_peers_mgmt",
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
154 "Id %s was not in the peers cache?!\n", key);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
155 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
156 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
157
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
158 purple_request_file((void*)key,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
159 _("PEM X.509 Certificate Export"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
160 "certificate.pem", TRUE,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
161 G_CALLBACK(tls_peers_mgmt_export_ok_cb),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
162 G_CALLBACK(purple_certificate_destroy),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
163 NULL, NULL, NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
164 crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
165 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
166
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
167 /* Show information about a cert */
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
168 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
169 info_cert_cb(GntWidget *button, gpointer null)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
170 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
171 const char *key;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
172 PurpleCertificate *crt;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
173 gchar *subject;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
174 GByteArray *fpr_sha1;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
175 gchar *fpr_sha1_asc;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
176 gchar *primary, *secondary;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
177
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
178 if (!certmgr.window)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
179 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
180
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
181 key = gnt_tree_get_selection_data(GNT_TREE(certmgr.tree));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
182 if (!key)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
183 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
184
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
185 crt = purple_certificate_pool_retrieve(certmgr.pool, key);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
186 g_return_if_fail(crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
187
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
188 primary = g_strdup_printf(_("Certificate for %s"), key);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
189
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
190 fpr_sha1 = purple_certificate_get_fingerprint_sha1(crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
191 fpr_sha1_asc = purple_base16_encode_chunked(fpr_sha1->data,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
192 fpr_sha1->len);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
193 subject = purple_certificate_get_subject_name(crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
194
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
195 secondary = g_strdup_printf(_("Common name: %s\n\nSHA1 fingerprint:\n%s"), subject, fpr_sha1_asc);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
196
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
197 purple_notify_info(NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
198 _("SSL Host Certificate"), primary, secondary);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
199
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
200 g_free(primary);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
201 g_free(secondary);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
202 g_byte_array_free(fpr_sha1, TRUE);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
203 g_free(fpr_sha1_asc);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
204 g_free(subject);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
205 purple_certificate_destroy(crt);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
206 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
207
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
208 /* Delete a cert */
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
209 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
210 tls_peers_mgmt_delete_confirm_cb(gchar *id, gint dontcare)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
211 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
212 if (!purple_certificate_pool_delete(certmgr.pool, id)) {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
213 purple_debug_warning("gntcertmgr/tls_peers_mgmt",
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
214 "Deletion failed on id %s\n", id);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
215 };
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
216
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
217 g_free(id);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
218 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
219
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
220 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
221 delete_cert_cb(GntWidget *button, gpointer null)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
222 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
223 gchar *primary;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
224 const char *key;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
225
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
226 if (!certmgr.window)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
227 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
228
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
229 key = gnt_tree_get_selection_data(GNT_TREE(certmgr.tree));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
230 if (!key)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
231 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
232
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
233 primary = g_strdup_printf(_("Really delete certificate for %s?"), key);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
234
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
235 purple_request_close_with_handle((void *)key);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
236 purple_request_yes_no((void *)key, _("Confirm certificate delete"),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
237 primary, NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
238 2,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
239 NULL, NULL, NULL,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
240 g_strdup(key),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
241 tls_peers_mgmt_delete_confirm_cb,
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
242 g_free);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
243
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
244 g_free(primary);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
245 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
246
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
247 /* populate the list */
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
248 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
249 populate_cert_list()
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
250 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
251 GList *idlist, *l;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
252
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
253 if (!certmgr.window)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
254 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
255
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
256 gnt_tree_remove_all(GNT_TREE(certmgr.tree));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
257
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
258 idlist = purple_certificate_pool_get_idlist(purple_certificate_find_pool("x509", "tls_peers"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
259 for (l = idlist; l; l = l->next) {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
260 gnt_tree_add_row_last(GNT_TREE(certmgr.tree), g_strdup(l->data),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
261 gnt_tree_create_row(GNT_TREE(certmgr.tree), l->data), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
262 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
263 purple_certificate_pool_destroy_idlist(idlist);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
264 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
265
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
266 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
267 cert_list_added(PurpleCertificatePool *pool, const char *id, gpointer null)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
268 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
269 g_return_if_fail(certmgr.window);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
270 gnt_tree_add_row_last(GNT_TREE(certmgr.tree), g_strdup(id),
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
271 gnt_tree_create_row(GNT_TREE(certmgr.tree), id), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
272 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
273
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
274 static void
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
275 cert_list_removed(PurpleCertificatePool *pool, const char *id, gpointer null)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
276 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
277 g_return_if_fail(certmgr.window);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
278 purple_request_close_with_handle((void*)id);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
279 gnt_tree_remove(GNT_TREE(certmgr.tree), (void*)id);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
280 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
281
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
282 void finch_certmgr_show(void)
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
283 {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
284 GntWidget *win, *tree, *box, *button;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
285 PurpleCertificatePool *pool;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
286
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
287 if (certmgr.window) {
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
288 gnt_window_present(certmgr.window);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
289 return;
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
290 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
291
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
292 certmgr.window = win = gnt_vwindow_new(FALSE);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
293 gnt_box_set_title(GNT_BOX(win), _("Certificate Manager"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
294 gnt_box_set_pad(GNT_BOX(win), 0);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
295
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
296 certmgr.tree = tree = gnt_tree_new();
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
297 gnt_tree_set_hash_fns(GNT_TREE(tree), g_str_hash, g_str_equal, g_free);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
298 gnt_tree_set_column_title(GNT_TREE(tree), 0, _("Hostname"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
299 gnt_tree_set_show_title(GNT_TREE(tree), TRUE);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
300
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
301 gnt_box_add_widget(GNT_BOX(win), tree);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
302
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
303 box = gnt_hbox_new(FALSE);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
304 gnt_box_add_widget(GNT_BOX(win), box);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
305
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
306 button = gnt_button_new(_("Add"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
307 gnt_box_add_widget(GNT_BOX(box), button);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
308 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(add_cert_cb), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
309 gnt_util_set_trigger_widget(GNT_WIDGET(tree), GNT_KEY_INS, button);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
310
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
311 button = gnt_button_new(_("Save"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
312 gnt_box_add_widget(GNT_BOX(box), button);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
313 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(save_cert_cb), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
314
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
315 button = gnt_button_new(_("Info"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
316 gnt_box_add_widget(GNT_BOX(box), button);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
317 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(info_cert_cb), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
318
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
319 button = gnt_button_new(_("Delete"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
320 gnt_box_add_widget(GNT_BOX(box), button);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
321 g_signal_connect(G_OBJECT(button), "activate", G_CALLBACK(delete_cert_cb), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
322 gnt_util_set_trigger_widget(GNT_WIDGET(tree), GNT_KEY_DEL, button);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
323
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
324 button = gnt_button_new(_("Close"));
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
325 gnt_box_add_widget(GNT_BOX(box), button);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
326 g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gnt_widget_destroy), win);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
327
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
328 g_signal_connect_swapped(G_OBJECT(win), "destroy", G_CALLBACK(g_nullify_pointer), &certmgr.window);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
329
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
330 populate_cert_list();
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
331
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
332 pool = certmgr.pool = purple_certificate_find_pool("x509", "tls_peers");
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
333 purple_signal_connect(pool, "certificate-stored",
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
334 win, PURPLE_CALLBACK(cert_list_added), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
335 purple_signal_connect(pool, "certificate-deleted",
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
336 win, PURPLE_CALLBACK(cert_list_removed), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
337 g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(purple_signals_disconnect_by_handle), NULL);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
338
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
339 gnt_widget_show(certmgr.window);
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
340 }
e1751162ab1f Add certificate UI in finch.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
341