Package org.mozilla.jss.ssl.javax
Class JSSEngineReferenceImpl
- java.lang.Object
-
- javax.net.ssl.SSLEngine
-
- org.mozilla.jss.ssl.javax.JSSEngine
-
- org.mozilla.jss.ssl.javax.JSSEngineReferenceImpl
-
public class JSSEngineReferenceImpl extends JSSEngine
The reference JSSEngine implementation. This JSSEngine implementation is a reference for future JSSEngine implementations, providing a pure-Java overview of what should happen at each step of the init, wrap, and unwrap calls. This implementation allows for extended debug logging, but also debug packet logging. The latter writes out packets sent via wrap(...) and received from unwrap(...) to a port on localhost. This allows one to easily attach Wireshark or tcpdump and inspect the TLS packets, even if errors occur during the test suite (where packets aren't sent over the wire by default). This maintains the client/server relationship, and are logged as being from the appropriate side of the TLS connection.
-
-
Field Summary
-
Fields inherited from class org.mozilla.jss.ssl.javax.JSSEngine
as_server, BUFFER_SIZE, cert, certAlias, config, enabled_ciphers, handshake_state, hostname, is_inbound_closed, is_outbound_closed, key, key_managers, logger, max_protocol, min_protocol, need_client_auth, serverTemplates, session, ssl_fd, trust_managers, want_client_auth
-
-
Constructor Summary
Constructors Constructor Description JSSEngineReferenceImpl()
JSSEngineReferenceImpl(java.lang.String peerHost, int peerPort)
JSSEngineReferenceImpl(java.lang.String peerHost, int peerPort, X509Certificate localCert, PrivateKey localKey)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
beginHandshake()
void
cleanup()
Performs cleanup of internal data, closing both inbound and outbound data streams if still open.void
closeInbound()
void
closeOutbound()
void
enableSafeDebugLogging(int port)
Enable writing of encrypted TLS traffic to the specified port in a client-server relationship (mirroring the actual role of this SSLEngine) to enable debugging with Wireshark.java.lang.Runnable
getDelegatedTask()
javax.net.ssl.SSLEngineResult.HandshakeStatus
getHandshakeStatus()
java.lang.String
getHostname()
SecurityStatusResult
getStatus()
Gets the current security status of this JSSEngine instance.protected void
reconfigureClientAuth()
Implementation-specific handler to handle reconfiguration of client authentication after the handshake has completed.void
setName(java.lang.String name)
Set the name of this JSSEngine instance, to be printed in logging calls.void
tryCleanup()
Calls cleanup only if both inbound and outbound data streams are closed.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)
int
writeData(java.nio.ByteBuffer[] srcs, int offset, int length)
-
Methods inherited from class org.mozilla.jss.ssl.javax.JSSEngine
addConfiguration, errorText, getDefaultConfiguration, getEnabledCipherSuites, getEnabledProtocols, getEnableSessionCreation, getNeedClientAuth, getServerTemplate, getSession, getSSLFDProxy, getSSLParameters, getSupportedCipherSuites, getSupportedProtocols, getUseClientMode, getWantClientAuth, initializeSessionCache, isInboundDone, isOutboundDone, queryEnabledCipherSuites, queryEnabledProtocols, removeConfiguration, setCertFromAlias, setConfiguration, setEnabledCipherSuites, setEnabledCipherSuites, setEnabledProtocols, setEnabledProtocols, setEnabledProtocols, setEnableSessionCreation, setHostname, setKeyManager, setKeyManagers, setKeyMaterials, setNeedClientAuth, setSSLParameters, setTrustManager, setTrustManagers, setUseClientMode, setWantClientAuth
-
-
-
-
Constructor Detail
-
JSSEngineReferenceImpl
public JSSEngineReferenceImpl()
-
JSSEngineReferenceImpl
public JSSEngineReferenceImpl(java.lang.String peerHost, int peerPort)
-
JSSEngineReferenceImpl
public JSSEngineReferenceImpl(java.lang.String peerHost, int peerPort, X509Certificate localCert, PrivateKey localKey)
-
-
Method Detail
-
setName
public void setName(java.lang.String name)
Set the name of this JSSEngine instance, to be printed in logging calls. This helps when debugging output from multiple JSSEngine instances at the same time, such as within the JSS test suite.
-
reconfigureClientAuth
protected void reconfigureClientAuth()
Description copied from class:JSSEngine
Implementation-specific handler to handle reconfiguration of client authentication after the handshake has completed. Note that this always gets called, regardless of if the handshake has started; it is up to the implementation to handle this appropriately.- Specified by:
reconfigureClientAuth
in classJSSEngine
-
beginHandshake
public void beginHandshake() throws javax.net.ssl.SSLException
- Specified by:
beginHandshake
in classjavax.net.ssl.SSLEngine
- Throws:
javax.net.ssl.SSLException
-
closeInbound
public void closeInbound()
- Specified by:
closeInbound
in classjavax.net.ssl.SSLEngine
-
closeOutbound
public void closeOutbound()
- Specified by:
closeOutbound
in classjavax.net.ssl.SSLEngine
-
getHostname
public java.lang.String getHostname()
-
getDelegatedTask
public java.lang.Runnable getDelegatedTask()
- Specified by:
getDelegatedTask
in classjavax.net.ssl.SSLEngine
-
getHandshakeStatus
public javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus()
- Specified by:
getHandshakeStatus
in classjavax.net.ssl.SSLEngine
-
getStatus
public SecurityStatusResult getStatus()
Description copied from class:JSSEngine
Gets the current security status of this JSSEngine instance. This is abstract to allow implementations to implement this (and step their handshake mechanism) as they wish.
-
enableSafeDebugLogging
public void enableSafeDebugLogging(int port)
Enable writing of encrypted TLS traffic to the specified port in a client-server relationship (mirroring the actual role of this SSLEngine) to enable debugging with Wireshark.
-
unwrap
public javax.net.ssl.SSLEngineResult unwrap(java.nio.ByteBuffer src, java.nio.ByteBuffer[] dsts, int offset, int length) throws java.lang.IllegalArgumentException, javax.net.ssl.SSLException
- Specified by:
unwrap
in classjavax.net.ssl.SSLEngine
- Throws:
java.lang.IllegalArgumentException
javax.net.ssl.SSLException
-
writeData
public int writeData(java.nio.ByteBuffer[] srcs, int offset, int length)
-
wrap
public javax.net.ssl.SSLEngineResult wrap(java.nio.ByteBuffer[] srcs, int offset, int length, java.nio.ByteBuffer dst) throws java.lang.IllegalArgumentException, javax.net.ssl.SSLException
- Specified by:
wrap
in classjavax.net.ssl.SSLEngine
- Throws:
java.lang.IllegalArgumentException
javax.net.ssl.SSLException
-
tryCleanup
public void tryCleanup()
Calls cleanup only if both inbound and outbound data streams are closed. This prevents accidental cleanup in the case of a partially open connection.- Specified by:
tryCleanup
in classJSSEngine
-
-