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