com.sun.enterprise.web.connector.grizzly.ssl
Class SSLUtils

java.lang.Object
  extended by com.sun.enterprise.web.connector.grizzly.ssl.SSLUtils

public class SSLUtils
extends Object

SSL over NIO utility class. The class handle the SSLEngine operations needed to support SSL over NIO. This class MUST be executed using an SSLWorkerThread as it rely on some SSLWorkerThread buffers and SSLEngine. TODO: Create an object that Wrap SSLEngine and its associated buffers.

Author:
Jeanfrancois Arcand

Field Summary
protected static ByteBuffer hsBB
           
static int MAX_BB_SIZE
          The maximum size a ByteBuffer can take.
 
Constructor Summary
SSLUtils()
           
 
Method Summary
static ByteBuffer doHandshake(SelectionKey key, ByteBuffer byteBuffer, ByteBuffer inputBB, ByteBuffer outputBB, SSLEngine sslEngine, SSLEngineResult.HandshakeStatus handshakeStatus)
          Perform an SSL handshake using the SSLEngine.
static ByteBuffer doHandshake(SelectionKey key, ByteBuffer byteBuffer, ByteBuffer inputBB, ByteBuffer outputBB, SSLEngine sslEngine, SSLEngineResult.HandshakeStatus handshakeStatus, int timeout)
          Perform an SSL handshake using the SSLEngine.
static int doRead(SelectionKey key, ByteBuffer inputBB, SSLEngine sslEngine, int timeout)
          Read encrypted bytes using an SSLEngine.
static SSLEngineResult.HandshakeStatus executeDelegatedTask(SSLEngine sslEngine)
          Complete hanshakes operations.
static int getReadTimeout()
           
static void setReadTimeout(int aReadTimeout)
           
static SSLEngineResult unwrap(ByteBuffer byteBuffer, ByteBuffer inputBB, SSLEngine sslEngine)
          Unwrap available encrypted bytes from inputBB to byteBuffer using the SSLEngine
static ByteBuffer unwrapAll(ByteBuffer byteBuffer, ByteBuffer inputBB, SSLEngine sslEngine)
          Unwrap all encrypted bytes from inputBB to byteBuffer using the SSLEngine
static SSLEngineResult wrap(ByteBuffer byteBuffer, ByteBuffer outputBB, SSLEngine sslEngine)
          Encrypt bytes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAX_BB_SIZE

public static final int MAX_BB_SIZE
The maximum size a ByteBuffer can take.

See Also:
Constant Field Values

hsBB

protected static final ByteBuffer hsBB
Constructor Detail

SSLUtils

public SSLUtils()
Method Detail

doRead

public static int doRead(SelectionKey key,
                         ByteBuffer inputBB,
                         SSLEngine sslEngine,
                         int timeout)
Read encrypted bytes using an SSLEngine.

Parameters:
key - The SelectionKey
inputBB - The byteBuffer to store encrypted bytes
sslEngine - The SSLEngine uses to manage the SSL operations.
timeout - The Selector.select() timeout value. A value of 0 will be exectuted as a Selector.selectNow();
Returns:
the bytes read.

unwrapAll

public static ByteBuffer unwrapAll(ByteBuffer byteBuffer,
                                   ByteBuffer inputBB,
                                   SSLEngine sslEngine)
                            throws IOException
Unwrap all encrypted bytes from inputBB to byteBuffer using the SSLEngine

Parameters:
byteBuffer - the decrypted ByteBuffer
inputBB - the encrypted ByteBuffer
sslEngine - The SSLEngine used to manage the SSL operations.
Returns:
the decrypted ByteBuffer
Throws:
IOException

unwrap

public static SSLEngineResult unwrap(ByteBuffer byteBuffer,
                                     ByteBuffer inputBB,
                                     SSLEngine sslEngine)
                              throws IOException
Unwrap available encrypted bytes from inputBB to byteBuffer using the SSLEngine

Parameters:
byteBuffer - the decrypted ByteBuffer
inputBB - the encrypted ByteBuffer
sslEngine - The SSLEngine used to manage the SSL operations.
Returns:
SSLEngineResult of the SSLEngine.unwrap operation.
Throws:
IOException

wrap

public static SSLEngineResult wrap(ByteBuffer byteBuffer,
                                   ByteBuffer outputBB,
                                   SSLEngine sslEngine)
                            throws IOException
Encrypt bytes.

Parameters:
byteBuffer - the decrypted ByteBuffer
outputBB - the encrypted ByteBuffer
sslEngine - The SSLEngine used to manage the SSL operations.
Returns:
SSLEngineResult of the SSLEngine.wrap operation.
Throws:
IOException

executeDelegatedTask

public static SSLEngineResult.HandshakeStatus executeDelegatedTask(SSLEngine sslEngine)
Complete hanshakes operations.

Parameters:
sslEngine - The SSLEngine used to manage the SSL operations.
Returns:
SSLEngineResult.HandshakeStatus

doHandshake

public static ByteBuffer doHandshake(SelectionKey key,
                                     ByteBuffer byteBuffer,
                                     ByteBuffer inputBB,
                                     ByteBuffer outputBB,
                                     SSLEngine sslEngine,
                                     SSLEngineResult.HandshakeStatus handshakeStatus)
                              throws IOException
Perform an SSL handshake using the SSLEngine.

Parameters:
key - the SelectionKey
byteBuffer - The application ByteBuffer
inputBB - The encrypted input ByteBuffer
outputBB - The encrypted output ByteBuffer
sslEngine - The SSLEngine used.
handshakeStatus - The current handshake status
timeout - The time the Selector will block waiting for bytes
Returns:
byteBuffer the new ByteBuffer
Throws:
IOException

doHandshake

public static ByteBuffer doHandshake(SelectionKey key,
                                     ByteBuffer byteBuffer,
                                     ByteBuffer inputBB,
                                     ByteBuffer outputBB,
                                     SSLEngine sslEngine,
                                     SSLEngineResult.HandshakeStatus handshakeStatus,
                                     int timeout)
                              throws IOException
Perform an SSL handshake using the SSLEngine.

Parameters:
key - the SelectionKey
byteBuffer - The application ByteBuffer
inputBB - The encrypted input ByteBuffer
outputBB - The encrypted output ByteBuffer
sslEngine - The SSLEngine used.
handshakeStatus - The current handshake status
Returns:
byteBuffer the new ByteBuffer
Throws:
IOException

getReadTimeout

public static int getReadTimeout()

setReadTimeout

public static void setReadTimeout(int aReadTimeout)


Copyright © 2005-2015 Oracle Corporation. All Rights Reserved.