libpurple/sslconn.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 25888
d0fdd378a635
child 27813
7989c9bb5000
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file sslconn.c SSL API
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 * @ingroup core
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 /* purple
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
8 * Purple is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7863
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7863
diff changeset
10 * source distribution.
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 *
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * (at your option) any later version.
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * GNU General Public License for more details.
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 *
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
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: 19670
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 */
24569
5dbd0617a27d Build everything with the *_DISABLE_DEPRECATED flags set. This allows us
Richard Laager <rlaager@pidgin.im>
parents: 24116
diff changeset
26 #define _PURPLE_SSLCONN_C_
5dbd0617a27d Build everything with the *_DISABLE_DEPRECATED flags set. This allows us
Richard Laager <rlaager@pidgin.im>
parents: 24116
diff changeset
27
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
28 #include "internal.h"
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29
18476
419bd8747936 - sslconn.c will need the certificate API
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18451
diff changeset
30 #include "certificate.h"
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 #include "debug.h"
24116
56d1536da928 Close notify and request dialogs with PurpleSslConnection as handle.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 20147
diff changeset
32 #include "request.h"
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33 #include "sslconn.h"
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
35 static gboolean _ssl_initialized = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
36 static PurpleSslOps *_ssl_ops = NULL;
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
37
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
38 static gboolean
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
39 ssl_init(void)
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
40 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
41 PurplePlugin *plugin;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
42 PurpleSslOps *ops;
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
43
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
44 if (_ssl_initialized)
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
45 return FALSE;
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
46
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
47 plugin = purple_plugins_find_with_id("core-ssl");
7018
c441ecf99639 [gaim-migrate @ 7581]
Christian Hammond <chipx86@chipx86.com>
parents: 7016
diff changeset
48
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
49 if (plugin != NULL && !purple_plugin_is_loaded(plugin))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
50 purple_plugin_load(plugin);
7018
c441ecf99639 [gaim-migrate @ 7581]
Christian Hammond <chipx86@chipx86.com>
parents: 7016
diff changeset
51
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
52 ops = purple_ssl_get_ops();
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
53 if ((ops == NULL) || (ops->init == NULL) || (ops->uninit == NULL) ||
14241
7b47f525742a [gaim-migrate @ 16829]
Mark Doliner <markdoliner@pidgin.im>
parents: 14229
diff changeset
54 (ops->connectfunc == NULL) || (ops->close == NULL) ||
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
55 (ops->read == NULL) || (ops->write == NULL))
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
56 {
7863
98ef7c137ea5 [gaim-migrate @ 8517]
Bill Tompkins <obobo@users.sourceforge.net>
parents: 7355
diff changeset
57 return FALSE;
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
58 }
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
59
25216
0dc178eff164 A patch from fqueze to prevent re-initalization of the SSL stuff. Fixes #7764.
Daniel Atallah <datallah@pidgin.im>
parents: 24569
diff changeset
60 return (_ssl_initialized = ops->init());
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
61 }
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
62
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
63 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
64 purple_ssl_is_supported(void)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65 {
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
66 #ifdef HAVE_SSL
7355
2067ad89849d [gaim-migrate @ 7946]
Nathan Walp <nwalp@pidgin.im>
parents: 7274
diff changeset
67 ssl_init();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
68 return (purple_ssl_get_ops() != NULL);
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69 #else
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70 return FALSE;
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
71 #endif
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
72 }
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
73
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
74 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
75 purple_ssl_connect_cb(gpointer data, gint source, const gchar *error_message)
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
76 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
77 PurpleSslConnection *gsc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
78 PurpleSslOps *ops;
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
79
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
80 gsc = data;
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
81 gsc->connect_data = NULL;
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
82
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
83 if (source < 0)
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
84 {
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
85 if (gsc->error_cb != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
86 gsc->error_cb(gsc, PURPLE_SSL_CONNECT_FAILED, gsc->connect_cb_data);
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
87
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
88 purple_ssl_close(gsc);
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
89 return;
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
90 }
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
91
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
92 gsc->fd = source;
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
93
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
94 ops = purple_ssl_get_ops();
14241
7b47f525742a [gaim-migrate @ 16829]
Mark Doliner <markdoliner@pidgin.im>
parents: 14229
diff changeset
95 ops->connectfunc(gsc);
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
96 }
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
97
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
98 PurpleSslConnection *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
99 purple_ssl_connect(PurpleAccount *account, const char *host, int port,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
100 PurpleSslInputFunction func, PurpleSslErrorFunction error_func,
7274
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
101 void *data)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
103 PurpleSslConnection *gsc;
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
105 g_return_val_if_fail(host != NULL, NULL);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
106 g_return_val_if_fail(port != 0 && port != -1, NULL);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
107 g_return_val_if_fail(func != NULL, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
108 g_return_val_if_fail(purple_ssl_is_supported(), NULL);
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
109
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
110 if (!_ssl_initialized)
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
111 {
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
112 if (!ssl_init())
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
113 return NULL;
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
114 }
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
115
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
116 gsc = g_new0(PurpleSslConnection, 1);
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
117
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
118 gsc->fd = -1;
7274
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
119 gsc->host = g_strdup(host);
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
120 gsc->port = port;
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
121 gsc->connect_cb_data = data;
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
122 gsc->connect_cb = func;
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
123 gsc->error_cb = error_func;
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
124
18587
f5ce93d75799 (this revision will be disapproved)
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18586
diff changeset
125 /* TODO: Move this elsewhere */
f5ce93d75799 (this revision will be disapproved)
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18586
diff changeset
126 gsc->verifier = purple_certificate_find_verifier("x509","tls_cached");
f5ce93d75799 (this revision will be disapproved)
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18586
diff changeset
127
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
128 gsc->connect_data = purple_proxy_connect(NULL, account, host, port, purple_ssl_connect_cb, gsc);
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
129
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
130 if (gsc->connect_data == NULL)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
131 {
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
132 g_free(gsc->host);
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
133 g_free(gsc);
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
134
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
135 return NULL;
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136 }
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
137
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
138 return (PurpleSslConnection *)gsc;
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
139 }
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
141 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
142 recv_cb(gpointer data, gint source, PurpleInputCondition cond)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
143 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
144 PurpleSslConnection *gsc = data;
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
145
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
146 gsc->recv_cb(gsc->recv_cb_data, gsc, cond);
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
147 }
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
148
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
149 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
150 purple_ssl_input_add(PurpleSslConnection *gsc, PurpleSslInputFunction func,
7274
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
151 void *data)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
152 {
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
153 g_return_if_fail(func != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
154 g_return_if_fail(purple_ssl_is_supported());
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
155
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
156 gsc->recv_cb_data = data;
7274
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
157 gsc->recv_cb = func;
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
158
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
159 gsc->inpa = purple_input_add(gsc->fd, PURPLE_INPUT_READ, recv_cb, gsc);
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
160 }
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6762
diff changeset
161
18487
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
162 const gchar *
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
163 purple_ssl_strerror(PurpleSslErrorType error)
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
164 {
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
165 switch(error) {
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
166 case PURPLE_SSL_CONNECT_FAILED:
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
167 return _("SSL Connection Failed");
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
168 case PURPLE_SSL_HANDSHAKE_FAILED:
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
169 return _("SSL Handshake Failed");
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
170 case PURPLE_SSL_CERTIFICATE_INVALID:
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
171 return _("SSL peer presented an invalid certificate");
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
172 default:
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
173 purple_debug_warning("sslconn", "Unknown SSL error code %d\n", error);
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
174 return _("Unknown SSL error");
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
175 }
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
176 }
0730e45141fd - Add purple_ssl_strerror for handy error description power!
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18478
diff changeset
177
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
178 PurpleSslConnection *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
179 purple_ssl_connect_fd(PurpleAccount *account, int fd,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
180 PurpleSslInputFunction func,
17765
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
181 PurpleSslErrorFunction error_func,
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
182 void *data)
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
183 {
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
184 return purple_ssl_connect_with_host_fd(account, fd, func, error_func, NULL, data);
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
185 }
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
186
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
187 PurpleSslConnection *
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
188 purple_ssl_connect_with_host_fd(PurpleAccount *account, int fd,
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
189 PurpleSslInputFunction func,
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
190 PurpleSslErrorFunction error_func,
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
191 const char *host,
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
192 void *data)
6762
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
193 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
194 PurpleSslConnection *gsc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
195 PurpleSslOps *ops;
6762
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
196
14048
b577c53406c0 [gaim-migrate @ 16556]
Mark Doliner <markdoliner@pidgin.im>
parents: 13664
diff changeset
197 g_return_val_if_fail(fd != -1, NULL);
6762
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
198 g_return_val_if_fail(func != NULL, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
199 g_return_val_if_fail(purple_ssl_is_supported(), NULL);
6762
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
200
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
201 if (!_ssl_initialized)
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
202 {
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
203 if (!ssl_init())
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
204 return NULL;
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
205 }
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
206
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
207 gsc = g_new0(PurpleSslConnection, 1);
6762
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
208
7274
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
209 gsc->connect_cb_data = data;
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
210 gsc->connect_cb = func;
42ec5f56e32a [gaim-migrate @ 7851]
Christian Hammond <chipx86@chipx86.com>
parents: 7024
diff changeset
211 gsc->error_cb = error_func;
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
212 gsc->fd = fd;
17765
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
213 if(host)
04aaa6965b10 Fixed one of the issues in the ssl stuff, allowing CN cert checks for starttls-connections in XMPP.
Andreas Monitzer <am@adiumx.com>
parents: 17316
diff changeset
214 gsc->host = g_strdup(host);
6762
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
215
18587
f5ce93d75799 (this revision will be disapproved)
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18586
diff changeset
216 /* TODO: Move this elsewhere */
f5ce93d75799 (this revision will be disapproved)
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18586
diff changeset
217 gsc->verifier = purple_certificate_find_verifier("x509","tls_cached");
f5ce93d75799 (this revision will be disapproved)
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18586
diff changeset
218
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 25216
diff changeset
219
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
220 ops = purple_ssl_get_ops();
14241
7b47f525742a [gaim-migrate @ 16829]
Mark Doliner <markdoliner@pidgin.im>
parents: 14229
diff changeset
221 ops->connectfunc(gsc);
6762
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
222
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
223 return (PurpleSslConnection *)gsc;
6762
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
224 }
2349053f14aa [gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents: 6745
diff changeset
225
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
226 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
227 purple_ssl_close(PurpleSslConnection *gsc)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
228 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
229 PurpleSslOps *ops;
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
230
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
231 g_return_if_fail(gsc != NULL);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
232
24116
56d1536da928 Close notify and request dialogs with PurpleSslConnection as handle.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 20147
diff changeset
233 purple_request_close_with_handle(gsc);
56d1536da928 Close notify and request dialogs with PurpleSslConnection as handle.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 20147
diff changeset
234 purple_notify_close_with_handle(gsc);
56d1536da928 Close notify and request dialogs with PurpleSslConnection as handle.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 20147
diff changeset
235
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
236 ops = purple_ssl_get_ops();
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
237 (ops->close)(gsc);
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
238
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
239 if (gsc->connect_data != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
240 purple_proxy_connect_cancel(gsc->connect_data);
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
241
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
242 if (gsc->inpa > 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
243 purple_input_remove(gsc->inpa);
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
244
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
245 if (gsc->fd >= 0)
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
246 close(gsc->fd);
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
247
14048
b577c53406c0 [gaim-migrate @ 16556]
Mark Doliner <markdoliner@pidgin.im>
parents: 13664
diff changeset
248 g_free(gsc->host);
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
249 g_free(gsc);
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
250 }
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
251
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
252 size_t
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
253 purple_ssl_read(PurpleSslConnection *gsc, void *data, size_t len)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
254 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
255 PurpleSslOps *ops;
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
256
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
257 g_return_val_if_fail(gsc != NULL, 0);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
258 g_return_val_if_fail(data != NULL, 0);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
259 g_return_val_if_fail(len > 0, 0);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
260
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
261 ops = purple_ssl_get_ops();
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
262 return (ops->read)(gsc, data, len);
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
263 }
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
264
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
265 size_t
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
266 purple_ssl_write(PurpleSslConnection *gsc, const void *data, size_t len)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
267 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
268 PurpleSslOps *ops;
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
269
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
270 g_return_val_if_fail(gsc != NULL, 0);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
271 g_return_val_if_fail(data != NULL, 0);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
272 g_return_val_if_fail(len > 0, 0);
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
273
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
274 ops = purple_ssl_get_ops();
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
275 return (ops->write)(gsc, data, len);
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
276 }
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
277
18451
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
278 GList *
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
279 purple_ssl_get_peer_certificates(PurpleSslConnection *gsc)
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
280 {
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
281 PurpleSslOps *ops;
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
282
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
283 g_return_val_if_fail(gsc != NULL, NULL);
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
284
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
285 ops = purple_ssl_get_ops();
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
286 return (ops->get_peer_certificates)(gsc);
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
287 }
304d2fa12f6a - purple_ssl_get_peer_certificates
William Ehlhardt <williamehlhardt@gmail.com>
parents: 17765
diff changeset
288
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
289 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
290 purple_ssl_set_ops(PurpleSslOps *ops)
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
291 {
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
292 _ssl_ops = ops;
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
293 }
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
294
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
295 PurpleSslOps *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
296 purple_ssl_get_ops(void)
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
297 {
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
298 return _ssl_ops;
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
299 }
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
300
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
301 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
302 purple_ssl_init(void)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
303 {
19357
70ea09942a62 - Force full initialization of SSL system at startup
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18587
diff changeset
304 /* Although purple_ssl_is_supported will do the initialization on
70ea09942a62 - Force full initialization of SSL system at startup
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18587
diff changeset
305 command, SSL plugins tend to register CertificateSchemes as well
70ea09942a62 - Force full initialization of SSL system at startup
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18587
diff changeset
306 as providing SSL ops. */
19668
2071903c58e4 Fix the win32 build for the cert SoC branch merge.
Daniel Atallah <datallah@pidgin.im>
parents: 19357
diff changeset
307 if (!ssl_init()) {
2071903c58e4 Fix the win32 build for the cert SoC branch merge.
Daniel Atallah <datallah@pidgin.im>
parents: 19357
diff changeset
308 purple_debug_error("sslconn", "Unable to initialize SSL.\n");
2071903c58e4 Fix the win32 build for the cert SoC branch merge.
Daniel Atallah <datallah@pidgin.im>
parents: 19357
diff changeset
309 }
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
310 }
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
312 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
313 purple_ssl_uninit(void)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
315 PurpleSslOps *ops;
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
316
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
317 if (!_ssl_initialized)
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
318 return;
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
319
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
320 ops = purple_ssl_get_ops();
14222
71d8761db708 [gaim-migrate @ 16808]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
321 ops->uninit();
6738
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
322
aa797bcc69dd [gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents: 6735
diff changeset
323 _ssl_initialized = FALSE;
6703
6f9d558270c9 [gaim-migrate @ 7229]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
324 }

mercurial