/*
 * 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.security.types.CertificateValidationResult
 *  com.l7tech.util.ExceptionUtils
 *  org.jetbrains.annotations.Nullable
 */
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.security.types.CertificateValidationResult;
import com.l7tech.server.security.cert.CertValidationProcessor;
import com.l7tech.server.security.cert.OCSPCache;
import com.l7tech.server.security.cert.OCSPClient;
import com.l7tech.server.security.cert.RevocationCheckerFactory;
import com.l7tech.server.security.cert.q;
import com.l7tech.server.security.cert.w;
import com.l7tech.util.ExceptionUtils;
import java.io.IOException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.logging.Level;
import java.util.regex.Pattern;
import org.jetbrains.annotations.Nullable;

final class s
extends q {
    private static final String f;
    private final OCSPCache g;
    private Boolean h;
    private static final String[] j;

    private s(String string, Pattern pattern, boolean bl2, @Nullable Boolean bl3, X509Certificate[] x509CertificateArray, OCSPCache oCSPCache, CertValidationProcessor certValidationProcessor) {
        super(string, pattern, bl2, x509CertificateArray, certValidationProcessor);
        this.g = oCSPCache;
        this.h = bl3;
    }

    @Override
    protected String[] getUrlsFromCert(X509Certificate x509Certificate, Audit audit) throws IOException {
        try {
            String[] stringArray = j;
            return CertUtils.getAuthorityInformationAccessUris((X509Certificate)x509Certificate, (String)stringArray[5]);
        }
        catch (CertificateException certificateException) {
            throw new IOException(j[6], certificateException);
        }
    }

    @Override
    protected String what() {
        return j[4];
    }

    /*
     * Loose catch block
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    @Override
    public CertificateValidationResult getRevocationStatus(X509Certificate x509Certificate, X509Certificate x509Certificate2, Audit audit, CertificateValidationResult certificateValidationResult) {
        List<String> list;
        CertificateValidationResult certificateValidationResult2;
        block12: {
            certificateValidationResult2 = CertificateValidationResult.REVOKED;
            list = this.a(x509Certificate, audit);
            if (list.isEmpty()) return CertificateValidationResult.UNKNOWN;
            try {
                if (list.get(0) != null) break block12;
                return CertificateValidationResult.UNKNOWN;
                catch (OCSPCache.OCSPClientRecursionException oCSPClientRecursionException) {
                    throw s.b(oCSPClientRecursionException);
                }
            }
            catch (OCSPCache.OCSPClientRecursionException oCSPClientRecursionException) {
                throw s.b(oCSPClientRecursionException);
            }
        }
        String string = list.get(0);
        try {
            block13: {
                w w2 = new w(this, x509Certificate2, audit, string);
                OCSPClient.OCSPStatus oCSPStatus = this.g.getOCSPStatus(string, x509Certificate, x509Certificate2, w2, this.h, audit);
                certificateValidationResult2 = oCSPStatus.getResult();
                try {
                    if (certificateValidationResult2 != CertificateValidationResult.OK) break block13;
                    audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_NOT_REVOKED, new String[]{x509Certificate.getSubjectDN().toString()});
                    return certificateValidationResult2;
                }
                catch (OCSPCache.OCSPClientRecursionException oCSPClientRecursionException) {
                    throw s.b(oCSPClientRecursionException);
                }
            }
            try {
                if (certificateValidationResult2 != CertificateValidationResult.REVOKED) return certificateValidationResult2;
                audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_REV_REVOKED, new String[]{x509Certificate.getSubjectDN().toString()});
                return certificateValidationResult2;
            }
            catch (OCSPCache.OCSPClientRecursionException oCSPClientRecursionException) {
                throw s.b(oCSPClientRecursionException);
            }
        }
        catch (OCSPCache.OCSPClientRecursionException oCSPClientRecursionException) {
            audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_OCSP_RECURSION, new String[]{string});
            return certificateValidationResult2;
        }
        catch (OCSPClient.OCSPClientStatusException oCSPClientStatusException) {
            audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_OCSP_BAD_RESPONSE_STATUS, new String[]{string, ExceptionUtils.getMessage((Throwable)oCSPClientStatusException)});
            return certificateValidationResult2;
        }
        catch (OCSPClient.OCSPClientException oCSPClientException) {
            audit.logAndAudit((AuditDetailMessage)SystemMessages.CERTVAL_OCSP_ERROR, new String[]{string, ExceptionUtils.getMessage((Throwable)oCSPClientException)}, ExceptionUtils.getDebugException((Throwable)oCSPClientException));
            return certificateValidationResult;
        }
    }

    private void a(X509Certificate x509Certificate) {
        block5: {
            try {
                if (x509Certificate == null || !RevocationCheckerFactory.a.isLoggable(Level.FINE)) break block5;
            }
            catch (IOException iOException) {
                throw s.b(iOException);
            }
            try {
                String[] stringArray = j;
                RevocationCheckerFactory.a.log(Level.FINE, stringArray[3], CertUtils.encodeAsPEM((X509Certificate)x509Certificate));
            }
            catch (IOException iOException) {
                String[] stringArray = j;
                RevocationCheckerFactory.a.log(Level.FINE, stringArray[2], x509Certificate.getSubjectX500Principal());
            }
            catch (CertificateEncodingException certificateEncodingException) {
                RevocationCheckerFactory.a.log(Level.FINE, j[0], x509Certificate.getSubjectX500Principal());
            }
        }
    }

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

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[7];
                var3_1 = 0;
                var2_2 = "#Q\fIP.N\u001fb0w\u0014\u0019YL`:s\u0015\u001f_\tv\u007fz\u0015\u000e_\u0005t6z\u0011\bNLA*{\u001a\u0019H\u00182\u001bWP[\f\u0017\"\">WR\u0012]<l7FR\u001aB'q,^K\u0005X*q(7#Q\fIP.N\u001fb0w\u0014\u0019YL`:s\u0015\u001f_\tv\u007fz\u0015\u000e_\u0005t6z\u0011\bNLA*{\u001a\u0019H\u00182\u001bWP[\f\u0017\"\">WR'#Q\fIP.N\u001fb0w\u0014\u0019YL`:s\u0015\u001f_\tv\u007fz\u0015\u000e_\u0005t6z\u0011\bNfiod\u0004#Q\fI";
                var4_3 = "#Q\fIP.N\u001fb0w\u0014\u0019YL`:s\u0015\u001f_\tv\u007fz\u0015\u000e_\u0005t6z\u0011\bNLA*{\u001a\u0019H\u00182\u001bWP[\f\u0017\"\">WR\u0012]<l7FR\u001aB'q,^K\u0005X*q(7#Q\fIP.N\u001fb0w\u0014\u0019YL`:s\u0015\u001f_\tv\u007fz\u0015\u000e_\u0005t6z\u0011\bNLA*{\u001a\u0019H\u00182\u001bWP[\f\u0017\"\">WR'#Q\fIP.N\u001fb0w\u0014\u0019YL`:s\u0015\u001f_\tv\u007fz\u0015\u000e_\u0005t6z\u0011\bNfiod\u0004#Q\fI".length();
                var1_4 = 55;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = s.b(v0, s.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "3R\u0002Y(<t,I\u001fB0%k6D\u001fF,G\u000eC\u0018l2 z\bC\u0016}f,l\u001b\u00118]A\u0015\"\tC\u001bm2#p\u0013\\W}w7v\u0015W\u001e}s1gR";
                    var4_3 = "3R\u0002Y(<t,I\u001fB0%k6D\u001fF,G\u000eC\u0018l2 z\bC\u0016}f,l\u001b\u00118]A\u0015\"\tC\u001bm2#p\u0013\\W}w7v\u0015W\u001e}s1gR".length();
                    var1_4 = 18;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 80;
                        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++] = s.b(v0, s.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;
            }
        }
        s.j = var5;
        s.f = s.j[1];
    }

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String b(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 -> 82;
                    case 1 -> 44;
                    case 2 -> 97;
                    case 3 -> 39;
                    case 4 -> 78;
                    case 5 -> 66;
                    default -> 21;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

