package com.l7tech.server.identity.ldap;

import com.l7tech.identity.BadCredentialsException;
import com.l7tech.identity.UserManager;
import com.l7tech.identity.ldap.BindOnlyLdapUser;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.server.identity.AuthenticationResult;

public interface BindOnlyLdapUserManager extends UserManager<BindOnlyLdapUser> {
   boolean authenticateBasic(String var1, String var2) throws BadCredentialsException;

   AuthenticationResult authenticatePasswordCredentials(LoginCredentials var1) throws BadCredentialsException, BindOnlyLdapUserManager.BadUsernamePatternException;

   String makeDn(String var1) throws BindOnlyLdapUserManager.BadUsernamePatternException;

   void configure(BindOnlyLdapIdentityProvider var1);

   void setLdapRuntimeConfig(LdapRuntimeConfig var1);

   class BadUsernamePatternException extends Exception {
      static final long serialVersionUID = -3560756124405565458L;
      private static final String a;

      public BadUsernamePatternException() {
         super(a);
      }

      static {
         String var10002 = a(
            126,
            a(
               "e jGp\u001cRUslZp\t^Y=|\u0015}\u0015^B2lA{\u000fL\u00107fF\u007f\u0011S_$jQ>\u001fF\u00100zGl\u0018QDs\\\\s\rSUsCq_-\u001fE jGp\u001cRUs\u007fTj\tZB="
            )
         );
         byte var10001 = -1;
         a = var10002;
      }

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

         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 -> 78;
               case 1 -> 45;
               case 2 -> 113;
               case 3 -> 75;
               case 4 -> 96;
               case 5 -> 3;
               default -> 65;
            });
         }

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