jabberd2  2.3.1
Data Structures | Typedefs | Functions
sasl_gsasl.c File Reference
#include "sx.h"
#include "sasl.h"
#include <gsasl.h>
#include <gsasl-mech.h>
#include <string.h>

Go to the source code of this file.

Data Structures

struct  _sx_sasl_st
 our context More...
 

Typedefs

typedef struct _sx_sasl_st_sx_sasl_t
 our context More...
 

Functions

static nad_t _sx_sasl_success (sx_t s, const char *data, int dlen)
 utility: generate a success nad More...
 
static nad_t _sx_sasl_failure (sx_t s, const char *err)
 utility: generate a failure nad More...
 
static nad_t _sx_sasl_challenge (sx_t s, const char *data, int dlen)
 utility: generate a challenge nad More...
 
static nad_t _sx_sasl_response (sx_t s, const char *data, int dlen)
 utility: generate a response nad More...
 
static nad_t _sx_sasl_abort (sx_t s)
 utility: generate an abort nad More...
 
static int _sx_sasl_wio (sx_t s, sx_plugin_t p, sx_buf_t buf)
 
static int _sx_sasl_rio (sx_t s, sx_plugin_t p, sx_buf_t buf)
 
void _sx_sasl_open (sx_t s, Gsasl_session *sd)
 move the stream to the auth state More...
 
static void _sx_sasl_stream (sx_t s, sx_plugin_t p)
 make the stream authenticated second time round More...
 
static void _sx_sasl_features (sx_t s, sx_plugin_t p, nad_t nad)
 
static void _sx_sasl_notify_success (sx_t s, void *arg)
 auth done, restart the stream More...
 
static void _sx_sasl_client_process (sx_t s, sx_plugin_t p, Gsasl_session *sd, const char *mech, const char *in, int inlen)
 process handshake packets from the client More...
 
static void _sx_sasl_server_process (sx_t s, sx_plugin_t p, Gsasl_session *sd, const char *in, int inlen)
 process handshake packets from the server More...
 
static int _sx_sasl_process (sx_t s, sx_plugin_t p, nad_t nad)
 main nad processor More...
 
static void _sx_sasl_free (sx_t s, sx_plugin_t p)
 cleanup More...
 
static int _sx_sasl_gsasl_callback (Gsasl *gsasl_ctx, Gsasl_session *sd, Gsasl_property prop)
 
static void _sx_sasl_unload (sx_plugin_t p)
 
int sx_sasl_init (sx_env_t env, sx_plugin_t p, va_list args)
 args: appname, callback, cb arg More...
 
int sx_sasl_auth (sx_plugin_t p, sx_t s, const char *appname, const char *mech, const char *user, const char *pass)
 kick off the auth handshake More...
 

Typedef Documentation

typedef struct _sx_sasl_st * _sx_sasl_t

our context

Function Documentation

static nad_t _sx_sasl_success ( sx_t  s,
const char *  data,
int  dlen 
)
static

utility: generate a success nad

Definition at line 41 of file sasl_gsasl.c.

References nad_add_namespace(), nad_append_cdata(), nad_append_elem(), nad_new(), and uri_SASL.

Referenced by _sx_sasl_client_process().

static nad_t _sx_sasl_failure ( sx_t  s,
const char *  err 
)
static

utility: generate a failure nad

Definition at line 56 of file sasl_gsasl.c.

References nad_add_namespace(), nad_append_elem(), nad_new(), and uri_SASL.

Referenced by _sx_sasl_client_process(), and _sx_sasl_process().

static nad_t _sx_sasl_challenge ( sx_t  s,
const char *  data,
int  dlen 
)
static

utility: generate a challenge nad

Definition at line 71 of file sasl_gsasl.c.

References nad_add_namespace(), nad_append_cdata(), nad_append_elem(), nad_new(), and uri_SASL.

Referenced by _sx_sasl_client_process().

static nad_t _sx_sasl_response ( sx_t  s,
const char *  data,
int  dlen 
)
static

utility: generate a response nad

Definition at line 86 of file sasl_gsasl.c.

References nad_add_namespace(), nad_append_cdata(), nad_append_elem(), nad_new(), and uri_SASL.

Referenced by _sx_sasl_server_process().

static nad_t _sx_sasl_abort ( sx_t  s)
static

utility: generate an abort nad

Definition at line 101 of file sasl_gsasl.c.

References nad_add_namespace(), nad_append_elem(), nad_new(), and uri_SASL.

Referenced by _sx_sasl_server_process().

static int _sx_sasl_wio ( sx_t  s,
sx_plugin_t  p,
sx_buf_t  buf 
)
static
static int _sx_sasl_rio ( sx_t  s,
sx_plugin_t  p,
sx_buf_t  buf 
)
static
void _sx_sasl_open ( sx_t  s,
Gsasl_session *  sd 
)
static void _sx_sasl_stream ( sx_t  s,
sx_plugin_t  p 
)
static

make the stream authenticated second time round

Definition at line 215 of file sasl_gsasl.c.

References _sx_debug, _sx_sasl_open(), _sx_plugin_st::index, _sx_st::plugin_data, and ZONE.

Referenced by sx_sasl_init().

static void _sx_sasl_features ( sx_t  s,
sx_plugin_t  p,
nad_t  nad 
)
static
static void _sx_sasl_notify_success ( sx_t  s,
void *  arg 
)
static

auth done, restart the stream

Definition at line 295 of file sasl_gsasl.c.

References _sx_chain_io_plugin(), _sx_debug, _sx_reset(), _sx_st::flags, sx_server_init(), and ZONE.

Referenced by _sx_sasl_client_process().

static void _sx_sasl_client_process ( sx_t  s,
sx_plugin_t  p,
Gsasl_session *  sd,
const char *  mech,
const char *  in,
int  inlen 
)
static
static void _sx_sasl_server_process ( sx_t  s,
sx_plugin_t  p,
Gsasl_session *  sd,
const char *  in,
int  inlen 
)
static

process handshake packets from the server

Definition at line 486 of file sasl_gsasl.c.

References _sx_debug, _sx_nad_write(), _sx_sasl_abort(), _sx_sasl_response(), and ZONE.

Referenced by _sx_sasl_process().

static int _sx_sasl_process ( sx_t  s,
sx_plugin_t  p,
nad_t  nad 
)
static
static void _sx_sasl_free ( sx_t  s,
sx_plugin_t  p 
)
static

cleanup

Definition at line 676 of file sasl_gsasl.c.

References _sx_debug, _sx_plugin_st::index, _sx_st::plugin_data, and ZONE.

Referenced by sx_sasl_init().

static int _sx_sasl_gsasl_callback ( Gsasl *  gsasl_ctx,
Gsasl_session *  sd,
Gsasl_property  prop 
)
static
static void _sx_sasl_unload ( sx_plugin_t  p)
static
int sx_sasl_init ( sx_env_t  env,
sx_plugin_t  p,
va_list  args 
)
int sx_sasl_auth ( sx_plugin_t  p,
sx_t  s,
const char *  appname,
const char *  mech,
const char *  user,
const char *  pass 
)