Class AbstractClientTlsStrategy

  • All Implemented Interfaces:
    TlsSocketStrategy, org.apache.hc.core5.http.nio.ssl.TlsStrategy
    Direct Known Subclasses:
    DefaultClientTlsStrategy

    @Contract(threading=STATELESS)
    abstract class AbstractClientTlsStrategy
    extends java.lang.Object
    implements org.apache.hc.core5.http.nio.ssl.TlsStrategy, TlsSocketStrategy
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractClientTlsStrategy​(javax.net.ssl.SSLContext sslContext, java.lang.String[] supportedProtocols, java.lang.String[] supportedCipherSuites, org.apache.hc.core5.reactor.ssl.SSLBufferMode sslBufferManagement, HostnameVerificationPolicy hostnameVerificationPolicy, javax.net.ssl.HostnameVerifier hostnameVerifier)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      (package private) abstract void applyParameters​(javax.net.ssl.SSLEngine sslEngine, javax.net.ssl.SSLParameters sslParameters, java.lang.String[] appProtocols)  
      (package private) abstract org.apache.hc.core5.reactor.ssl.TlsDetails createTlsDetails​(javax.net.ssl.SSLEngine sslEngine)  
      private void executeHandshake​(javax.net.ssl.SSLSocket upgradedSocket, java.lang.String target, java.lang.Object attachment)  
      protected void initializeEngine​(javax.net.ssl.SSLEngine sslEngine)  
      protected void initializeSocket​(javax.net.ssl.SSLSocket socket)  
      (package private) java.lang.String toEscapedString​(javax.security.auth.x500.X500Principal principal)
      Converts an X500Principal to a cleaned string by escaping control characters.
      javax.net.ssl.SSLSocket upgrade​(java.net.Socket socket, java.lang.String target, int port, java.lang.Object attachment, org.apache.hc.core5.http.protocol.HttpContext context)
      Upgrades the given plain socket and executes the TLS handshake over it.
      boolean upgrade​(org.apache.hc.core5.reactor.ssl.TransportSecurityLayer tlsSession, org.apache.hc.core5.http.HttpHost host, java.net.SocketAddress localAddress, java.net.SocketAddress remoteAddress, java.lang.Object attachment, org.apache.hc.core5.util.Timeout handshakeTimeout)
      void upgrade​(org.apache.hc.core5.reactor.ssl.TransportSecurityLayer tlsSession, org.apache.hc.core5.net.NamedEndpoint endpoint, java.lang.Object attachment, org.apache.hc.core5.util.Timeout handshakeTimeout, org.apache.hc.core5.concurrent.FutureCallback<org.apache.hc.core5.reactor.ssl.TransportSecurityLayer> callback)  
      protected void verifySession​(java.lang.String hostname, javax.net.ssl.SSLSession sslsession)  
      (package private) void verifySession​(java.lang.String hostname, javax.net.ssl.SSLSession sslsession, javax.net.ssl.HostnameVerifier hostnameVerifier)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        private static final org.slf4j.Logger LOG
      • sslContext

        private final javax.net.ssl.SSLContext sslContext
      • supportedProtocols

        private final java.lang.String[] supportedProtocols
      • supportedCipherSuites

        private final java.lang.String[] supportedCipherSuites
      • sslBufferManagement

        private final org.apache.hc.core5.reactor.ssl.SSLBufferMode sslBufferManagement
      • hostnameVerifier

        private final javax.net.ssl.HostnameVerifier hostnameVerifier
    • Constructor Detail

      • AbstractClientTlsStrategy

        AbstractClientTlsStrategy​(javax.net.ssl.SSLContext sslContext,
                                  java.lang.String[] supportedProtocols,
                                  java.lang.String[] supportedCipherSuites,
                                  org.apache.hc.core5.reactor.ssl.SSLBufferMode sslBufferManagement,
                                  HostnameVerificationPolicy hostnameVerificationPolicy,
                                  javax.net.ssl.HostnameVerifier hostnameVerifier)
    • Method Detail

      • upgrade

        @Deprecated
        public boolean upgrade​(org.apache.hc.core5.reactor.ssl.TransportSecurityLayer tlsSession,
                               org.apache.hc.core5.http.HttpHost host,
                               java.net.SocketAddress localAddress,
                               java.net.SocketAddress remoteAddress,
                               java.lang.Object attachment,
                               org.apache.hc.core5.util.Timeout handshakeTimeout)
        Specified by:
        upgrade in interface org.apache.hc.core5.http.nio.ssl.TlsStrategy
      • upgrade

        public void upgrade​(org.apache.hc.core5.reactor.ssl.TransportSecurityLayer tlsSession,
                            org.apache.hc.core5.net.NamedEndpoint endpoint,
                            java.lang.Object attachment,
                            org.apache.hc.core5.util.Timeout handshakeTimeout,
                            org.apache.hc.core5.concurrent.FutureCallback<org.apache.hc.core5.reactor.ssl.TransportSecurityLayer> callback)
        Specified by:
        upgrade in interface org.apache.hc.core5.http.nio.ssl.TlsStrategy
      • applyParameters

        abstract void applyParameters​(javax.net.ssl.SSLEngine sslEngine,
                                      javax.net.ssl.SSLParameters sslParameters,
                                      java.lang.String[] appProtocols)
      • createTlsDetails

        abstract org.apache.hc.core5.reactor.ssl.TlsDetails createTlsDetails​(javax.net.ssl.SSLEngine sslEngine)
      • initializeEngine

        protected void initializeEngine​(javax.net.ssl.SSLEngine sslEngine)
      • initializeSocket

        protected void initializeSocket​(javax.net.ssl.SSLSocket socket)
      • verifySession

        protected void verifySession​(java.lang.String hostname,
                                     javax.net.ssl.SSLSession sslsession)
                              throws javax.net.ssl.SSLException
        Throws:
        javax.net.ssl.SSLException
      • upgrade

        public javax.net.ssl.SSLSocket upgrade​(java.net.Socket socket,
                                               java.lang.String target,
                                               int port,
                                               java.lang.Object attachment,
                                               org.apache.hc.core5.http.protocol.HttpContext context)
                                        throws java.io.IOException
        Description copied from interface: TlsSocketStrategy
        Upgrades the given plain socket and executes the TLS handshake over it.
        Specified by:
        upgrade in interface TlsSocketStrategy
        Parameters:
        socket - the existing plain socket
        target - the name of the target host.
        port - the port to connect to on the target host.
        attachment - connect request attachment.
        context - the actual HTTP context.
        Returns:
        socket upgraded to TLS.
        Throws:
        java.io.IOException
      • executeHandshake

        private void executeHandshake​(javax.net.ssl.SSLSocket upgradedSocket,
                                      java.lang.String target,
                                      java.lang.Object attachment)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • verifySession

        void verifySession​(java.lang.String hostname,
                           javax.net.ssl.SSLSession sslsession,
                           javax.net.ssl.HostnameVerifier hostnameVerifier)
                    throws javax.net.ssl.SSLException
        Throws:
        javax.net.ssl.SSLException
      • toEscapedString

        @Internal
        java.lang.String toEscapedString​(javax.security.auth.x500.X500Principal principal)
        Converts an X500Principal to a cleaned string by escaping control characters.

        This method processes the RFC2253 format of the X500Principal and escapes any ISO control characters to avoid issues in logging or other outputs. Control characters are replaced with their escaped hexadecimal representation.

        Note: For testing purposes, this method is package-private to allow access within the same package. This allows tests to verify the correct behavior of the escaping process.

        Parameters:
        principal - the X500Principal to escape
        Returns:
        the escaped string representation of the X500Principal