package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.IdentityTarget;
import com.l7tech.policy.assertion.MessageTargetableAssertion;
import com.l7tech.policy.assertion.RequestIdentityTargetable;
import com.l7tech.policy.assertion.UsesEntities;
import com.l7tech.policy.variable.DataType;
import com.l7tech.policy.variable.VariableMetadata;
import com.l7tech.util.TimeUnit;

public class BuildRstrSoapResponse extends MessageTargetableAssertion implements RequestIdentityTargetable, SecurityHeaderAddressable, UsesEntities {
   public static final String DEFAULT_VARIABLE_PREFIX;
   public static final String VARIABLE_RSTR_RESPONSE;
   public static final String VARIABLE_WSA_NAMESPACE;
   public static final String VARIABLE_RSTR_WSA_ACTION;
   public static final long DEFAULT_LIFETIME = 3600000L;
   private static final String ASSERTION_BASIC_NAME;
   private static final String META_INITIALIZED;
   private boolean responseForIssuance = true;
   private boolean includeAppliesTo;
   private boolean includeLifetime;
   private boolean includeAttachedRef;
   private boolean includeUnattachedRef;
   private boolean includeKeySize;
   private String tokenIssued;
   private String addressOfEPR;
   private long lifetime = 3600000L;
   private TimeUnit timeUnit = TimeUnit.MINUTES;
   private String variablePrefix;
   private XmlSecurityRecipientContext recipientContext;
   private IdentityTarget identityTarget;
   static final long serialVersionUID = -3536642281571702975L;
   private static final String[] b;

   public BuildRstrSoapResponse() {
      this.variablePrefix = b[23];
      this.recipientContext = XmlSecurityRecipientContext.getLocalRecipient();
   }

   public boolean isResponseForIssuance() {
      return this.responseForIssuance;
   }

   public void setResponseForIssuance(boolean var1) {
      this.responseForIssuance = var1;
   }

   public boolean isIncludeAppliesTo() {
      return this.includeAppliesTo;
   }

   public void setIncludeAppliesTo(boolean var1) {
      this.includeAppliesTo = var1;
   }

   public boolean isIncludeLifetime() {
      return this.includeLifetime;
   }

   public void setIncludeLifetime(boolean var1) {
      this.includeLifetime = var1;
   }

   public boolean isIncludeAttachedRef() {
      return this.includeAttachedRef;
   }

   public void setIncludeAttachedRef(boolean var1) {
      this.includeAttachedRef = var1;
   }

   public boolean isIncludeUnattachedRef() {
      return this.includeUnattachedRef;
   }

   public void setIncludeUnattachedRef(boolean var1) {
      this.includeUnattachedRef = var1;
   }

   public boolean isIncludeKeySize() {
      return this.includeKeySize;
   }

   public void setIncludeKeySize(boolean var1) {
      this.includeKeySize = var1;
   }

   public String getTokenIssued() {
      return this.tokenIssued;
   }

   public void setTokenIssued(String var1) {
      this.tokenIssued = var1;
   }

   public String getAddressOfEPR() {
      return this.addressOfEPR;
   }

   public void setAddressOfEPR(String var1) {
      this.addressOfEPR = var1;
   }

   public long getLifetime() {
      return this.lifetime;
   }

   public void setLifetime(long var1) {
      this.lifetime = var1;
   }

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

   public void setTimeUnit(TimeUnit var1) {
      this.timeUnit = var1;
   }

   public String getVariablePrefix() {
      if (this.variablePrefix == null || this.variablePrefix.trim().isEmpty()) {
         this.variablePrefix = b[23];
      }

      return this.variablePrefix;
   }

   public void setVariablePrefix(String var1) {
      this.variablePrefix = var1 != null && !var1.trim().isEmpty() ? var1 : b[12];
   }

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

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

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

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

   public String[] getVariableSuffixes() {
      String[] var10000 = new String[3];
      String[] var1 = b;
      var10000[0] = var1[18];
      var10000[1] = var1[9];
      var10000[2] = var1[7];
      return var10000;
   }

   @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 = super.defaultMeta();
      if (Boolean.TRUE.equals(var1.get(META_INITIALIZED))) {
         return var1;
      }

      String[] var2 = b;
      var1.put(var2[17], var2[8]);
      var1.put(var2[3], var2[28]);
      var1.put(var2[14], new String[]{var2[15]});
      var1.put(var2[13], var2[2]);
      var1.put(var2[27], var2[24]);
      var1.put(var2[20], var2[26]);
      var1.put(var2[16], var2[25]);
      var1.put(var2[21], var2[0]);
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   @Override
   protected MessageTargetableAssertion.VariablesSet doGetVariablesSet() {
      MessageTargetableAssertion.VariablesSet var10000 = super.doGetVariablesSet();
      VariableMetadata[] var10001 = new VariableMetadata[3];
      String[] var1 = b;
      var10001[0] = new VariableMetadata(this.variablePrefix + var1[6], false, false, null, false, DataType.MESSAGE);
      var10001[1] = new VariableMetadata(this.variablePrefix + var1[11], false, false, null, false, DataType.STRING);
      var10001[2] = new VariableMetadata(this.variablePrefix + var1[19], false, false, null, false, DataType.STRING);
      return var10000.withVariables(var10001);
   }

   @Override
   protected MessageTargetableAssertion.VariablesUsed doGetVariablesUsed() {
      return super.doGetVariablesUsed().withExpressions(this.tokenIssued, this.addressOfEPR);
   }

   static {
      String[] var5 = new String[29];
      int var3 = 0;
      String var2 = "|>Y6\\}Xo=-6\u0019]gA\u0003~\u0001\\lbG\u0001i\u0001\u000e\u000eG\\\u0002}\u0001\u000eZ~K\u001e\u0018l\u0018d\b\u0018\u000eE}9_D/aV~M_\u0001\u000f^x@\u001eh+M\u0002`K\u0010\u0019cK\u000eeK\u001fAy]\u0002a\u0001S\\r]\u0002x\u0016\u001fKd\u0001\u0015`\b\u0019BrC\bc\u0010RI~H\u000bJ\b~\u0007\u000eGgZ\u0004b\n\f\\\u001ey\u0016.Kd^\u0002c\u0017\u0019\r\\\u001ey\u0016+]vo\u000ey\r\u0013@\r\u0000\u001f~\u0010\u000e|r]\u001db\n\u000fK\r\\\u001ey\u0016+]vo\u000ey\r\u0013@\u0018l\u0018d\b\u0018\u000eE}9_D/aV~M_\u0001\u000f^x@\u001eh\fY\u001el*\u001dCr]\u001dl\u0007\u0019\u0014\u0000\u0000h\u0010\u001dJvZ\fD\n\u0015Z~O\u0001d\u001e\u0019J\r\u0000\u001a~\u00052OzK\u001e}\u0005\u001fK\u000f\\\b~\u0014\u0013@dK/x\r\u0010Jr\\\u000f^\fa\u0001\bZr`\u0002i\u00015Mx@\u000e^\fa\u0001\bZrh\u0002a\u0000\u0019\\d\u000bV\u0000a7\u0019Mb\\\u0004y\u001d\u0019^\u001fb\u0014\u0019\\cG\b~!\u0018GcA\u001fN\b\u001d]d@\f`\u0001\t]\u0005b\u0016\b`vC\b\f\\\u001ey\u0016.Kd^\u0002c\u0017\u0019\u000e\u0000\u001f~\u0010\u000eydO,n\u0010\u0015Ay\u000e^\u0002a\r\u001fWYA\th-\u001fAy\u0014^\u001fb\u0014\u0019\\cG\b~%\u001fZ~A\u0003C\u0005\u0011K\fY\u001el*\u001dCr]\u001dl\u0007\u0019\u000f\\\b~\u0014\u0013@dK/x\r\u0010Jr\\\u0004O\u0018y\u000b?M\u0002`J\u0010\u0019cK\u000eeJ\u001fAy]\u0002a\u0001R^v@\ba\u0017RlbG\u0001i6\u000fZe}\u0002l\u0014.Kd^\u0002c\u0017\u0019~eA\u001dh\u0016\bGr])d\u0005\u0010Ap+M\u0002`K\u0010\u0019cK\u000eeK\u001fAy]\u0002a\u0001S\\r]\u0002x\u0016\u001fKd\u0001\u0015`\b\u0019BrC\bc\u0010RI~H";
      int var4 = "|>Y6\\}Xo=-6\u0019]gA\u0003~\u0001\\lbG\u0001i\u0001\u000e\u000eG\\\u0002}\u0001\u000eZ~K\u001e\u0018l\u0018d\b\u0018\u000eE}9_D/aV~M_\u0001\u000f^x@\u001eh+M\u0002`K\u0010\u0019cK\u000eeK\u001fAy]\u0002a\u0001S\\r]\u0002x\u0016\u001fKd\u0001\u0015`\b\u0019BrC\bc\u0010RI~H\u000bJ\b~\u0007\u000eGgZ\u0004b\n\f\\\u001ey\u0016.Kd^\u0002c\u0017\u0019\r\\\u001ey\u0016+]vo\u000ey\r\u0013@\r\u0000\u001f~\u0010\u000e|r]\u001db\n\u000fK\r\\\u001ey\u0016+]vo\u000ey\r\u0013@\u0018l\u0018d\b\u0018\u000eE}9_D/aV~M_\u0001\u000f^x@\u001eh\fY\u001el*\u001dCr]\u001dl\u0007\u0019\u0014\u0000\u0000h\u0010\u001dJvZ\fD\n\u0015Z~O\u0001d\u001e\u0019J\r\u0000\u001a~\u00052OzK\u001e}\u0005\u001fK\u000f\\\b~\u0014\u0013@dK/x\r\u0010Jr\\\u000f^\fa\u0001\bZr`\u0002i\u00015Mx@\u000e^\fa\u0001\bZrh\u0002a\u0000\u0019\\d\u000bV\u0000a7\u0019Mb\\\u0004y\u001d\u0019^\u001fb\u0014\u0019\\cG\b~!\u0018GcA\u001fN\b\u001d]d@\f`\u0001\t]\u0005b\u0016\b`vC\b\f\\\u001ey\u0016.Kd^\u0002c\u0017\u0019\u000e\u0000\u001f~\u0010\u000eydO,n\u0010\u0015Ay\u000e^\u0002a\r\u001fWYA\th-\u001fAy\u0014^\u001fb\u0014\u0019\\cG\b~%\u001fZ~A\u0003C\u0005\u0011K\fY\u001el*\u001dCr]\u001dl\u0007\u0019\u000f\\\b~\u0014\u0013@dK/x\r\u0010Jr\\\u0004O\u0018y\u000b?M\u0002`J\u0010\u0019cK\u000eeJ\u001fAy]\u0002a\u0001R^v@\ba\u0017RlbG\u0001i6\u000fZe}\u0002l\u0014.Kd^\u0002c\u0017\u0019~eA\u001dh\u0016\bGr])d\u0005\u0010Ap+M\u0002`K\u0010\u0019cK\u000eeK\u001fAy]\u0002a\u0001S\\r]\u0002x\u0016\u001fKd\u0001\u0015`\b\u0019BrC\bc\u0010RI~H"
         .length();
      char var1 = '%';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 8;
         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;
                     DEFAULT_VARIABLE_PREFIX = b[23];
                     VARIABLE_WSA_NAMESPACE = var9[22];
                     VARIABLE_RSTR_RESPONSE = var9[4];
                     VARIABLE_RSTR_WSA_ACTION = var9[5];
                     ASSERTION_BASIC_NAME = var9[1];
                     META_INITIALIZED = BuildRstrSoapResponse.class.getName() + b[10];
                     return;
                  }

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

                  var2 = "%y\u001avd,-1`\u001f|b\u0016\u00004e\u0005qf8\tU\u0017c\u001fscu\ruE9^Wu\u001e0e\u0006pi&\tuu\u0019qs4\u0005;\u007f\u0018x'4L\u0007s\u0007jb&\u0018\u0006s\u0015ju<\u0018,B\u0019tb;>0e\u0006pi&\tus\u001azj0\u0002!6\u001fq'\u0006#\u0014FV}h1\u0015{";
                  var4 = "%y\u001avd,-1`\u001f|b\u0016\u00004e\u0005qf8\tU\u0017c\u001fscu\ruE9^Wu\u001e0e\u0006pi&\tuu\u0019qs4\u0005;\u007f\u0018x'4L\u0007s\u0007jb&\u0018\u0006s\u0015ju<\u0018,B\u0019tb;>0e\u0006pi&\tus\u001azj0\u0002!6\u001fq'\u0006#\u0014FV}h1\u0015{"
                     .length();
                  var1 = 21;
                  var7 = -1;
            }

            var10000 = 115;
            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] ^ 31);
      }

      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 -> 38;
            case 1 -> 101;
            case 2 -> 5;
            case 3 -> 108;
            case 4 -> 116;
            case 5 -> 38;
            default -> 31;
         });
      }

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