jabberd2  2.3.6
Macros | Functions | Variables
ssl.c File Reference
#include "sx.h"
#include <openssl/x509_vfy.h>
#include <openssl/dh.h>
#include <openssl/bn.h>

Go to the source code of this file.

Macros

#define DECLARE_sx_ssl_getparams(name, type)
 

Functions

static int _sx_ssl_verify_callback (int preverify_ok, X509_STORE_CTX *ctx)
 this plugin implements the traditional SSL "wrappermode" streams and STARTTLS extension documented in xmpp-core More...
 
static int _sx_pem_passwd_callback (char *buf, int size, int rwflag, void *password)
 
 DECLARE_sx_ssl_getparams (DHparams, DH)
 
static DH * sx_ssl_make_dh_params (BIGNUM *(*const get_prime)(BIGNUM *), const char *gen)
 
static void sx_ssl_free_dh_params (void)
 
static DH * _sx_ssl_tmp_dh_callback (SSL *ssl, int export, int keylen)
 
static void _sx_ssl_starttls_notify_proceed (sx_t s, void *arg)
 
static int _sx_ssl_process (sx_t s, sx_plugin_t p, nad_t nad)
 
static void _sx_ssl_features (sx_t s, sx_plugin_t p, nad_t nad)
 
static void _sx_ssl_get_external_id (sx_t s, _sx_ssl_conn_t sc)
 
static int _sx_ssl_handshake (sx_t s, _sx_ssl_conn_t sc)
 
static int _sx_ssl_wio (sx_t s, sx_plugin_t p, sx_buf_t buf)
 
static int _sx_ssl_rio (sx_t s, sx_plugin_t p, sx_buf_t buf)
 
static void _sx_ssl_client (sx_t s, sx_plugin_t p)
 
static void _sx_ssl_server (sx_t s, sx_plugin_t p)
 
static void _sx_ssl_free (sx_t s, sx_plugin_t p)
 cleanup More...
 
static void _sx_ssl_unload (sx_plugin_t p)
 
int sx_ssl_init (sx_env_t env, sx_plugin_t p, va_list args)
 args: name, pemfile, cachain, mode More...
 
int sx_ssl_server_addcert (sx_plugin_t p, const char *name, const char *pemfile, const char *cachain, int mode, const char *password, const char *ciphers)
 args: name, pemfile, cachain, mode More...
 
int sx_ssl_client_starttls (sx_plugin_t p, sx_t s, const char *pemfile, const char *private_key_password)
 

Variables

 dhparams []
 
int sx_openssl_initialized = 0
 

Macro Definition Documentation

#define DECLARE_sx_ssl_getparams (   name,
  type 
)
Value:
static type *sx_ssl_get_##name(const char *file) { \
type *ret; \
BIO *bio; \
if ((bio = BIO_new_file(file, "r")) == NULL) \
return NULL; \
ret = PEM_read_bio_##name(bio, NULL, NULL, NULL); \
BIO_free(bio); \
return ret; \
}
mio_type_t type
Definition: mio_impl.h:53

Definition at line 87 of file ssl.c.

Function Documentation

static int _sx_ssl_verify_callback ( int  preverify_ok,
X509_STORE_CTX *  ctx 
)
static

this plugin implements the traditional SSL "wrappermode" streams and STARTTLS extension documented in xmpp-core

Definition at line 33 of file ssl.c.

References _sx_debug, and ZONE.

Referenced by sx_ssl_server_addcert().

static int _sx_pem_passwd_callback ( char *  buf,
int  size,
int  rwflag,
void *  password 
)
static

Definition at line 80 of file ssl.c.

Referenced by _sx_ssl_client(), and sx_ssl_server_addcert().

DECLARE_sx_ssl_getparams ( DHparams  ,
DH   
)

Definition at line 97 of file ssl.c.

static DH* sx_ssl_make_dh_params ( BIGNUM *(*)(BIGNUM *)  get_prime,
const char *  gen 
)
static

Definition at line 113 of file ssl.c.

Referenced by _sx_ssl_tmp_dh_callback().

static void sx_ssl_free_dh_params ( void  )
static

Definition at line 127 of file ssl.c.

References dhparams.

Referenced by _sx_ssl_unload().

static DH* _sx_ssl_tmp_dh_callback ( SSL *  ssl,
int  export,
int  keylen 
)
static

Definition at line 135 of file ssl.c.

References dhparams, and sx_ssl_make_dh_params().

Referenced by sx_ssl_server_addcert().

static void _sx_ssl_starttls_notify_proceed ( sx_t  s,
void *  arg 
)
static

Definition at line 154 of file ssl.c.

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

Referenced by _sx_ssl_process().

static int _sx_ssl_process ( sx_t  s,
sx_plugin_t  p,
nad_t  nad 
)
static
static void _sx_ssl_features ( sx_t  s,
sx_plugin_t  p,
nad_t  nad 
)
static
static void _sx_ssl_get_external_id ( sx_t  s,
_sx_ssl_conn_t  sc 
)
static

Definition at line 291 of file ssl.c.

References _sx_debug, SX_CONN_EXTERNAL_ID_MAX_COUNT, and ZONE.

Referenced by _sx_ssl_handshake().

static int _sx_ssl_handshake ( sx_t  s,
_sx_ssl_conn_t  sc 
)
static
static int _sx_ssl_wio ( sx_t  s,
sx_plugin_t  p,
sx_buf_t  buf 
)
static
static int _sx_ssl_rio ( sx_t  s,
sx_plugin_t  p,
sx_buf_t  buf 
)
static
static void _sx_ssl_client ( sx_t  s,
sx_plugin_t  p 
)
static
static void _sx_ssl_server ( sx_t  s,
sx_plugin_t  p 
)
static
static void _sx_ssl_free ( sx_t  s,
sx_plugin_t  p 
)
static
static void _sx_ssl_unload ( sx_plugin_t  p)
static
int sx_ssl_init ( sx_env_t  env,
sx_plugin_t  p,
va_list  args 
)
int sx_ssl_server_addcert ( sx_plugin_t  p,
const char *  name,
const char *  pemfile,
const char *  cachain,
int  mode,
const char *  password,
const char *  ciphers 
)
int sx_ssl_client_starttls ( sx_plugin_t  p,
sx_t  s,
const char *  pemfile,
const char *  private_key_password 
)

Variable Documentation

dhparams[]
Initial value:
= {
{ get_rfc3526_prime_8192, NULL, 6145 },
{ get_rfc3526_prime_6144, NULL, 4097 },
{ get_rfc3526_prime_4096, NULL, 3073 },
{ get_rfc3526_prime_3072, NULL, 2049 },
{ get_rfc3526_prime_2048, NULL, 1025 },
{ get_rfc2409_prime_1024, NULL, 0 }
}

Definition at line 104 of file ssl.c.

Referenced by _sx_ssl_tmp_dh_callback(), sx_ssl_free_dh_params(), and sx_ssl_server_addcert().

int sx_openssl_initialized = 0

Definition at line 901 of file ssl.c.