package com.l7tech.server;

import com.l7tech.identity.cert.CertEntryRow;
import com.l7tech.identity.cert.ClientCertManager;
import com.l7tech.objectmodel.FindException;
import com.l7tech.security.cert.X509Entity;
import com.l7tech.security.xml.SecurityTokenResolver;
import java.math.BigInteger;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.logging.Logger;
import javax.security.auth.x500.X500Principal;

public class UserCertificateResolver extends SecurityTokenResolverSupport implements SecurityTokenResolver {
   private final ClientCertManager a;
   private static final Logger b = Logger.getLogger(UserCertificateResolver.class.getName());
   private static final String c;

   public UserCertificateResolver(ClientCertManager var1) {
      this.a = var1;
   }

   @Override
   public X509Certificate lookup(String var1) {
      try {
         List var2 = this.a.findByThumbprint(var1);

         try {
            if (var2 != null && var2.size() >= 1) {
               return ((CertEntryRow)var2.get(0)).getCertificate();
            }
         } catch (FindException var3) {
            throw a(var3);
         }

         return null;
      } catch (FindException var4) {
         throw new RuntimeException(var4);
      }
   }

   @Override
   public X509Certificate lookupBySki(String var1) {
      try {
         List var2 = this.a.findBySki(var1);

         try {
            if (var2 != null && var2.size() >= 1) {
               return ((X509Entity)var2.get(0)).getCertificate();
            }
         } catch (FindException var3) {
            throw a(var3);
         }

         return null;
      } catch (FindException var4) {
         throw new RuntimeException(var4);
      }
   }

   @Override
   public X509Certificate lookupByIssuerAndSerial(X500Principal var1, BigInteger var2) {
      try {
         List var3 = this.a.findByIssuerAndSerial(var1, var2);

         try {
            if (var3 != null && var3.size() >= 1) {
               return ((X509Entity)var3.get(0)).getCertificate();
            }
         } catch (FindException var4) {
            throw a(var4);
         }

         return null;
      } catch (FindException var5) {
         throw new RuntimeException(var5);
      }
   }

   @Override
   public X509Certificate lookupByKeyName(String var1) {
      X500Principal var2;
      try {
         var2 = new X500Principal(var1);
      } catch (IllegalArgumentException var4) {
         b.fine(c);
         return null;
      }

      try {
         List var3 = this.a.findBySubjectDn(var2);

         try {
            if (var3 != null && var3.size() >= 1) {
               return ((X509Entity)var3.get(0)).getCertificate();
            }
         } catch (IllegalArgumentException var5) {
            throw a(var5);
         }

         return null;
      } catch (FindException var6) {
         throw new RuntimeException(var6);
      }
   }

   static {
      String var10002 = a(
         97, a("^Y;b%\u0006f\u0015U1\f*\u0004w\u0015]bZ%\u0007jQ\u001c\u001a\u0019t[SGU,O-\u001bbY\u001c1X6\u0002mR\u001co\u0001d\npFI/E*\f#[SbA%\u001f`]")
      );
      byte var10001 = -1;
      c = var10002;
   }

   private static Exception a(Exception var0) {
      return var0;
   }

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

      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 -> 84;
            case 1 -> 93;
            case 2 -> 35;
            case 3 -> 77;
            case 4 -> 37;
            case 5 -> 10;
            default -> 98;
         });
      }

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