VLC  2.1.0-git
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Functions
vlc_tls.h File Reference

This file defines Transport Layer Security API (TLS) in vlc. More...

Include dependency graph for vlc_tls.h:

Go to the source code of this file.

Data Structures

struct  vlc_tls
 TLS session. More...
struct  vlc_tls_creds
 TLS credentials (certificate, private and trust settings) More...

Macros

#define tls_Send(a, b, c)   (((vlc_tls_t *)a)->sock.pf_send (a, b, c))
#define tls_Recv(a, b, c)   (((vlc_tls_t *)a)->sock.pf_recv (a, b, c))

Typedefs

typedef struct vlc_tls vlc_tls_t
typedef struct vlc_tls_sys vlc_tls_sys_t
typedef struct vlc_tls_creds vlc_tls_creds_t
typedef struct vlc_tls_creds_sys vlc_tls_creds_sys_t

Functions

vlc_tls_tvlc_tls_ClientSessionCreate (vlc_tls_creds_t *, int fd, const char *host, const char *service)
 Performs client side of TLS handshake through a connected socket, and establishes a secure channel.
vlc_tls_tvlc_tls_SessionCreate (vlc_tls_creds_t *, int fd, const char *host)
int vlc_tls_SessionHandshake (vlc_tls_t *, const char *host, const char *serv)
void vlc_tls_SessionDelete (vlc_tls_t *)
vlc_tls_creds_tvlc_tls_ClientCreate (vlc_object_t *)
 Allocates TLS credentials for a client.
vlc_tls_creds_tvlc_tls_ServerCreate (vlc_object_t *, const char *cert, const char *key)
 Allocates a whole server's TLS credentials.
void vlc_tls_Delete (vlc_tls_creds_t *)
 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.

Detailed Description

This file defines Transport Layer Security API (TLS) in vlc.

Macro Definition Documentation

#define tls_Recv (   a,
  b,
 
)    (((vlc_tls_t *)a)->sock.pf_recv (a, b, c))

Referenced by httpd_NetRecv().

#define tls_Send (   a,
  b,
 
)    (((vlc_tls_t *)a)->sock.pf_send (a, b, c))

Referenced by httpd_NetSend().

Typedef Documentation

typedef struct vlc_tls_creds_sys vlc_tls_creds_sys_t
typedef struct vlc_tls_sys vlc_tls_sys_t
typedef struct vlc_tls vlc_tls_t

Function Documentation

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 ,
int  fd,
const char *  host 
)
void vlc_tls_SessionDelete ( vlc_tls_t )
int vlc_tls_SessionHandshake ( vlc_tls_t ,
const char *  host,
const char *  serv 
)