00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _VLC_TLS_H
00025 # define _VLC_TLS_H
00026
00027 # include "network.h"
00028
00029 struct tls_t
00030 {
00031 VLC_COMMON_MEMBERS
00032
00033
00034 module_t *p_module;
00035 void *p_sys;
00036
00037 tls_server_t * (*pf_server_create) ( tls_t *, const char *,
00038 const char * );
00039 tls_session_t * (*pf_client_create) ( tls_t * );
00040 };
00041
00042 struct tls_server_t
00043 {
00044 VLC_COMMON_MEMBERS
00045
00046 void *p_sys;
00047
00048 void (*pf_delete) ( tls_server_t * );
00049
00050 int (*pf_add_CA) ( tls_server_t *, const char * );
00051 int (*pf_add_CRL) ( tls_server_t *, const char * );
00052
00053 tls_session_t * (*pf_session_prepare) ( tls_server_t * );
00054 };
00055
00056 struct tls_session_t
00057 {
00058 VLC_COMMON_MEMBERS
00059
00060 void *p_sys;
00061
00062 struct virtual_socket_t sock;
00063 int (*pf_handshake) ( tls_session_t *, int, const char * );
00064 int (*pf_handshake2) ( tls_session_t * );
00065 void (*pf_close) ( tls_session_t * );
00066 };
00067
00068
00069
00070
00071
00072
00073
00074
00075 VLC_EXPORT( tls_server_t *, tls_ServerCreate, ( vlc_object_t *, const char *, const char * ) );
00076
00077
00078
00079
00080
00081
00082
00083 # define tls_ServerAddCA( a, b ) (((tls_server_t *)a)->pf_add_CA (a, b))
00084
00085
00086
00087
00088
00089
00090
00091
00092 # define tls_ServerAddCRL( a, b ) (((tls_server_t *)a)->pf_add_CRL (a, b))
00093
00094
00095 VLC_EXPORT( void, tls_ServerDelete, ( tls_server_t * ) );
00096
00097
00098 # define tls_ServerSessionPrepare( a ) (((tls_server_t *)a)->pf_session_prepare (a))
00099 # define tls_ServerSessionHandshake( a, b ) (((tls_session_t *)a)->pf_handshake (a, b, NULL))
00100 # define tls_ServerSessionClose( a ) (((tls_session_t *)a)->pf_close (a))
00101
00102 VLC_EXPORT( tls_session_t *, tls_ClientCreate, ( vlc_object_t *, int, const char * ) );
00103 VLC_EXPORT( void, tls_ClientDelete, ( tls_session_t * ) );
00104
00105 # define tls_ClientSessionHandshake( a, b, c ) (((tls_session_t *)a)->pf_handshake (a, b, c))
00106
00107 # define tls_SessionContinueHandshake( a ) (((tls_session_t *)a)->pf_handshake2 (a))
00108
00109
00110
00111 # define tls_Send( a, b, c ) (((tls_session_t *)a)->sock.pf_send (a, b, c ))
00112
00113 # define tls_Recv( a, b, c ) (((tls_session_t *)a)->sock.pf_recv (a, b, c ))
00114
00115 #endif