package com.l7tech.policy.assertion;

import com.l7tech.policy.assertion.annotation.ProcessesRequest;
import com.l7tech.policy.wsp.SimpleTypeMappingFinder;
import com.l7tech.policy.wsp.WspEnumTypeMapping;
import com.l7tech.util.EnumTranslator;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;

@ProcessesRequest
public class SslAssertion extends ConfidentialityAssertion {
   public static final SslAssertion.Option OPTIONAL;
   public static final SslAssertion.Option REQUIRED;
   public static final SslAssertion.Option FORBIDDEN;
   public static final SslAssertion.Option[] VALUES;
   static final AssertionNodeNameFactory policyNameFactory;
   static final DefaultAssertionMetadata META_NOCLIENT;
   static final DefaultAssertionMetadata META_CLIENT;
   protected Set _cipherSuites = Collections.EMPTY_SET;
   protected SslAssertion.Option _option;
   private boolean requireClientAuthentication;
   private boolean checkCertValidity;
   static final long serialVersionUID = 4956337181977863236L;
   private static final String[] b;

   @Override
   public boolean isCredentialSource() {
      return this.requireClientAuthentication && this._option.equals(REQUIRED);
   }

   public static List options() {
      return Arrays.asList(VALUES);
   }

   public SslAssertion() {
      this(REQUIRED);
   }

   public SslAssertion(boolean var1) {
      this(REQUIRED);
      this.requireClientAuthentication = var1;
   }

   public SslAssertion(SslAssertion.Option var1) {
      this._option = REQUIRED;
      this.requireClientAuthentication = false;
      this.checkCertValidity = true;
      this._option = var1;
   }

   public void setOption(SslAssertion.Option var1) {
      this._option = var1;
      if (this._option.equals(REQUIRED)) {
         this.setRequireClientAuthentication(false);
      }
   }

   public SslAssertion.Option getOption() {
      return this._option;
   }

   public boolean isRequireClientAuthentication() {
      return this.requireClientAuthentication;
   }

   public void setRequireClientAuthentication(boolean var1) {
      this.requireClientAuthentication = var1;
      if (var1) {
         this._option = REQUIRED;
      }
   }

   public boolean isCheckCertValidity() {
      return this.checkCertValidity;
   }

   public void setCheckCertValidity(boolean var1) {
      this.checkCertValidity = var1;
   }

   @Override
   public String toString() {
      String var10000 = super.toString();
      boolean var10001 = this.isRequireClientAuthentication();
      String var10002 = String.valueOf(this.getOption());
      String[] var1 = b;
      return var10000 + var1[13] + var10001 + var1[15] + var10002;
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.isRequireClientAuthentication() ? META_CLIENT : META_NOCLIENT;
      var1.put(b[31], new Assertion[]{META_CLIENT.getPrototype(), META_NOCLIENT.getPrototype()});
      return var1;
   }

   private static DefaultAssertionMetadata makeMeta(boolean var0) {
      DefaultAssertionMetadata var1 = new DefaultAssertionMetadata(new SslAssertion(var0));
      String[] var2 = b;
      String var10001 = var2[27];
      String var10002;
      if (var0) {
         var10002 = var2[20];
      } else {
         var2 = b;
         var10002 = var2[22];
      }

      var1.put(var10001, var10002);
      var2 = b;
      var1.put(var2[18], var2[2]);
      var1.put(var2[3], var2[19]);
      var10001 = var2[29];
      String[] var8 = new String[1];
      String var10005;
      if (var0) {
         var10005 = var2[5];
      } else {
         var2 = b;
         var10005 = var2[6];
      }

      var8[0] = var10005;
      var1.put(var10001, var8);
      var2 = b;
      var1.put(var2[21], new bo());
      var1.put(var2[0], new SimpleTypeMappingFinder(Arrays.asList(new WspEnumTypeMapping(SslAssertion.Option.class, var2[11]))));
      var1.put(var2[23], policyNameFactory);
      var1.put(var2[9], var2[4]);
      var1.put(var2[1], var2[8]);
      var1.put(var2[10], var2[14]);
      var1.put(var2[30], var2[17]);
      var1.put(var2[26], Boolean.TRUE);
      return var1;
   }

   static {
      String[] var5 = new String[32];
      int var3 = 0;
      String var2 = "\n EZ\u00058=\u0004#PO\u00194-\u0018!\u0014\r!Zy\u0015(=\u00146FH\u0013. \u0012={h\u001d?§);P)\u00194*\u0012>\\g\u0017z;\u0018\"@l\u0003.i\u0010&F}P? \t;P{P/:\u0018\u007f\u0015f\u0000. \u0012=Te\u001c#i\b P%P5;]:F)\u00165;\u001f:Qm\u00154i\t<\u0015|\u0003?i.\u0000y&$\u0016\u001a]'Gh\u001e)9\u0012!A'P\u0019%\u00146[}P9,\u000f'\\o\u00199(\t6\u0015h\u0005.!\u0018=A`\u0013;=\u0014<[)\u0019)i\u0012#A`\u001f4(\u0011s\\oP\t\u001a1s\u001a)$\u0016\u001a]:F)\u0002?8\b:Gl\u0014t\u000f\r2Yl\u0004.,3<Ql99&\u0013-\u001e<X'\u001cm=\u00180]'\u00135'\u000e<Yl^;*\t:Zg^\t:\u0011\u0003Gf\u0000?;\t:Pz19=\u0014<[\r\u001c0Vl\u0003)\n\u0012=A{\u001f6\u0016\t!Tg\u0003*&\u000f'yh\t?;.6V|\u00023=\u0004\r.\u0000y)65;\u001f:Qm\u00154\u001f.\u0000y)\u001f(i)\u001ff)$((\u0013 Ef\u0002.i-!Zy\u0015(=\u00146F\u0019\r!Zy\u0015(=\u00146FH\u0013. \u0012=ve\u0011):\u00132Xl\u0014\r!Zy\u0015(=\u00146FH\u0013. \u0012=|j\u001f4\u000b\u0012#A`\u001f4\u001f\u001c?@l\b/6D|\u0019(,\u0019\f]0Y`\u00154=>6G}M(\u001e<X&\u001cm=\u00180]&\u00135'\u000e<Yl_(,\u000e<@{\u0013?:R\u0012Wf\u0005.xK}R`\u0016\b]<E}\u00195'@\t;<Gk\u0019>-\u0018='\u001e<X&\u001cm=\u00180]&\u0000(&\u0005*\u001a{\u0015)&\b!Vl\u0003u=\u000f6P&\u0003)%S4\\o\u000b\u00196Fj\u000239\t:Zg$\u001e<X&\u001cm=\u00180]&\u00135'\u000e<Yl_(,\u000e<@{\u0013?:R Fe^= \u001b7/6D|\u0019(,]\u0000fEP5;]\u0007yZP\u000e;\u001c=Fy\u001f(=]$\\}\u0018z\n\u0011:Pg\u0004z\b\b']l\u001e. \u001e2A`\u001f4\u0010\u001c Fl\u0002. \u0012=sh\u0013.&\u000f*\u001c/6D|\u0019(,]\u0000fEP5;]\u0007yZP\u000e;\u001c=Fy\u001f(=\u0015\r<Y`\u0013#\u0007\u00127PG\u00117,;2V}\u001f(0\b2#A`\u001f4(\u0011\f.\u0000y)\"?8\b:Gl\u0014\f\b Pm2#\n\u0011:Pg\u0004\t\u000e;Z{\u0004\u0014(\u00106\f.\u0000y)?*=\u0014<[h\u001c\u000e\r2Yl\u0004.,;<Ym\u0015(:";
      int var4 = "\n EZ\u00058=\u0004#PO\u00194-\u0018!\u0014\r!Zy\u0015(=\u00146FH\u0013. \u0012={h\u001d?§);P)\u00194*\u0012>\\g\u0017z;\u0018\"@l\u0003.i\u0010&F}P? \t;P{P/:\u0018\u007f\u0015f\u0000. \u0012=Te\u001c#i\b P%P5;]:F)\u00165;\u001f:Qm\u00154i\t<\u0015|\u0003?i.\u0000y&$\u0016\u001a]'Gh\u001e)9\u0012!A'P\u0019%\u00146[}P9,\u000f'\\o\u00199(\t6\u0015h\u0005.!\u0018=A`\u0013;=\u0014<[)\u0019)i\u0012#A`\u001f4(\u0011s\\oP\t\u001a1s\u001a)$\u0016\u001a]:F)\u0002?8\b:Gl\u0014t\u000f\r2Yl\u0004.,3<Ql99&\u0013-\u001e<X'\u001cm=\u00180]'\u00135'\u000e<Yl^;*\t:Zg^\t:\u0011\u0003Gf\u0000?;\t:Pz19=\u0014<[\r\u001c0Vl\u0003)\n\u0012=A{\u001f6\u0016\t!Tg\u0003*&\u000f'yh\t?;.6V|\u00023=\u0004\r.\u0000y)65;\u001f:Qm\u00154\u001f.\u0000y)\u001f(i)\u001ff)$((\u0013 Ef\u0002.i-!Zy\u0015(=\u00146F\u0019\r!Zy\u0015(=\u00146FH\u0013. \u0012=ve\u0011):\u00132Xl\u0014\r!Zy\u0015(=\u00146FH\u0013. \u0012=|j\u001f4\u000b\u0012#A`\u001f4\u001f\u001c?@l\b/6D|\u0019(,\u0019\f]0Y`\u00154=>6G}M(\u001e<X&\u001cm=\u00180]&\u00135'\u000e<Yl_(,\u000e<@{\u0013?:R\u0012Wf\u0005.xK}R`\u0016\b]<E}\u00195'@\t;<Gk\u0019>-\u0018='\u001e<X&\u001cm=\u00180]&\u0000(&\u0005*\u001a{\u0015)&\b!Vl\u0003u=\u000f6P&\u0003)%S4\\o\u000b\u00196Fj\u000239\t:Zg$\u001e<X&\u001cm=\u00180]&\u00135'\u000e<Yl_(,\u000e<@{\u0013?:R Fe^= \u001b7/6D|\u0019(,]\u0000fEP5;]\u0007yZP\u000e;\u001c=Fy\u001f(=]$\\}\u0018z\n\u0011:Pg\u0004z\b\b']l\u001e. \u001e2A`\u001f4\u0010\u001c Fl\u0002. \u0012=sh\u0013.&\u000f*\u001c/6D|\u0019(,]\u0000fEP5;]\u0007yZP\u000e;\u001c=Fy\u001f(=\u0015\r<Y`\u0013#\u0007\u00127PG\u00117,;2V}\u001f(0\b2#A`\u001f4(\u0011\f.\u0000y)\"?8\b:Gl\u0014\f\b Pm2#\n\u0011:Pg\u0004\t\u000e;Z{\u0004\u0014(\u00106\f.\u0000y)?*=\u0014<[h\u001c\u000e\r2Yl\u0004.,;<Ym\u0015(:"
         .length();
      char var1 = 16;
      int var7 = -1;

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

         while (true) {
            String var9 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     String[] var8 = b;
                     OPTIONAL = new SslAssertion.Option(0, var8[28], var8[24]);
                     REQUIRED = new SslAssertion.Option(1, var8[25], var8[12]);
                     FORBIDDEN = new SslAssertion.Option(2, var8[7], var8[16]);
                     VALUES = new SslAssertion.Option[]{OPTIONAL, REQUIRED, FORBIDDEN};
                     policyNameFactory = new bn();
                     META_NOCLIENT = makeMeta(false);
                     META_CLIENT = makeMeta(true);
                     return;
                  }

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

                  var2 = "\u00123P`\u0012\"\u0004\u0002,\\w\b?*\u001f\u000fVi\u00155<8<Vk\u0011\u0007>Kl\u001d81!-Vq\u0013\"<\u0001:J";
                  var4 = "\u00123P`\u0012\"\u0004\u0002,\\w\b?*\u001f\u000fVi\u00155<8<Vk\u0011\u0007>Kl\u001d81!-Vq\u0013\"<\u0001:J".length();
                  var1 = 25;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String b(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 -> 49;
            case 1 -> 31;
            case 2 -> 121;
            case 3 -> 69;
            case 4 -> 60;
            case 5 -> 22;
            default -> 5;
         });
      }

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

   public static class Option implements Serializable {
      protected int _numeric;
      protected String _name;
      protected String _keyName;
      static final long serialVersionUID = 9102300171930850596L;

      Option(int var1, String var2, String var3) {
         this._numeric = var1;
         this._name = var2;
         this._keyName = var3;
      }

      public static SslAssertion.Option forKeyName(String var0) {
         if (SslAssertion.OPTIONAL.getKeyName().equals(var0)) {
            return SslAssertion.OPTIONAL;
         } else if (SslAssertion.REQUIRED.getKeyName().equals(var0)) {
            return SslAssertion.REQUIRED;
         } else {
            return SslAssertion.FORBIDDEN.getKeyName().equals(var0) ? SslAssertion.FORBIDDEN : null;
         }
      }

      public String getName() {
         return this._name;
      }

      public String getKeyName() {
         return this._keyName;
      }

      @Override
      public boolean equals(Object var1) {
         if (this == var1) {
            return true;
         } else if (!(var1 instanceof SslAssertion.Option var2)) {
            return false;
         } else if (this._numeric != var2._numeric) {
            return false;
         } else {
            return this._name != null ? this._name.equals(var2._name) : var2._name == null;
         }
      }

      @Override
      public int hashCode() {
         int var1 = this._numeric;
         return 29 * var1 + (this._name != null ? this._name.hashCode() : 0);
      }

      @Override
      public String toString() {
         return this._keyName;
      }

      public static EnumTranslator getEnumTranslator() {
         return new bp();
      }
   }
}
