Strophe 0.13
XMPP client library
|
TLS implementation with OpenSSL. More...
Data Structures | |
struct | tls_t |
Macros | |
#define | STROPHE_ERR_func_error_string(e) ERR_func_error_string(e) |
#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 | SSL_CTX_use_cert_and_key (SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, STACK_OF(X509) *chain, int override) |
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 X509 * | _tls_cert_read_p12 (xmpp_conn_t *conn, EVP_PKEY **pkey, STACK_OF(X509) **ca) |
static int | _tls_xaddr_nid (void) |
static int | _tls_xmppaddr_to_string (GENERAL_NAME *name, char **res) |
Convert GENERAL_NAME* to a string. | |
static int | _tls_dnsname_to_string (GENERAL_NAME *name, char **res) |
static GENERAL_NAMES * | _tls_conn_get_names (xmpp_conn_t *conn) |
static GENERAL_NAMES * | _tls_cert_get_names (X509 *client_cert) |
void | tls_initialize (void) |
void | tls_shutdown (void) |
int | tls_error (struct conn_interface *intf) |
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 . | |
unsigned int | tls_id_on_xmppaddr_num (xmpp_conn_t *conn) |
static int | _convert_ASN1TIME (ASN1_TIME *ansi_time, char *buf, size_t len) |
static char * | _asn1_time_to_str (const xmpp_ctx_t *ctx, ASN1_TIME *t) |
static char * | _get_fingerprint (const xmpp_ctx_t *ctx, X509 *err_cert, xmpp_cert_element_t el) |
static char * | _get_alg (const xmpp_ctx_t *ctx, X509 *err_cert, xmpp_cert_element_t el) |
static xmpp_tlscert_t * | _x509_to_tlscert (xmpp_ctx_t *ctx, X509 *cert) |
static int | _tls_verify (int preverify_ok, X509_STORE_CTX *x509_ctx) |
static int | _tls_password_callback (char *buf, int size, int rwflag, void *u) |
tls_t * | tls_new (xmpp_conn_t *conn) |
void | tls_free (tls_t *tls) |
xmpp_tlscert_t * | tls_peer_cert (xmpp_conn_t *conn) |
int | tls_set_credentials (tls_t *tls, const char *cafilename) |
int | tls_init_channel_binding (tls_t *tls, const char **binding_prefix, size_t *binding_prefix_len) |
const void * | tls_get_channel_binding_data (tls_t *tls, size_t *size) |
int | tls_start (tls_t *tls) |
int | tls_stop (tls_t *tls) |
int | tls_is_recoverable (struct conn_interface *intf, int error) |
int | tls_pending (struct conn_interface *intf) |
int | tls_read (struct conn_interface *intf, void *buff, size_t len) |
int | tls_write (struct conn_interface *intf, const void *buff, size_t len) |
int | tls_clear_pending_write (struct conn_interface *intf) |
static X509 * | _tls_cert_read_x509 (xmpp_conn_t *conn) |
static int | _tls_parse_p12 (PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca) |
Variables | |
const char * | tls_errors [] |
const char * | cert_errors [] |
TLS implementation with OpenSSL.
#define STROPHE_ERR_func_error_string | ( | e | ) | ERR_func_error_string(e) |
#define TLS_ERROR_STR | ( | error, | |
table | |||
) | _tls_error_str(error, table, ARRAY_SIZE(table)) |
#define TLS_ERROR_FIELD | ( | x | ) | [x] = #x |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
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.
name | Pointer to the GENERAL_NAME that shall be converted |
res | Result-pointer (optional, can be NULL) |
|
static |
|
static |
|
static |
void tls_initialize | ( | void | ) |
void tls_shutdown | ( | void | ) |
int tls_error | ( | struct conn_interface * | intf | ) |
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
.
unsigned int tls_id_on_xmppaddr_num | ( | xmpp_conn_t * | conn | ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
tls_t * tls_new | ( | xmpp_conn_t * | conn | ) |
void tls_free | ( | tls_t * | tls | ) |
xmpp_tlscert_t * tls_peer_cert | ( | xmpp_conn_t * | conn | ) |
int tls_set_credentials | ( | tls_t * | tls, |
const char * | cafilename | ||
) |
int tls_init_channel_binding | ( | tls_t * | tls, |
const char ** | binding_prefix, | ||
size_t * | binding_prefix_len | ||
) |
const void * tls_get_channel_binding_data | ( | tls_t * | tls, |
size_t * | size | ||
) |
int tls_start | ( | tls_t * | tls | ) |
int tls_stop | ( | tls_t * | tls | ) |
int tls_is_recoverable | ( | struct conn_interface * | intf, |
int | error | ||
) |
int tls_pending | ( | struct conn_interface * | intf | ) |
int tls_read | ( | struct conn_interface * | intf, |
void * | buff, | ||
size_t | len | ||
) |
int tls_write | ( | struct conn_interface * | intf, |
const void * | buff, | ||
size_t | len | ||
) |
int tls_clear_pending_write | ( | struct conn_interface * | intf | ) |
|
static |
|
static |
const char* tls_errors[] |
const char* cert_errors[] |