/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  org.apache.ftpserver.ssl.ClientAuth
 *  org.apache.ftpserver.ssl.SslConfiguration
 *  org.jetbrains.annotations.NotNull
 */
package com.l7tech.server.transport.ftp;

import com.l7tech.server.transport.ftp.FtpSslContextWrapper;
import com.l7tech.server.transport.ftp.c;
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.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 ssgConnectorSslHelper, ClientAuth clientAuth) {
        if (ssgConnectorSslHelper == null) {
            FtpSsl.a(0);
        }
        this.a = ssgConnectorSslHelper;
        this.c = clientAuth;
        this.b = new c(ssgConnectorSslHelper);
    }

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

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

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

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

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

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

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

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[9];
                var3_1 = 0;
                var2_2 = "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=";
                var4_3 = "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();
                var1_4 = 9;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 76;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = FtpSsl.a(v0, FtpSsl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "d_\u0011{j[\u0007\fz,d/Ka";
                    var4_3 = "d_\u0011{j[\u0007\fz,d/Ka".length();
                    var1_4 = 6;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 16;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = FtpSsl.a(v0, FtpSsl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        FtpSsl.f = var5;
        FtpSsl.d = FtpSsl.f[6];
        var0_6 = FtpSsl.f;
        FtpSsl.e = new Provider(var0_6[3], 1.0, var0_6[4]){
            static final long serialVersionUID = 475269699427829560L;
            private static final String[] a;
            {
                String[] stringArray = a;
                this.putService(new Provider.Service(this, stringArray[1], stringArray[0], FtpSslContextWrapper.class.getName(), new ArrayList<String>(), new HashMap<String, String>()));
            }

            /*
             * Enabled aggressive block sorting
             */
            static {
                String[] stringArray = new String[2];
                int n2 = 0;
                String string = "f\nB\rEYcOY\nynY<KGgOEa";
                int n3 = "f\nB\rEYcOY\nynY<KGgOEa".length();
                int n4 = 9;
                int n5 = -1;
                while (true) {
                    int n6 = ++n5;
                    stringArray[n2++] = 1.a(81, 1.a(string.substring(n6, n6 + n4)));
                    if ((n5 += n4) >= n3) {
                        a = stringArray;
                        return;
                    }
                    n4 = string.charAt(n5);
                }
            }

            private static char[] a(String string) {
                char[] cArray = string.toCharArray();
                if (cArray.length < 2) {
                    cArray = cArray;
                    cArray[0] = (char)(cArray[0] ^ 0x42);
                }
                return cArray;
            }

            /*
             * Handled impossible loop by duplicating code
             * Enabled aggressive block sorting
             */
            private static String a(int n2, char[] cArray) {
                char[] cArray2;
                block11: {
                    int n3;
                    int n4;
                    int n5;
                    block10: {
                        n5 = n2;
                        cArray2 = cArray;
                        n4 = cArray.length;
                        n3 = 0;
                        if (!true) break block10;
                        n4 = n4;
                        if (n4 <= n3) break block11;
                    }
                    do {
                        n5 = n5;
                        cArray2 = cArray2;
                        int n6 = n3;
                        cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                            case 0 -> 123;
                            case 1 -> 108;
                            case 2 -> 68;
                            case 3 -> 46;
                            case 4 -> 117;
                            case 5 -> 120;
                            default -> 66;
                        })));
                        ++n3;
                        n4 = n4;
                    } while (n4 > n3);
                }
                return new String(cArray2).intern();
            }
        };
    }

    private static /* synthetic */ void a(int n2) {
        String[] stringArray = f;
        throw new IllegalArgumentException(String.format(stringArray[5], stringArray[1], stringArray[2], stringArray[7]));
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x43);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 72;
                    case 1 -> 38;
                    case 2 -> 111;
                    case 3 -> 2;
                    case 4 -> 14;
                    case 5 -> 117;
                    default -> 67;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

