VLC  2.1.0-git
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Functions
tls.c File Reference

libvlc interface to the Transport Layer Security (TLS) plugins. More...

Include dependency graph for tls.c:

Functions

static int tls_server_load (void *func, va_list ap)
static int tls_client_load (void *func, va_list ap)
static void tls_unload (void *func, va_list ap)
vlc_tls_creds_tvlc_tls_ServerCreate (vlc_object_t *obj, const char *cert_path, const char *key_path)
 Allocates a whole server's TLS credentials.
vlc_tls_creds_tvlc_tls_ClientCreate (vlc_object_t *obj)
 Allocates TLS credentials for a client.
void vlc_tls_Delete (vlc_tls_creds_t *crd)
 Releases data allocated with vlc_tls_ClientCreate() or vlc_tls_ServerCreate().
int vlc_tls_ServerAddCA (vlc_tls_creds_t *srv, const char *path)
 Adds one or more certificate authorities from a file.
int vlc_tls_ServerAddCRL (vlc_tls_creds_t *srv, const char *path)
 Adds one or more certificate revocation list from a file.
vlc_tls_tvlc_tls_SessionCreate (vlc_tls_creds_t *crd, int fd, const char *host)
void vlc_tls_SessionDelete (vlc_tls_t *session)
int vlc_tls_SessionHandshake (vlc_tls_t *session, const char *host, const char *service)
vlc_tls_tvlc_tls_ClientSessionCreate (vlc_tls_creds_t *crd, int fd, const char *host, const char *service)
 Performs client side of TLS handshake through a connected socket, and establishes a secure channel.

Detailed Description

libvlc interface to the Transport Layer Security (TLS) plugins.

Function Documentation

static int tls_client_load ( void *  func,
va_list  ap 
)
static

Referenced by vlc_tls_ClientCreate().

static int tls_server_load ( void *  func,
va_list  ap 
)
static

Referenced by vlc_tls_ServerCreate().

static void tls_unload ( void *  func,
va_list  ap 
)
static

Referenced by vlc_tls_Delete().

vlc_tls_creds_t* vlc_tls_ClientCreate ( vlc_object_t obj)

Allocates TLS credentials for a client.

Credentials can be cached and reused across multiple TLS sessions.

Returns
TLS credentials object, or NULL on error.

References vlc_tls_creds::module, msg_Err, tls_client_load(), unlikely, vlc_custom_create, vlc_module_load, and vlc_object_release.

vlc_tls_t* vlc_tls_ClientSessionCreate ( vlc_tls_creds_t crd,
int  fd,
const char *  host,
const char *  service 
)

Performs client side of TLS handshake through a connected socket, and establishes a secure channel.

This is a blocking network operation.

Parameters
fdsocket through which to establish the secure channel
hostnameexpected server name, used both as Server Name Indication and as expected Common Name of the peer certificate
Returns
NULL on error.

References pollfd::events, pollfd::fd, mdate(), msg_Err, poll(), POLLIN, POLLOUT, var_InheritInteger, vlc_tls_SessionCreate(), vlc_tls_SessionDelete(), and vlc_tls_SessionHandshake().

void vlc_tls_Delete ( vlc_tls_creds_t crd)

Releases data allocated with vlc_tls_ClientCreate() or vlc_tls_ServerCreate().

Parameters
srvTLS server object to be destroyed, or NULL

References vlc_tls_creds::module, tls_unload(), vlc_module_unload(), and vlc_object_release.

Referenced by httpd_HostCreate(), httpd_HostDelete(), and vlc_https_HostNew().

int vlc_tls_ServerAddCA ( vlc_tls_creds_t srv,
const char *  path 
)

Adds one or more certificate authorities from a file.

Returns
-1 on error, 0 on success.

References vlc_tls_creds::add_CA.

Referenced by vlc_https_HostNew().

int vlc_tls_ServerAddCRL ( vlc_tls_creds_t srv,
const char *  path 
)

Adds one or more certificate revocation list from a file.

Returns
-1 on error, 0 on success.

References vlc_tls_creds::add_CRL.

Referenced by vlc_https_HostNew().

vlc_tls_creds_t* vlc_tls_ServerCreate ( vlc_object_t obj,
const char *  cert_path,
const char *  key_path 
)

Allocates a whole server's TLS credentials.

Parameters
cert_pathrequired (Unicode) path to an x509 certificate, if NULL, anonymous key exchange will be used.
key_path(UTF-8) path to the PKCS private key for the certificate, if NULL; cert_path will be used.
Returns
NULL on error.

References vlc_tls_creds::module, msg_Err, tls_server_load(), unlikely, vlc_custom_create, vlc_module_load, and vlc_object_release.

Referenced by vlc_https_HostNew().

vlc_tls_t* vlc_tls_SessionCreate ( vlc_tls_creds_t crd,
int  fd,
const char *  host 
)
void vlc_tls_SessionDelete ( vlc_tls_t session)
int vlc_tls_SessionHandshake ( vlc_tls_t session,
const char *  host,
const char *  service 
)