package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.util.EnumTranslator;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class AuthenticationProperties implements Serializable {
   public static final AuthenticationProperties.Method METHOD_BASIC;
   public static final AuthenticationProperties.Method METHOD_FORM;
   private AuthenticationProperties.Method method;
   private String formTarget;
   private String usernameFieldname;
   private String passwordFieldname;
   private boolean requestForm;
   private boolean redirectAfterSubmit;
   private boolean enableCookies;
   private boolean copyFormFields;
   private Map<String, String> additionalFields;
   static final long serialVersionUID = -1840295791986203791L;

   public static AuthenticationProperties.Method forKeyName(String var0) {
      AuthenticationProperties.Method var1 = null;
      if (METHOD_BASIC.getId().equals(var0)) {
         var1 = METHOD_BASIC;
      } else if (METHOD_FORM.getId().equals(var0)) {
         var1 = METHOD_FORM;
      }

      return var1;
   }

   public AuthenticationProperties() {
      this.additionalFields = Collections.emptyMap();
      this.setMethod(METHOD_BASIC);
   }

   public AuthenticationProperties(AuthenticationProperties var1) {
      this.setAuthenticationProperties(var1);
   }

   public void setAuthenticationProperties(AuthenticationProperties var1) {
      this.setMethod(var1.getMethod());
      this.setFormTarget(var1.getFormTarget());
      this.setUsernameFieldname(var1.getUsernameFieldname());
      this.setPasswordFieldname(var1.getPasswordFieldname());
      this.setRequestForm(var1.isRequestForm());
      this.setRedirectAfterSubmit(var1.isRedirectAfterSubmit());
      this.setEnableCookies(var1.isEnableCookies());
      this.setCopyFormFields(var1.isCopyFormFields());
      this.setAdditionalFields(var1.getAdditionalFields());
   }

   public AuthenticationProperties.Method getMethod() {
      return this.method;
   }

   public void setMethod(AuthenticationProperties.Method var1) {
      this.method = var1;
   }

   public String getFormTarget() {
      return this.formTarget;
   }

   public void setFormTarget(String var1) {
      this.formTarget = var1;
   }

   public String getUsernameFieldname() {
      return this.usernameFieldname;
   }

   public void setUsernameFieldname(String var1) {
      this.usernameFieldname = var1;
      if (this.usernameFieldname != null && this.usernameFieldname.trim().length() == 0) {
         this.usernameFieldname = null;
      }
   }

   public String getPasswordFieldname() {
      return this.passwordFieldname;
   }

   public void setPasswordFieldname(String var1) {
      this.passwordFieldname = var1;
      if (this.passwordFieldname != null && this.passwordFieldname.trim().length() == 0) {
         this.passwordFieldname = null;
      }
   }

   public boolean isRequestForm() {
      return this.requestForm;
   }

   public void setRequestForm(boolean var1) {
      this.requestForm = var1;
   }

   public boolean isRedirectAfterSubmit() {
      return this.redirectAfterSubmit;
   }

   public void setRedirectAfterSubmit(boolean var1) {
      this.redirectAfterSubmit = var1;
   }

   public boolean isEnableCookies() {
      return this.enableCookies;
   }

   public void setEnableCookies(boolean var1) {
      this.enableCookies = var1;
   }

   public boolean isCopyFormFields() {
      return this.copyFormFields;
   }

   public void setCopyFormFields(boolean var1) {
      this.copyFormFields = var1;
   }

   public Map<String, String> getAdditionalFields() {
      return Collections.unmodifiableMap(this.additionalFields);
   }

   public void setAdditionalFields(Map<String, String> var1) {
      this.additionalFields = new HashMap<>(var1);
   }

   static {
      String[] var0 = new String[2];
      int var4 = 0;
      String var3 = "rn\u001d,)\u0004v`\u001c(";
      int var5 = "rn\u001d,)\u0004v`\u001c(".length();
      char var2 = 5;
      int var1 = -1;

      while (true) {
         String var10002 = a(89, a(var3.substring(++var1, var1 + var2)));
         byte var10001 = -1;
         var0[var4++] = var10002;
         if ((var1 += var2) >= var5) {
            METHOD_BASIC = new AuthenticationProperties.Method(var0[0]);
            METHOD_FORM = new AuthenticationProperties.Method(var0[1]);
            return;
         }

         var2 = var3.charAt(var1);
      }
   }

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

      return var10000;
   }

   private static String a(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 -> 86;
            case 2 -> 55;
            case 3 -> 28;
            case 4 -> 19;
            case 5 -> 96;
            default -> 76;
         });
      }

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

   public static final class Method implements Serializable {
      private String id;
      static final long serialVersionUID = 3986025821615334469L;
      private static final String[] a;

      @Override
      public boolean equals(Object var1) {
         boolean var2 = false;
         if (var1 == this) {
            var2 = true;
         } else if (var1 instanceof AuthenticationProperties.Method var3) {
            var2 = var3.id.equals(this.id);
         }

         return var2;
      }

      @Override
      public int hashCode() {
         return this.id != null ? this.id.hashCode() : 0;
      }

      public String getId() {
         return this.id;
      }

      @Override
      public String toString() {
         String[] var1 = a;
         return var1[1] + this.id + var1[0];
      }

      public static EnumTranslator getEnumTranslator() {
         return new e();
      }

      private Method(String var1) {
         this.id = var1;
      }

      static {
         String[] var5 = new String[2];
         int var3 = 0;
         String var2 = "E=\u000b/qd\u0017Nt\u0000\u000bp-X";
         int var4 = "E=\u000b/qd\u0017Nt\u0000\u000bp-X".length();
         char var1 = 2;
         int var0 = -1;

         while (true) {
            String var10002 = a(106, a(var2.substring(++var0, var0 + var1)));
            byte var10001 = -1;
            var5[var3++] = var10002;
            if ((var0 += var1) >= var4) {
               a = var5;
               return;
            }

            var1 = var2.charAt(var0);
         }
      }

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

         return var10000;
      }

      private static String a(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 -> 8;
               case 1 -> 126;
               case 2 -> 122;
               case 3 -> 21;
               case 4 -> 75;
               case 5 -> 122;
               default -> 66;
            });
         }

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