vlc_tls.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:3k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * tls.c: Transport Layer Security API
  3.  *****************************************************************************
  4.  * Copyright (C) 2004-2007 the VideoLAN team
  5.  * $Id: 84d59538b615b50667463da4978f50f58b165588 $
  6.  *
  7.  * Authors: Rémi Denis-Courmont <rem # videolan.org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. #ifndef VLC_TLS_H
  24. # define VLC_TLS_H
  25. /**
  26.  * file
  27.  * This file defines Transport Layer Security API (TLS) in vlc
  28.  */
  29. # include <vlc_network.h>
  30. typedef struct tls_server_sys_t tls_server_sys_t;
  31. struct tls_server_t
  32. {
  33.     VLC_COMMON_MEMBERS
  34.     module_t  *p_module;
  35.     tls_server_sys_t *p_sys;
  36.     int (*pf_add_CA) ( tls_server_t *, const char * );
  37.     int (*pf_add_CRL) ( tls_server_t *, const char * );
  38.     tls_session_t * (*pf_open)  ( tls_server_t * );
  39.     void            (*pf_close) ( tls_server_t *, tls_session_t * );
  40. };
  41. typedef struct tls_session_sys_t tls_session_sys_t;
  42. struct tls_session_t
  43. {
  44.     VLC_COMMON_MEMBERS
  45.     module_t  *p_module;
  46.     tls_session_sys_t *p_sys;
  47.     struct virtual_socket_t sock;
  48.     void (*pf_set_fd) ( tls_session_t *, int );
  49.     int  (*pf_handshake) ( tls_session_t * );
  50. };
  51. tls_server_t *tls_ServerCreate (vlc_object_t *, const char *, const char *);
  52. void tls_ServerDelete (tls_server_t *);
  53. int tls_ServerAddCA (tls_server_t *srv, const char *path);
  54. int tls_ServerAddCRL (tls_server_t *srv, const char *path);
  55. tls_session_t *tls_ServerSessionPrepare (tls_server_t *);
  56. int tls_ServerSessionHandshake (tls_session_t *, int fd);
  57. int tls_SessionContinueHandshake (tls_session_t *);
  58. void tls_ServerSessionClose (tls_session_t *);
  59. VLC_EXPORT( tls_session_t *, tls_ClientCreate, ( vlc_object_t *, int, const char * ) );
  60. VLC_EXPORT( void, tls_ClientDelete, ( tls_session_t * ) );
  61. /* NOTE: It is assumed that a->sock.p_sys = a */
  62. # define tls_Send( a, b, c ) (((tls_session_t *)a)->sock.pf_send (a, b, c ))
  63. # define tls_Recv( a, b, c ) (((tls_session_t *)a)->sock.pf_recv (a, b, c ))
  64. #endif