package com.l7tech.server.transport.tls;

import com.l7tech.common.io.CertUtils;
import com.l7tech.common.io.CertUtils.EncodedCertificateComparator;
import com.l7tech.util.Config;
import com.l7tech.util.ExceptionUtils;
import java.io.IOException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.TreeSet;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.X509TrustManager;

public class ClientTrustingTrustManager implements X509TrustManager {
   private static final Logger a;
   private final Callable<X509Certificate[]> b;
   private static final String[] c;

   public ClientTrustingTrustManager(X509Certificate[] var1) {
      int var10001 = var1.length;
      String[] var2 = c;
      a.info(var2[9] + var10001 + var2[1]);
      this.b = new a(this, var1);
   }

   public ClientTrustingTrustManager(Callable<X509Certificate[]> var1) {
      this.b = var1;
   }

   public static String getConfiguredIssuerCerts(Config param0) {
      // $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: ifnonnull 15
      // 04: getstatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.a Ljava/util/logging/Logger;
      // 07: getstatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.c [Ljava/lang/String;
      // 0a: bipush 0
      // 0b: aaload
      // 0c: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 0f: aconst_null
      // 10: areturn
      // 11: invokestatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14: athrow
      // 15: aload 0
      // 16: getstatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.c [Ljava/lang/String;
      // 19: astore 2
      // 1a: aload 2
      // 1b: bipush 6
      // 1d: aaload
      // 1e: invokeinterface com/l7tech/util/Config.getProperty (Ljava/lang/String;)Ljava/lang/String; 2
      // 23: astore 1
      // 24: aload 1
      // 25: ifnull 36
      // 28: aload 1
      // 29: invokevirtual java/lang/String.length ()I
      // 2c: ifgt 47
      // 2f: goto 36
      // 32: invokestatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 35: athrow
      // 36: getstatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.a Ljava/util/logging/Logger;
      // 39: getstatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.c [Ljava/lang/String;
      // 3c: bipush 5
      // 3d: aaload
      // 3e: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 41: aconst_null
      // 42: areturn
      // 43: invokestatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 46: athrow
      // 47: aload 1
      // 48: areturn
      // try (0 -> 9): 9 java/lang/RuntimeException
      // try (19 -> 24): 25 java/lang/RuntimeException
      // try (21 -> 34): 34 java/lang/RuntimeException
   }

   public static X509Certificate[] parseIssuerCerts(String var0) {
      TreeSet var1 = new TreeSet(new EncodedCertificateComparator());
      String[] var2 = var0.split(",");

      for (String var6 : var2) {
         try {
            if (var6 == null || var6.length() <= 0) {
               continue;
            }
         } catch (IOException var10) {
            throw a(var10);
         }

         try {
            X509Certificate var16 = CertUtils.decodeFromPEM(var6);

            try {
               if (var1.contains(var16)) {
                  a.warning(c[8] + var16.getSubjectDN());
                  continue;
               }
            } catch (IOException var12) {
               throw a(var12);
            }

            var1.add(var16);
         } catch (IOException var13) {
            Logger var18 = a;
            Level var19 = Level.WARNING;
            String var20 = ExceptionUtils.getMessage(var13);
            String[] var17 = c;
            var18.log(var19, var17[2] + var20, ExceptionUtils.getDebugException(var13));
         } catch (CertificateException var14) {
            Logger var10000 = a;
            Level var10001 = Level.WARNING;
            String var10002 = ExceptionUtils.getMessage(var14);
            String[] var9 = c;
            var10000.log(var10001, var9[7] + var10002, ExceptionUtils.getDebugException(var14));
         } catch (RuntimeException var15) {
            RuntimeException var7 = var15;
            CertificateException var8 = (CertificateException)ExceptionUtils.getCauseIfCausedBy(var15, CertificateException.class);

            try {
               if (var8 != null) {
                  a.log(Level.WARNING, c[3] + ExceptionUtils.getMessage(var7), ExceptionUtils.getDebugException(var7));
                  continue;
               }
            } catch (IOException var11) {
               throw a(var11);
            }

            throw var15;
         }
      }

      return var1.toArray(new X509Certificate[var1.size()]);
   }

   @Override
   public void checkClientTrusted(X509Certificate[] param1, String param2) throws CertificateException {
      // $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 1
      // 01: ifnull 20
      // 04: aload 1
      // 05: arraylength
      // 06: ifle 20
      // 09: goto 10
      // 0c: invokestatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0f: athrow
      // 10: getstatic com/l7tech/security/cert/KeyUsageActivity.sslClientRemote Lcom/l7tech/security/cert/KeyUsageActivity;
      // 13: aload 1
      // 14: bipush 0
      // 15: aaload
      // 16: invokestatic com/l7tech/security/cert/KeyUsageChecker.requireActivity (Lcom/l7tech/security/cert/KeyUsageActivity;Ljava/security/cert/X509Certificate;)V
      // 19: goto 20
      // 1c: invokestatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: goto 43
      // 23: astore 3
      // 24: getstatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.a Ljava/util/logging/Logger;
      // 27: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 2a: aload 3
      // 2b: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 2e: getstatic com/l7tech/server/transport/tls/ClientTrustingTrustManager.c [Ljava/lang/String;
      // 31: bipush 10
      // 33: aaload
      // 34: swap
      // 35: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 3a: aload 3
      // 3b: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 3e: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 41: aload 3
      // 42: athrow
      // 43: return
      // try (2 -> 13): 14 java/security/cert/CertificateException
      // try (0 -> 5): 6 java/security/cert/CertificateException
      // try (0 -> 16): 17 java/security/cert/CertificateException
   }

   @Override
   public void checkServerTrusted(X509Certificate[] var1, String var2) throws CertificateException {
      throw new CertificateException(c[4]);
   }

   @Override
   public X509Certificate[] getAcceptedIssuers() {
      try {
         return this.b.call();
      } catch (Exception var2) {
         throw new RuntimeException(var2);
      }
   }

   static {
      String[] var5 = new String[11];
      int var3 = 0;
      String var2 = "y\"\u0002\u0001`@\u000e}&\u0018O|Q\\l&\u001eOl[@|*\u000b\u0011:7\u001e\u001a|@K~c\u000f\u000e/WKh7\u001f8y,\u0019\u0003k\u0014@u7L\u001fnF]\u007fc\u001c\nb\u0014M\u007f1\u0018OiFAwc\u0005\u0000!\\Zn3\u001f.lWKj7\t\u000bLXG\u007f-\u0018,n\u000e\u000e9y,\u0019\u0003k\u0014@u7L\naWA~&L\u001fjY\u000ey&\u001e\u001b/R\\u.L\u0006`\u001aFn7\u001c\u001cNWM\u007f3\u0018\nkwBs&\u0002\u001bLU\u0014:.N+\u0005\u001c/`\\o0\u0018\"nZO}&\u001eO`ZBcc\u001f\u001a\u007fDAh7\u001fOlXG\u007f-\u0018Ol\\Ky(\u001fA)s,B\u0007{@^i\u0002\u000f\fjDZ\u007f'/\u0003fQ@n\u0000\rOa[Z:0\t\u001b/[\\:&\u0001\u001f{M\u0017s,$\u001b{D][ \u000f\n\u007f@K~\u0000\u0000\u0006jZZY\"8y,\u0019\u0003k\u0014@u7L\u001fnF]\u007fc\u001c\nb\u0014M\u007f1\u0018OiFAwc\u0005\u0000!\\Zn3\u001f.lWKj7\t\u000bLXG\u007f-\u0018,n\u000e\u000e\u0010~6\u001c\u0003fWOn&\bOlQ\\nc";
      int var4 = "y\"\u0002\u0001`@\u000e}&\u0018O|Q\\l&\u001eOl[@|*\u000b\u0011:7\u001e\u001a|@K~c\u000f\u000e/WKh7\u001f8y,\u0019\u0003k\u0014@u7L\u001fnF]\u007fc\u001c\nb\u0014M\u007f1\u0018OiFAwc\u0005\u0000!\\Zn3\u001f.lWKj7\t\u000bLXG\u007f-\u0018,n\u000e\u000e9y,\u0019\u0003k\u0014@u7L\naWA~&L\u001fjY\u000ey&\u001e\u001b/R\\u.L\u0006`\u001aFn7\u001c\u001cNWM\u007f3\u0018\nkwBs&\u0002\u001bLU\u0014:.N+\u0005\u001c/`\\o0\u0018\"nZO}&\u001eO`ZBcc\u001f\u001a\u007fDAh7\u001fOlXG\u007f-\u0018Ol\\Ky(\u001fA)s,B\u0007{@^i\u0002\u000f\fjDZ\u007f'/\u0003fQ@n\u0000\rOa[Z:0\t\u001b/[\\:&\u0001\u001f{M\u0017s,$\u001b{D][ \u000f\n\u007f@K~\u0000\u0000\u0006jZZY\"8y,\u0019\u0003k\u0014@u7L\u001fnF]\u007fc\u001c\nb\u0014M\u007f1\u0018OiFAwc\u0005\u0000!\\Zn3\u001f.lWKj7\t\u000bLXG\u007f-\u0018,n\u000e\u000e\u0010~6\u001c\u0003fWOn&\bOlQ\\nc"
         .length();
      char var1 = 24;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 34;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     a = Logger.getLogger(ClientTrustingTrustManager.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "3\\b5\u0019''\u0014\\xp\u0007n#\tM~5\u001e2\\|p\u0016:=\u000e^6v\u0019'1\u000eM6v\u0010< \t_\u007fv\u0014:1Z\u0019";
                  var4 = "3\\b5\u0019''\u0014\\xp\u0007n#\tM~5\u001e2\\|p\u0016:=\u000e^6v\u0019'1\u000eM6v\u0010< \t_\u007fv\u0014:1Z\u0019".length();
                  var1 = 18;
                  var7 = -1;
            }

            var10000 = 88;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

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

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

      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 -> 56;
            case 1 -> 97;
            case 2 -> 78;
            case 3 -> 77;
            case 4 -> 45;
            case 5 -> 22;
            default -> 12;
         });
      }

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