/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.security.RevocationCheckPolicy
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.security.cert.TrustedCert
 *  com.l7tech.security.types.CertificateValidationResult
 *  com.l7tech.security.types.CertificateValidationType
 */
package com.l7tech.server.security.cert;

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.security.RevocationCheckPolicy;
import com.l7tech.objectmodel.Goid;
import com.l7tech.security.cert.TrustedCert;
import com.l7tech.security.types.CertificateValidationResult;
import com.l7tech.security.types.CertificateValidationType;
import java.math.BigInteger;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public interface CertValidationProcessor {
    public CertificateValidationResult check(X509Certificate[] var1, CertificateValidationType var2, CertificateValidationType var3, Facility var4, Audit var5) throws CertificateException;

    public CertificateValidationResult checkWithCcRequirements(X509Certificate[] var1, CertificateValidationType var2, CertificateValidationType var3, Facility var4, Audit var5, boolean var6) throws CertificateException;

    public X509Certificate getCertificateBySubjectDn(String var1);

    public X509Certificate getCertificateByIssuerDnAndSerial(String var1, BigInteger var2);

    public X509Certificate getCertificateBySKI(String var1);

    public TrustedCert getTrustedCertByOid(Goid var1);

    public TrustedCert getTrustedCertEntry(X509Certificate var1);

    public RevocationCheckPolicy getRevocationCheckPolicy(TrustedCert var1);

    public RevocationCheckPolicy getDefaultPolicy();

    public boolean isSerialNumberCheckDisabledForRevocationCheck();

    public static final class Facility
    extends Enum<Facility> {
        public static final /* enum */ Facility IDENTITY;
        public static final /* enum */ Facility ROUTING;
        public static final /* enum */ Facility OTHER;
        private static final /* synthetic */ Facility[] $VALUES;

        public static Facility[] values() {
            return (Facility[])$VALUES.clone();
        }

        public static Facility valueOf(String string) {
            return Enum.valueOf(Facility.class, string);
        }

        private static /* synthetic */ Facility[] $values() {
            return new Facility[]{IDENTITY, ROUTING, OTHER};
        }

        /*
         * Enabled aggressive block sorting
         */
        static {
            String[] stringArray = new String[3];
            int n2 = 0;
            String string = "r#MAW\u0016\u001bb\u0005t3@JQ\u0007i(][J\u0011\b";
            int n3 = "r#MAW\u0016\u001bb\u0005t3@JQ\u0007i(][J\u0011\b".length();
            int n4 = 8;
            int n5 = -1;
            while (true) {
                int n6 = ++n5;
                stringArray[n2++] = Facility.a(109, Facility.a(string.substring(n6, n6 + n4)));
                if ((n5 += n4) >= n3) {
                    IDENTITY = new Facility();
                    ROUTING = new Facility();
                    OTHER = new Facility();
                    $VALUES = Facility.$values();
                    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] ^ 0x22);
            }
            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 -> 86;
                        case 1 -> 10;
                        case 2 -> 101;
                        case 3 -> 98;
                        case 4 -> 110;
                        case 5 -> 50;
                        default -> 34;
                    })));
                    ++n3;
                    n4 = n4;
                } while (n4 > n3);
            }
            return new String(cArray2).intern();
        }
    }
}

