public final class OpenSslEngine
extends javax.net.ssl.SSLEngine
SSLEngine using
OpenSSL BIO abstractions.| Modifier and Type | Field and Description |
|---|---|
private int |
accepted
0 - not accepted, 1 - accepted implicitly via wrap()/unwrap(), 2 - accepted explicitly via beginHandshake() call
|
private 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 and Description |
|---|
OpenSslEngine(long sslCtx,
SslBufferPool bufPool,
java.lang.String fallbackApplicationProtocol)
Creates a new instance
|
| Modifier and Type | Method and 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 BIO
|
private int |
readPlaintextData(java.nio.ByteBuffer dst)
Read plaintext data from the OpenSSL internal BIO
|
void |
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 BIO
|
private int |
writePlaintextData(java.nio.ByteBuffer src)
Write plaintext data to the OpenSSL internal BIO
Calling this function with src.remaining == 0 is undefined.
|
getApplicationProtocol, getHandshakeApplicationProtocol, getHandshakeApplicationProtocolSelector, getHandshakeSession, getPeerHost, getPeerPort, getSSLParameters, setHandshakeApplicationProtocolSelector, setSSLParameters, unwrap, unwrap, wrap, wrapprivate static final InternalLogger logger
private static final java.security.cert.Certificate[] EMPTY_CERTIFICATES
private static final javax.security.cert.X509Certificate[] EMPTY_X509_CERTIFICATES
private static final javax.net.ssl.SSLException ENGINE_CLOSED
private static final javax.net.ssl.SSLException RENEGOTIATION_UNSUPPORTED
private static final javax.net.ssl.SSLException ENCRYPTED_PACKET_OVERSIZED
private static final int MAX_PLAINTEXT_LENGTH
private static final int MAX_COMPRESSED_LENGTH
private static final int MAX_CIPHERTEXT_LENGTH
static final int MAX_ENCRYPTED_PACKET_LENGTH
private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<OpenSslEngine> DESTROYED_UPDATER
private long ssl
private long networkBIO
private int accepted
private boolean handshakeFinished
private boolean receivedShutdown
private volatile int destroyed
private java.lang.String cipher
private volatile java.lang.String applicationProtocol
private boolean isInboundDone
private boolean isOutboundDone
private boolean engineClosed
private int lastPrimingReadResult
private final SslBufferPool bufPool
private final java.lang.String fallbackApplicationProtocol
private javax.net.ssl.SSLSession session
public OpenSslEngine(long sslCtx,
SslBufferPool bufPool,
java.lang.String fallbackApplicationProtocol)
sslCtx - an OpenSSL SSL_CTX objectbufPool - the SslBufferPool that will be used by this enginepublic void shutdown()
private int writePlaintextData(java.nio.ByteBuffer src)
private int writeEncryptedData(java.nio.ByteBuffer src)
private int readPlaintextData(java.nio.ByteBuffer dst)
private int readEncryptedData(java.nio.ByteBuffer dst,
int pending)
public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[] srcs,
int offset,
int length,
java.nio.ByteBuffer dst)
throws javax.net.ssl.SSLException
wrap in class javax.net.ssl.SSLEnginejavax.net.ssl.SSLExceptionpublic javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer src,
java.nio.ByteBuffer[] dsts,
int offset,
int length)
throws javax.net.ssl.SSLException
unwrap in class javax.net.ssl.SSLEnginejavax.net.ssl.SSLExceptionpublic java.lang.Runnable getDelegatedTask()
getDelegatedTask in class javax.net.ssl.SSLEnginepublic void closeInbound()
throws javax.net.ssl.SSLException
closeInbound in class javax.net.ssl.SSLEnginejavax.net.ssl.SSLExceptionpublic boolean isInboundDone()
isInboundDone in class javax.net.ssl.SSLEnginepublic void closeOutbound()
closeOutbound in class javax.net.ssl.SSLEnginepublic boolean isOutboundDone()
isOutboundDone in class javax.net.ssl.SSLEnginepublic java.lang.String[] getSupportedCipherSuites()
getSupportedCipherSuites in class javax.net.ssl.SSLEnginepublic java.lang.String[] getEnabledCipherSuites()
getEnabledCipherSuites in class javax.net.ssl.SSLEnginepublic void setEnabledCipherSuites(java.lang.String[] strings)
setEnabledCipherSuites in class javax.net.ssl.SSLEnginepublic java.lang.String[] getSupportedProtocols()
getSupportedProtocols in class javax.net.ssl.SSLEnginepublic java.lang.String[] getEnabledProtocols()
getEnabledProtocols in class javax.net.ssl.SSLEnginepublic void setEnabledProtocols(java.lang.String[] strings)
setEnabledProtocols in class javax.net.ssl.SSLEnginepublic javax.net.ssl.SSLSession getSession()
getSession in class javax.net.ssl.SSLEnginepublic void beginHandshake()
throws javax.net.ssl.SSLException
beginHandshake in class javax.net.ssl.SSLEnginejavax.net.ssl.SSLExceptionprivate void beginHandshakeImplicitly()
throws javax.net.ssl.SSLException
javax.net.ssl.SSLExceptionprivate javax.net.ssl.SSLEngineResult.Status getEngineStatus()
public javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus()
getHandshakeStatus in class javax.net.ssl.SSLEnginepublic void setUseClientMode(boolean clientMode)
setUseClientMode in class javax.net.ssl.SSLEnginepublic boolean getUseClientMode()
getUseClientMode in class javax.net.ssl.SSLEnginepublic void setNeedClientAuth(boolean b)
setNeedClientAuth in class javax.net.ssl.SSLEnginepublic boolean getNeedClientAuth()
getNeedClientAuth in class javax.net.ssl.SSLEnginepublic void setWantClientAuth(boolean b)
setWantClientAuth in class javax.net.ssl.SSLEnginepublic boolean getWantClientAuth()
getWantClientAuth in class javax.net.ssl.SSLEnginepublic void setEnableSessionCreation(boolean b)
setEnableSessionCreation in class javax.net.ssl.SSLEnginepublic boolean getEnableSessionCreation()
getEnableSessionCreation in class javax.net.ssl.SSLEngine