You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2010/05/19 21:12:01 UTC
svn commit: r946345 - in
/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf:
internal/net/ssl/openssl/OpenSSLServerSocket.cpp
internal/net/ssl/openssl/OpenSSLServerSocket.h net/ServerSocket.h
Author: tabish
Date: Wed May 19 19:12:01 2010
New Revision: 946345
URL: http://svn.apache.org/viewvc?rev=946345&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQCPP-140
Add some more implementation to OpenSSLServerSocket
Modified:
activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.h
activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/ServerSocket.h
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.cpp?rev=946345&r1=946344&r2=946345&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.cpp Wed May 19 19:12:01 2010
@@ -37,17 +37,118 @@ using namespace decaf::lang;
using namespace decaf::lang::exceptions;
using namespace decaf::io;
using namespace decaf::net;
-//using namespace decaf::net::ssl;
+using namespace decaf::net::ssl;
using namespace decaf::internal;
using namespace decaf::internal::net;
using namespace decaf::internal::net::ssl;
using namespace decaf::internal::net::ssl::openssl;
////////////////////////////////////////////////////////////////////////////////
-OpenSSLServerSocket::OpenSSLServerSocket() {
+namespace decaf {
+namespace internal {
+namespace net {
+namespace ssl {
+namespace openssl {
+
+ class ServerSocketData {
+ public:
+
+#ifdef HAVE_OPENSSL
+ SSL* ssl;
+#endif
+ bool needsClientAuth;
+ bool wantsClientAuth;
+
+ public:
+
+ ServerSocketData() : ssl( NULL ), needsClientAuth( false ), wantsClientAuth( false ) {
+ }
+
+ ~ServerSocketData() {
+ try{
+#ifdef HAVE_OPENSSL
+ if( ssl ) {
+ SSL_free( ssl );
+ }
+#endif
+ } catch(...) {}
+ }
+
+ };
+
+}}}}}
+
+////////////////////////////////////////////////////////////////////////////////
+OpenSSLServerSocket::OpenSSLServerSocket( void* ssl ) : SSLServerSocket(), data( new ServerSocketData() ) {
+
+ if( ssl == NULL ) {
+ throw NullPointerException(
+ __FILE__, __LINE__, "The OpenSSL SSL object instance passed was NULL." );
+ }
+
+#ifdef HAVE_OPENSSL
+ this->data->ssl = static_cast<SSL*>( ssl );
+#endif
}
////////////////////////////////////////////////////////////////////////////////
OpenSSLServerSocket::~OpenSSLServerSocket() {
}
+////////////////////////////////////////////////////////////////////////////////
+std::vector<std::string> OpenSSLServerSocket::getSupportedCipherSuites() const {
+
+ return std::vector<std::string>();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+std::vector<std::string> OpenSSLServerSocket::getSupportedProtocols() const {
+
+ return std::vector<std::string>();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+std::vector<std::string> OpenSSLServerSocket::getEnabledCipherSuites() const {
+
+ return std::vector<std::string>();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void OpenSSLServerSocket::setEnabledCipherSuites( const std::vector<std::string>& suites DECAF_UNUSED ) {
+
+}
+
+////////////////////////////////////////////////////////////////////////////////
+std::vector<std::string> OpenSSLServerSocket::getEnabledProtocols() const {
+
+ return std::vector<std::string>();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void OpenSSLServerSocket::setEnabledProtocols( const std::vector<std::string>& protocols DECAF_UNUSED ) {
+
+}
+
+////////////////////////////////////////////////////////////////////////////////
+bool OpenSSLServerSocket::getNeedClientAuth() const {
+ return this->data->needsClientAuth;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void OpenSSLServerSocket::setNeedClientAuth( bool value ) {
+
+ this->data->needsClientAuth = value;
+ this->data->wantsClientAuth = value;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+bool OpenSSLServerSocket::getWantClientAuth() const {
+ return this->data->wantsClientAuth;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void OpenSSLServerSocket::setWantClientAuth( bool value ) {
+
+ this->data->needsClientAuth = value;
+ this->data->wantsClientAuth = value;
+}
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.h?rev=946345&r1=946344&r2=946345&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/internal/net/ssl/openssl/OpenSSLServerSocket.h Wed May 19 19:12:01 2010
@@ -20,18 +20,84 @@
#include <decaf/util/Config.h>
+#include <decaf/net/ssl/SSLServerSocket.h>
+
namespace decaf {
namespace internal {
namespace net {
namespace ssl {
namespace openssl {
- class DECAF_API OpenSSLServerSocket {
+ class ServerSocketData;
+
+ /**
+ * SSLServerSocket based on OpenSSL library code.
+ *
+ * @since 1.0
+ */
+ class DECAF_API OpenSSLServerSocket : public decaf::net::ssl::SSLServerSocket {
+ private:
+
+ ServerSocketData* data;
+
public:
- OpenSSLServerSocket();
+ OpenSSLServerSocket( void* ssl );
+
virtual ~OpenSSLServerSocket();
+ public: // SSLServerSocket overrides
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual std::vector<std::string> getSupportedCipherSuites() const;
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual std::vector<std::string> getSupportedProtocols() const;
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual std::vector<std::string> getEnabledCipherSuites() const;
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual void setEnabledCipherSuites( const std::vector<std::string>& suites );
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual std::vector<std::string> getEnabledProtocols() const;
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual void setEnabledProtocols( const std::vector<std::string>& protocols );
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual bool getWantClientAuth() const;
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual void setWantClientAuth( bool value );
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual bool getNeedClientAuth() const;
+
+ /**
+ * {@inheritDoc}
+ */
+ virtual void setNeedClientAuth( bool value );
+
};
}}}}}
Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/ServerSocket.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/ServerSocket.h?rev=946345&r1=946344&r2=946345&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/ServerSocket.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/net/ServerSocket.h Wed May 19 19:12:01 2010
@@ -173,7 +173,7 @@ namespace net{
* @throws IOException if an I/O error occurs while binding the socket.
* @throws IllegalArgumentException if the parameters are not valid.
*/
- void bind( const std::string& host, int port )
+ virtual void bind( const std::string& host, int port )
throw ( decaf::io::IOException, decaf::lang::exceptions::IllegalArgumentException );
/**
@@ -194,7 +194,7 @@ namespace net{
* @throws IOException if an I/O error occurs while binding the socket.
* @throws IllegalArgumentException if the parameters are not valid.
*/
- void bind( const std::string& host, int port, int backlog )
+ virtual void bind( const std::string& host, int port, int backlog )
throw ( decaf::io::IOException, decaf::lang::exceptions::IllegalArgumentException );
/**
@@ -209,7 +209,7 @@ namespace net{
* @throws SocketException if an error occurs while blocking on the accept call.
* @throws SocketTimeoutException if the SO_TIMEOUT option was used and the accept timed out.
*/
- Socket* accept() throw( decaf::io::IOException );
+ virtual Socket* accept() throw( decaf::io::IOException );
/**
* Closes the server socket, causing any Threads blocked on an accept call to
@@ -217,17 +217,17 @@ namespace net{
*
* @throws IOException if an I/O error occurs while performing this operation.
*/
- void close() throw( decaf::io::IOException );
+ virtual void close() throw( decaf::io::IOException );
/**
* @returns true if the close method has been called on the ServerSocket.
*/
- bool isClosed() const;
+ virtual bool isClosed() const;
/**
* @return true of the server socket is bound.
*/
- bool isBound() const;
+ virtual bool isBound() const;
/**
* Gets the receive buffer size for this socket, SO_RCVBUF. This is the buffer used
@@ -237,7 +237,7 @@ namespace net{
*
* @throws SocketException if the operation fails.
*/
- int getReceiveBufferSize() const throw( SocketException );
+ virtual int getReceiveBufferSize() const throw( SocketException );
/**
* Sets the receive buffer size for this socket, SO_RCVBUF.
@@ -248,7 +248,7 @@ namespace net{
* @throws SocketException if the operation fails.
* @throws IllegalArgumentException if the value is zero or negative.
*/
- void setReceiveBufferSize( int size )
+ virtual void setReceiveBufferSize( int size )
throw( SocketException, decaf::lang::exceptions::IllegalArgumentException );
/**
@@ -258,7 +258,7 @@ namespace net{
*
* @throws SocketException if the operation fails.
*/
- bool getReuseAddress() const throw( SocketException );
+ virtual bool getReuseAddress() const throw( SocketException );
/**
* Sets the reuse address flag, SO_REUSEADDR.
@@ -268,7 +268,7 @@ namespace net{
*
* @throws SocketException if the operation fails.
*/
- void setReuseAddress( bool reuse ) throw( SocketException );
+ virtual void setReuseAddress( bool reuse ) throw( SocketException );
/**
* Gets the timeout for socket operations, SO_TIMEOUT.
@@ -277,7 +277,7 @@ namespace net{
*
* @throws SocketException Thrown if unable to retrieve the information.
*/
- int getSoTimeout() const throw( SocketException );
+ virtual int getSoTimeout() const throw( SocketException );
/**
* Sets the timeout for socket operations, SO_TIMEOUT. A value of zero indicates that timeout
@@ -289,7 +289,7 @@ namespace net{
* @throws SocketException Thrown if unable to set the information.
* @throws IllegalArgumentException if the timeout value is negative.
*/
- void setSoTimeout( int timeout )
+ virtual void setSoTimeout( int timeout )
throw( SocketException, decaf::lang::exceptions::IllegalArgumentException );
/**
@@ -297,12 +297,12 @@ namespace net{
*
* @returns the port number of this machine that is bound, if not bound returns -1.
*/
- int getLocalPort() const;
+ virtual int getLocalPort() const;
/**
* @returns a string representing this ServerSocket.
*/
- std::string toString() const;
+ virtual std::string toString() const;
public: