X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_tls.h;h=84d59538b615b50667463da4978f50f58b165588;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=01e56336aef2e383fd2cf17462c9ab5f2a7e3192;hpb=0dd2458b1fd4b3476ee62d5bf5d66d1a1c4064a0;p=vlc diff --git a/include/vlc_tls.h b/include/vlc_tls.h index 01e56336ae..84d59538b6 100644 --- a/include/vlc_tls.h +++ b/include/vlc_tls.h @@ -1,10 +1,10 @@ /***************************************************************************** - * tls.c + * tls.c: Transport Layer Security API ***************************************************************************** - * Copyright (C) 2004 VideoLAN - * $Id: httpd.c 8263 2004-07-24 09:06:58Z courmisch $ + * Copyright (C) 2004-2007 the VideoLAN team + * $Id$ * - * Authors: Remi Denis-Courmont + * Authors: Rémi Denis-Courmont * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,51 +18,66 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ +#ifndef VLC_TLS_H +# define VLC_TLS_H -/***************************************************************************** - * tls_ServerCreate: - ***************************************************************************** - * Allocates a whole server's TLS credentials. - * Returns NULL on error. - *****************************************************************************/ -VLC_EXPORT( tls_server_t *, tls_ServerCreate, ( vlc_object_t *, const char *, const char * ) ); +/** + * \file + * This file defines Transport Layer Security API (TLS) in vlc + */ +# include -/***************************************************************************** - * tls_ServerAddCA: - ***************************************************************************** - * Adds one or more certificate authorities. - * Returns -1 on error, 0 on success. - *****************************************************************************/ -VLC_EXPORT( int, tls_ServerAddCA, ( tls_server_t *, const char * ) ); +typedef struct tls_server_sys_t tls_server_sys_t; +struct tls_server_t +{ + VLC_COMMON_MEMBERS -/***************************************************************************** - * tls_ServerAddCRL: - ***************************************************************************** - * Adds a certificates revocation list to be sent to TLS clients. - * Returns -1 on error, 0 on success. - *****************************************************************************/ -VLC_EXPORT( int, tls_ServerAddCRL, ( tls_server_t *, const char * ) ); + module_t *p_module; + tls_server_sys_t *p_sys; + + int (*pf_add_CA) ( tls_server_t *, const char * ); + int (*pf_add_CRL) ( tls_server_t *, const char * ); + + tls_session_t * (*pf_open) ( tls_server_t * ); + void (*pf_close) ( tls_server_t *, tls_session_t * ); +}; + +typedef struct tls_session_sys_t tls_session_sys_t; + +struct tls_session_t +{ + VLC_COMMON_MEMBERS + + module_t *p_module; + tls_session_sys_t *p_sys; + struct virtual_socket_t sock; + void (*pf_set_fd) ( tls_session_t *, int ); + int (*pf_handshake) ( tls_session_t * ); +}; -VLC_EXPORT( void, tls_ServerDelete, ( tls_server_t * ) ); +tls_server_t *tls_ServerCreate (vlc_object_t *, const char *, const char *); +void tls_ServerDelete (tls_server_t *); +int tls_ServerAddCA (tls_server_t *srv, const char *path); +int tls_ServerAddCRL (tls_server_t *srv, const char *path); -tls_session_t * -tls_ServerSessionPrepare( const tls_server_t *p_server ); +tls_session_t *tls_ServerSessionPrepare (tls_server_t *); +int tls_ServerSessionHandshake (tls_session_t *, int fd); +int tls_SessionContinueHandshake (tls_session_t *); +void tls_ServerSessionClose (tls_session_t *); -tls_session_t * -tls_SessionHandshake( tls_session_t *p_session, int fd ); +VLC_EXPORT( tls_session_t *, tls_ClientCreate, ( vlc_object_t *, int, const char * ) ); +VLC_EXPORT( void, tls_ClientDelete, ( tls_session_t * ) ); -void -tls_SessionClose( tls_session_t *p_session ); +/* NOTE: It is assumed that a->sock.p_sys = a */ +# define tls_Send( a, b, c ) (((tls_session_t *)a)->sock.pf_send (a, b, c )) -int -tls_Send( tls_session_t *p_session, const char *buf, int i_length ); +# define tls_Recv( a, b, c ) (((tls_session_t *)a)->sock.pf_recv (a, b, c )) -int -tls_Recv( tls_session_t *p_session, char *buf, int i_length ); +#endif