/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.policy.assertion.xmlsec.RequireSaml
 *  com.l7tech.util.Pair
 *  com.l7tech.util.TextUtils
 *  com.l7tech.util.ValidationUtils
 *  org.apache.xmlbeans.XmlObject
 */
package com.l7tech.server.policy.assertion.xmlsec;

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.policy.assertion.xmlsec.RequireSaml;
import com.l7tech.server.policy.assertion.xmlsec.SamlAssertionValidate;
import com.l7tech.server.policy.assertion.xmlsec.n;
import com.l7tech.server.util.ContextVariableUtils;
import com.l7tech.util.Pair;
import com.l7tech.util.TextUtils;
import com.l7tech.util.ValidationUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.xmlbeans.XmlObject;

public abstract class SamlStatementValidate {
    protected static final TimeZone UTC_TIME_ZONE;
    protected final Logger logger = Logger.getLogger(this.getClass().getName());
    protected Collection errorCollector = new ArrayList();
    protected final RequireSaml requestSaml;
    private static final String[] b;

    public SamlStatementValidate(RequireSaml requireSaml) {
        this.requestSaml = requireSaml;
    }

    protected abstract void validate(XmlObject var1, Collection<SamlAssertionValidate.Error> var2, Collection<Pair<String, String[]>> var3, Map<String, Object> var4, Audit var5);

    protected void validateAuthenticationMethods(String string, List<String> list, String string2, Collection<SamlAssertionValidate.Error> collection, Map<String, Object> map, Audit audit) {
        Object object;
        boolean bl2;
        String[] stringArray;
        boolean bl3 = false;
        for (String string3 : list) {
            if (!string.equals(string3)) continue;
            bl3 = true;
            if (!this.logger.isLoggable(Level.FINER)) break;
            stringArray = b;
            this.logger.finer(stringArray[5] + string3);
            break;
        }
        ArrayList arrayList = new ArrayList();
        boolean bl4 = bl2 = string2 != null && !string2.trim().isEmpty();
        if (!bl3 && bl2) {
            object = ContextVariableUtils.getAllResolvedStrings(string2, map, audit, TextUtils.URI_STRING_SPLIT_PATTERN, new n(this));
            arrayList.addAll(object);
            bl3 = this.matchesCustomValue(string, (List<String>)object);
        }
        if (!bl3) {
            String string4;
            if (bl2) {
                stringArray = b;
                string4 = stringArray[3];
            } else {
                string4 = "";
            }
            object = b[2] + string4;
            collection.add(new SamlAssertionValidate.Error((String)object, null, string, list.size() == 1 ? list.get(0) : list.toString(), bl2 ? ((Object)arrayList).toString() : ""));
        }
    }

    protected boolean matchesCustomValue(String string, List<String> list) {
        if (string == null || string.trim().isEmpty()) {
            return false;
        }
        for (String string2 : list) {
            if (ValidationUtils.isValidUri((String)string2)) {
                if (!string.equals(string2)) continue;
                if (this.logger.isLoggable(Level.FINER)) {
                    String[] stringArray = b;
                    this.logger.finer(stringArray[1] + string2);
                }
                return true;
            }
            this.logger.warning(b[0] + string2);
        }
        return false;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[6];
                var3_1 = 0;
                var2_2 = "\u0005g\u001cB~^0li\u001c[mW=( \u0011X\u007fO;! '\u007fE\u001b2#u\u001cI6\u001b%\u0001a\u0006Nd^0lc\u0007^xT9la\u0007Yd^:8i\u0011LxR;\" \u001fHxS;( K\ru\u0006EiU %c\u0013YeT:lm\u0017YdT0ln\u001dY,V58c\u001aHh\u0015t\u001ee\u0011HeM1( \u0004L`N1v \t\u001dq\u001b\u00114p\u0017Nx^0lo\u001cH,T2v \t\u001cq\u000flo\u0000\rON'8o\u001f\u0017,@f1";
                var4_3 = "\u0005g\u001cB~^0li\u001c[mW=( \u0011X\u007fO;! '\u007fE\u001b2#u\u001cI6\u001b%\u0001a\u0006Nd^0lc\u0007^xT9la\u0007Yd^:8i\u0011LxR;\" \u001fHxS;( K\ru\u0006EiU %c\u0013YeT:lm\u0017YdT0ln\u001dY,V58c\u001aHh\u0015t\u001ee\u0011HeM1( \u0004L`N1v \t\u001dq\u001b\u00114p\u0017Nx^0lo\u001cH,T2v \t\u001cq\u000flo\u0000\rON'8o\u001f\u0017,@f1".length();
                var1_4 = 34;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = SamlStatementValidate.a(v0, SamlStatementValidate.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "[\u0016s\u001eC#D\f&\u001cr.#E\u001b&\u001cxz+S\u000e:\u0010y`b]\n:\u0011yjb";
                    var4_3 = "[\u0016s\u001eC#D\f&\u001cr.#E\u001b&\u001cxz+S\u000e:\u0010y`b]\n:\u0011yjb".length();
                    var1_4 = 3;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 13;
                        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++] = SamlStatementValidate.a(v0, SamlStatementValidate.b(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;
            }
        }
        SamlStatementValidate.b = var5;
        SamlStatementValidate.UTC_TIME_ZONE = TimeZone.getTimeZone(SamlStatementValidate.b[4]);
    }

    private static char[] b(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x1B);
        }
        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 -> 3;
                    case 1 -> 79;
                    case 2 -> 61;
                    case 3 -> 98;
                    case 4 -> 67;
                    case 5 -> 116;
                    default -> 27;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

