Class 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.
    • 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)
      • 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 class JSSEngine
      • beginHandshake

        public void beginHandshake()
                            throws javax.net.ssl.SSLException
        Specified by:
        beginHandshake in class javax.net.ssl.SSLEngine
        Throws:
        javax.net.ssl.SSLException
      • closeInbound

        public void closeInbound()
        Specified by:
        closeInbound in class javax.net.ssl.SSLEngine
      • closeOutbound

        public void closeOutbound()
        Specified by:
        closeOutbound in class javax.net.ssl.SSLEngine
      • getHostname

        public java.lang.String getHostname()
      • getDelegatedTask

        public java.lang.Runnable getDelegatedTask()
        Specified by:
        getDelegatedTask in class javax.net.ssl.SSLEngine
      • getHandshakeStatus

        public javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus()
        Specified by:
        getHandshakeStatus in class javax.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.
        Specified by:
        getStatus in class JSSEngine
      • 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 class javax.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 class javax.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 class JSSEngine
      • cleanup

        public void cleanup()
        Performs cleanup of internal data, closing both inbound and outbound data streams if still open.
        Specified by:
        cleanup in class JSSEngine