Mercurial > pidgin.yaz
annotate src/sslconn.h @ 7087:bbf7f4604140
[gaim-migrate @ 7652]
This should hopefully fix the problem where gaim tries to use NSS if GNUTLS
fails, even if NSS also fails.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Tue, 30 Sep 2003 23:17:49 +0000 |
parents | 8105c9cd573f |
children | 448e39ace278 |
rev | line source |
---|---|
6703 | 1 /** |
2 * @file sslconn.h SSL API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
7 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
8 * | |
9 * This program is free software; you can redistribute it and/or modify | |
10 * it under the terms of the GNU General Public License as published by | |
11 * the Free Software Foundation; either version 2 of the License, or | |
12 * (at your option) any later version. | |
13 * | |
14 * This program is distributed in the hope that it will be useful, | |
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 * GNU General Public License for more details. | |
18 * | |
19 * You should have received a copy of the GNU General Public License | |
20 * along with this program; if not, write to the Free Software | |
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
22 */ | |
23 #ifndef _GAIM_SSL_H_ | |
24 #define _GAIM_SSL_H_ | |
25 | |
26 #include "proxy.h" | |
27 | |
6738
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
28 #define GAIM_SSL_DEFAULT_PORT 443 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
29 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
30 typedef struct _GaimSslConnection GaimSslConnection; |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
31 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
32 typedef void (*GaimSslInputFunction)(gpointer, GaimSslConnection *, |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
33 GaimInputCondition); |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
34 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
35 struct _GaimSslConnection |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
36 { |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
37 char *host; |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
38 int port; |
6764 | 39 void *connect_cb_data; |
40 GaimSslInputFunction connect_cb; | |
41 void *recv_cb_data; | |
42 GaimSslInputFunction recv_cb; | |
6738
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
43 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
44 int fd; |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
45 int inpa; |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
46 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
47 void *private_data; |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
48 }; |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
49 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
50 /** |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
51 * SSL implementation operations structure. |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
52 * |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
53 * Every SSL implementation must provide one of these and register it. |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
54 */ |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
55 typedef struct |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
56 { |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
57 gboolean (*init)(void); |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
58 void (*uninit)(void); |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
59 GaimInputFunction connect_cb; |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
60 void (*close)(GaimSslConnection *gsc); |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
61 size_t (*read)(GaimSslConnection *gsc, void *data, size_t len); |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
62 size_t (*write)(GaimSslConnection *gsc, const void *data, size_t len); |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
63 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
64 } GaimSslOps; |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
65 |
6703 | 66 #ifdef __cplusplus |
67 extern "C" { | |
68 #endif | |
69 | |
70 /**************************************************************************/ | |
71 /** @name SSL API */ | |
72 /**************************************************************************/ | |
73 /*@{*/ | |
74 | |
75 /** | |
76 * Returns whether or not SSL is currently supported. | |
77 * | |
78 * @return TRUE if SSL is supported, or FALSE otherwise. | |
79 */ | |
80 gboolean gaim_ssl_is_supported(void); | |
81 | |
82 /** | |
83 * Makes a SSL connection to the specified host and port. | |
84 * | |
85 * @param account The account making the connection. | |
86 * @param host The destination host. | |
87 * @param port The destination port. | |
88 * @param func The SSL input handler function. | |
89 * @param data User-defined data. | |
90 * | |
91 * @return The SSL connection handle. | |
92 */ | |
93 GaimSslConnection *gaim_ssl_connect(GaimAccount *account, const char *host, | |
94 int port, GaimSslInputFunction func, | |
95 void *data); | |
96 | |
97 /** | |
6764 | 98 * Adds an input watcher for the specified SSL connection. |
99 * | |
100 * @param gsc The SSL connection handle. | |
101 * @param func The callback function. | |
102 * @param data User-defined data. | |
103 */ | |
104 void gaim_ssl_input_add(GaimSslConnection *gsc, GaimSslInputFunction func, | |
105 void *data); | |
106 | |
107 /** | |
6762
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
108 * Makes a SSL connection using an already open file descriptor. |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
109 * |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
110 * @param account The account making the connection. |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
111 * @param fd The file descriptor. |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
112 * @param func The SSL input handler function. |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
113 * @param data User-defined data. |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
114 * |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
115 * @return The SSL connection handle. |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
116 */ |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
117 GaimSslConnection *gaim_ssl_connect_fd(GaimAccount *account, int fd, |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
118 GaimSslInputFunction func, void *data); |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
119 |
818ce550d2ce
[gaim-migrate @ 7294]
Christian Hammond <chipx86@chipx86.com>
parents:
6738
diff
changeset
|
120 /** |
6703 | 121 * Closes a SSL connection. |
122 * | |
123 * @param gsc The SSL connection to close. | |
124 */ | |
125 void gaim_ssl_close(GaimSslConnection *gsc); | |
126 | |
127 /** | |
128 * Reads data from an SSL connection. | |
129 * | |
130 * @param gsc The SSL connection handle. | |
131 * @param buffer The destination buffer. | |
132 * @param len The maximum number of bytes to read. | |
133 * | |
134 * @return The number of bytes read. | |
135 */ | |
6720
41120df7ed94
[gaim-migrate @ 7247]
Christian Hammond <chipx86@chipx86.com>
parents:
6703
diff
changeset
|
136 size_t gaim_ssl_read(GaimSslConnection *gsc, void *buffer, size_t len); |
6703 | 137 |
138 /** | |
139 * Writes data to an SSL connection. | |
140 * | |
6720
41120df7ed94
[gaim-migrate @ 7247]
Christian Hammond <chipx86@chipx86.com>
parents:
6703
diff
changeset
|
141 * @param gsc The SSL connection handle. |
41120df7ed94
[gaim-migrate @ 7247]
Christian Hammond <chipx86@chipx86.com>
parents:
6703
diff
changeset
|
142 * @param buffer The buffer to write. |
41120df7ed94
[gaim-migrate @ 7247]
Christian Hammond <chipx86@chipx86.com>
parents:
6703
diff
changeset
|
143 * @param len The length of the data to write. |
6703 | 144 * |
145 * @return The number of bytes written. | |
146 */ | |
6720
41120df7ed94
[gaim-migrate @ 7247]
Christian Hammond <chipx86@chipx86.com>
parents:
6703
diff
changeset
|
147 size_t gaim_ssl_write(GaimSslConnection *gsc, const void *buffer, size_t len); |
6703 | 148 |
149 /*@}*/ | |
150 | |
151 /**************************************************************************/ | |
152 /** @name Subsystem API */ | |
153 /**************************************************************************/ | |
154 /*@{*/ | |
155 | |
156 /** | |
6738
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
157 * Sets the current SSL operations structure. |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
158 * |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
159 * @param ops The SSL operations structure to assign. |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
160 */ |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
161 void gaim_ssl_set_ops(GaimSslOps *ops); |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
162 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
163 /** |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
164 * Returns the current SSL operations structure. |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
165 * |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
166 * @return The SSL operations structure. |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
167 */ |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
168 GaimSslOps *gaim_ssl_get_ops(void); |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
169 |
6c95f01aaf49
[gaim-migrate @ 7270]
Christian Hammond <chipx86@chipx86.com>
parents:
6720
diff
changeset
|
170 /** |
6703 | 171 * Initializes the SSL subsystem. |
172 */ | |
173 void gaim_ssl_init(void); | |
174 | |
175 /** | |
176 * Uninitializes the SSL subsystem. | |
177 */ | |
178 void gaim_ssl_uninit(void); | |
179 | |
180 /*@}*/ | |
181 | |
182 #ifdef __cplusplus | |
183 } | |
184 #endif | |
185 | |
186 #endif /* _GAIM_SSL_H_ */ |