JabberWerxC  2015.1.1
sasl_mech.h
Go to the documentation of this file.
1 
19 #ifndef JABBERWERX_SASL_MECH_H
20 #define JABBERWERX_SASL_MECH_H
21 
22 #include "util/htable.h"
23 #include "dom.h"
24 
25 
27 typedef enum
28 {
29  JW_SASL_ERR_NONE = 0,
30  JW_SASL_ERR_ABORTED = 1,
31  JW_SASL_ERR_ACCOUNT_DISABLED = 2,
32  JW_SASL_ERR_CREDENTIALS_EXPIRED = 3,
33  JW_SASL_ERR_ENCRYPTION_REQUIRED = 4,
34  JW_SASL_ERR_INCORRECT_ENCODING = 5,
35  JW_SASL_ERR_INVALID_AUTHZID = 6,
36  JW_SASL_ERR_INVALID_MECHANISM = 7,
37  JW_SASL_ERR_MALFORMED_REQUEST = 8,
38  JW_SASL_ERR_MECHANISM_TOO_WEAK = 9,
39  JW_SASL_ERR_NOT_AUTHORIZED = 10,
40  JW_SASL_ERR_TEMPORARY_AUTH_FAILURE = 11
42 
44 typedef struct _jw_sasl_mech jw_sasl_mech;
45 
47 typedef struct _jw_sasl_mech_instance jw_sasl_mech_instance;
48 
63 typedef bool (*jw_sasl_mech_init_fn)(
64  jw_sasl_mech_instance *instance,
65  jw_htable *config,
66  jw_err *err);
67 
76 typedef void (*jw_sasl_mech_clean_fn)(jw_sasl_mech_instance *instance);
77 
93  jw_sasl_mech_instance *instance,
94  jw_dom_node *out_auth_node,
95  bool done,
96  jw_sasl_error sasl_err,
97  void *arg);
98 
118  jw_sasl_mech_instance *instance,
119  uint8_t *out,
120  size_t out_len,
121  bool needs_base64_encoding,
122  bool done,
123  jw_sasl_error sasl_err);
124 
146  jw_sasl_mech_instance *instance,
147  uint8_t *in,
148  size_t in_len,
150  jw_err *err);
151 
154 {
167 
168 
169 #ifdef __cplusplus
170 extern "C"
171 {
172 #endif
173 
202  const char *name,
203  jw_sasl_mech_fn_table *fn_table,
204  jw_sasl_mech **mech,
205  jw_err *err);
206 
222  jw_sasl_mech **mech,
223  jw_err *err);
224 
240  jw_sasl_mech **mech,
241  jw_err *err);
242 
257  jw_sasl_mech **copy,
258  jw_err *err);
259 
268 
276 
277 
300  jw_htable *config,
301  jw_sasl_mech *mech,
302  jw_sasl_mech_instance **instance,
303  jw_err *err);
304 
314  jw_sasl_mech_instance *instance);
315 
345  jw_sasl_mech_instance *instance,
346  jw_dom_node *in_auth_node,
348  void *arg,
349  jw_err *err);
350 
359  jw_sasl_mech_instance *instance);
360 
370  jw_sasl_mech_instance *instance, void *data);
371 
380  jw_sasl_mech_instance *instance);
381 
382 #ifdef __cplusplus
383 }
384 #endif
385 
386 #endif /* JABBERWERX_SASL_MECH_H */
JABBERWERX_API const char * jw_sasl_mech_get_name(jw_sasl_mech *mech)
#define JABBERWERX_API
Definition: basics.h:32
JABBERWERX_API bool jw_sasl_mech_create(const char *name, jw_sasl_mech_fn_table *fn_table, jw_sasl_mech **mech, jw_err *err)
JABBERWERX_API bool jw_sasl_mech_external_create(jw_htable *config, jw_sasl_mech **mech, jw_err *err)
struct _jw_dom_node jw_dom_node
Definition: dom.h:46
JABBERWERX_API bool jw_sasl_mech_instance_evaluate(jw_sasl_mech_instance *instance, jw_dom_node *in_auth_node, jw_sasl_mech_evaluate_complete_fn cb, void *arg, jw_err *err)
void(* jw_sasl_mech_cdata_evaluate_complete_fn)(jw_sasl_mech_instance *instance, uint8_t *out, size_t out_len, bool needs_base64_encoding, bool done, jw_sasl_error sasl_err)
Definition: sasl_mech.h:117
jw_sasl_mech_cdata_evaluate_fn evaluate_step_fn
Definition: sasl_mech.h:165
bool(* jw_sasl_mech_cdata_evaluate_fn)(jw_sasl_mech_instance *instance, uint8_t *in, size_t in_len, jw_sasl_mech_cdata_evaluate_complete_fn cb, jw_err *err)
Definition: sasl_mech.h:145
JABBERWERX_API void jw_sasl_mech_destroy(jw_sasl_mech *mech)
Definition: sasl_mech.h:153
struct _jw_sasl_mech_instance jw_sasl_mech_instance
Definition: sasl_mech.h:47
JABBERWERX_API bool jw_sasl_mech_plain_create(jw_htable *config, jw_sasl_mech **mech, jw_err *err)
bool(* jw_sasl_mech_init_fn)(jw_sasl_mech_instance *instance, jw_htable *config, jw_err *err)
Definition: sasl_mech.h:63
jw_sasl_error
Definition: sasl_mech.h:27
jw_sasl_mech_clean_fn clean_fn
Definition: sasl_mech.h:158
JABBERWERX_API void jw_sasl_mech_instance_set_data(jw_sasl_mech_instance *instance, void *data)
jw_sasl_mech_init_fn init_fn
Definition: sasl_mech.h:156
JABBERWERX_API jw_sasl_mech * jw_sasl_mech_instance_get_mech(jw_sasl_mech_instance *instance)
jw_sasl_mech_cdata_evaluate_fn evaluate_start_fn
Definition: sasl_mech.h:160
Datatypes and functions for representing the Document Object Model (DOM).
JABBERWERX_API bool jw_sasl_mech_instance_create(jw_htable *config, jw_sasl_mech *mech, jw_sasl_mech_instance **instance, jw_err *err)
struct _jw_htable jw_htable
Definition: htable.h:27
Definition: basics.h:157
JABBERWERX_API bool jw_sasl_mech_copy(jw_sasl_mech *mech, jw_sasl_mech **copy, jw_err *err)
JABBERWERX_API void * jw_sasl_mech_instance_get_data(jw_sasl_mech_instance *instance)
void(* jw_sasl_mech_evaluate_complete_fn)(jw_sasl_mech_instance *instance, jw_dom_node *out_auth_node, bool done, jw_sasl_error sasl_err, void *arg)
Definition: sasl_mech.h:92
struct _jw_sasl_mech_fn_table jw_sasl_mech_fn_table
Datatypes and functions for hashtables.
void(* jw_sasl_mech_clean_fn)(jw_sasl_mech_instance *instance)
Definition: sasl_mech.h:76
JABBERWERX_API void jw_sasl_mech_instance_destroy(jw_sasl_mech_instance *instance)
struct _jw_sasl_mech jw_sasl_mech
Definition: sasl_mech.h:44