finch/gntcertmgr.c

Thu, 06 Feb 2014 20:02:57 +0530

author
Ankit Vani <a@nevitus.org>
date
Thu, 06 Feb 2014 20:02:57 +0530
branch
soc.2013.gobjectification.plugins
changeset 37075
cf3f735b09b7
parent 35454
cf2a24d01503
child 37626
397e415f570c
permissions
-rw-r--r--

Merge gtkdoc-conversion

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

mercurial