1
/* Copyright (c) 2001-2008, The HSQL Development Group
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
7
* Redistributions of source code must retain the above copyright notice, this
8
* list of conditions and the following disclaimer.
10
* Redistributions in binary form must reproduce the above copyright notice,
11
* this list of conditions and the following disclaimer in the documentation
12
* and/or other materials provided with the distribution.
14
* Neither the name of the HSQL Development Group nor the names of its
15
* contributors may be used to endorse or promote products derived from this
16
* software without specific prior written permission.
18
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
* ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
22
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
import java.net.InetAddress;
34
import java.net.ServerSocket;
35
import java.net.Socket;
37
import javax.net.ssl.SSLServerSocket;
38
import javax.net.ssl.SSLServerSocketFactory;
39
import javax.net.ssl.SSLSocket;
40
import javax.net.ssl.SSLSocketFactory;
42
import com.eucalyptus.auth.util.SslSetup;
45
* We need to override the way that hsqldb gets its secure sockets to use our internally mananged credentials.
47
public final class HsqlSocketFactorySecure extends HsqlSocketFactory {
48
protected SSLSocketFactory socketFactory;
49
protected SSLServerSocketFactory serverSocketFactory;
51
protected HsqlSocketFactorySecure( ) throws Exception {}
53
public void configureSocket( Socket socket ) {
54
super.configureSocket( socket );
57
public ServerSocket createServerSocket( int port ) throws Exception {
58
return ( SSLServerSocket ) getServerSocketFactoryImpl( ).createServerSocket( port );
61
public ServerSocket createServerSocket( int port, String address ) throws Exception {
62
InetAddress addr = InetAddress.getByName( address );
63
return ( SSLServerSocket ) getServerSocketFactoryImpl( ).createServerSocket( port, 128, addr );
66
public Socket createSocket( String host, int port ) throws Exception {
67
SSLSocket socket = ( SSLSocket ) getSocketFactoryImpl( ).createSocket( host, port );
68
socket.startHandshake( );
72
public boolean isSecure( ) {
76
protected SSLServerSocketFactory getServerSocketFactoryImpl( ) throws Exception {
77
synchronized ( HsqlSocketFactorySecure.class ) {
78
if ( serverSocketFactory == null ) {
79
serverSocketFactory = SslSetup.getServerContext( ).getServerSocketFactory( );
82
return ( SSLServerSocketFactory ) serverSocketFactory;
85
protected SSLSocketFactory getSocketFactoryImpl( ) throws Exception {
86
synchronized ( HsqlSocketFactorySecure.class ) {
87
if ( socketFactory == null ) {
88
socketFactory = SslSetup.getClientContext( ).getSocketFactory( );
91
return ( SSLSocketFactory ) socketFactory;