package com.l7tech.policy.assertion.credential.wss;

import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.AssertionNodeNameFactory;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.wsp.WspSensitive;
import com.l7tech.search.Dependency;

public class WssDigest extends WssCredentialSourceAssertion {
   private boolean requireNonce = false;
   private boolean requireTimestamp = false;
   private String requiredUsername = null;
   private String requiredPassword = null;
   static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   static final long serialVersionUID = -5661675700168377892L;
   private static final String[] c;

   public boolean isRequireNonce() {
      return this.requireNonce;
   }

   public void setRequireNonce(boolean var1) {
      this.requireNonce = var1;
   }

   public boolean isRequireTimestamp() {
      return this.requireTimestamp;
   }

   public void setRequireTimestamp(boolean var1) {
      this.requireTimestamp = var1;
   }

   @WspSensitive
   @Dependency(methodReturnType = Dependency.MethodReturnType.VARIABLE, type = Dependency.DependencyType.SECURE_PASSWORD)
   public String getRequiredPassword() {
      return this.requiredPassword;
   }

   public void setRequiredPassword(String var1) {
      this.requiredPassword = var1;
   }

   public String getRequiredUsername() {
      return this.requiredUsername;
   }

   public void setRequiredUsername(String var1) {
      this.requiredUsername = var1;
   }

   @Override
   protected WssCredentialSourceAssertion.VariablesUsed doGetVariablesUsed() {
      return super.doGetVariablesUsed().withExpressions(this.requiredUsername, this.requiredPassword);
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      String[] var2 = c;
      var1.put(var2[8], var2[7]);
      var1.put(var2[3], var2[10]);
      var1.put(var2[12], new String[]{var2[0]});
      var1.put(var2[4], var2[5]);
      var1.put(var2[2], policyNameFactory);
      var1.put(var2[1], var2[9]);
      var1.put(var2[6], Boolean.FALSE);
      return var1;
   }

   static {
      String[] var5 = new String[13];
      int var3 = 0;
      String var2 = "~=\u0005\u000b. 6p0\u0012\u001c2?\u0019o,\t\u001e8!\u0001v;\u0015+9:\u0001p,%\u0002< \u0006q?\u000b\u000b\u0015o1\n\u0007>*;p:\u0003 <>\u0010Y?\u0005\u001a2!\f\u000b{;\u0015\r/:\u0005k7\t\u0000\u000fo?\n\u000b)'\u0010Q1\u0002\u000b\u00140\u001aq/|1\u000bA1d\u0001z=\u000eA><\u001bl1\n\u000br!\u0010l1\u0013\u001c>6\u00060?\u0013\u001a56\u001bk7\u0005\u000f):\u001aqp\u0001\u0007;\fj-\u0003\n\u001f*6s7\u0003\u0000)/M;\u0017\u001b4!\u0010?\t5C\u000e6\u0016j,\u000f\u001a$s%~-\u0015\u00192!\u0011?\u001a\u000f\t8 \u0001?\u001d\u0014\u000b96\u001bk7\u0007\u0002.\tl6\t\u001c)\u001d\u0014r;<|1\u000b@1d\u0001z=\u000e@><\u001bl1\n\u000bs#\u0014q;\n\u001ds\u0004\u0006l\u001a\u000f\t8 \u0001^-\u0015\u000b/'\u001cp06\u001c2#\u0010m*\u000f\u000b.\u0017\u001c~2\t\tEK6\u0003N/6\u0004j;\u0015\u001a2!Ur+\u0015\u001a}#\u0007p(\u000f\n8s1V\u0019#=\ts\u0016m;\u0002\u000b3'\u001c~2\u0015N4=U~~1=\u000es l;\u0014\u0000<>\u0010?\n\t\u00058=";
      int var4 = "~=\u0005\u000b. 6p0\u0012\u001c2?\u0019o,\t\u001e8!\u0001v;\u0015+9:\u0001p,%\u0002< \u0006q?\u000b\u000b\u0015o1\n\u0007>*;p:\u0003 <>\u0010Y?\u0005\u001a2!\f\u000b{;\u0015\r/:\u0005k7\t\u0000\u000fo?\n\u000b)'\u0010Q1\u0002\u000b\u00140\u001aq/|1\u000bA1d\u0001z=\u000eA><\u001bl1\n\u000br!\u0010l1\u0013\u001c>6\u00060?\u0013\u001a56\u001bk7\u0005\u000f):\u001aqp\u0001\u0007;\fj-\u0003\n\u001f*6s7\u0003\u0000)/M;\u0017\u001b4!\u0010?\t5C\u000e6\u0016j,\u000f\u001a$s%~-\u0015\u00192!\u0011?\u001a\u000f\t8 \u0001?\u001d\u0014\u000b96\u001bk7\u0007\u0002.\tl6\t\u001c)\u001d\u0014r;<|1\u000b@1d\u0001z=\u000e@><\u001bl1\n\u000bs#\u0014q;\n\u001ds\u0004\u0006l\u001a\u000f\t8 \u0001^-\u0015\u000b/'\u001cp06\u001c2#\u0010m*\u000f\u000b.\u0017\u001c~2\t\tEK6\u0003N/6\u0004j;\u0015\u001a2!Ur+\u0015\u001a}#\u0007p(\u000f\n8s1V\u0019#=\ts\u0016m;\u0002\u000b3'\u001c~2\u0015N4=U~~1=\u000es l;\u0014\u0000<>\u0010?\n\t\u00058="
         .length();
      char var1 = '\r';
      int var7 = -1;

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

         while (true) {
            String var8 = c(var10000, c(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     baseName = c[11];
                     policyNameFactory = new c();
                     return;
                  }

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

                  var2 = "\u000fyUYvcR}Kw\u0001LtT(nMXf1g<oW[pcS}XMKzbC}_VI{tY)uE@l\u000e-}HIkeR\u001bsHHzcD";
                  var4 = "\u000fyUYvcR}Kw\u0001LtT(nMXf1g<oW[pcS}XMKzbC}_VI{tY)uE@l\u000e-}HIkeR\u001bsHHzcD".length();
                  var1 = '/';
                  var7 = -1;
            }

            var10000 = 122;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static char[] c(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 77);
      }

      return var10000;
   }

   private static String c(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 -> 39;
            case 1 -> 102;
            case 2 -> 94;
            case 3 -> 86;
            case 4 -> 101;
            case 5 -> 107;
            default -> 77;
         });
      }

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