package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.MessageTargetableAssertion;
import com.l7tech.policy.variable.DataType;
import com.l7tech.policy.variable.VariableMetadata;
import com.l7tech.util.TimeUnit;

public class CreateSecurityContextToken extends MessageTargetableAssertion {
   public static final long DEFAULT_SESSION_DURATION = 7200000L;
   public static final long MIN_SESSION_DURATION = 60000L;
   public static final long MAX_SESSION_DURATION = 86400000L;
   public static final String DEFAULT_VARIABLE_PREFIX;
   public static final String VARIABLE_ISSUED_SCT;
   private static final String ASSERTION_BASIC_NAME;
   private static final String META_INITIALIZED;
   private String variablePrefix;
   private TimeUnit timeUnit;
   private long lifetime;
   private int keySize;
   private boolean useSystemDefaultSessionDuration;
   static final long serialVersionUID = -5830743023419319964L;
   private static final String[] b;

   public CreateSecurityContextToken() {
      this.variablePrefix = b[3];
      this.timeUnit = TimeUnit.MINUTES;
      this.lifetime = 7200000L;
      this.useSystemDefaultSessionDuration = true;
   }

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

      return this.variablePrefix;
   }

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

   public String[] getVariableSuffixes() {
      return new String[]{b[1]};
   }

   public int getKeySize() {
      return this.keySize;
   }

   public void setKeySize(int var1) {
      this.keySize = var1;
   }

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

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

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

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

   public boolean isUseSystemDefaultSessionDuration() {
      return this.useSystemDefaultSessionDuration;
   }

   public void setUseSystemDefaultSessionDuration(boolean var1) {
      this.useSystemDefaultSessionDuration = var1;
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = super.defaultMeta();
      if (Boolean.TRUE.equals(var1.get(META_INITIALIZED))) {
         return var1;
      }

      String[] var2 = b;
      var1.put(var2[9], var2[19]);
      var1.put(var2[17], var2[4]);
      var1.put(var2[7], new String[]{var2[14]});
      var1.put(var2[8], var2[20]);
      var1.put(var2[13], var2[22]);
      var1.put(var2[6], var2[21]);
      var1.put(var2[15], var2[12]);
      var1.put(var2[18], var2[2]);
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   @Override
   protected MessageTargetableAssertion.VariablesSet doGetVariablesSet() {
      return super.doGetVariablesSet().withVariables(new VariableMetadata(this.variablePrefix + b[0], false, false, null, false, DataType.STRING));
   }

   static {
      String[] var5 = new String[23];
      int var3 = 0;
      String var2 = "\u0018Ob=}\b2eeE\t_Ub;m\t\u0005ur)eCr;z\u0004\"O\u0006R!f\u00193NR1\u001ag\u00063X\u0006R<m\f\"YT1\u001ez\u0002&STe'm\u001e\nEEe\f}\u0004:RCcTuTt/|\bvW\u0006b+k\u0018$_Rhnk\u00028BCi:(\u00199]C\u007fnk\u00028BGx a\u00031\u0016G1=m\u000e#DC1-g\u0003 STb/|\u00049X\u0006b+{\u001e?YH1'l\b8BOw'm\u001fx\u001duTt/|\bveCr;z\u0004\"O\u0006R!f\u00193NR1\u001ag\u00063X\u000eFI}'k\u0014\u0018YBt\u0007k\u00028\u000eFG}+|\u00193pI}*m\u001f%\u000fFG}+|\u00193xIu+A\u000e9X\tEN~<|#7[C\nEEe\f}\u0004:RCc\t_Ub;m\t\u0005urDUI|`dZ\"SEy`k\u00028EI}+&\u001d7XC}=&.$SGe+[\b5CTx:q.9XRt6|99]C\u007f\u001ez\u0002&STe'm\u001e\u0012_G}!o\u0015FI}'k\u0014\u0017RPx-m.:WUb i\u00003\u000bNK}\u001dm\u000e#DOe7\u0019FT~>m\u001f\"_Cb\u000bl\u0004\"YTR\"i\u001e%XG|+\u0014\u0018Kt:i\t7BGX a\u0019?WJx4m\t\u000bRCb-z\u0004&BO~ \u0014FT~>m\u001f\"_Cb\u000fk\u0019?YH_/e\b\u001duTt/|\bveCr;z\u0004\"O\u0006R!f\u00193NR1\u001ag\u00063X&UI|adZ\"SEyak\u00028EI}+'\u001f3EId<k\b%\u0019Rc;{\u0019xFHv";
      int var4 = "\u0018Ob=}\b2eeE\t_Ub;m\t\u0005ur)eCr;z\u0004\"O\u0006R!f\u00193NR1\u001ag\u00063X\u0006R<m\f\"YT1\u001ez\u0002&STe'm\u001e\nEEe\f}\u0004:RCcTuTt/|\bvW\u0006b+k\u0018$_Rhnk\u00028BCi:(\u00199]C\u007fnk\u00028BGx a\u00031\u0016G1=m\u000e#DC1-g\u0003 STb/|\u00049X\u0006b+{\u001e?YH1'l\b8BOw'm\u001fx\u001duTt/|\bveCr;z\u0004\"O\u0006R!f\u00193NR1\u001ag\u00063X\u000eFI}'k\u0014\u0018YBt\u0007k\u00028\u000eFG}+|\u00193pI}*m\u001f%\u000fFG}+|\u00193xIu+A\u000e9X\tEN~<|#7[C\nEEe\f}\u0004:RCc\t_Ub;m\t\u0005urDUI|`dZ\"SEy`k\u00028EI}+&\u001d7XC}=&.$SGe+[\b5CTx:q.9XRt6|99]C\u007f\u001ez\u0002&STe'm\u001e\u0012_G}!o\u0015FI}'k\u0014\u0017RPx-m.:WUb i\u00003\u000bNK}\u001dm\u000e#DOe7\u0019FT~>m\u001f\"_Cb\u000bl\u0004\"YTR\"i\u001e%XG|+\u0014\u0018Kt:i\t7BGX a\u0019?WJx4m\t\u000bRCb-z\u0004&BO~ \u0014FT~>m\u001f\"_Cb\u000fk\u0019?YH_/e\b\u001duTt/|\bveCr;z\u0004\"O\u0006R!f\u00193NR1\u001ag\u00063X&UI|adZ\"SEyak\u00028EI}+'\u001f3EId<k\b%\u0019Rc;{\u0019xFHv"
         .length();
      char var1 = '\n';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 127;
         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[3];
                     ASSERTION_BASIC_NAME = var9[5];
                     VARIABLE_ISSUED_SCT = var9[11];
                     META_INITIALIZED = CreateSecurityContextToken.class.getName() + b[16];
                     return;
                  }

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

                  var2 = "3/\u001a\u0007\u0002<D5#\u001f\u0007\rd^#/\u001bMAyU#/\u0002Z\rnC\u007f4\u0005]\u001d\u007f\u001e .\u0010\u000415\u0003G";
                  var4 = "3/\u001a\u0007\u0002<D5#\u001f\u0007\rd^#/\u001bMAyU#/\u0002Z\rnC\u007f4\u0005]\u001d\u007f\u001e .\u0010\u000415\u0003G".length();
                  var1 = '&';
                  var7 = -1;
            }

            var10000 = 25;
            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] ^ 41);
      }

      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 -> 73;
            case 1 -> 89;
            case 2 -> 110;
            case 3 -> 49;
            case 4 -> 119;
            case 5 -> 18;
            default -> 41;
         });
      }

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