package com.l7tech.server.security.cert;

import com.l7tech.gateway.common.audit.SystemMessages;
import com.l7tech.security.types.CertificateValidationResult;
import com.l7tech.security.types.CertificateValidationType;
import com.l7tech.util.Functions.Unary;
import java.security.GeneralSecurityException;
import java.security.cert.X509Certificate;
import java.util.logging.Level;
import java.util.logging.Logger;

class x implements Unary<Boolean, X509Certificate> {
   final OCSPClient val$ocsp;
   final w this$1;
   private static final String[] a;

   x(w var1, OCSPClient var2) {
      this.this$1 = var1;
      this.val$ocsp = var2;
   }

   public Boolean call(X509Certificate var1) {
      Boolean var2 = Boolean.FALSE;

      try {
         label39: {
            try {
               if (!this.val$ocsp.isPermittedByIssuer(var1)) {
                  return var2;
               }

               if (!this.val$ocsp.shouldCheckRevocation(var1)) {
                  break label39;
               }
            } catch (GeneralSecurityException var6) {
               throw a(var6);
            }

            try {
               CertificateValidationResult var3 = this.this$1
                  .this$0
                  .getCertValidationProcessor()
                  .check(new X509Certificate[]{var1}, null, CertificateValidationType.REVOCATION, null, this.this$1.val$auditor);
               if (var3 == CertificateValidationResult.OK) {
                  var2 = Boolean.TRUE;
               } else {
                  this.this$1
                     .val$auditor
                     .logAndAudit(SystemMessages.CERTVAL_OCSP_SIGNER_CERT_REVOKED, new String[]{this.this$1.val$url, var1.getSubjectDN().toString()});
                  this.this$1.this$0.a(var1);
               }

               return var2;
            } catch (GeneralSecurityException var5) {
               this.this$1
                  .val$auditor
                  .logAndAudit(SystemMessages.CERTVAL_OCSP_SIGNER_CERT_REVOKED, new String[]{this.this$1.val$url, var1.getSubjectDN().toString()});
               this.this$1.this$0.a(var1);
               return var2;
            }
         }

         var2 = Boolean.TRUE;
      } catch (OCSPClient.OCSPClientException var7) {
         Logger var10000 = RevocationCheckerFactory.a;
         Level var10001 = Level.WARNING;
         String var10002 = String.valueOf(var1.getSubjectDN());
         String[] var4 = a;
         var10000.log(var10001, var4[0] + var10002 + var4[1], var7);
      }

      return var2;
   }

   private static GeneralSecurityException a(GeneralSecurityException var0) {
      return var0;
   }

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "B\\l\u001cXtvoK}\u0018C:r'GxSI1gsGx\u001aI5ab\u000e9& \u000ew\u0000\n$puCw\u0007^1q'ZqSY=ri\u000eQ0y\u00045uKm\u0003E:fb]0";
      int var4 = "B\\l\u001cXtvoK}\u0018C:r'GxSI1gsGx\u001aI5ab\u000e9& \u000ew\u0000\n$puCw\u0007^1q'ZqSY=ri\u000eQ0y\u00045uKm\u0003E:fb]0".length();
      char var1 = 31;
      int var0 = -1;

      while (true) {
         String var10002 = a(51, a(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            a = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 38);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 52;
            case 1 -> 29;
            case 2 -> 45;
            case 3 -> 64;
            case 4 -> 25;
            case 5 -> 103;
            default -> 38;
         });
      }

      return new String(var10001).intern();
   }
}
