sslconn.h

Go to the documentation of this file.
00001 
00025 #ifndef _PURPLE_SSLCONN_H_
00026 #define _PURPLE_SSLCONN_H_
00027 
00028 #include "proxy.h"
00029 
00030 #define PURPLE_SSL_DEFAULT_PORT 443
00031 
00032 typedef enum
00033 {
00034     PURPLE_SSL_HANDSHAKE_FAILED = 1,
00035     PURPLE_SSL_CONNECT_FAILED = 2
00036 } PurpleSslErrorType;
00037 
00038 typedef struct _PurpleSslConnection PurpleSslConnection;
00039 
00040 typedef void (*PurpleSslInputFunction)(gpointer, PurpleSslConnection *,
00041                                      PurpleInputCondition);
00042 typedef void (*PurpleSslErrorFunction)(PurpleSslConnection *, PurpleSslErrorType,
00043                                      gpointer);
00044 
00045 struct _PurpleSslConnection
00046 {
00048     char *host;
00050     int port;
00052     void *connect_cb_data;
00054     PurpleSslInputFunction connect_cb;
00056     PurpleSslErrorFunction error_cb;
00058     void *recv_cb_data;
00060     PurpleSslInputFunction recv_cb;
00061 
00063     int fd;
00066     int inpa;
00068     PurpleProxyConnectData *connect_data;
00069 
00071     void *private_data;
00072 };
00073 
00080 typedef struct
00081 {
00085     gboolean (*init)(void);
00087     void (*uninit)(void);
00090     void (*connectfunc)(PurpleSslConnection *gsc);
00095     void (*close)(PurpleSslConnection *gsc);
00102     size_t (*read)(PurpleSslConnection *gsc, void *data, size_t len);
00109     size_t (*write)(PurpleSslConnection *gsc, const void *data, size_t len);
00110 
00111     void (*_purple_reserved1)(void);
00112     void (*_purple_reserved2)(void);
00113     void (*_purple_reserved3)(void);
00114     void (*_purple_reserved4)(void);
00115 } PurpleSslOps;
00116 
00117 #ifdef __cplusplus
00118 extern "C" {
00119 #endif
00120 
00121 /**************************************************************************/
00123 /**************************************************************************/
00131 gboolean purple_ssl_is_supported(void);
00132 
00150 PurpleSslConnection *purple_ssl_connect(PurpleAccount *account, const char *host,
00151                                     int port, PurpleSslInputFunction func,
00152                                     PurpleSslErrorFunction error_func,
00153                                     void *data);
00154 
00166 PurpleSslConnection *purple_ssl_connect_fd(PurpleAccount *account, int fd,
00167                                        PurpleSslInputFunction func,
00168                                        PurpleSslErrorFunction error_func,
00169                                        void *data);
00170 
00179 void purple_ssl_input_add(PurpleSslConnection *gsc, PurpleSslInputFunction func,
00180                         void *data);
00181 
00187 void purple_ssl_close(PurpleSslConnection *gsc);
00188 
00198 size_t purple_ssl_read(PurpleSslConnection *gsc, void *buffer, size_t len);
00199 
00209 size_t purple_ssl_write(PurpleSslConnection *gsc, const void *buffer, size_t len);
00210 
00213 /**************************************************************************/
00215 /**************************************************************************/
00223 void purple_ssl_set_ops(PurpleSslOps *ops);
00224 
00230 PurpleSslOps *purple_ssl_get_ops(void);
00231 
00235 void purple_ssl_init(void);
00236 
00240 void purple_ssl_uninit(void);
00241 
00244 #ifdef __cplusplus
00245 }
00246 #endif
00247 
00248 #endif /* _PURPLE_SSLCONN_H_ */