jabberd2  2.2.17
Data Structures | Macros | Typedefs | Enumerations | 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...
struct  Gsasl_session
struct  digest_md5_challenge
struct  digest_md5_response
struct  digest_md5_finish
struct  _Gsasl_digest_md5_server_state

Macros

#define DIGEST_MD5_LENGTH   16
#define DIGEST_MD5_RESPONSE_LENGTH   32

Typedefs

typedef struct _sx_sasl_st_sx_sasl_t
 our context
typedef struct digest_md5_challenge digest_md5_challenge
typedef enum digest_md5_qop digest_md5_qop
typedef enum digest_md5_cipher digest_md5_cipher
typedef struct digest_md5_response digest_md5_response
typedef struct digest_md5_finish digest_md5_finish
typedef struct
_Gsasl_digest_md5_server_state 
_Gsasl_digest_md5_server_state

Enumerations

enum  digest_md5_qop { DIGEST_MD5_QOP_AUTH = 1, DIGEST_MD5_QOP_AUTH_INT = 2, DIGEST_MD5_QOP_AUTH_CONF = 4 }
enum  digest_md5_cipher {
  DIGEST_MD5_CIPHER_DES = 1, DIGEST_MD5_CIPHER_3DES = 2, DIGEST_MD5_CIPHER_RC4 = 4, DIGEST_MD5_CIPHER_RC4_40 = 8,
  DIGEST_MD5_CIPHER_RC4_56 = 16, DIGEST_MD5_CIPHER_AES_CBC = 32
}

Functions

static nad_t _sx_sasl_success (sx_t s, char *data, int dlen)
 utility: generate a success nad
static nad_t _sx_sasl_failure (sx_t s, const char *err)
 utility: generate a failure nad
static nad_t _sx_sasl_challenge (sx_t s, char *data, int dlen)
 utility: generate a challenge nad
static nad_t _sx_sasl_response (sx_t s, char *data, int dlen)
 utility: generate a response nad
static nad_t _sx_sasl_abort (sx_t s)
 utility: generate an abort nad
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
static void _sx_sasl_stream (sx_t s, sx_plugin_t p)
 make the stream authenticated second time round
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
static void _sx_sasl_client_process (sx_t s, sx_plugin_t p, Gsasl_session *sd, char *mech, char *in, int inlen)
 process handshake packets from the client
static void _sx_sasl_server_process (sx_t s, sx_plugin_t p, Gsasl_session *sd, char *in, int inlen)
 process handshake packets from the server
static int _sx_sasl_process (sx_t s, sx_plugin_t p, nad_t nad)
 main nad processor
static void _sx_sasl_free (sx_t s, sx_plugin_t p)
 cleanup
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
int sx_sasl_auth (sx_plugin_t p, sx_t s, char *appname, char *mech, char *user, char *pass)
 kick off the auth handshake

Macro Definition Documentation

#define DIGEST_MD5_LENGTH   16

Definition at line 67 of file sasl_gsasl.c.

#define DIGEST_MD5_RESPONSE_LENGTH   32

Definition at line 101 of file sasl_gsasl.c.


Typedef Documentation

typedef struct _sx_sasl_st * _sx_sasl_t

our context

Definition at line 80 of file sasl_gsasl.c.

Definition at line 88 of file sasl_gsasl.c.

Definition at line 99 of file sasl_gsasl.c.

Definition at line 117 of file sasl_gsasl.c.

Definition at line 123 of file sasl_gsasl.c.

Definition at line 138 of file sasl_gsasl.c.


Enumeration Type Documentation

Enumerator:
DIGEST_MD5_QOP_AUTH 
DIGEST_MD5_QOP_AUTH_INT 
DIGEST_MD5_QOP_AUTH_CONF 

Definition at line 82 of file sasl_gsasl.c.

Enumerator:
DIGEST_MD5_CIPHER_DES 
DIGEST_MD5_CIPHER_3DES 
DIGEST_MD5_CIPHER_RC4 
DIGEST_MD5_CIPHER_RC4_40 
DIGEST_MD5_CIPHER_RC4_56 
DIGEST_MD5_CIPHER_AES_CBC 

Definition at line 90 of file sasl_gsasl.c.


Function Documentation

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

utility: generate a success nad

Definition at line 141 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 156 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,
char *  data,
int  dlen 
)
static

utility: generate a challenge nad

Definition at line 171 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,
char *  data,
int  dlen 
)
static

utility: generate a response nad

Definition at line 186 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 201 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 314 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 394 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,
char *  mech,
char *  in,
int  inlen 
)
static
static void _sx_sasl_server_process ( sx_t  s,
sx_plugin_t  p,
Gsasl_session sd,
char *  in,
int  inlen 
)
static

process handshake packets from the server

Definition at line 591 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 781 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,
char *  appname,
char *  mech,
char *  user,
char *  pass 
)