00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _C_SECURE_SOCKET_H
00021 #define _C_SECURE_SOCKET_H
00022
00023
00024 #include "ssl_t.hpp"
00025 #include "C_Socket.hpp"
00026
00027 class C_SecureSocket {
00028 public:
00029 C_SecureSocket(SSL_CTX * P_ssl_ctx) ;
00030 ~C_SecureSocket() ;
00031
00032 void ssl_error(int P_resultCode);
00033
00034
00035 protected:
00036 SSL_CTX * m_ssl_ctx ;
00037 BIO * m_bio ;
00038 SSL * m_ssl ;
00039
00040
00041 } ;
00042
00043 class C_SecureSocketListen : public C_SocketListen, public C_SecureSocket {
00044
00045 public:
00046 C_SecureSocketListen(SSL_CTX * P_ssl_ctx,
00047 T_SocketType P_type,
00048 T_pIpAddr P_addr,
00049 int P_channel_id,
00050 size_t P_read_buf_size,
00051 size_t P_segm_buf_size) ;
00052 C_SecureSocketListen(SSL_CTX * P_ssl_ctx, C_SocketListen& P_Socket);
00053 virtual ~C_SecureSocketListen() ;
00054 protected:
00055 virtual C_Socket* create_socket_server(int *P_ret) ;
00056
00057 } ;
00058
00059 class C_SecureSocketServer : public C_SocketServer , public C_SecureSocket {
00060
00061 public:
00062 C_SecureSocketServer(SSL_CTX * P_ssl_ctx,
00063 C_SocketListen *P_listen,
00064 int P_channel_id,
00065 size_t P_read_buf_size,
00066 size_t P_segm_buf_size);
00067
00068 C_SecureSocketServer(SSL_CTX * P_ssl_ctx,
00069 T_SocketType P_type,
00070 T_pIpAddr P_addr,
00071 int P_channel_id,
00072 size_t P_read_buf_size,
00073 size_t P_segm_buf_size) ;
00074
00075 C_SecureSocketServer(SSL_CTX * P_ssl_ctx, C_SocketServer& P_Socket);
00076 virtual ~C_SecureSocketServer();
00077 virtual int _call_read() ;
00078
00079 virtual int _open(size_t P_buffer_size,
00080 C_ProtocolBinaryFrame *P_protocol) ;
00081 int _secure_mode() ;
00082 virtual int _call_write(unsigned char *P_buf, size_t P_size);
00083 virtual C_Socket* process_fd_in_progess(fd_set *P_rSet,
00084 fd_set *P_wSet,
00085 C_TransportEvent *P_event) ;
00086
00087
00088 } ;
00089
00090 class C_SecureSocketClient : public C_SocketClient, public C_SecureSocket {
00091 public:
00092 C_SecureSocketClient(SSL_CTX * P_ssl_ctx,
00093 T_SocketType P_type,
00094 T_pIpAddr P_addr,
00095 int P_channel_id,
00096 size_t P_read_buf_size,
00097 size_t P_segm_buf_size) ;
00098 C_SecureSocketClient(SSL_CTX * P_ssl_ctx, C_SocketClient& P_Socket);
00099 virtual ~C_SecureSocketClient() ;
00100 virtual int _call_read() ;
00101
00102 virtual int _open (T_pOpenStatus P_status,
00103 size_t P_buffer_size,
00104 C_ProtocolBinaryFrame *P_protocol);
00105 int _secure_mode() ;
00106 virtual C_Socket* process_fd_in_progess(fd_set *P_rSet,
00107 fd_set *P_wSet,
00108 C_TransportEvent *P_event) ;
00109 virtual int _call_write(unsigned char *P_buf, size_t P_size);
00110
00111 } ;
00112
00113 #endif // _C_SECURE_SOCKET_H
00114
00115