Mercurial > pidgin
comparison libpurple/sslconn.h @ 15373:5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Sat, 20 Jan 2007 02:32:10 +0000 |
parents | |
children | 32c366eeeb99 |
comparison
equal
deleted
inserted
replaced
15372:f79e0f4df793 | 15373:5fe8042783c1 |
---|---|
1 /** | |
2 * @file sslconn.h SSL API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
7 * Gaim is the legal property of its developers, whose names are too numerous | |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
10 * | |
11 * This program is free software; you can redistribute it and/or modify | |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 */ | |
25 #ifndef _GAIM_SSLCONN_H_ | |
26 #define _GAIM_SSLCONN_H_ | |
27 | |
28 #include "proxy.h" | |
29 | |
30 #define GAIM_SSL_DEFAULT_PORT 443 | |
31 | |
32 typedef enum | |
33 { | |
34 GAIM_SSL_HANDSHAKE_FAILED = 1, | |
35 GAIM_SSL_CONNECT_FAILED = 2 | |
36 } GaimSslErrorType; | |
37 | |
38 typedef struct _GaimSslConnection GaimSslConnection; | |
39 | |
40 typedef void (*GaimSslInputFunction)(gpointer, GaimSslConnection *, | |
41 GaimInputCondition); | |
42 typedef void (*GaimSslErrorFunction)(GaimSslConnection *, GaimSslErrorType, | |
43 gpointer); | |
44 | |
45 struct _GaimSslConnection | |
46 { | |
47 char *host; | |
48 int port; | |
49 void *connect_cb_data; | |
50 GaimSslInputFunction connect_cb; | |
51 GaimSslErrorFunction error_cb; | |
52 void *recv_cb_data; | |
53 GaimSslInputFunction recv_cb; | |
54 | |
55 int fd; | |
56 int inpa; | |
57 GaimProxyConnectData *connect_data; | |
58 | |
59 void *private_data; | |
60 }; | |
61 | |
62 /** | |
63 * SSL implementation operations structure. | |
64 * | |
65 * Every SSL implementation must provide all of these and register it. | |
66 */ | |
67 typedef struct | |
68 { | |
69 gboolean (*init)(void); | |
70 void (*uninit)(void); | |
71 void (*connectfunc)(GaimSslConnection *gsc); | |
72 void (*close)(GaimSslConnection *gsc); | |
73 size_t (*read)(GaimSslConnection *gsc, void *data, size_t len); | |
74 size_t (*write)(GaimSslConnection *gsc, const void *data, size_t len); | |
75 | |
76 } GaimSslOps; | |
77 | |
78 #ifdef __cplusplus | |
79 extern "C" { | |
80 #endif | |
81 | |
82 /**************************************************************************/ | |
83 /** @name SSL API */ | |
84 /**************************************************************************/ | |
85 /*@{*/ | |
86 | |
87 /** | |
88 * Returns whether or not SSL is currently supported. | |
89 * | |
90 * @return TRUE if SSL is supported, or FALSE otherwise. | |
91 */ | |
92 gboolean gaim_ssl_is_supported(void); | |
93 | |
94 /** | |
95 * Makes a SSL connection to the specified host and port. The caller | |
96 * should keep track of the returned value and use it to cancel the | |
97 * connection, if needed. | |
98 * | |
99 * @param account The account making the connection. | |
100 * @param host The destination host. | |
101 * @param port The destination port. | |
102 * @param func The SSL input handler function. | |
103 * @param error_func The SSL error handler function. This function | |
104 * should NOT call gaim_ssl_close(). In the event | |
105 * of an error the GaimSslConnection will be | |
106 * destroyed for you. | |
107 * @param data User-defined data. | |
108 * | |
109 * @return The SSL connection handle. | |
110 */ | |
111 GaimSslConnection *gaim_ssl_connect(GaimAccount *account, const char *host, | |
112 int port, GaimSslInputFunction func, | |
113 GaimSslErrorFunction error_func, | |
114 void *data); | |
115 | |
116 /** | |
117 * Makes a SSL connection using an already open file descriptor. | |
118 * | |
119 * @param account The account making the connection. | |
120 * @param fd The file descriptor. | |
121 * @param func The SSL input handler function. | |
122 * @param error_func The SSL error handler function. | |
123 * @param data User-defined data. | |
124 * | |
125 * @return The SSL connection handle. | |
126 */ | |
127 GaimSslConnection *gaim_ssl_connect_fd(GaimAccount *account, int fd, | |
128 GaimSslInputFunction func, | |
129 GaimSslErrorFunction error_func, | |
130 void *data); | |
131 | |
132 /** | |
133 * Adds an input watcher for the specified SSL connection. | |
134 * | |
135 * @param gsc The SSL connection handle. | |
136 * @param func The callback function. | |
137 * @param data User-defined data. | |
138 */ | |
139 void gaim_ssl_input_add(GaimSslConnection *gsc, GaimSslInputFunction func, | |
140 void *data); | |
141 | |
142 /** | |
143 * Closes a SSL connection. | |
144 * | |
145 * @param gsc The SSL connection to close. | |
146 */ | |
147 void gaim_ssl_close(GaimSslConnection *gsc); | |
148 | |
149 /** | |
150 * Reads data from an SSL connection. | |
151 * | |
152 * @param gsc The SSL connection handle. | |
153 * @param buffer The destination buffer. | |
154 * @param len The maximum number of bytes to read. | |
155 * | |
156 * @return The number of bytes read. | |
157 */ | |
158 size_t gaim_ssl_read(GaimSslConnection *gsc, void *buffer, size_t len); | |
159 | |
160 /** | |
161 * Writes data to an SSL connection. | |
162 * | |
163 * @param gsc The SSL connection handle. | |
164 * @param buffer The buffer to write. | |
165 * @param len The length of the data to write. | |
166 * | |
167 * @return The number of bytes written. | |
168 */ | |
169 size_t gaim_ssl_write(GaimSslConnection *gsc, const void *buffer, size_t len); | |
170 | |
171 /*@}*/ | |
172 | |
173 /**************************************************************************/ | |
174 /** @name Subsystem API */ | |
175 /**************************************************************************/ | |
176 /*@{*/ | |
177 | |
178 /** | |
179 * Sets the current SSL operations structure. | |
180 * | |
181 * @param ops The SSL operations structure to assign. | |
182 */ | |
183 void gaim_ssl_set_ops(GaimSslOps *ops); | |
184 | |
185 /** | |
186 * Returns the current SSL operations structure. | |
187 * | |
188 * @return The SSL operations structure. | |
189 */ | |
190 GaimSslOps *gaim_ssl_get_ops(void); | |
191 | |
192 /** | |
193 * Initializes the SSL subsystem. | |
194 */ | |
195 void gaim_ssl_init(void); | |
196 | |
197 /** | |
198 * Uninitializes the SSL subsystem. | |
199 */ | |
200 void gaim_ssl_uninit(void); | |
201 | |
202 /*@}*/ | |
203 | |
204 #ifdef __cplusplus | |
205 } | |
206 #endif | |
207 | |
208 #endif /* _GAIM_SSLCONN_H_ */ |