package com.l7tech.identity.ldap;

import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.Goid;
import java.io.Serializable;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.logging.Level;
import java.util.logging.Logger;

public class LdapUser extends LdapIdentityBase implements User, Serializable {
   private static final Logger logger;
   private static final String[] HASH_PREFIXES;
   private String login;
   private String password;
   private String firstName;
   private String lastName;
   private String email;
   private String department;
   private byte[] ldapCertBytes;
   private transient X509Certificate cachedCert;
   static final long serialVersionUID = 8719418257306299341L;
   private static final String[] b;

   public LdapUser() {
      this(IdentityProviderConfig.DEFAULT_GOID, null, null);
   }

   public LdapUser(Goid var1, String var2, String var3) {
      super(var1, var2, var3);
   }

   @Override
   public String getLogin() {
      return this.login;
   }

   @Override
   public String getFirstName() {
      return this.firstName;
   }

   @Override
   public String getLastName() {
      return this.lastName;
   }

   @Override
   public String getEmail() {
      return this.email;
   }

   @Override
   public String getDepartment() {
      return this.department;
   }

   @Override
   public String getSubjectDn() {
      return this.dn;
   }

   public void setLogin(String var1) {
      this.login = var1;
   }

   public void setPassword(String var1) throws IllegalStateException {
      if (var1 != null) {
         String var2 = var1.toLowerCase();

         for (String var6 : HASH_PREFIXES) {
            try {
               if (var2.startsWith(var6)) {
                  logger.log(Level.FINE, b[10], var6);
                  this.password = null;
                  return;
               }
            } catch (IllegalStateException var7) {
               throw var7;
            }
         }
      }

      this.password = var1;
   }

   public String getPassword() {
      return this.password;
   }

   public void setFirstName(String var1) {
      this.firstName = var1;
   }

   public void setLastName(String var1) {
      this.lastName = var1;
   }

   public void setEmail(String var1) {
      this.email = var1;
   }

   public void setDepartment(String var1) {
      this.department = var1;
   }

   @Override
   public boolean equals(Object param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: aload 1
      // 002: if_acmpne 008
      // 005: bipush 1
      // 006: ireturn
      // 007: athrow
      // 008: aload 1
      // 009: ifnull 01b
      // 00c: aload 0
      // 00d: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 010: aload 1
      // 011: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 014: if_acmpeq 01e
      // 017: goto 01b
      // 01a: athrow
      // 01b: bipush 0
      // 01c: ireturn
      // 01d: athrow
      // 01e: aload 0
      // 01f: aload 1
      // 020: invokespecial com/l7tech/identity/ldap/LdapIdentityBase.equals (Ljava/lang/Object;)Z
      // 023: ifne 029
      // 026: bipush 0
      // 027: ireturn
      // 028: athrow
      // 029: aload 1
      // 02a: checkcast com/l7tech/identity/ldap/LdapUser
      // 02d: astore 2
      // 02e: aload 0
      // 02f: getfield com/l7tech/identity/ldap/LdapUser.department Ljava/lang/String;
      // 032: ifnull 04b
      // 035: aload 0
      // 036: getfield com/l7tech/identity/ldap/LdapUser.department Ljava/lang/String;
      // 039: aload 2
      // 03a: getfield com/l7tech/identity/ldap/LdapUser.department Ljava/lang/String;
      // 03d: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 040: ifne 055
      // 043: goto 047
      // 046: athrow
      // 047: goto 052
      // 04a: athrow
      // 04b: aload 2
      // 04c: getfield com/l7tech/identity/ldap/LdapUser.department Ljava/lang/String;
      // 04f: ifnull 055
      // 052: bipush 0
      // 053: ireturn
      // 054: athrow
      // 055: aload 0
      // 056: getfield com/l7tech/identity/ldap/LdapUser.email Ljava/lang/String;
      // 059: ifnull 072
      // 05c: aload 0
      // 05d: getfield com/l7tech/identity/ldap/LdapUser.email Ljava/lang/String;
      // 060: aload 2
      // 061: getfield com/l7tech/identity/ldap/LdapUser.email Ljava/lang/String;
      // 064: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 067: ifne 07c
      // 06a: goto 06e
      // 06d: athrow
      // 06e: goto 079
      // 071: athrow
      // 072: aload 2
      // 073: getfield com/l7tech/identity/ldap/LdapUser.email Ljava/lang/String;
      // 076: ifnull 07c
      // 079: bipush 0
      // 07a: ireturn
      // 07b: athrow
      // 07c: aload 0
      // 07d: getfield com/l7tech/identity/ldap/LdapUser.firstName Ljava/lang/String;
      // 080: ifnull 099
      // 083: aload 0
      // 084: getfield com/l7tech/identity/ldap/LdapUser.firstName Ljava/lang/String;
      // 087: aload 2
      // 088: getfield com/l7tech/identity/ldap/LdapUser.firstName Ljava/lang/String;
      // 08b: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 08e: ifne 0a3
      // 091: goto 095
      // 094: athrow
      // 095: goto 0a0
      // 098: athrow
      // 099: aload 2
      // 09a: getfield com/l7tech/identity/ldap/LdapUser.firstName Ljava/lang/String;
      // 09d: ifnull 0a3
      // 0a0: bipush 0
      // 0a1: ireturn
      // 0a2: athrow
      // 0a3: aload 0
      // 0a4: getfield com/l7tech/identity/ldap/LdapUser.lastName Ljava/lang/String;
      // 0a7: ifnull 0c0
      // 0aa: aload 0
      // 0ab: getfield com/l7tech/identity/ldap/LdapUser.lastName Ljava/lang/String;
      // 0ae: aload 2
      // 0af: getfield com/l7tech/identity/ldap/LdapUser.lastName Ljava/lang/String;
      // 0b2: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0b5: ifne 0ca
      // 0b8: goto 0bc
      // 0bb: athrow
      // 0bc: goto 0c7
      // 0bf: athrow
      // 0c0: aload 2
      // 0c1: getfield com/l7tech/identity/ldap/LdapUser.lastName Ljava/lang/String;
      // 0c4: ifnull 0ca
      // 0c7: bipush 0
      // 0c8: ireturn
      // 0c9: athrow
      // 0ca: aload 0
      // 0cb: getfield com/l7tech/identity/ldap/LdapUser.login Ljava/lang/String;
      // 0ce: ifnull 0e7
      // 0d1: aload 0
      // 0d2: getfield com/l7tech/identity/ldap/LdapUser.login Ljava/lang/String;
      // 0d5: aload 2
      // 0d6: getfield com/l7tech/identity/ldap/LdapUser.login Ljava/lang/String;
      // 0d9: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0dc: ifne 0f1
      // 0df: goto 0e3
      // 0e2: athrow
      // 0e3: goto 0ee
      // 0e6: athrow
      // 0e7: aload 2
      // 0e8: getfield com/l7tech/identity/ldap/LdapUser.login Ljava/lang/String;
      // 0eb: ifnull 0f1
      // 0ee: bipush 0
      // 0ef: ireturn
      // 0f0: athrow
      // 0f1: aload 0
      // 0f2: getfield com/l7tech/identity/ldap/LdapUser.password Ljava/lang/String;
      // 0f5: ifnull 10e
      // 0f8: aload 0
      // 0f9: getfield com/l7tech/identity/ldap/LdapUser.password Ljava/lang/String;
      // 0fc: aload 2
      // 0fd: getfield com/l7tech/identity/ldap/LdapUser.password Ljava/lang/String;
      // 100: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 103: ifne 118
      // 106: goto 10a
      // 109: athrow
      // 10a: goto 115
      // 10d: athrow
      // 10e: aload 2
      // 10f: getfield com/l7tech/identity/ldap/LdapUser.password Ljava/lang/String;
      // 112: ifnull 118
      // 115: bipush 0
      // 116: ireturn
      // 117: athrow
      // 118: bipush 1
      // 119: ireturn
      // try (0 -> 5): 5 java/lang/IllegalStateException
      // try (6 -> 13): 14 java/lang/IllegalStateException
      // try (8 -> 17): 17 java/lang/IllegalStateException
      // try (18 -> 24): 24 java/lang/IllegalStateException
      // try (28 -> 37): 38 java/lang/IllegalStateException
      // try (31 -> 40): 40 java/lang/IllegalStateException
      // try (41 -> 46): 46 java/lang/IllegalStateException
      // try (47 -> 56): 57 java/lang/IllegalStateException
      // try (50 -> 59): 59 java/lang/IllegalStateException
      // try (60 -> 65): 65 java/lang/IllegalStateException
      // try (66 -> 75): 76 java/lang/IllegalStateException
      // try (69 -> 78): 78 java/lang/IllegalStateException
      // try (79 -> 84): 84 java/lang/IllegalStateException
      // try (85 -> 94): 95 java/lang/IllegalStateException
      // try (88 -> 97): 97 java/lang/IllegalStateException
      // try (98 -> 103): 103 java/lang/IllegalStateException
      // try (104 -> 113): 114 java/lang/IllegalStateException
      // try (107 -> 116): 116 java/lang/IllegalStateException
      // try (117 -> 122): 122 java/lang/IllegalStateException
      // try (123 -> 132): 133 java/lang/IllegalStateException
      // try (126 -> 135): 135 java/lang/IllegalStateException
      // try (136 -> 141): 141 java/lang/IllegalStateException
   }

   @Override
   public int hashCode() {
      int var1 = super.hashCode();

      int var10000;
      int var10001;
      label87: {
         try {
            var10000 = 31 * var1;
            if (this.login != null) {
               var10001 = this.login.hashCode();
               break label87;
            }
         } catch (IllegalStateException var7) {
            throw var7;
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      label79: {
         try {
            var10000 = 31 * var1;
            if (this.password != null) {
               var10001 = this.password.hashCode();
               break label79;
            }
         } catch (IllegalStateException var6) {
            throw var6;
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      label71: {
         try {
            var10000 = 31 * var1;
            if (this.firstName != null) {
               var10001 = this.firstName.hashCode();
               break label71;
            }
         } catch (IllegalStateException var5) {
            throw var5;
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      label63: {
         try {
            var10000 = 31 * var1;
            if (this.lastName != null) {
               var10001 = this.lastName.hashCode();
               break label63;
            }
         } catch (IllegalStateException var4) {
            throw var4;
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      label55: {
         try {
            var10000 = 31 * var1;
            if (this.email != null) {
               var10001 = this.email.hashCode();
               break label55;
            }
         } catch (IllegalStateException var3) {
            throw var3;
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      try {
         var10000 = 31 * var1;
         if (this.department != null) {
            return var10000 + this.department.hashCode();
         }
      } catch (IllegalStateException var2) {
         throw var2;
      }

      return var10000 + 0;
   }

   @Override
   public String toString() {
      String var10000 = this.getName();
      String var10001 = this.getFirstName();
      String var10002 = this.getLastName();
      String var1 = String.valueOf(this.getProviderId());
      String var2 = this.getLogin();
      String var3 = var10002;
      String var4 = var10001;
      String var5 = var10000;
      String[] var6 = b;
      return var6[0] + var5 + var6[4] + var4 + var6[1] + var3 + var6[7] + var2 + var6[2] + var1;
   }

   public void copyFrom(User var1) {
      LdapUser var2 = (LdapUser)var1;
      this.setDn(var2.getDn());
      this.setCn(var2.getCn());
      this.setProviderId(var2.getProviderId());
      this.setLogin(var2.getLogin());
      this.setDepartment(var2.getDepartment());
      this.setEmail(var2.getEmail());
      this.setFirstName(var2.getFirstName());
      this.setLastName(var2.getLastName());
      this.setPassword(var2.getPassword());
      this.setAttributes(var2.getAttributes());
      this.setLdapCertBytes(var2.getLdapCertBytes());
   }

   public byte[] getLdapCertBytes() {
      return this.ldapCertBytes;
   }

   public void setLdapCertBytes(byte[] var1) {
      this.ldapCertBytes = var1;
   }

   public synchronized X509Certificate getCertificate() throws CertificateException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: getfield com/l7tech/identity/ldap/LdapUser.cachedCert Ljava/security/cert/X509Certificate;
      // 04: ifnonnull 20
      // 07: aload 0
      // 08: getfield com/l7tech/identity/ldap/LdapUser.ldapCertBytes [B
      // 0b: ifnonnull 15
      // 0e: goto 12
      // 11: athrow
      // 12: aconst_null
      // 13: areturn
      // 14: athrow
      // 15: aload 0
      // 16: aload 0
      // 17: getfield com/l7tech/identity/ldap/LdapUser.ldapCertBytes [B
      // 1a: invokestatic com/l7tech/common/io/CertUtils.decodeCert ([B)Ljava/security/cert/X509Certificate;
      // 1d: putfield com/l7tech/identity/ldap/LdapUser.cachedCert Ljava/security/cert/X509Certificate;
      // 20: aload 0
      // 21: getfield com/l7tech/identity/ldap/LdapUser.cachedCert Ljava/security/cert/X509Certificate;
      // 24: areturn
      // try (0 -> 6): 7 java/security/cert/CertificateException
      // try (3 -> 10): 10 java/security/cert/CertificateException
   }

   public synchronized void setCertificate(X509Certificate var1) throws CertificateEncodingException {
      this.cachedCert = var1;
      this.ldapCertBytes = var1.getEncoded();
   }

   static {
      String[] var5 = new String[13];
      int var3 = 0;
      String var2 = "\u0007q\f\u001ft5_\u0001}\t\u001fqfN\nj\bEa,G\u0000\u007f\u0011\u001fTfJ\u0014K\u0012Tj,!mP\u0000\\}?\fn\u0017-Pkv\u000b\n\u007f\fT%\rn\u0017\u0011CwtB\u0000{\u0013x|?\u0006\u001fm\fU-\u007f\rn\u0017'Xjq_Dp\u0000\\}?\u0006\u001fm\u0012Yy\u007f\u0007\u001f}\u0013HhvV\bn\u0017-^\u007fkEY\u0006\u001fm\tP)\u007f\u0005\u001fs\u0005\u0004e*(Z a8rJ\u0017m\u0016^jf\u000b\rmAYyqC\u0001zAFqvCDeQL#\"B\u0003p\u000eCqlL";
      int var4 = "\u0007q\f\u001ft5_\u0001}\t\u001fqfN\nj\bEa,G\u0000\u007f\u0011\u001fTfJ\u0014K\u0012Tj,!mP\u0000\\}?\fn\u0017-Pkv\u000b\n\u007f\fT%\rn\u0017\u0011CwtB\u0000{\u0013x|?\u0006\u001fm\fU-\u007f\rn\u0017'Xjq_Dp\u0000\\}?\u0006\u001fm\u0012Yy\u007f\u0007\u001f}\u0013HhvV\bn\u0017-^\u007fkEY\u0006\u001fm\tP)\u007f\u0005\u001fs\u0005\u0004e*(Z a8rJ\u0017m\u0016^jf\u000b\rmAYyqC\u0001zAFqvCDeQL#\"B\u0003p\u000eCqlL"
         .length();
      char var1 = ')';
      int var7 = -1;

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

         while (true) {
            String var14 = b(b(var10000));
            switch (var10001) {
               case 0:
                  var5[var3++] = var14;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     logger = Logger.getLogger(LdapUser.class.getName());
                     String[] var10 = new String[7];
                     String[] var8 = b;
                     var10[0] = var8[9];
                     var10[1] = var8[12];
                     var10[2] = var8[3];
                     var10[3] = var8[11];
                     var10[4] = var8[8];
                     var10[5] = var8[5];
                     var10[6] = var8[6];
                     HASH_PREFIXES = var10;
                     return;
                  }

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

                  var2 = "\u001fm\tPe\u0005\u001fs\u0005\u0005e";
                  var4 = "\u001fm\tPe\u0005\u001fs\u0005\u0005e".length();
                  var1 = 5;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String b(char[] var0) {
      int var10002 = var0.length;
      char[] var10001 = var0;
      int var10000 = var10002;

      for (int var1 = 0; var10000 > var1; var1++) {
         var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
            case 0 -> 100;
            case 1 -> 30;
            case 2 -> 97;
            case 3 -> 49;
            case 4 -> 24;
            case 5 -> 2;
            default -> 43;
         });
      }

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