package com.l7tech.server.transport.ftp;

import com.l7tech.server.transport.tls.SsgConnectorSslHelper;
import java.security.GeneralSecurityException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Provider.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import org.apache.ftpserver.ssl.ClientAuth;
import org.apache.ftpserver.ssl.SslConfiguration;
import org.jetbrains.annotations.NotNull;

public class FtpSsl implements SslConfiguration {
   private final SsgConnectorSslHelper a;
   private final KeyManager b;
   private final ClientAuth c;
   private static final String d;
   private static Provider e;
   private static final String[] f;

   public FtpSsl(@NotNull SsgConnectorSslHelper var1, ClientAuth var2) {
      if (var1 == null) {
         a(0);
      }

      super();
      this.a = var1;
      this.c = var2;
      this.b = new c(var1);
   }

   public SSLSocketFactory getSocketFactory() throws GeneralSecurityException {
      SSLContext var1 = this.getSSLContext();
      return var1.getSocketFactory();
   }

   public SSLContext getSSLContext() throws GeneralSecurityException {
      return this.a();
   }

   public SSLContext getSSLContext(String var1) throws GeneralSecurityException {
      return this.a();
   }

   public String[] getEnabledCipherSuites() {
      return this.a.getEnabledCiphers();
   }

   public String getEnabledProtocol() {
      String[] var1 = this.a.getEnabledTlsVersions();
      return Arrays.stream(var1).sorted(Comparator.reverseOrder()).findFirst().orElse(f[8]);
   }

   public ClientAuth getClientAuth() {
      return this.c;
   }

   private SSLContext a() throws NoSuchAlgorithmException, KeyManagementException {
      SSLContext var1 = SSLContext.getInstance(f[0], e);
      var1.init(new KeyManager[]{this.b}, null, null);
      return var1;
   }

   static {
      String[] var5 = new String[9];
      int var3 = 0;
      String var2 = "H]t<#I\u007fa\u000e\tw\u0019O\u0006'U\u007fa\u0018&g\u0005Na.\u000e{a\tKa1\\}r\u000fQa6Knj\u0019S!0M b\u001eSa\u0004M\u007fW\u0019O\rB\u001eS\u001d1UXv\u000bS>'KaT\u0018L8+]jwJp\u001d\u000ez`j\u001eF66\u0019xv\u000bS>'K/p\u0002B:bZnjJA+bL|a\u000e\u0003:-\u0019\u007fv\u000f@!,_fc\u001fQ+bMgaJP!!RjpJE/!M`v\u0013\u0003;1\\k$\bZn\u0004M\u007fW\u000fQ8'K>E\u0018D;/\\apJE!0\u0019OJ\u0005W\u00007Uc$\u001aB<#Tjp\u000fQne\u001c|#JL(b\u001c|*OPn/L|pJM!6\u0019maJM;.U\u0007P&p8s\u0017=";
      int var4 = "H]t<#I\u007fa\u000e\tw\u0019O\u0006'U\u007fa\u0018&g\u0005Na.\u000e{a\tKa1\\}r\u000fQa6Knj\u0019S!0M b\u001eSa\u0004M\u007fW\u0019O\rB\u001eS\u001d1UXv\u000bS>'KaT\u0018L8+]jwJp\u001d\u000ez`j\u001eF66\u0019xv\u000bS>'K/p\u0002B:bZnjJA+bL|a\u000e\u0003:-\u0019\u007fv\u000f@!,_fc\u001fQ+bMgaJP!!RjpJE/!M`v\u0013\u0003;1\\k$\bZn\u0004M\u007fW\u000fQ8'K>E\u0018D;/\\apJE!0\u0019OJ\u0005W\u00007Uc$\u001aB<#Tjp\u000fQne\u001c|#JL(b\u001c|*OPn/L|pJM!6\u0019maJM;.U\u0007P&p8s\u0017="
         .length();
      char var1 = '\t';
      int var7 = -1;

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

         while (true) {
            String var9 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     f = var5;
                     d = f[6];
                     String[] var8 = f;
                     e = new Provider(var8[3], 1.0, var8[4]) {
                        static final long serialVersionUID = 475269699427829560L;
                        private static final String[] a;

                        {
                           String[] var5x = a;
                           this.putService(new Service(this, var5x[1], var5x[0], FtpSslContextWrapper.class.getName(), new ArrayList<>(), new HashMap<>()));
                        }

                        static {
                           String[] var5 = new String[2];
                           int var3 = 0;
                           String var2 = "f\nB\rEYcOY\nynY<KGgOEa";
                           int var4 = "f\nB\rEYcOY\nynY<KGgOEa".length();
                           char var1 = '\t';
                           int var0 = -1;

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

                              var1 = var2.charAt(var0);
                           }
                        }

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

                           return var10000x;
                        }

                        private static String a(int var0, char[] var1x) {
                           int var10003 = var1x.length;
                           int var10002x = var0;
                           char[] var10001x = var1x;
                           int var10000x = var10003;

                           for (int var2x = 0; var10000x > var2x; var2x++) {
                              var10001x[var2x] = (char)(var10001x[var2x] ^ var10002x ^ switch (var2x % 7) {
                                 case 0 -> 123;
                                 case 1 -> 108;
                                 case 2 -> 68;
                                 case 3 -> 46;
                                 case 4 -> 117;
                                 case 5 -> 120;
                                 default -> 66;
                              });
                           }

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

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

                  var2 = "d_\u0011{j[\u0007\fz,d/Ka";
                  var4 = "d_\u0011{j[\u0007\fz,d/Ka".length();
                  var1 = 6;
                  var7 = -1;
            }

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

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

      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 -> 72;
            case 1 -> 38;
            case 2 -> 111;
            case 3 -> 2;
            case 4 -> 14;
            case 5 -> 117;
            default -> 67;
         });
      }

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