package com.l7tech.gateway.common.spring.remoting.http;

import com.l7tech.util.ArrayUtils;
import java.io.IOException;
import java.net.Socket;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
import org.apache.hc.client5.http.ssl.HostnameVerificationPolicy;
import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.reactor.ssl.SSLBufferMode;

class p extends DefaultClientTlsStrategy {
   private final SSLContext a;
   private final String[] b;
   private final String[] c;
   private final HostnameVerifier d;
   private final HostnameVerificationPolicy e;
   private static final String[] f;

   public p(SSLContext var1, String[] var2, String[] var3, SSLBufferMode var4, HostnameVerifier var5) {
      super(var1, var2, var3, var4, HostnameVerificationPolicy.CLIENT, var5);
      this.a = var1;
      this.b = var2;
      this.c = var3;
      this.e = HostnameVerificationPolicy.CLIENT;
      this.d = var5;
   }

   protected void initializeSocket(SSLSocket var1) {
      try {
         if (var1 != null) {
            a(var1);
         }
      } catch (RuntimeException var2) {
         throw a(var2);
      }
   }

   private static void a(Socket var0) {
      SSLSocket var1 = (SSLSocket)var0;
      String[] var2 = ArrayUtils.intersection(SecureHttpComponentsClient.p.trim().split(f[1]), var1.getSupportedProtocols());
      var1.setEnabledProtocols(var2);
      var1.setEnabledCipherSuites(var1.getSupportedCipherSuites());
   }

   public SSLSocket upgrade(Socket param1, String param2, int param3, Object param4, HttpContext param5) throws IOException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: getfield com/l7tech/gateway/common/spring/remoting/http/p.a Ljavax/net/ssl/SSLContext;
      // 04: invokevirtual javax/net/ssl/SSLContext.getSocketFactory ()Ljavax/net/ssl/SSLSocketFactory;
      // 07: aload 1
      // 08: aload 2
      // 09: iload 3
      // 0a: bipush 0
      // 0b: invokevirtual javax/net/ssl/SSLSocketFactory.createSocket (Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;
      // 0e: checkcast javax/net/ssl/SSLSocket
      // 11: astore 6
      // 13: aload 0
      // 14: aload 6
      // 16: aload 2
      // 17: aload 4
      // 19: invokevirtual com/l7tech/gateway/common/spring/remoting/http/p.a (Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/lang/Object;)V
      // 1c: aload 6
      // 1e: areturn
      // 1f: astore 7
      // 21: aload 0
      // 22: getfield com/l7tech/gateway/common/spring/remoting/http/p.d Ljavax/net/ssl/HostnameVerifier;
      // 25: instanceof com/l7tech/gateway/common/spring/remoting/http/e
      // 28: ifeq 41
      // 2b: new javax/net/ssl/SSLPeerUnverifiedException
      // 2e: dup
      // 2f: aload 0
      // 30: getfield com/l7tech/gateway/common/spring/remoting/http/p.d Ljavax/net/ssl/HostnameVerifier;
      // 33: checkcast com/l7tech/gateway/common/spring/remoting/http/e
      // 36: invokevirtual com/l7tech/gateway/common/spring/remoting/http/e.getLastError ()Ljava/lang/String;
      // 39: invokespecial javax/net/ssl/SSLPeerUnverifiedException.<init> (Ljava/lang/String;)V
      // 3c: athrow
      // 3d: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 40: athrow
      // 41: aload 7
      // 43: athrow
      // 44: astore 7
      // 46: aload 6
      // 48: invokestatic org/apache/hc/core5/io/Closer.closeQuietly (Ljava/io/Closeable;)V
      // 4b: aload 7
      // 4d: invokevirtual java/lang/Exception.getMessage ()Ljava/lang/String;
      // 50: astore 8
      // 52: aload 8
      // 54: ifnull 79
      // 57: aload 8
      // 59: getstatic com/l7tech/gateway/common/spring/remoting/http/p.f [Ljava/lang/String;
      // 5c: bipush 0
      // 5d: aaload
      // 5e: invokevirtual java/lang/String.startsWith (Ljava/lang/String;)Z
      // 61: ifeq 79
      // 64: goto 6b
      // 67: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6a: athrow
      // 6b: new java/lang/RuntimeException
      // 6e: dup
      // 6f: aload 8
      // 71: invokespecial java/lang/RuntimeException.<init> (Ljava/lang/String;)V
      // 74: athrow
      // 75: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 78: athrow
      // 79: aload 7
      // 7b: athrow
      // try (10 -> 16): 17 javax/net/ssl/SSLPeerUnverifiedException
      // try (10 -> 16): 34 java/io/IOException
      // try (10 -> 16): 34 java/lang/RuntimeException
      // try (18 -> 30): 30 javax/net/ssl/SSLPeerUnverifiedException
      // try (40 -> 48): 49 javax/net/ssl/SSLPeerUnverifiedException
      // try (42 -> 56): 56 javax/net/ssl/SSLPeerUnverifiedException
   }

   private void a(SSLSocket param1, String param2, Object param3) throws IOException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 3
      // 01: instanceof org/apache/hc/client5/http/config/TlsConfig
      // 04: ifeq 12
      // 07: aload 3
      // 08: checkcast org/apache/hc/client5/http/config/TlsConfig
      // 0b: goto 15
      // 0e: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11: athrow
      // 12: getstatic org/apache/hc/client5/http/config/TlsConfig.DEFAULT Lorg/apache/hc/client5/http/config/TlsConfig;
      // 15: astore 4
      // 17: aload 1
      // 18: invokevirtual javax/net/ssl/SSLSocket.getSSLParameters ()Ljavax/net/ssl/SSLParameters;
      // 1b: astore 5
      // 1d: aload 0
      // 1e: getfield com/l7tech/gateway/common/spring/remoting/http/p.b [Ljava/lang/String;
      // 21: ifnull 34
      // 24: aload 5
      // 26: aload 0
      // 27: getfield com/l7tech/gateway/common/spring/remoting/http/p.b [Ljava/lang/String;
      // 2a: invokevirtual javax/net/ssl/SSLParameters.setProtocols ([Ljava/lang/String;)V
      // 2d: goto 40
      // 30: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 33: athrow
      // 34: aload 5
      // 36: aload 1
      // 37: invokevirtual javax/net/ssl/SSLSocket.getEnabledProtocols ()[Ljava/lang/String;
      // 3a: invokestatic org/apache/hc/core5/http/ssl/TLS.excludeWeak ([Ljava/lang/String;)[Ljava/lang/String;
      // 3d: invokevirtual javax/net/ssl/SSLParameters.setProtocols ([Ljava/lang/String;)V
      // 40: aload 0
      // 41: getfield com/l7tech/gateway/common/spring/remoting/http/p.c [Ljava/lang/String;
      // 44: ifnull 57
      // 47: aload 5
      // 49: aload 0
      // 4a: getfield com/l7tech/gateway/common/spring/remoting/http/p.c [Ljava/lang/String;
      // 4d: invokevirtual javax/net/ssl/SSLParameters.setCipherSuites ([Ljava/lang/String;)V
      // 50: goto 63
      // 53: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 56: athrow
      // 57: aload 5
      // 59: aload 1
      // 5a: invokevirtual javax/net/ssl/SSLSocket.getEnabledCipherSuites ()[Ljava/lang/String;
      // 5d: invokestatic org/apache/hc/core5/http/ssl/TlsCiphers.excludeWeak ([Ljava/lang/String;)[Ljava/lang/String;
      // 60: invokevirtual javax/net/ssl/SSLParameters.setCipherSuites ([Ljava/lang/String;)V
      // 63: aload 0
      // 64: getfield com/l7tech/gateway/common/spring/remoting/http/p.e Lorg/apache/hc/client5/http/ssl/HostnameVerificationPolicy;
      // 67: getstatic org/apache/hc/client5/http/ssl/HostnameVerificationPolicy.BUILTIN Lorg/apache/hc/client5/http/ssl/HostnameVerificationPolicy;
      // 6a: if_acmpeq 7e
      // 6d: aload 0
      // 6e: getfield com/l7tech/gateway/common/spring/remoting/http/p.e Lorg/apache/hc/client5/http/ssl/HostnameVerificationPolicy;
      // 71: getstatic org/apache/hc/client5/http/ssl/HostnameVerificationPolicy.BOTH Lorg/apache/hc/client5/http/ssl/HostnameVerificationPolicy;
      // 74: if_acmpne 90
      // 77: goto 7e
      // 7a: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7d: athrow
      // 7e: aload 5
      // 80: getstatic org/apache/hc/core5/http/URIScheme.HTTPS Lorg/apache/hc/core5/http/URIScheme;
      // 83: getfield org/apache/hc/core5/http/URIScheme.id Ljava/lang/String;
      // 86: invokevirtual javax/net/ssl/SSLParameters.setEndpointIdentificationAlgorithm (Ljava/lang/String;)V
      // 89: goto 90
      // 8c: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 8f: athrow
      // 90: aload 2
      // 91: invokestatic com/l7tech/gateway/common/spring/remoting/http/SecureHttpComponentsClient.isProperIPv6Address (Ljava/lang/String;)Z
      // 94: ifne ae
      // 97: aload 5
      // 99: new javax/net/ssl/SNIHostName
      // 9c: dup
      // 9d: aload 2
      // 9e: invokespecial javax/net/ssl/SNIHostName.<init> (Ljava/lang/String;)V
      // a1: invokestatic java/util/Collections.singletonList (Ljava/lang/Object;)Ljava/util/List;
      // a4: invokevirtual javax/net/ssl/SSLParameters.setServerNames (Ljava/util/List;)V
      // a7: goto ae
      // aa: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // ad: athrow
      // ae: aload 1
      // af: aload 5
      // b1: invokevirtual javax/net/ssl/SSLSocket.setSSLParameters (Ljavax/net/ssl/SSLParameters;)V
      // b4: aload 4
      // b6: invokevirtual org/apache/hc/client5/http/config/TlsConfig.getHandshakeTimeout ()Lorg/apache/hc/core5/util/Timeout;
      // b9: astore 6
      // bb: aload 6
      // bd: ifnull d0
      // c0: aload 1
      // c1: aload 6
      // c3: invokevirtual org/apache/hc/core5/util/Timeout.toMillisecondsIntBound ()I
      // c6: invokevirtual javax/net/ssl/SSLSocket.setSoTimeout (I)V
      // c9: goto d0
      // cc: invokestatic com/l7tech/gateway/common/spring/remoting/http/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // cf: athrow
      // d0: aload 0
      // d1: aload 1
      // d2: invokevirtual com/l7tech/gateway/common/spring/remoting/http/p.initializeSocket (Ljavax/net/ssl/SSLSocket;)V
      // d5: aload 1
      // d6: invokevirtual javax/net/ssl/SSLSocket.startHandshake ()V
      // d9: aload 0
      // da: aload 2
      // db: aload 1
      // dc: invokevirtual javax/net/ssl/SSLSocket.getSession ()Ljavax/net/ssl/SSLSession;
      // df: invokevirtual com/l7tech/gateway/common/spring/remoting/http/p.verifySession (Ljava/lang/String;Ljavax/net/ssl/SSLSession;)V
      // e2: return
      // try (0 -> 6): 6 java/io/IOException
      // try (13 -> 21): 21 java/io/IOException
      // try (28 -> 36): 36 java/io/IOException
      // try (43 -> 51): 52 java/io/IOException
      // try (47 -> 58): 59 java/io/IOException
      // try (61 -> 71): 72 java/io/IOException
      // try (80 -> 86): 87 java/io/IOException
   }

   private static Exception a(Exception var0) {
      return var0;
   }

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "NIgX\u0018|['Wt\\\u0006/\u001f\u0007[T;\u0015(f\u0015";
      int var4 = "NIgX\u0018|['Wt\\\u0006/\u001f\u0007[T;\u0015(f\u0015".length();
      char var1 = 14;
      int var0 = -1;

      while (true) {
         String var10002 = a(29, a(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            f = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 34);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 26;
            case 1 -> 58;
            case 2 -> 12;
            case 3 -> 36;
            case 4 -> 105;
            case 5 -> 8;
            default -> 34;
         });
      }

      return new String(var10001).intern();
   }
}
