/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.CertUtils
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.audit.AuditDetailMessage
 *  com.l7tech.gateway.common.audit.SystemMessages
 *  com.l7tech.util.Functions$Unary
 *  org.jetbrains.annotations.NotNull
 */
package com.l7tech.server.security.cert;

import com.l7tech.common.io.CertUtils;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.audit.SystemMessages;
import com.l7tech.server.security.cert.CertValidationProcessor;
import com.l7tech.server.security.cert.RevocationChecker;
import com.l7tech.server.security.cert.RevocationCheckerFactory;
import com.l7tech.util.Functions;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;

abstract class q
implements RevocationChecker {
    private final String a;
    private final Pattern b;
    private final boolean c;
    private final X509Certificate[] d;
    private final CertValidationProcessor e;
    private static final String[] i;

    q(String string, Pattern pattern, boolean bl2, X509Certificate[] x509CertificateArray, CertValidationProcessor certValidationProcessor) {
        this.a = string;
        this.b = pattern;
        this.c = bl2;
        this.d = x509CertificateArray;
        this.e = certValidationProcessor;
    }

    protected String getUrl() {
        return this.a;
    }

    protected Pattern getUrlPattern() {
        return this.b;
    }

    protected boolean getAllowIssuerSignature() {
        return this.c;
    }

    protected X509Certificate[] getTrustedIssuers() {
        return this.d;
    }

    public CertValidationProcessor getCertValidationProcessor() {
        return this.e;
    }

    protected abstract String[] getUrlsFromCert(X509Certificate var1, Audit var2) throws IOException;

    protected abstract String what();

    protected X509Certificate getAuthorizedSigner(X509Certificate x509Certificate, X509Certificate[] x509CertificateArray, Audit audit, Functions.Unary<Boolean, X509Certificate> unary) {
        X509Certificate x509Certificate2;
        block22: {
            block21: {
                x509Certificate2 = null;
                try {
                    if (x509CertificateArray.length != 0) break block21;
                    if (!this.c) break block22;
                }
                catch (IllegalStateException illegalStateException) {
                    throw q.a(illegalStateException);
                }
                x509Certificate2 = x509Certificate;
                audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_SIGNER_IS_ISSUER, new String[]{this.what(), x509Certificate2.getSubjectDN().toString()});
                break block22;
            }
            for (X509Certificate x509Certificate3 : x509CertificateArray) {
                block23: {
                    try {
                        if (RevocationCheckerFactory.a.isLoggable(Level.FINER)) {
                            RevocationCheckerFactory.a.log(Level.FINER, i[3], x509Certificate3.getSubjectDN());
                        }
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw q.a(illegalStateException);
                    }
                    boolean bl2 = true;
                    if (!this.e.isSerialNumberCheckDisabledForRevocationCheck()) {
                        bl2 = x509Certificate.getSerialNumber().equals(x509Certificate3.getSerialNumber());
                    }
                    try {
                        try {
                            if (!bl2 || !CertUtils.getIssuerDN((X509Certificate)x509Certificate).equals(CertUtils.getIssuerDN((X509Certificate)x509Certificate3))) break block23;
                        }
                        catch (IllegalStateException illegalStateException) {
                            throw q.a(illegalStateException);
                        }
                        if (!this.c) break block23;
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw q.a(illegalStateException);
                    }
                    x509Certificate2 = x509Certificate;
                    audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_SIGNER_IS_ISSUER, new String[]{this.what(), x509Certificate2.getSubjectDN().toString()});
                    break;
                }
                for (X509Certificate x509Certificate4 : this.d) {
                    try {
                        if (RevocationCheckerFactory.a.isLoggable(Level.FINEST)) {
                            RevocationCheckerFactory.a.log(Level.FINEST, i[1], x509Certificate4.getSubjectDN());
                        }
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw q.a(illegalStateException);
                    }
                    try {
                        if (!x509Certificate4.getSerialNumber().equals(x509Certificate3.getSerialNumber()) || !CertUtils.getIssuerDN((X509Certificate)x509Certificate4).equals(CertUtils.getIssuerDN((X509Certificate)x509Certificate3))) continue;
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw q.a(illegalStateException);
                    }
                    x509Certificate2 = x509Certificate4;
                    audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_SIGNER_IS_TRUSTED, new String[]{this.what(), x509Certificate2.getSubjectDN().toString()});
                    break;
                }
                try {
                    try {
                        if (!this.c || unary == null) continue;
                    }
                    catch (IllegalStateException illegalStateException) {
                        throw q.a(illegalStateException);
                    }
                    if (!((Boolean)unary.call((Object)x509Certificate3)).booleanValue()) continue;
                }
                catch (IllegalStateException illegalStateException) {
                    throw q.a(illegalStateException);
                }
                x509Certificate2 = x509Certificate3;
                audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_SIGNER_IS_ISSUER_DELE, new String[]{this.what(), x509Certificate2.getSubjectDN().toString()});
                break;
            }
        }
        return x509Certificate2;
    }

    /*
     * Loose catch block
     */
    @NotNull
    List<String> a(X509Certificate x509Certificate, Audit audit) {
        String[] stringArray;
        String string;
        block17: {
            ArrayList<String> arrayList;
            block18: {
                ArrayList<String> arrayList2;
                block15: {
                    ArrayList<String> arrayList3;
                    block16: {
                        arrayList2 = new ArrayList<String>();
                        String string2 = this.getUrl();
                        if (string2 == null) break block15;
                        try {
                            block19: {
                                audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_USING_STATIC_URL, new String[]{this.what(), string2});
                                arrayList2.add(string2);
                                arrayList3 = arrayList2;
                                if (arrayList3 != null) break block16;
                                break block19;
                                catch (IOException iOException) {
                                    throw q.a(iOException);
                                }
                            }
                            q.a(0);
                        }
                        catch (IOException iOException) {
                            throw q.a(iOException);
                        }
                    }
                    return arrayList3;
                }
                string = x509Certificate.getSubjectDN().getName();
                try {
                    stringArray = this.getUrlsFromCert(x509Certificate, audit);
                }
                catch (IOException iOException) {
                    ArrayList<String> arrayList4;
                    try {
                        audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_CANT_GET_URLS_FROM_CERT, new String[]{this.what(), string});
                        arrayList4 = arrayList2;
                        if (arrayList4 == null) {
                            q.a(1);
                        }
                    }
                    catch (IOException iOException2) {
                        throw q.a(iOException2);
                    }
                    return arrayList4;
                }
                try {
                    try {
                        try {
                            if (stringArray != null && stringArray.length != 0) break block17;
                        }
                        catch (IOException iOException) {
                            throw q.a(iOException);
                        }
                        audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_NO_URL, new String[]{this.what(), string});
                        arrayList = arrayList2;
                        if (arrayList != null) break block18;
                    }
                    catch (IOException iOException) {
                        throw q.a(iOException);
                    }
                    q.a(2);
                }
                catch (IOException iOException) {
                    throw q.a(iOException);
                }
            }
            return arrayList;
        }
        return this.a(stringArray, string, audit);
    }

    @NotNull
    private List<String> a(String[] stringArray, String string, Audit audit) {
        ArrayList<String> arrayList;
        ArrayList<String> arrayList2 = new ArrayList<String>();
        Pattern pattern = this.getUrlPattern();
        for (String string2 : stringArray) {
            if (!pattern.matcher(string2).matches()) continue;
            try {
                URI uRI = new URI(string2);
                try {
                    if (!uRI.isAbsolute()) {
                        throw new URISyntaxException(string2, i[5]);
                    }
                }
                catch (URISyntaxException uRISyntaxException) {
                    throw q.a(uRISyntaxException);
                }
            }
            catch (URISyntaxException uRISyntaxException) {
                audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_URL_INVALID, new String[]{this.what(), string2});
                continue;
            }
            audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_URL_MATCH, new String[]{this.what(), string2, string});
            arrayList2.add(string2);
        }
        try {
            if (arrayList2.isEmpty()) {
                audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_URL_MISMATCH, new String[]{this.what(), string});
            }
        }
        catch (URISyntaxException uRISyntaxException) {
            throw q.a(uRISyntaxException);
        }
        try {
            arrayList = arrayList2;
            if (arrayList == null) {
                q.a(3);
            }
        }
        catch (URISyntaxException uRISyntaxException) {
            throw q.a(uRISyntaxException);
        }
        return arrayList;
    }

    /*
     * Exception decompiling
     */
    private static void a(int var0) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 1[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

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

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[7];
                var3_1 = 0;
                var2_2 = "CU.s1\tUo;,b\u000b\u0014Vg;dtQYJ#v4t\u000b\\Wloau\u001a\bLquai\n\u0010U4@s$d\u0014\u0015Wd; `\u001e\u0015Wpoas\r\tJw~%'\f\u0015^m~3'\u001c\u0019Kwr'n\u001c\u001dMf;f \u0004LD$<o\fd~5Q\u001e\u0010PgN3k\f$@s$d\u0014\u0015Wd;2n\u0018\u0012\\q;\"b\r\bPer\"f\u000b\u0019\u0019$<:7\u0002[\u001e-!`t,(\u0013KMfx)(\f\u0019Ku~3(\f\u0019Zvi(s\u0006SZfi5(\u000e";
                var4_3 = "CU.s1\tUo;,b\u000b\u0014Vg;dtQYJ#v4t\u000b\\Wloau\u001a\bLquai\n\u0010U4@s$d\u0014\u0015Wd; `\u001e\u0015Wpoas\r\tJw~%'\f\u0015^m~3'\u001c\u0019Kwr'n\u001c\u001dMf;f \u0004LD$<o\fd~5Q\u001e\u0010PgN3k\f$@s$d\u0014\u0015Wd;2n\u0018\u0012\\q;\"b\r\bPer\"f\u000b\u0019\u0019$<:7\u0002[\u001e-!`t,(\u0013KMfx)(\f\u0019Ku~3(\f\u0019Zvi(s\u0006SZfi5(\u000e".length();
                var1_4 = 42;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = q.a(v0, q.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u001f0c(E[\u0001(uZ\u001bx\f;4c US\u0003(\u0000}%B";
                    var4_3 = "\u001f0c(E[\u0001(uZ\u001bx\f;4c US\u0003(\u0000}%B".length();
                    var1_4 = 12;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 124;
                        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++] = q.a(v0, q.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;
            }
        }
        q.i = var5;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0xB);
        }
        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 -> 49;
                    case 1 -> 41;
                    case 2 -> 115;
                    case 3 -> 53;
                    case 4 -> 77;
                    case 5 -> 78;
                    default -> 11;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

