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 EstablishOutboundSecureConversation extends MessageTargetableAssertion {
   public static final long MIN_SESSION_DURATION = 60000L;
   public static final long MAX_SESSION_DURATION = 86400000L;
   public static final String VARIABLE_SESSION;
   private static final String ASSERTION_BASIC_NAME;
   private static final String META_INITIALIZED;
   private String serviceUrl;
   private String securityContextTokenVarName;
   private String clientEntropy;
   private String serverEntropy;
   private String keySize;
   private String fullKey;
   private String creationTime;
   private String expirationTime;
   private TimeUnit timeUnit;
   private long maxLifetime;
   private boolean useSystemDefaultSessionDuration;
   private boolean allowInboundMsgUsingSession;
   static final long serialVersionUID = 5426416046090133447L;
   private static final String[] b;

   public EstablishOutboundSecureConversation() {
      String[] var1 = b;
      this.securityContextTokenVarName = var1[28];
      this.clientEntropy = var1[14];
      this.serverEntropy = var1[4];
      this.keySize = var1[23];
      this.fullKey = var1[17];
      this.creationTime = var1[26];
      this.expirationTime = var1[8];
      this.timeUnit = TimeUnit.MINUTES;
      this.useSystemDefaultSessionDuration = true;
   }

   public String getServiceUrl() {
      return this.serviceUrl;
   }

   public void setServiceUrl(String var1) {
      this.serviceUrl = var1;
   }

   public String getSecurityContextTokenVarName() {
      return this.securityContextTokenVarName;
   }

   public void setSecurityContextTokenVarName(String var1) {
      this.securityContextTokenVarName = var1;
   }

   public String getClientEntropy() {
      return this.clientEntropy;
   }

   public void setClientEntropy(String var1) {
      this.clientEntropy = var1;
   }

   public String getServerEntropy() {
      return this.serverEntropy;
   }

   public void setServerEntropy(String var1) {
      this.serverEntropy = var1;
   }

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

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

   public String getFullKey() {
      return this.fullKey;
   }

   public void setFullKey(String var1) {
      this.fullKey = var1;
   }

   public String getCreationTime() {
      return this.creationTime;
   }

   public void setCreationTime(String var1) {
      this.creationTime = var1;
   }

   public String getExpirationTime() {
      return this.expirationTime;
   }

   public void setExpirationTime(String var1) {
      this.expirationTime = var1;
   }

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

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

   public long getMaxLifetime() {
      return this.maxLifetime;
   }

   public void setMaxLifetime(long var1) {
      this.maxLifetime = var1;
   }

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

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

   public boolean isAllowInboundMsgUsingSession() {
      return this.allowInboundMsgUsingSession;
   }

   public void setAllowInboundMsgUsingSession(boolean var1) {
      this.allowInboundMsgUsingSession = 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[12], var2[19]);
      var1.put(var2[5], var2[2]);
      var1.put(var2[10], new String[]{var2[27]});
      var1.put(var2[24], var2[1]);
      var1.put(var2[21], var2[16]);
      var1.put(var2[7], new h(this));
      var1.put(var2[13], var2[6]);
      var1.put(var2[15], var2[9]);
      var1.put(var2[11], var2[20]);
      var1.put(var2[0], new i(this));
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

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

   @Override
   protected MessageTargetableAssertion.VariablesUsed doGetVariablesUsed() {
      return super.doGetVariablesUsed()
         .withExpressions(this.serviceUrl, this.clientEntropy, this.serverEntropy, this.keySize, this.fullKey, this.creationTime, this.expirationTime)
         .withVariables(this.securityContextTokenVarName);
   }

   static {
      String[] var5 = new String[29];
      int var3 = 0;
      String var2 = "N,9H\u0000bk_/<E\u0002oRL\u00059@\u0004h{_ !N\u0011b&],8\u000e\u000f,I[ =\u000e\u0000tSM,9DLiXM, S\u0000~N\u00117'T\u0010o\u0013N-2){0!@\u0001wTM+un\u0016o_Q6;ECLn\u0013\u00100B\u0016iX\u001e\u0000:O\u0015~OM\"!H\fu\u0012Q6!C\fnSZ\u0010\u0016\u000f\u0010~NM*:O&\u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{R\u0006iK[1\u0010O\u0017iRN:(\u000bZ&&B\u0011rMJ*:O&],8\u000e\u000f,I[ =\u000e\u0000tSM,9DLiXM, S\u0000~N\u00117'T\u0010o\u0013N-2\u0015N,9H\u0000bsQ'0o\u0002vXx\"6U\fiD#\u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{D\u001bkTL:\u0001H\u000e~@M],8\u000f\u000f,I[ =\u000f\u0000tSM,9DMk\\P&9RM^NJ\"7M\nhUq6!C\fnSZ\u00100B\u0016iX},;W\u0006iN_7<N\rKOQ30S\u0017rXM\u0007<@\u000ftZ\u000eN\"9D\u0017oXx,9E\u0006iN\u0014N1:Q\u0006iIW&&`\u0000oTQ-\u001b@\u000e~\tM+:S\u0017U\\S&\u000eN,9H\u0000bsQ'0h\u0000tS\u001f\u001a8'D\u0012nXM7\u0017T\nwY[1{B\u000frXP7\u0010O\u0017iRN:(\u0019N1:Q\u0006iIW&&d\u0007rIQ1\u0016M\u0002hNP\"8D\u0004_6!N \u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{G\u0016wQu&,\\\u0012Q6!C\fnSZ\u0010\u0016\u000f\u0010~NM*:O&{0!@\u0001wTM+un\u0016o_Q6;ECHX]6'DCXRP50S\u0010zIW,;5q6!C\fnSZc\u0006D\u0000nO[c\u0016N\rmXL04U\ntS\u001e\u0006&U\u0002yQW0=L\u0006uI\u001e\u0013'N\u0013~OJ*0R\u0015N,9H\u0000b|Z5<B\u0006XQ_0&O\u0002vX&{0!@\u0001wTM+un\u0016o_Q6;ECHX]6'DCXRP50S\u0010zIW,; \u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{J\u0006bnW90\\\u000fN\"9D\u0017oXp,1D*xRP\u0014\u0010.0U\u0002\u007f\\J\"\u001cO\noT_/<[\u0006\u007f#\u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{B\u0011~\\J&\u0001H\u000e~@";
      int var4 = "N,9H\u0000bk_/<E\u0002oRL\u00059@\u0004h{_ !N\u0011b&],8\u000e\u000f,I[ =\u000e\u0000tSM,9DLiXM, S\u0000~N\u00117'T\u0010o\u0013N-2){0!@\u0001wTM+un\u0016o_Q6;ECLn\u0013\u00100B\u0016iX\u001e\u0000:O\u0015~OM\"!H\fu\u0012Q6!C\fnSZ\u0010\u0016\u000f\u0010~NM*:O&\u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{R\u0006iK[1\u0010O\u0017iRN:(\u000bZ&&B\u0011rMJ*:O&],8\u000e\u000f,I[ =\u000e\u0000tSM,9DLiXM, S\u0000~N\u00117'T\u0010o\u0013N-2\u0015N,9H\u0000bsQ'0o\u0002vXx\"6U\fiD#\u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{D\u001bkTL:\u0001H\u000e~@M],8\u000f\u000f,I[ =\u000f\u0000tSM,9DMk\\P&9RM^NJ\"7M\nhUq6!C\fnSZ\u00100B\u0016iX},;W\u0006iN_7<N\rKOQ30S\u0017rXM\u0007<@\u000ftZ\u000eN\"9D\u0017oXx,9E\u0006iN\u0014N1:Q\u0006iIW&&`\u0000oTQ-\u001b@\u000e~\tM+:S\u0017U\\S&\u000eN,9H\u0000bsQ'0h\u0000tS\u001f\u001a8'D\u0012nXM7\u0017T\nwY[1{B\u000frXP7\u0010O\u0017iRN:(\u0019N1:Q\u0006iIW&&d\u0007rIQ1\u0016M\u0002hNP\"8D\u0004_6!N \u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{G\u0016wQu&,\\\u0012Q6!C\fnSZ\u0010\u0016\u000f\u0010~NM*:O&{0!@\u0001wTM+un\u0016o_Q6;ECHX]6'DCXRP50S\u0010zIW,;5q6!C\fnSZc\u0006D\u0000nO[c\u0016N\rmXL04U\ntS\u001e\u0006&U\u0002yQW0=L\u0006uI\u001e\u0013'N\u0013~OJ*0R\u0015N,9H\u0000b|Z5<B\u0006XQ_0&O\u0002vX&{0!@\u0001wTM+un\u0016o_Q6;ECHX]6'DCXRP50S\u0010zIW,; \u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{J\u0006bnW90\\\u000fN\"9D\u0017oXp,1D*xRP\u0014\u0010.0U\u0002\u007f\\J\"\u001cO\noT_/<[\u0006\u007f#\u001a8'R\u0017io[0%N\rhXn1:B\u0006hNQ1{B\u0011~\\J&\u0001H\u000e~@"
         .length();
      char var1 = 27;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 16;
         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;
                     VARIABLE_SESSION = b[18];
                     ASSERTION_BASIC_NAME = var9[22];
                     META_INITIALIZED = EstablishOutboundSecureConversation.class.getName() + b[25];
                     return;
                  }

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

                  var2 = "'OX\u0013g\u0019)-K@9\u001b-Q@2P\u001f//MZ3g*.0AQ3q\u0015.qV[+g\u0014";
                  var4 = "'OX\u0013g\u0019)-K@9\u001b-Q@2P\u001f//MZ3g*.0AQ3q\u0015.qV[+g\u0014".length();
                  var1 = 11;
                  var7 = -1;
            }

            var10000 = 113;
            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] ^ 45);
      }

      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 -> 46;
            case 1 -> 83;
            case 2 -> 69;
            case 3 -> 49;
            case 4 -> 115;
            case 5 -> 11;
            default -> 45;
         });
      }

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