package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.migration.Migration;
import com.l7tech.objectmodel.migration.MigrationMappingSelection;
import com.l7tech.objectmodel.migration.PropertyResolver;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.AssertionNodeNameFactory;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.IdentityTarget;
import com.l7tech.policy.assertion.IdentityTargetable;
import com.l7tech.policy.assertion.MessageTargetableAssertion;
import com.l7tech.policy.assertion.UsesEntities;
import com.l7tech.policy.assertion.UsesVariables;
import com.l7tech.policy.variable.DataType;
import com.l7tech.policy.variable.VariableMetadata;

public class WssReplayProtection extends MessageTargetableAssertion implements IdentityTargetable, SecurityHeaderAddressable, UsesEntities, UsesVariables {
   public static final String DEFAULT_VARIABLE_PREFIX;
   public static final String VARIABLE_REASON_CODE;
   private static final String baseName;
   private static final AssertionNodeNameFactory policyNameFactory;
   private XmlSecurityRecipientContext recipientContext = XmlSecurityRecipientContext.getLocalRecipient();
   private IdentityTarget identityTarget;
   private boolean customProtection;
   private String customScope;
   private String customIdentifierVariable;
   private int customExpiryTime;
   static final long serialVersionUID = 4139364320718077944L;
   private static final String[] b;

   public WssReplayProtection() {
      super(false);
   }

   public boolean isCustomProtection() {
      return this.customProtection;
   }

   public void setCustomProtection(boolean var1) {
      this.customProtection = var1;
   }

   public String getCustomScope() {
      return this.customScope;
   }

   public void setCustomScope(String var1) {
      this.customScope = var1;
   }

   public String getCustomIdentifierVariable() {
      return this.customIdentifierVariable;
   }

   public void setCustomIdentifierVariable(String var1) {
      this.customIdentifierVariable = var1;
   }

   public int getCustomExpiryTime() {
      return this.customExpiryTime;
   }

   public void setCustomExpiryTime(int var1) {
      this.customExpiryTime = var1;
   }

   @Override
   public XmlSecurityRecipientContext getRecipientContext() {
      return this.recipientContext;
   }

   @Override
   public void setRecipientContext(XmlSecurityRecipientContext var1) {
      this.recipientContext = var1 == null ? XmlSecurityRecipientContext.getLocalRecipient() : var1;
   }

   @Override
   public IdentityTarget getIdentityTarget() {
      return this.identityTarget;
   }

   @Override
   public void setIdentityTarget(IdentityTarget var1) {
      this.identityTarget = var1;
   }

   @Migration(mapName = MigrationMappingSelection.REQUIRED, export = false, resolver = PropertyResolver.Type.USERGROUP)
   @Override
   public EntityHeader[] getEntitiesUsed() {
      return this.identityTarget != null ? this.identityTarget.getEntitiesUsed() : new EntityHeader[0];
   }

   @Override
   public void replaceEntity(EntityHeader var1, EntityHeader var2) {
      if (this.identityTarget != null) {
         this.identityTarget.replaceEntity(var1, var2);
      }
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      String[] var2 = b;
      var1.put(var2[20], var2[7]);
      var1.put(var2[21], var2[1]);
      var1.put(var2[17], var2[0]);
      var1.put(var2[4], policyNameFactory);
      var1.put(var2[6], var2[8]);
      var1.put(var2[22], var2[15]);
      var1.put(var2[3], new String[]{var2[12], var2[19]});
      var1.put(var2[2], Boolean.TRUE);
      var1.put(var2[11], var2[18]);
      var1.put(var2[10], var2[23]);
      var1.put(var2[16], new ab(this));
      var1.put(var2[14], var2[5]);
      return var1;
   }

   @Override
   protected MessageTargetableAssertion.VariablesUsed doGetVariablesUsed() {
      return this.isCustomProtection()
         ? super.doGetVariablesUsed().withExpressions(this.customScope).withVariables(this.customIdentifierVariable)
         : super.doGetVariablesUsed();
   }

   @Override
   protected MessageTargetableAssertion.VariablesSet doGetVariablesSet() {
      return super.doGetVariablesSet().withVariables(new VariableMetadata(b[9], false, false, null, true, DataType.INTEGER));
   }

   static {
      String[] var5 = new String[26];
      int var3 = 0;
      String var2 = "H/A<y\u001f]N#D<vGGX/@v:ZLX/YavMZ\u00048A\u007fpFJY9\\g|GG\u0005'Euō{2CgpK]\u000b!Kr|FZ_`^veDHR`Cu5ELX3Mtp[\u0007\u000b\u0002U3qMOJ5@g5\\AN`Avf[HL%\f~`[]\u000b#C}aI@E`M3B{z\u000b3Et{MM\u000b4E~p[]J-\\(5AO\u000b!\f`|OGN$\fdfI\u0013f%_`tOLb\u0004\fzf\bHG3C3eZLX%Bg5\\AN`avf[HL%eW5^HG5I3bAEG`Nv5IZX%^gpL\t^.Eb`M\u0012\u000b/X{pZ^B3I3a@L\u000b4E~p[]J-\\4f\bjY%MgpL\tO!Xv5AZ\u000b5_vq\u0006\tb&\fp`[]D-\fcgG]N#XzzF\tB3\fffMM\u000b4Dv{\bH\u000b#C}aMQ_`ZrgAHI,I3bAEG`Nv5IZX%^gpL\t^.Eb`M\t\\)X{|F\tJ`_cpK@M)Iw5[JD0I=\f^3IwWQjG)I}a\u000e[!@va\\Lm/@wpZZ\u0015[/@zvQgD$I]tELm!OgzZP8H/A=y\u001f]N#D=eGEB#U=cIEB$MgzZ\u0007|3_ApXEJ9|az\\LH4E|{~HG)HraG[\u0014[2CcpZ]B%_Rv\\@D.brxM\u001e{2CgpK]\u000b\u0001Kr|FZ_`avf[HL%\fApXEJ9$f%_`tOL\u000b\u0012IcyIP\u000b\u0010^|aMJ_)C}5x[D0IaaALX\u001bY%\\\u007ftQyY/Xvv\\@D.\u0002apIZD.o|qM\u0019H,Ev{\\hX3IaaAFE\u0010C\u007f|KPb#C}\u0018H,Ev{\\hX3IaaAFE\u0003@rf[GJ-I\u0010_(^vt\\yY/Xvv\\@D.\u001bY%\\\u007ftQyY/Xvv\\@D.\u0002apIZD.o|qM\u0018[/@zvQ\u007fJ,Ewt\\FY\u0003@rf[GJ-I:H/A=y\u001f]N#D=vGGX/@v;XHE%@`;zL[,MjEZF_%Og|GG{2CcpZ]B%_W|IED'\u001b[/@zvQ\u007fJ,Ewt\\FY\u0006@rr[oJ#X|gQ\u000f[!@va\\Le/Hv\\KFEIH/A=y\u001f]N#D=eZFS9\u0002czD@H9\u0002rf[LY4E|{\u0006QF,_vv\u0006jG)I}azLZ5I`a\u007fZX\u0012IcyIP{2CgpK]B/B\u000bS-@@pK\\Y)Xj\tX(CaafHF%\u000bO%_pgAY_)C}\u0019[2CcpZ]B%_VqA]D2o\u007ft[ZE!Av1H/A<y\u001f]N#D<eZFS9\u0003ap[F^2Ovf\u0007]Y%I<mEEN.OalX]B/B=rAO";
      int var4 = "H/A<y\u001f]N#D<vGGX/@v:ZLX/YavMZ\u00048A\u007fpFJY9\\g|GG\u0005'Euō{2CgpK]\u000b!Kr|FZ_`^veDHR`Cu5ELX3Mtp[\u0007\u000b\u0002U3qMOJ5@g5\\AN`Avf[HL%\f~`[]\u000b#C}aI@E`M3B{z\u000b3Et{MM\u000b4E~p[]J-\\(5AO\u000b!\f`|OGN$\fdfI\u0013f%_`tOLb\u0004\fzf\bHG3C3eZLX%Bg5\\AN`avf[HL%eW5^HG5I3bAEG`Nv5IZX%^gpL\t^.Eb`M\u0012\u000b/X{pZ^B3I3a@L\u000b4E~p[]J-\\4f\bjY%MgpL\tO!Xv5AZ\u000b5_vq\u0006\tb&\fp`[]D-\fcgG]N#XzzF\tB3\fffMM\u000b4Dv{\bH\u000b#C}aMQ_`ZrgAHI,I3bAEG`Nv5IZX%^gpL\t^.Eb`M\t\\)X{|F\tJ`_cpK@M)Iw5[JD0I=\f^3IwWQjG)I}a\u000e[!@va\\Lm/@wpZZ\u0015[/@zvQgD$I]tELm!OgzZP8H/A=y\u001f]N#D=eGEB#U=cIEB$MgzZ\u0007|3_ApXEJ9|az\\LH4E|{~HG)HraG[\u0014[2CcpZ]B%_Rv\\@D.brxM\u001e{2CgpK]\u000b\u0001Kr|FZ_`avf[HL%\fApXEJ9$f%_`tOL\u000b\u0012IcyIP\u000b\u0010^|aMJ_)C}5x[D0IaaALX\u001bY%\\\u007ftQyY/Xvv\\@D.\u0002apIZD.o|qM\u0019H,Ev{\\hX3IaaAFE\u0010C\u007f|KPb#C}\u0018H,Ev{\\hX3IaaAFE\u0003@rf[GJ-I\u0010_(^vt\\yY/Xvv\\@D.\u001bY%\\\u007ftQyY/Xvv\\@D.\u0002apIZD.o|qM\u0018[/@zvQ\u007fJ,Ewt\\FY\u0003@rf[GJ-I:H/A=y\u001f]N#D=vGGX/@v;XHE%@`;zL[,MjEZF_%Og|GG{2CcpZ]B%_W|IED'\u001b[/@zvQ\u007fJ,Ewt\\FY\u0006@rr[oJ#X|gQ\u000f[!@va\\Le/Hv\\KFEIH/A=y\u001f]N#D=eZFS9\u0002czD@H9\u0002rf[LY4E|{\u0006QF,_vv\u0006jG)I}azLZ5I`a\u007fZX\u0012IcyIP{2CgpK]B/B\u000bS-@@pK\\Y)Xj\tX(CaafHF%\u000bO%_pgAY_)C}\u0019[2CcpZ]B%_VqA]D2o\u007ft[ZE!Av1H/A<y\u001f]N#D<eZFS9\u0003ap[F^2Ovf\u0007]Y%I<mEEN.OalX]B/B=rAO"
         .length();
      char var1 = '.';
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     String[] var9 = b;
                     baseName = b[25];
                     VARIABLE_REASON_CODE = var9[13];
                     DEFAULT_VARIABLE_PREFIX = var9[24];
                     policyNameFactory = new ac();
                     return;
                  }

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

                  var2 = "\u001eb\u001b83\u0016>\u001eh\u001f11\u001b\u0007\u0003i\u001e<u\u0004 7\f\u001aLF\f5;\u0001\u001d\u0018'&1!\u001c\u000f\u000bbK\u00067\u001f\u0002\r~";
                  var4 = "\u001eb\u001b83\u0016>\u001eh\u001f11\u001b\u0007\u0003i\u001e<u\u0004 7\f\u001aLF\f5;\u0001\u001d\u0018'&1!\u001c\u000f\u000bbK\u00067\u001f\u0002\r~"
                     .length();
                  var1 = 16;
                  var7 = -1;
            }

            var10000 = 14;
            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] ^ 96);
      }

      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 -> 98;
            case 1 -> 9;
            case 2 -> 101;
            case 3 -> 90;
            case 4 -> 92;
            case 5 -> 97;
            default -> 96;
         });
      }

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