Class ALPNHackSSLEngine


  • public class ALPNHackSSLEngine
    extends javax.net.ssl.SSLEngine
    SSLEngine wrapper that provides some super hacky ALPN support on JDK8. Even though this is a nasty hack that relies on JDK internals it is still preferable to modifying the boot class path. It is expected to work with all JDK8 versions, however this cannot be guaranteed if the SSL internals are changed in an incompatible way. This class will go away once JDK8 is no longer in use.
    Author:
    Stuart Douglas
    • Field Detail

      • ENABLED

        public static final boolean ENABLED
    • Constructor Detail

      • ALPNHackSSLEngine

        public ALPNHackSSLEngine​(javax.net.ssl.SSLEngine delegate)
    • Method Detail

      • isEnabled

        public static boolean isEnabled​(javax.net.ssl.SSLEngine engine)
      • wrap

        public javax.net.ssl.SSLEngineResult wrap​(java.nio.ByteBuffer[] byteBuffers,
                                                  int i,
                                                  int i1,
                                                  java.nio.ByteBuffer byteBuffer)
                                           throws javax.net.ssl.SSLException
        Specified by:
        wrap in class javax.net.ssl.SSLEngine
        Throws:
        javax.net.ssl.SSLException
      • unwrap

        public javax.net.ssl.SSLEngineResult unwrap​(java.nio.ByteBuffer dataToUnwrap,
                                                    java.nio.ByteBuffer[] byteBuffers,
                                                    int i,
                                                    int i1)
                                             throws javax.net.ssl.SSLException
        Specified by:
        unwrap in class javax.net.ssl.SSLEngine
        Throws:
        javax.net.ssl.SSLException
      • getDelegatedTask

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

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

        public boolean isInboundDone()
        Specified by:
        isInboundDone in class javax.net.ssl.SSLEngine
      • closeOutbound

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

        public boolean isOutboundDone()
        Specified by:
        isOutboundDone in class javax.net.ssl.SSLEngine
      • getSupportedCipherSuites

        public java.lang.String[] getSupportedCipherSuites()
        Specified by:
        getSupportedCipherSuites in class javax.net.ssl.SSLEngine
      • getEnabledCipherSuites

        public java.lang.String[] getEnabledCipherSuites()
        Specified by:
        getEnabledCipherSuites in class javax.net.ssl.SSLEngine
      • setEnabledCipherSuites

        public void setEnabledCipherSuites​(java.lang.String[] strings)
        Specified by:
        setEnabledCipherSuites in class javax.net.ssl.SSLEngine
      • getSupportedProtocols

        public java.lang.String[] getSupportedProtocols()
        Specified by:
        getSupportedProtocols in class javax.net.ssl.SSLEngine
      • getEnabledProtocols

        public java.lang.String[] getEnabledProtocols()
        Specified by:
        getEnabledProtocols in class javax.net.ssl.SSLEngine
      • setEnabledProtocols

        public void setEnabledProtocols​(java.lang.String[] strings)
        Specified by:
        setEnabledProtocols in class javax.net.ssl.SSLEngine
      • getSession

        public javax.net.ssl.SSLSession getSession()
        Specified by:
        getSession in class javax.net.ssl.SSLEngine
      • beginHandshake

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

        public javax.net.ssl.SSLEngineResult.HandshakeStatus getHandshakeStatus()
        Specified by:
        getHandshakeStatus in class javax.net.ssl.SSLEngine
      • setUseClientMode

        public void setUseClientMode​(boolean b)
        Specified by:
        setUseClientMode in class javax.net.ssl.SSLEngine
      • getUseClientMode

        public boolean getUseClientMode()
        Specified by:
        getUseClientMode in class javax.net.ssl.SSLEngine
      • setNeedClientAuth

        public void setNeedClientAuth​(boolean b)
        Specified by:
        setNeedClientAuth in class javax.net.ssl.SSLEngine
      • getNeedClientAuth

        public boolean getNeedClientAuth()
        Specified by:
        getNeedClientAuth in class javax.net.ssl.SSLEngine
      • setWantClientAuth

        public void setWantClientAuth​(boolean b)
        Specified by:
        setWantClientAuth in class javax.net.ssl.SSLEngine
      • getWantClientAuth

        public boolean getWantClientAuth()
        Specified by:
        getWantClientAuth in class javax.net.ssl.SSLEngine
      • setEnableSessionCreation

        public void setEnableSessionCreation​(boolean b)
        Specified by:
        setEnableSessionCreation in class javax.net.ssl.SSLEngine
      • getEnableSessionCreation

        public boolean getEnableSessionCreation()
        Specified by:
        getEnableSessionCreation in class javax.net.ssl.SSLEngine
      • setApplicationProtocols

        public void setApplicationProtocols​(java.util.List<java.lang.String> applicationProtocols)
        JDK8 ALPN hack support method. These methods will be removed once JDK8 ALPN support is no longer required
        Parameters:
        applicationProtocols -
      • getApplicationProtocols

        public java.util.List<java.lang.String> getApplicationProtocols()
        JDK8 ALPN hack support method. These methods will be removed once JDK8 ALPN support is no longer required
      • getSelectedApplicationProtocol

        public java.lang.String getSelectedApplicationProtocol()
        JDK8 ALPN hack support method. These methods will be removed once JDK8 ALPN support is no longer required