Class OpenSslEngine


  • public final class OpenSslEngine
    extends javax.net.ssl.SSLEngine
    Implements a SSLEngine using OpenSSL BIO abstractions.
    • Field Detail

      • 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_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
      • 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 OpenSSL SSL_CTX object
        bufPool - the SslBufferPool that 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:
        wrap in class javax.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:
        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
      • 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:
        getHandshakeStatus in class javax.net.ssl.SSLEngine
      • setUseClientMode

        public void setUseClientMode​(boolean clientMode)
        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