Strophe  0.10
XMPP client library
Data Structures | Macros | Enumerations | Functions | Variables
tls_openssl.c File Reference

TLS implementation with OpenSSL. More...

Data Structures

struct  tls_t
 

Macros

#define TLS_ERROR_STR(error, table)    _tls_error_str(error, table, ARRAY_SIZE(table))
 
#define TLS_ERROR_FIELD(x)   [x] = #x
 

Enumerations

enum  { TLS_SHUTDOWN_MAX_RETRIES = 10 , TLS_TIMEOUT_SEC = 0 , TLS_TIMEOUT_USEC = 100000 }
 

Functions

static const unsigned char * ASN1_STRING_get0_data (ASN1_STRING *asn1)
 
static int GENERAL_NAME_get0_otherName (const GENERAL_NAME *gen, ASN1_OBJECT **poid, ASN1_TYPE **pvalue)
 
static void _tls_sock_wait (tls_t *tls, int error)
 
static const char * _tls_error_str (int error, const char **tbl, size_t tbl_size)
 
static void _tls_set_error (tls_t *tls, int error)
 
static void _tls_log_error (xmpp_ctx_t *ctx)
 
static void _tls_dump_cert_info (tls_t *tls)
 
static X509 * _tls_cert_read (xmpp_conn_t *conn)
 
static int _tls_xaddr_nid (void)
 
static int _tls_name_to_xmppaddr (GENERAL_NAME *name, char **res)
 Convert GENERAL_NAME* to a string. More...
 
static GENERAL_NAMES * _tls_cert_get_names (xmpp_conn_t *conn)
 
void tls_initialize (void)
 
void tls_shutdown (void)
 
int tls_error (tls_t *tls)
 
char * tls_id_on_xmppaddr (xmpp_conn_t *conn, unsigned int n)
 Search through the SubjectAlternativeNames and return the next id-on-xmppAddr element starting from n. More...
 
unsigned int tls_id_on_xmppaddr_num (xmpp_conn_t *conn)
 
tls_t * tls_new (xmpp_conn_t *conn)
 
void tls_free (tls_t *tls)
 
int tls_set_credentials (tls_t *tls, const char *cafilename)
 
int tls_start (tls_t *tls)
 
int tls_stop (tls_t *tls)
 
int tls_is_recoverable (int error)
 
int tls_pending (tls_t *tls)
 
int tls_read (tls_t *tls, void *buff, size_t len)
 
int tls_write (tls_t *tls, const void *buff, size_t len)
 
int tls_clear_pending_write (tls_t *tls)
 

Variables

const char * tls_errors []
 
const char * cert_errors []
 

Detailed Description

TLS implementation with OpenSSL.

Macro Definition Documentation

◆ TLS_ERROR_STR

#define TLS_ERROR_STR (   error,
  table 
)     _tls_error_str(error, table, ARRAY_SIZE(table))

◆ TLS_ERROR_FIELD

#define TLS_ERROR_FIELD (   x)    [x] = #x

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
TLS_SHUTDOWN_MAX_RETRIES 
TLS_TIMEOUT_SEC 
TLS_TIMEOUT_USEC 

Function Documentation

◆ ASN1_STRING_get0_data()

static const unsigned char* ASN1_STRING_get0_data ( ASN1_STRING *  asn1)
static

◆ GENERAL_NAME_get0_otherName()

static int GENERAL_NAME_get0_otherName ( const GENERAL_NAME *  gen,
ASN1_OBJECT **  poid,
ASN1_TYPE **  pvalue 
)
static

◆ _tls_sock_wait()

static void _tls_sock_wait ( tls_t *  tls,
int  error 
)
static

◆ _tls_error_str()

static const char * _tls_error_str ( int  error,
const char **  tbl,
size_t  tbl_size 
)
static

◆ _tls_set_error()

static void _tls_set_error ( tls_t *  tls,
int  error 
)
static

◆ _tls_log_error()

static void _tls_log_error ( xmpp_ctx_t *  ctx)
static

◆ _tls_dump_cert_info()

static void _tls_dump_cert_info ( tls_t *  tls)
static

◆ _tls_cert_read()

static X509 * _tls_cert_read ( xmpp_conn_t *  conn)
static

◆ _tls_xaddr_nid()

static int _tls_xaddr_nid ( void  )
static

◆ _tls_name_to_xmppaddr()

static int _tls_name_to_xmppaddr ( GENERAL_NAME *  name,
char **  res 
)
static

Convert GENERAL_NAME* to a string.

This checks whether the GENERAL_NAME* that is given has the correct id-on-xmppAddr set and then optionally converts this form ASN.1 to a string/char*.

When res pointer is set to NULL this method doesn't allocate the result but only checks whether it is in the correct format.

Parameters
namePointer to the GENERAL_NAME that shall be converted
resResult-pointer (optional, can be NULL)
Returns
classic Unix style - 0=success, 1=error

◆ _tls_cert_get_names()

static GENERAL_NAMES * _tls_cert_get_names ( xmpp_conn_t *  conn)
static

◆ tls_initialize()

void tls_initialize ( void  )

◆ tls_shutdown()

void tls_shutdown ( void  )

◆ tls_error()

int tls_error ( tls_t *  tls)

◆ tls_id_on_xmppaddr()

char* tls_id_on_xmppaddr ( xmpp_conn_t *  conn,
unsigned int  n 
)

Search through the SubjectAlternativeNames and return the next id-on-xmppAddr element starting from n.

◆ tls_id_on_xmppaddr_num()

unsigned int tls_id_on_xmppaddr_num ( xmpp_conn_t *  conn)

◆ tls_new()

tls_t* tls_new ( xmpp_conn_t *  conn)

◆ tls_free()

void tls_free ( tls_t *  tls)

◆ tls_set_credentials()

int tls_set_credentials ( tls_t *  tls,
const char *  cafilename 
)

◆ tls_start()

int tls_start ( tls_t *  tls)

◆ tls_stop()

int tls_stop ( tls_t *  tls)

◆ tls_is_recoverable()

int tls_is_recoverable ( int  error)

◆ tls_pending()

int tls_pending ( tls_t *  tls)

◆ tls_read()

int tls_read ( tls_t *  tls,
void *  buff,
size_t  len 
)

◆ tls_write()

int tls_write ( tls_t *  tls,
const void *  buff,
size_t  len 
)

◆ tls_clear_pending_write()

int tls_clear_pending_write ( tls_t *  tls)

Variable Documentation

◆ tls_errors

const char* tls_errors[]
Initial value:
= {
TLS_ERROR_FIELD(SSL_ERROR_NONE),
TLS_ERROR_FIELD(SSL_ERROR_SSL),
TLS_ERROR_FIELD(SSL_ERROR_WANT_READ),
TLS_ERROR_FIELD(SSL_ERROR_WANT_WRITE),
TLS_ERROR_FIELD(SSL_ERROR_WANT_X509_LOOKUP),
TLS_ERROR_FIELD(SSL_ERROR_SYSCALL),
TLS_ERROR_FIELD(SSL_ERROR_ZERO_RETURN),
TLS_ERROR_FIELD(SSL_ERROR_WANT_CONNECT),
TLS_ERROR_FIELD(SSL_ERROR_WANT_ACCEPT),
}
#define TLS_ERROR_FIELD(x)
Definition: tls_openssl.c:100

◆ cert_errors

const char* cert_errors[]