blocxx
Main Page
Namespaces
Classes
Files
File List
File Members
src
blocxx
SSLSocketImpl.hpp
Go to the documentation of this file.
1
/*******************************************************************************
2
* Copyright (C) 2005, Vintela, Inc. All rights reserved.
3
* Copyright (C) 2006, Novell, Inc. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* * Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* * Neither the name of
14
* Vintela, Inc.,
15
* nor Novell, Inc.,
16
* nor the names of its contributors or employees may be used to
17
* endorse or promote products derived from this software without
18
* specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
* POSSIBILITY OF SUCH DAMAGE.
31
*******************************************************************************/
32
33
42
#ifndef BLOCXX_INETSSLSOCKETIMPL_HPP_INCLUDE_GUARD_
43
#define BLOCXX_INETSSLSOCKETIMPL_HPP_INCLUDE_GUARD_
44
#include "blocxx/BLOCXX_config.h"
45
#include "
blocxx/SocketBaseImpl.hpp
"
46
#include "
blocxx/SSLCtxMgr.hpp
"
47
#include "
blocxx/SSLException.hpp
"
48
#ifndef BLOCXX_NO_SSL
49
50
// The classes and functions defined in this file are not meant for general
51
// use, they are internal implementation details. They may change at any time.
52
53
namespace
BLOCXX_NAMESPACE
54
{
55
56
class
BLOCXX_COMMON_API
SSLSocketImpl
:
public
SocketBaseImpl
57
{
58
public
:
59
SSLSocketImpl
(
SSLClientCtxRef
sslCtx);
60
61
// DEPRECATED, but not because it's an impl
62
SSLSocketImpl
() ;
68
SSLSocketImpl
(
SocketHandle_t
fd,
SocketAddress::AddressType
addrType,
69
const
SSLServerCtxRef
& sslCtx);
76
// Deprecated, but not really since this is an impl.
77
SSLSocketImpl
(
SocketHandle_t
fd,
SocketAddress::AddressType
addrType);
81
SSLSocketImpl
(
const
SocketAddress
& addr);
82
virtual
~
SSLSocketImpl
();
86
virtual
void
connect(
const
SocketAddress
& addr);
87
virtual
void
disconnect();
88
Select_t
getSelectObj()
const
;
93
SSL* getSSL()
const
;
94
99
bool
peerCertVerified()
const
;
100
private
:
104
virtual
int
readAux(
void
* dataIn,
int
dataInLen);
108
virtual
int
writeAux(
const
void
* dataOut,
int
dataOutLen);
109
void
connectSSL();
110
virtual
bool
waitForInput(
const
Timeout
& timeout);
111
SSL*
m_ssl
;
112
BIO*
m_sbio
;
113
114
#ifdef BLOCXX_WIN32
115
#pragma warning (push)
116
#pragma warning (disable: 4251)
117
#endif
118
119
SSLClientCtxRef
m_sslCtx
;
120
121
#ifdef BLOCXX_WIN32
122
#pragma warning (pop)
123
#endif
124
125
OWSSLContext
m_owctx
;
126
127
SSLSocketImpl
(
const
SSLSocketImpl
& arg);
128
SSLSocketImpl
& operator =(
const
SSLSocketImpl
& arg);
129
};
130
131
}
// end namespace BLOCXX_NAMESPACE
132
133
#endif // #ifndef BLOCXX_NO_SSL
134
135
#endif
BLOCXX_NAMESPACE::SocketAddress
Definition:
SocketAddress.hpp:55
BLOCXX_NAMESPACE::SSLSocketImpl
Definition:
SSLSocketImpl.hpp:56
BLOCXX_NAMESPACE::Select_t
int Select_t
Definition:
NetworkTypes.hpp:146
BLOCXX_NAMESPACE::SSLSocketImpl::m_owctx
OWSSLContext m_owctx
Definition:
SSLSocketImpl.hpp:125
BLOCXX_NAMESPACE::SocketAddress::AddressType
AddressType
Definition:
SocketAddress.hpp:60
BLOCXX_NAMESPACE::IntrusiveReference< SSLClientCtx >
BLOCXX_NAMESPACE::Timeout
A timeout can be absolute, which means that it will happen at the specified DateTime.
Definition:
Timeout.hpp:55
BLOCXX_NAMESPACE::SSLSocketImpl::m_sbio
BIO * m_sbio
Definition:
SSLSocketImpl.hpp:112
BLOCXX_NAMESPACE::SocketHandle_t
int SocketHandle_t
Definition:
NetworkTypes.hpp:97
SSLCtxMgr.hpp
SSLException.hpp
BLOCXX_NAMESPACE::SSLSocketImpl::m_ssl
SSL * m_ssl
Definition:
SSLSocketImpl.hpp:111
BLOCXX_NAMESPACE::SSLSocketImpl::m_sslCtx
SSLClientCtxRef m_sslCtx
Definition:
SSLSocketImpl.hpp:119
SocketBaseImpl.hpp
BLOCXX_NAMESPACE::SocketBaseImpl
Definition:
SocketBaseImpl.hpp:68
Generated by
1.8.6