Package org.jboss.netty.handler.ssl
Class OpenSslEngine
- java.lang.Object
-
- javax.net.ssl.SSLEngine
-
- org.jboss.netty.handler.ssl.OpenSslEngine
-
public final class OpenSslEngine extends javax.net.ssl.SSLEngine
Implements aSSLEngine
using OpenSSL BIO abstractions.
-
-
Field Summary
Fields Modifier and Type Field Description private int
accepted
0 - not accepted, 1 - accepted implicitly via wrap()/unwrap(), 2 - accepted explicitly via beginHandshake() callprivate java.lang.String
applicationProtocol
private SslBufferPool
bufPool
private java.lang.String
cipher
private int
destroyed
private static java.util.concurrent.atomic.AtomicIntegerFieldUpdater<OpenSslEngine>
DESTROYED_UPDATER
private static java.security.cert.Certificate[]
EMPTY_CERTIFICATES
private static javax.security.cert.X509Certificate[]
EMPTY_X509_CERTIFICATES
private static javax.net.ssl.SSLException
ENCRYPTED_PACKET_OVERSIZED
private static javax.net.ssl.SSLException
ENGINE_CLOSED
private boolean
engineClosed
private java.lang.String
fallbackApplicationProtocol
private boolean
handshakeFinished
private boolean
isInboundDone
private boolean
isOutboundDone
private int
lastPrimingReadResult
private static InternalLogger
logger
private static int
MAX_CIPHERTEXT_LENGTH
private static int
MAX_COMPRESSED_LENGTH
(package private) static int
MAX_ENCRYPTED_PACKET_LENGTH
private static int
MAX_PLAINTEXT_LENGTH
private long
networkBIO
private boolean
receivedShutdown
private static javax.net.ssl.SSLException
RENEGOTIATION_UNSUPPORTED
private javax.net.ssl.SSLSession
session
private long
ssl
-
Constructor Summary
Constructors Constructor Description OpenSslEngine(long sslCtx, SslBufferPool bufPool, java.lang.String fallbackApplicationProtocol)
Creates a new instance
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
beginHandshake()
private void
beginHandshakeImplicitly()
void
closeInbound()
void
closeOutbound()
java.lang.Runnable
getDelegatedTask()
java.lang.String[]
getEnabledCipherSuites()
java.lang.String[]
getEnabledProtocols()
boolean
getEnableSessionCreation()
private javax.net.ssl.SSLEngineResult.Status
getEngineStatus()
javax.net.ssl.SSLEngineResult.HandshakeStatus
getHandshakeStatus()
boolean
getNeedClientAuth()
javax.net.ssl.SSLSession
getSession()
java.lang.String[]
getSupportedCipherSuites()
java.lang.String[]
getSupportedProtocols()
boolean
getUseClientMode()
boolean
getWantClientAuth()
boolean
isInboundDone()
boolean
isOutboundDone()
private int
readEncryptedData(java.nio.ByteBuffer dst, int pending)
Read encrypted data from the OpenSSL network BIOprivate int
readPlaintextData(java.nio.ByteBuffer dst)
Read plaintext data from the OpenSSL internal BIOvoid
setEnabledCipherSuites(java.lang.String[] strings)
void
setEnabledProtocols(java.lang.String[] strings)
void
setEnableSessionCreation(boolean b)
void
setNeedClientAuth(boolean b)
void
setUseClientMode(boolean clientMode)
void
setWantClientAuth(boolean b)
void
shutdown()
Destroys this engine.javax.net.ssl.SSLEngineResult
unwrap(java.nio.ByteBuffer src, java.nio.ByteBuffer[] dsts, int offset, int length)
javax.net.ssl.SSLEngineResult
wrap(java.nio.ByteBuffer[] srcs, int offset, int length, java.nio.ByteBuffer dst)
private int
writeEncryptedData(java.nio.ByteBuffer src)
Write encrypted data to the OpenSSL network BIOprivate int
writePlaintextData(java.nio.ByteBuffer src)
Write plaintext data to the OpenSSL internal BIO Calling this function with src.remaining == 0 is undefined.-
Methods inherited from class javax.net.ssl.SSLEngine
getApplicationProtocol, getHandshakeApplicationProtocol, getHandshakeApplicationProtocolSelector, getHandshakeSession, getPeerHost, getPeerPort, getSSLParameters, setHandshakeApplicationProtocolSelector, setSSLParameters, unwrap, unwrap, wrap, wrap
-
-
-
-
Field Detail
-
logger
private static final InternalLogger logger
-
EMPTY_CERTIFICATES
private static final java.security.cert.Certificate[] EMPTY_CERTIFICATES
-
EMPTY_X509_CERTIFICATES
private static final javax.security.cert.X509Certificate[] EMPTY_X509_CERTIFICATES
-
ENGINE_CLOSED
private static final javax.net.ssl.SSLException ENGINE_CLOSED
-
RENEGOTIATION_UNSUPPORTED
private static final javax.net.ssl.SSLException RENEGOTIATION_UNSUPPORTED
-
ENCRYPTED_PACKET_OVERSIZED
private static final javax.net.ssl.SSLException ENCRYPTED_PACKET_OVERSIZED
-
MAX_PLAINTEXT_LENGTH
private static final int MAX_PLAINTEXT_LENGTH
- See Also:
- Constant Field Values
-
MAX_COMPRESSED_LENGTH
private static final int MAX_COMPRESSED_LENGTH
- See Also:
- Constant Field Values
-
MAX_CIPHERTEXT_LENGTH
private static final int MAX_CIPHERTEXT_LENGTH
- See Also:
- Constant Field Values
-
MAX_ENCRYPTED_PACKET_LENGTH
static final int MAX_ENCRYPTED_PACKET_LENGTH
- See Also:
- Constant Field Values
-
DESTROYED_UPDATER
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<OpenSslEngine> DESTROYED_UPDATER
-
ssl
private long ssl
-
networkBIO
private long networkBIO
-
accepted
private int accepted
0 - not accepted, 1 - accepted implicitly via wrap()/unwrap(), 2 - accepted explicitly via beginHandshake() call
-
handshakeFinished
private boolean handshakeFinished
-
receivedShutdown
private boolean receivedShutdown
-
destroyed
private volatile int destroyed
-
cipher
private java.lang.String cipher
-
applicationProtocol
private volatile java.lang.String applicationProtocol
-
isInboundDone
private boolean isInboundDone
-
isOutboundDone
private boolean isOutboundDone
-
engineClosed
private boolean engineClosed
-
lastPrimingReadResult
private int lastPrimingReadResult
-
bufPool
private final SslBufferPool bufPool
-
fallbackApplicationProtocol
private final java.lang.String fallbackApplicationProtocol
-
session
private javax.net.ssl.SSLSession session
-
-
Constructor Detail
-
OpenSslEngine
public OpenSslEngine(long sslCtx, SslBufferPool bufPool, java.lang.String fallbackApplicationProtocol)
Creates a new instance- Parameters:
sslCtx
- an OpenSSLSSL_CTX
objectbufPool
- theSslBufferPool
that will be used by this engine
-
-
Method Detail
-
shutdown
public void shutdown()
Destroys this engine.
-
writePlaintextData
private int writePlaintextData(java.nio.ByteBuffer src)
Write plaintext data to the OpenSSL internal BIO Calling this function with src.remaining == 0 is undefined.
-
writeEncryptedData
private int writeEncryptedData(java.nio.ByteBuffer src)
Write encrypted data to the OpenSSL network BIO
-
readPlaintextData
private int readPlaintextData(java.nio.ByteBuffer dst)
Read plaintext data from the OpenSSL internal BIO
-
readEncryptedData
private int readEncryptedData(java.nio.ByteBuffer dst, int pending)
Read encrypted data from the OpenSSL network BIO
-
wrap
public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[] srcs, int offset, int length, java.nio.ByteBuffer dst) throws javax.net.ssl.SSLException
- Specified by:
wrap
in classjavax.net.ssl.SSLEngine
- Throws:
javax.net.ssl.SSLException
-
unwrap
public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer src, java.nio.ByteBuffer[] dsts, int offset, int length) throws javax.net.ssl.SSLException
- Specified by:
unwrap
in classjavax.net.ssl.SSLEngine
- Throws:
javax.net.ssl.SSLException
-
getDelegatedTask
public java.lang.Runnable getDelegatedTask()
- Specified by:
getDelegatedTask
in classjavax.net.ssl.SSLEngine
-
closeInbound
public void closeInbound() throws javax.net.ssl.SSLException
- Specified by:
closeInbound
in classjavax.net.ssl.SSLEngine
- Throws:
javax.net.ssl.SSLException
-
isInboundDone
public boolean isInboundDone()
- Specified by:
isInboundDone
in classjavax.net.ssl.SSLEngine
-
closeOutbound
public void closeOutbound()
- Specified by:
closeOutbound
in classjavax.net.ssl.SSLEngine
-
isOutboundDone
public boolean isOutboundDone()
- Specified by:
isOutboundDone
in classjavax.net.ssl.SSLEngine
-
getSupportedCipherSuites
public java.lang.String[] getSupportedCipherSuites()
- Specified by:
getSupportedCipherSuites
in classjavax.net.ssl.SSLEngine
-
getEnabledCipherSuites
public java.lang.String[] getEnabledCipherSuites()
- Specified by:
getEnabledCipherSuites
in classjavax.net.ssl.SSLEngine
-
setEnabledCipherSuites
public void setEnabledCipherSuites(java.lang.String[] strings)
- Specified by:
setEnabledCipherSuites
in classjavax.net.ssl.SSLEngine
-
getSupportedProtocols
public java.lang.String[] getSupportedProtocols()
- Specified by:
getSupportedProtocols
in classjavax.net.ssl.SSLEngine
-
getEnabledProtocols
public java.lang.String[] getEnabledProtocols()
- Specified by:
getEnabledProtocols
in classjavax.net.ssl.SSLEngine
-
setEnabledProtocols
public void setEnabledProtocols(java.lang.String[] strings)
- Specified by:
setEnabledProtocols
in classjavax.net.ssl.SSLEngine
-
getSession
public javax.net.ssl.SSLSession getSession()
- Specified by:
getSession
in classjavax.net.ssl.SSLEngine
-
beginHandshake
public void beginHandshake() throws javax.net.ssl.SSLException
- Specified by:
beginHandshake
in classjavax.net.ssl.SSLEngine
- Throws:
javax.net.ssl.SSLException
-
beginHandshakeImplicitly
private void beginHandshakeImplicitly() throws javax.net.ssl.SSLException
- Throws:
javax.net.ssl.SSLException
-
getEngineStatus
private javax.net.ssl.SSLEngineResult.Status getEngineStatus()
-
getHandshakeStatus
public javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus()
- Specified by:
getHandshakeStatus
in classjavax.net.ssl.SSLEngine
-
setUseClientMode
public void setUseClientMode(boolean clientMode)
- Specified by:
setUseClientMode
in classjavax.net.ssl.SSLEngine
-
getUseClientMode
public boolean getUseClientMode()
- Specified by:
getUseClientMode
in classjavax.net.ssl.SSLEngine
-
setNeedClientAuth
public void setNeedClientAuth(boolean b)
- Specified by:
setNeedClientAuth
in classjavax.net.ssl.SSLEngine
-
getNeedClientAuth
public boolean getNeedClientAuth()
- Specified by:
getNeedClientAuth
in classjavax.net.ssl.SSLEngine
-
setWantClientAuth
public void setWantClientAuth(boolean b)
- Specified by:
setWantClientAuth
in classjavax.net.ssl.SSLEngine
-
getWantClientAuth
public boolean getWantClientAuth()
- Specified by:
getWantClientAuth
in classjavax.net.ssl.SSLEngine
-
setEnableSessionCreation
public void setEnableSessionCreation(boolean b)
- Specified by:
setEnableSessionCreation
in classjavax.net.ssl.SSLEngine
-
getEnableSessionCreation
public boolean getEnableSessionCreation()
- Specified by:
getEnableSessionCreation
in classjavax.net.ssl.SSLEngine
-
-