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.SSLEngineImplements aSSLEngineusing OpenSSL BIO abstractions.
-
-
Field Summary
Fields Modifier and Type Field Description private intaccepted0 - not accepted, 1 - accepted implicitly via wrap()/unwrap(), 2 - accepted explicitly via beginHandshake() callprivate java.lang.StringapplicationProtocolprivate SslBufferPoolbufPoolprivate java.lang.Stringcipherprivate intdestroyedprivate static java.util.concurrent.atomic.AtomicIntegerFieldUpdater<OpenSslEngine>DESTROYED_UPDATERprivate static java.security.cert.Certificate[]EMPTY_CERTIFICATESprivate static javax.security.cert.X509Certificate[]EMPTY_X509_CERTIFICATESprivate static javax.net.ssl.SSLExceptionENCRYPTED_PACKET_OVERSIZEDprivate static javax.net.ssl.SSLExceptionENGINE_CLOSEDprivate booleanengineClosedprivate java.lang.StringfallbackApplicationProtocolprivate booleanhandshakeFinishedprivate booleanisInboundDoneprivate booleanisOutboundDoneprivate intlastPrimingReadResultprivate static InternalLoggerloggerprivate static intMAX_CIPHERTEXT_LENGTHprivate static intMAX_COMPRESSED_LENGTH(package private) static intMAX_ENCRYPTED_PACKET_LENGTHprivate static intMAX_PLAINTEXT_LENGTHprivate longnetworkBIOprivate booleanreceivedShutdownprivate static javax.net.ssl.SSLExceptionRENEGOTIATION_UNSUPPORTEDprivate javax.net.ssl.SSLSessionsessionprivate longssl
-
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 voidbeginHandshake()private voidbeginHandshakeImplicitly()voidcloseInbound()voidcloseOutbound()java.lang.RunnablegetDelegatedTask()java.lang.String[]getEnabledCipherSuites()java.lang.String[]getEnabledProtocols()booleangetEnableSessionCreation()private javax.net.ssl.SSLEngineResult.StatusgetEngineStatus()javax.net.ssl.SSLEngineResult.HandshakeStatusgetHandshakeStatus()booleangetNeedClientAuth()javax.net.ssl.SSLSessiongetSession()java.lang.String[]getSupportedCipherSuites()java.lang.String[]getSupportedProtocols()booleangetUseClientMode()booleangetWantClientAuth()booleanisInboundDone()booleanisOutboundDone()private intreadEncryptedData(java.nio.ByteBuffer dst, int pending)Read encrypted data from the OpenSSL network BIOprivate intreadPlaintextData(java.nio.ByteBuffer dst)Read plaintext data from the OpenSSL internal BIOvoidsetEnabledCipherSuites(java.lang.String[] strings)voidsetEnabledProtocols(java.lang.String[] strings)voidsetEnableSessionCreation(boolean b)voidsetNeedClientAuth(boolean b)voidsetUseClientMode(boolean clientMode)voidsetWantClientAuth(boolean b)voidshutdown()Destroys this engine.javax.net.ssl.SSLEngineResultunwrap(java.nio.ByteBuffer src, java.nio.ByteBuffer[] dsts, int offset, int length)javax.net.ssl.SSLEngineResultwrap(java.nio.ByteBuffer[] srcs, int offset, int length, java.nio.ByteBuffer dst)private intwriteEncryptedData(java.nio.ByteBuffer src)Write encrypted data to the OpenSSL network BIOprivate intwritePlaintextData(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_CTXobjectbufPool- theSslBufferPoolthat 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:
wrapin 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:
unwrapin classjavax.net.ssl.SSLEngine- Throws:
javax.net.ssl.SSLException
-
getDelegatedTask
public java.lang.Runnable getDelegatedTask()
- Specified by:
getDelegatedTaskin classjavax.net.ssl.SSLEngine
-
closeInbound
public void closeInbound() throws javax.net.ssl.SSLException- Specified by:
closeInboundin classjavax.net.ssl.SSLEngine- Throws:
javax.net.ssl.SSLException
-
isInboundDone
public boolean isInboundDone()
- Specified by:
isInboundDonein classjavax.net.ssl.SSLEngine
-
closeOutbound
public void closeOutbound()
- Specified by:
closeOutboundin classjavax.net.ssl.SSLEngine
-
isOutboundDone
public boolean isOutboundDone()
- Specified by:
isOutboundDonein classjavax.net.ssl.SSLEngine
-
getSupportedCipherSuites
public java.lang.String[] getSupportedCipherSuites()
- Specified by:
getSupportedCipherSuitesin classjavax.net.ssl.SSLEngine
-
getEnabledCipherSuites
public java.lang.String[] getEnabledCipherSuites()
- Specified by:
getEnabledCipherSuitesin classjavax.net.ssl.SSLEngine
-
setEnabledCipherSuites
public void setEnabledCipherSuites(java.lang.String[] strings)
- Specified by:
setEnabledCipherSuitesin classjavax.net.ssl.SSLEngine
-
getSupportedProtocols
public java.lang.String[] getSupportedProtocols()
- Specified by:
getSupportedProtocolsin classjavax.net.ssl.SSLEngine
-
getEnabledProtocols
public java.lang.String[] getEnabledProtocols()
- Specified by:
getEnabledProtocolsin classjavax.net.ssl.SSLEngine
-
setEnabledProtocols
public void setEnabledProtocols(java.lang.String[] strings)
- Specified by:
setEnabledProtocolsin classjavax.net.ssl.SSLEngine
-
getSession
public javax.net.ssl.SSLSession getSession()
- Specified by:
getSessionin classjavax.net.ssl.SSLEngine
-
beginHandshake
public void beginHandshake() throws javax.net.ssl.SSLException- Specified by:
beginHandshakein 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:
getHandshakeStatusin classjavax.net.ssl.SSLEngine
-
setUseClientMode
public void setUseClientMode(boolean clientMode)
- Specified by:
setUseClientModein classjavax.net.ssl.SSLEngine
-
getUseClientMode
public boolean getUseClientMode()
- Specified by:
getUseClientModein classjavax.net.ssl.SSLEngine
-
setNeedClientAuth
public void setNeedClientAuth(boolean b)
- Specified by:
setNeedClientAuthin classjavax.net.ssl.SSLEngine
-
getNeedClientAuth
public boolean getNeedClientAuth()
- Specified by:
getNeedClientAuthin classjavax.net.ssl.SSLEngine
-
setWantClientAuth
public void setWantClientAuth(boolean b)
- Specified by:
setWantClientAuthin classjavax.net.ssl.SSLEngine
-
getWantClientAuth
public boolean getWantClientAuth()
- Specified by:
getWantClientAuthin classjavax.net.ssl.SSLEngine
-
setEnableSessionCreation
public void setEnableSessionCreation(boolean b)
- Specified by:
setEnableSessionCreationin classjavax.net.ssl.SSLEngine
-
getEnableSessionCreation
public boolean getEnableSessionCreation()
- Specified by:
getEnableSessionCreationin classjavax.net.ssl.SSLEngine
-
-