package com.l7tech.security.xml;

import com.l7tech.util.Background;
import com.l7tech.util.ConfigFactory;
import java.util.Arrays;
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.Logger;

public class XencKeyBlacklist {
   private static final Logger a;
   public static final boolean DEFAULT_ENABLEMENT = true;
   public static final boolean DEFAULT_FAIL_WHEN_FULL = false;
   public static final int DEFAULT_MAX_AGE_SEC = 604800;
   public static final int DEFAULT_FAILURE_DELAY_MILLIS = 50;
   public static final int DEFAULT_MAX_FAILURES = 5;
   public static final int DEFAULT_CAPACITY = 50000;
   public static final long DEFAULT_CLEANER_PERIOD_MILLIS = 451723L;
   public static final String PROP_XENC_KEY_BLACKLIST_ENABLED;
   public static final String PROP_XENC_KEY_BLACKLIST_FAIL_WHEN_FULL;
   public static final String PROP_XENC_KEY_BLACKLIST_CAPACITY;
   public static final String PROP_XENC_KEY_BLACKLIST_MAX_FAILURES;
   public static final String PROP_XENC_KEY_BLACKLIST_MAX_AGE;
   public static final String PROP_XENC_KEY_BLACKLIST_FAILURE_DELAY;
   public static final String PROP_XENC_KEY_BLACKLIST_CLEANER_PERIOD;
   private static final ConcurrentMap<b, a> b;
   private static final AtomicBoolean c;
   private static final String[] d;

   public static boolean isKeyBlacklisted(byte[] var0) {
      if (!c()) {
         return false;
      }

      if (c.get()) {
         a();
         if (c.get() && d()) {
            return true;
         }
      }

      b var1 = new b(var0);
      a var2 = b.get(var1);
      return var2 != null && var2.a() > f();
   }

   public static void recordDecryptionFailure(byte[] var0) {
      b var1 = new b(var0);
      a var2 = b.get(var1);
      if (var2 == null) {
         var1 = new b(Arrays.copyOf(var0, var0.length));
         var2 = new a(var1);
         a var3 = b.putIfAbsent(var1, var2);
         if (var3 != null) {
            var3.c();
         } else if (b.size() > e()) {
            a();
         }
      } else {
         var2.c();
      }
   }

   private static void a() {
      synchronized (b) {
         if (b.size() > e()) {
            b();
         }

         if (b.size() > e()) {
            if (!c.getAndSet(true)) {
               String[] var2 = d;
               a.log(Level.SEVERE, var2[10]);
            }
         } else if (c.getAndSet(false)) {
            a.log(Level.WARNING, d[0]);
         }
      }
   }

   private static void b() {
      long var0 = System.currentTimeMillis() - g();
      Iterator var2 = b.values().iterator();

      while (var2.hasNext()) {
         a var3 = (a)var2.next();
         if (var3.b.get() < var0) {
            var2.remove();
         }
      }
   }

   private static boolean c() {
      return ConfigFactory.getBooleanProperty(d[11], true);
   }

   private static boolean d() {
      return ConfigFactory.getBooleanProperty(d[3], false);
   }

   private static int e() {
      return ConfigFactory.getIntProperty(d[7], 50000);
   }

   private static int f() {
      return ConfigFactory.getIntProperty(d[15], 5);
   }

   private static long g() {
      return ConfigFactory.getTimeUnitProperty(d[14], 604800L);
   }

   private static long h() {
      return ConfigFactory.getTimeUnitProperty(d[5], 50L);
   }

   private static long i() {
      return ConfigFactory.getTimeUnitProperty(d[9], 451723L);
   }

   static {
      String[] var5 = new String[16];
      int var3 = 0;
      String var2 = "h(CJ\u00010pE\"N\u0018\u0013%}\f/LY\u001b+hE>T\u0018\u00113$B\"\u0000T\u0017.cI?\u0000^\r,h\u0002m\u0000|\u001d#vU=TQ\u0017.$M9T]\u00150p_mR]\u001d.eN!E\\V:O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000eU\u00198EK(;O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e]\u0016!f@(D@O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e^\u0019)h{%EV>5h@@O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e^\u0019)h{%EV>5h@FO\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e^\u0019)hY?E|\u001d,eU\u0000IT\u0014)w?O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000eU\u00198BM$LM\n%w<O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e[\u00190eO$TAFO\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e^\u0019)hY?E|\u001d,eU\u0000IT\u0014)wGO\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e[\u0014%eB(Rh\u001d2mC)mQ\u0014,m_\u008ch(CJ\u00010pE\"N\u0018\u0013%}\f/LY\u001b+hE>T\u0018\u00113$J8LTXm)\f9OWX-eB4\u0000^\u0019)hI)\u0000\\\u001d#vU=TQ\u0017.$M9T]\u00150p_mUK\u0011.c\f9OWX-eB4\u0000\\\u0011&bI?EV\f`wI.R]\f`oI4S\u0016X`@I.RA\b4mC#\u0000Y\f4aA=TKX$m_,BT\u001d$*;O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e]\u0016!f@(DGO\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e[\u0014%eB(Rh\u001d2mC)mQ\u0014,m_<O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e[\u00190eO$TA";
      int var4 = "h(CJ\u00010pE\"N\u0018\u0013%}\f/LY\u001b+hE>T\u0018\u00113$B\"\u0000T\u0017.cI?\u0000^\r,h\u0002m\u0000|\u001d#vU=TQ\u0017.$M9T]\u00150p_mR]\u001d.eN!E\\V:O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000eU\u00198EK(;O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e]\u0016!f@(D@O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e^\u0019)h{%EV>5h@@O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e^\u0019)h{%EV>5h@FO\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e^\u0019)hY?E|\u001d,eU\u0000IT\u0014)w?O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000eU\u00198BM$LM\n%w<O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e[\u00190eO$TAFO\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e^\u0019)hY?E|\u001d,eU\u0000IT\u0014)wGO\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e[\u0014%eB(Rh\u001d2mC)mQ\u0014,m_\u008ch(CJ\u00010pE\"N\u0018\u0013%}\f/LY\u001b+hE>T\u0018\u00113$J8LTXm)\f9OWX-eB4\u0000^\u0019)hI)\u0000\\\u001d#vU=TQ\u0017.$M9T]\u00150p_mUK\u0011.c\f9OWX-eB4\u0000\\\u0011&bI?EV\f`wI.R]\f`oI4S\u0016X`@I.RA\b4mC#\u0000Y\f4aA=TKX$m_,BT\u001d$*;O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e]\u0016!f@(DGO\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e[\u0014%eB(Rh\u001d2mC)mQ\u0014,m_<O\"M\u0016\u0014wpI.H\u0016\u000b%gY?IL\u0001n|A!\u000e@\u001d.g\u0002)E[\n9tX$OV3%}n!A[\u0013,m_9\u000e[\u00190eO$TA"
         .length();
      char var1 = 'K';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 90;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     d = var5;
                     String[] var9 = d;
                     PROP_XENC_KEY_BLACKLIST_FAIL_WHEN_FULL = d[4];
                     PROP_XENC_KEY_BLACKLIST_FAILURE_DELAY = var9[8];
                     PROP_XENC_KEY_BLACKLIST_CLEANER_PERIOD = var9[12];
                     PROP_XENC_KEY_BLACKLIST_CAPACITY = var9[13];
                     PROP_XENC_KEY_BLACKLIST_MAX_FAILURES = var9[6];
                     PROP_XENC_KEY_BLACKLIST_ENABLED = var9[2];
                     PROP_XENC_KEY_BLACKLIST_MAX_AGE = var9[1];
                     a = Logger.getLogger(XencKeyBlacklist.class.getName());
                     b = new ConcurrentHashMap<>();
                     c = new AtomicBoolean(false);
                     Background.scheduleRepeated(new f(), i(), i());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "S>Q\n\bklU2T\n\u00179{E#UP\u001dr`]=\u0012\\\u00012{\u001e5YG\u0016%hD8SJ/9ar=]G\u000f0qC%\u0012I\u0005$YW4?S>Q\n\bklU2T\n\u00179{E#UP\u001dr`]=\u0012\\\u00012{\u001e5YG\u0016%hD8SJ/9ar=]G\u000f0qC%\u0012I\u0005$^Q8PQ\u00169k";
                  var4 = "S>Q\n\bklU2T\n\u00179{E#UP\u001dr`]=\u0012\\\u00012{\u001e5YG\u0016%hD8SJ/9ar=]G\u000f0qC%\u0012I\u0005$YW4?S>Q\n\bklU2T\n\u00179{E#UP\u001dr`]=\u0012\\\u00012{\u001e5YG\u0016%hD8SJ/9ar=]G\u000f0qC%\u0012I\u0005$^Q8PQ\u00169k"
                     .length();
                  var1 = ':';
                  var7 = -1;
            }

            var10000 = 70;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

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

      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 -> 118;
            case 1 -> 23;
            case 2 -> 122;
            case 3 -> 98;
            case 4 -> 34;
            case 5 -> 26;
            default -> 94;
         });
      }

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