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.annotation.RequiresSOAP;
import com.l7tech.util.TimeUnit;

@RequiresSOAP(wss = true)
public class RequireWssTimestamp extends MessageTargetableAssertion implements IdentityTargetable, SecurityHeaderAddressable, UsesEntities {
   public static final int DEFAULT_MAX_EXPIRY_TIME;
   static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   private TimeUnit timeUnit = TimeUnit.MINUTES;
   private long maxExpiryMilliseconds;
   private boolean signatureRequired = true;
   private XmlSecurityRecipientContext recipientContext = XmlSecurityRecipientContext.getLocalRecipient();
   private IdentityTarget identityTarget;
   static final long serialVersionUID = -8389764068240140221L;
   private static final String[] b;

   public RequireWssTimestamp() {
      super(false);
   }

   public static RequireWssTimestamp newInstance() {
      RequireWssTimestamp var0 = new RequireWssTimestamp();
      var0.setMaxExpiryMilliseconds(DEFAULT_MAX_EXPIRY_TIME);
      return var0;
   }

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

   @Override
   public void setRecipientContext(XmlSecurityRecipientContext var1) {
      if (var1 == null) {
         var1 = XmlSecurityRecipientContext.getLocalRecipient();
      }

      this.recipientContext = var1;
   }

   public boolean isSignatureRequired() {
      return this.signatureRequired;
   }

   public void setSignatureRequired(boolean var1) {
      this.signatureRequired = var1;
   }

   public long getMaxExpiryMilliseconds() {
      return this.maxExpiryMilliseconds;
   }

   public void setMaxExpiryMilliseconds(long var1) {
      this.maxExpiryMilliseconds = var1;
   }

   @Deprecated
   public void setMaxExpiryMilliseconds(int var1) {
      this.maxExpiryMilliseconds = var1;
   }

   public TimeUnit getTimeUnit() {
      return this.timeUnit;
   }

   public void setTimeUnit(TimeUnit var1) {
      this.timeUnit = 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 String toString() {
      return super.toString() + b[16] + this.signatureRequired;
   }

   public void copyFrom(RequireWssTimestamp var1) {
      super.copyFrom(var1);
      this.timeUnit = var1.timeUnit;
      this.maxExpiryMilliseconds = var1.maxExpiryMilliseconds;
      this.signatureRequired = var1.signatureRequired;
      this.recipientContext = var1.recipientContext;
      this.setIdentityTarget(var1.getIdentityTarget() == null ? null : new IdentityTarget(var1.getIdentityTarget()));
   }

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

   static {
      String[] var5 = new String[23];
      int var3 = 0;
      String var2 = "~~rQ82nYwp\u0014u:hYb7\u0012:9iK\u007fyQ4wIC{r\u0002!6pZ8\u0019Zdx\u00010%iCsd41>iEdT\u001d4$nDwz\u0014\u0019Iz~\u0014;#\\Yer\u0003!>rDFx\u001d<4dcux\u001f\u000bNsd\u0012'>m^\u007fx\u001f\u000eZw{\u0014!#xly{\u00150%n\f_er\u0015\u0017.^F\u007fr\u001f!\u0011xsf\u0004<%x\nB~\u001c0$iK{g\u000fZw{\u0014!#xdys\u0014\u001c4rD\u0018Iz~\u0014;#\\Yer\u0003!>rDU{\u0010&$sK{r\u0010Ked\u0014'#tExQ\u00106#rXo3Iyz_9`iOu\u007f_68sYy{\u0014{'|Ds{\u0002{\u0005x[c~\u00030\u0000nYB~\u001c0$iK{g5<6qEq1Iyz^9`iOu\u007f^%%rRo8\u00030$r_dt\u0014&xiXsr^-:qOxt\u0003,'iCyy_2>{\u0014Zdx\u00010%iCsd06#tExY\u001082BIyz_9`iOu\u007f_%%rRo9\u0001:;tIo9\u0010&$xXb~\u001e;yeGzd\u00146y^F\u007fr\u001f!\u0005x[cr\u0002!\u0000nYB~\u001c0$iK{g\u001bZy{\u00186.KKz~\u00154#rXP{\u00102$[Kuc\u001e'.\u0015Zy{\u00186.SErr?4:xlwt\u0005:%d\u0013\ne~\u0016;6i_dr#0&hCdr\u0015h\u0017Zw{\u0014!#xdys\u0014\u00068o^Fe\u0018:%t^o\u0014~\u007fz\u0014&#|Gf7!'8mOdc\u00180$.Iyz^9`iOu\u007f^68sYy{\u0014z%xYyb\u000362n\u0005nz\u001d09~Xog\u0005<8s\u0004q~\u0017\u000bR{{\"04hX\u007fc\b";
      int var4 = "~~rQ82nYwp\u0014u:hYb7\u0012:9iK\u007fyQ4wIC{r\u0002!6pZ8\u0019Zdx\u00010%iCsd41>iEdT\u001d4$nDwz\u0014\u0019Iz~\u0014;#\\Yer\u0003!>rDFx\u001d<4dcux\u001f\u000bNsd\u0012'>m^\u007fx\u001f\u000eZw{\u0014!#xly{\u00150%n\f_er\u0015\u0017.^F\u007fr\u001f!\u0011xsf\u0004<%x\nB~\u001c0$iK{g\u000fZw{\u0014!#xdys\u0014\u001c4rD\u0018Iz~\u0014;#\\Yer\u0003!>rDU{\u0010&$sK{r\u0010Ked\u0014'#tExQ\u00106#rXo3Iyz_9`iOu\u007f_68sYy{\u0014{'|Ds{\u0002{\u0005x[c~\u00030\u0000nYB~\u001c0$iK{g5<6qEq1Iyz^9`iOu\u007f^%%rRo8\u00030$r_dt\u0014&xiXsr^-:qOxt\u0003,'iCyy_2>{\u0014Zdx\u00010%iCsd06#tExY\u001082BIyz_9`iOu\u007f_%%rRo9\u0001:;tIo9\u0010&$xXb~\u001e;yeGzd\u00146y^F\u007fr\u001f!\u0005x[cr\u0002!\u0000nYB~\u001c0$iK{g\u001bZy{\u00186.KKz~\u00154#rXP{\u00102$[Kuc\u001e'.\u0015Zy{\u00186.SErr?4:xlwt\u0005:%d\u0013\ne~\u0016;6i_dr#0&hCdr\u0015h\u0017Zw{\u0014!#xdys\u0014\u00068o^Fe\u0018:%t^o\u0014~\u007fz\u0014&#|Gf7!'8mOdc\u00180$.Iyz^9`iOu\u007f^68sYy{\u0014z%xYyb\u000362n\u0005nz\u001d09~Xog\u0005<8s\u0004q~\u0017\u000bR{{\"04hX\u007fc\b"
         .length();
      char var1 = '%';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 103;
         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;
                     baseName = b[22];
                     DEFAULT_MAX_EXPIRY_TIME = TimeUnit.HOURS.getMultiplier();
                     policyNameFactory = new u();
                     return;
                  }

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

                  var2 = "\n-+PrJ/\u0014 \u0011+ 5Wov+Y\u0011-Ocw:\u0018(4";
                  var4 = "\n-+PrJ/\u0014 \u0011+ 5Wov+Y\u0011-Ocw:\u0018(4".length();
                  var1 = '\t';
                  var7 = -1;
            }

            var10000 = 52;
            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] ^ 122);
      }

      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 -> 77;
            case 1 -> 113;
            case 2 -> 112;
            case 3 -> 22;
            case 4 -> 50;
            case 5 -> 48;
            default -> 122;
         });
      }

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