package com.l7tech.security.prov.defaultprov;

import com.l7tech.security.prov.DelegatingJceProvider;
import com.l7tech.security.prov.JceProvider;
import com.l7tech.security.prov.JsseProviderSupplier;
import com.l7tech.security.prov.ProviderUtil;
import com.l7tech.security.prov.bc.BouncyCastleJceProviderEngine;
import com.l7tech.security.prov.bc.api.BCFipsProxy;
import com.l7tech.security.prov.bcfips.BouncyCastleFipsJceProviderEngine;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.SyspropUtil;
import java.security.Provider;
import java.security.Security;
import java.util.logging.Logger;

public class DefaultJceProviderEngine extends DelegatingJceProvider {
   private static final Logger f;
   private static final String g;
   private static final String h;
   private static final String i;
   private final Provider j;
   private static final String[] l;

   public DefaultJceProviderEngine() {
      super(a());
      if (this.delegate instanceof BouncyCastleFipsJceProviderEngine) {
         this.j = BouncyCastleFipsJceProviderEngine.getProvider();
      } else {
         this.j = BouncyCastleJceProviderEngine.getProvider();
      }
   }

   private static JceProvider a() {
      String[] var5 = l;
      boolean var0 = SyspropUtil.getBoolean(var5[6], false);
      boolean var1 = SyspropUtil.getBoolean(var5[18], false);

      label45: {
         try {
            if (!var0 && !var1) {
               break label45;
            }
         } catch (Exception var8) {
            throw b(var8);
         }

         var5 = l;
         f.info(var5[7]);
         JceProvider var2 = null;

         try {
            var2 = new BouncyCastleFipsJceProviderEngine();
         } catch (Exception var6) {
            String var10000 = var6.getMessage();
            var5 = l;
            String var4 = var5[19] + var10000;
            f.severe(var4);
            throw new SecurityException(var4);
         }

         BCFipsProxy var3 = ProviderUtil.loadBCFipsProxy();

         try {
            if (var3.fipsStatusIsReady()) {
               f.info(l[9] + var3.fipsStatusGetStatusMessage());
               return var2;
            }
         } catch (Exception var7) {
            throw b(var7);
         }

         String var14 = var3.fipsStatusGetStatusMessage();
         var5 = l;
         String var10 = var5[16] + var14;
         f.severe(var10);
         throw new SecurityException(var10);
      }

      f.info(l[17]);
      return new BouncyCastleJceProviderEngine();
   }

   @Override
   public String getRsaNoPaddingCipherName() {
      return l[12];
   }

   @Override
   protected String getRsaOaepPaddingCipherName() {
      return l[14];
   }

   @Override
   public Provider getPreferredProvider(String var1) {
      try {
         if (l[10].equals(var1)) {
            return this.j;
         }
      } catch (SecurityException var2) {
         throw b(var2);
      }

      return super.getPreferredProvider(var1);
   }

   @Override
   protected String getRsaPkcs1PaddingCipherName() {
      return l[20];
   }

   @Override
   public Provider getProviderFor(String var1) {
      try {
         if (l[2].equalsIgnoreCase(var1)) {
            return this.b();
         }
      } catch (SecurityException var4) {
         throw b(var4);
      }

      try {
         if (l[13].equalsIgnoreCase(var1)) {
            return this.c();
         }
      } catch (SecurityException var5) {
         throw b(var5);
      }

      if (l[1].equalsIgnoreCase(var1)) {
         Provider var2 = JsseProviderSupplier.getProvider();

         try {
            if (var2 != null) {
               return var2;
            }
         } catch (SecurityException var3) {
            throw b(var3);
         }
      }

      return super.getProviderFor(var1);
   }

   private Provider b() {
      return Security.getProvider(l[3]);
   }

   private Provider c() {
      String[] var3 = l;
      String var1 = ConfigFactory.getProperty(var3[11]);

      label29: {
         try {
            if (var1 == null || var1.trim().length() <= 0) {
               break label29;
            }
         } catch (SecurityException var5) {
            throw b(var5);
         }

         Provider var2 = Security.getProvider(var1);

         try {
            if (var2 != null) {
               f.info(l[0] + var1);
               return var2;
            }
         } catch (SecurityException var4) {
            throw b(var4);
         }
      }

      f.fine(l[5]);
      return this.b();
   }

   static {
      String[] var5 = new String[21];
      int var3 = 0;
      String var2 = "a\u007fS>.\u0011\u0005DiY9/X\u0013P,n\u001c\u001a\u0011G\u001a<\u001a ;^\u0000]h_\"s\u0011\u0012g_v\u0013&_\u0002QtN~\u001d}%B=\u0014c\u000f\u007fiC\u0003=^\u0004Q\"j\u001b\nbG\u0006\u0007gyT\u001a\u001ab3&WcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0010]|I~(]\u0001UuI\u0015'P\u0014Xi^!a\u007fS>.\u0011%Abp\u0003\u001atVU\u007f\u001a\u0004\u0005bV\u0005\"\np9C\u0019Be^5; WcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0010]|I~,_\u0017V`_42}bS$ P\u001a]vS>.\u00114[yT30r\u0017GxV5i]\u001fV~[\"0\u0011\u001fZ,|\u0019\u0019bV\u00058\np$^\u0012Q\u001fWcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0002X\u007fj\"&G\u001fPiHDvcO>*H5U\u007fN<,\u00110}\\ip$^\u0012A`_p:T\u001aR!N5:EVWcW %T\u0002Qh\u0014p\u000fx&g,W?-D\u001aQ,I$(E\u0003G,S#s\u0018weJ8,CXf_{\u007f\fr4\u001bBU\u0000(U\u0012]b]\u001fWcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0002X\u007fj\"&G\u001fPiH\u0011f_{\u007f\fr4\u001bBU\u0000(U\u0012]b]\u0010g_v\u0013&_\u0002QtN~\u001d}%B=\"f_{\u007f\fr4\u001bC{\u0015\u0019f\u001f@di\u0018\b\u00007Zhw\u0017\u000f\u0000&Uh^9'V WcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0010]|I~,_\u0017V`_4EvcO>*H5U\u007fN<,\u00110}\\ip$^\u0012A`_p/P\u001fXi^p=^V]bS$ P\u001a]v_~iw?d_\u001a=&U\u0003Xi\u001a#=P\u0002A\u007f\u001a9:\u000b3}bS$ P\u001a]vS>.\u00114[yT30\u00115U\u007fN<,\u0011\u001a]nH1;HV]b\u001a\u001e&_[rEj\u0003i\\\u0019Pi&WcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0010]|I~(]\u0001UuI\u0015'P\u0014Xi^";
      int var4 = "a\u007fS>.\u0011\u0005DiY9/X\u0013P,n\u001c\u001a\u0011G\u001a<\u001a ;^\u0000]h_\"s\u0011\u0012g_v\u0013&_\u0002QtN~\u001d}%B=\u0014c\u000f\u007fiC\u0003=^\u0004Q\"j\u001b\nbG\u0006\u0007gyT\u001a\u001ab3&WcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0010]|I~(]\u0001UuI\u0015'P\u0014Xi^!a\u007fS>.\u0011%Abp\u0003\u001atVU\u007f\u001a\u0004\u0005bV\u0005\"\np9C\u0019Be^5; WcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0010]|I~,_\u0017V`_42}bS$ P\u001a]vS>.\u00114[yT30r\u0017GxV5i]\u001fV~[\"0\u0011\u001fZ,|\u0019\u0019bV\u00058\np$^\u0012Q\u001fWcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0002X\u007fj\"&G\u001fPiHDvcO>*H5U\u007fN<,\u00110}\\ip$^\u0012A`_p:T\u001aR!N5:EVWcW %T\u0002Qh\u0014p\u000fx&g,W?-D\u001aQ,I$(E\u0003G,S#s\u0018weJ8,CXf_{\u007f\fr4\u001bBU\u0000(U\u0012]b]\u001fWcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0002X\u007fj\"&G\u001fPiH\u0011f_{\u007f\fr4\u001bBU\u0000(U\u0012]b]\u0010g_v\u0013&_\u0002QtN~\u001d}%B=\"f_{\u007f\fr4\u001bC{\u0015\u0019f\u001f@di\u0018\b\u00007Zhw\u0017\u000f\u0000&Uh^9'V WcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0010]|I~,_\u0017V`_4EvcO>*H5U\u007fN<,\u00110}\\ip$^\u0012A`_p/P\u001fXi^p=^V]bS$ P\u001a]v_~iw?d_\u001a=&U\u0003Xi\u001a#=P\u0002A\u007f\u001a9:\u000b3}bS$ P\u001a]vS>.\u00114[yT30\u00115U\u007fN<,\u0011\u001a]nH1;HV]b\u001a\u001e&_[rEj\u0003i\\\u0019Pi&WcW~%\u0006\u0002QoR~:T\u0015A~S$0\u001f\u0010]|I~(]\u0001UuI\u0015'P\u0014Xi^"
         .length();
      char var1 = '"';
      int var7 = -1;

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

         while (true) {
            String var8 = c(var10000, d(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     l = var5;
                     String[] var9 = l;
                     i = l[8];
                     g = var9[15];
                     h = var9[4];
                     f = Logger.getLogger(DefaultJceProviderEngine.class.getName());
                     return;
                  }

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

                  var2 = "\u0007\u0012>O[9D$\u000e?M]`A\f-\u0018\u0001H2h3\u0014/DJ`a$\u0014'D\\`s*]\"OQ4n$\u0011\"[]z\u0014\u0017.\n\u000e}\u0003Ej-\u0000bkqW$\u0019/HV'";
                  var4 = "\u0007\u0012>O[9D$\u000e?M]`A\f-\u0018\u0001H2h3\u0014/DJ`a$\u0014'D\\`s*]\"OQ4n$\u0011\"[]z\u0014\u0017.\n\u000e}\u0003Ej-\u0000bkqW$\u0019/HV'"
                     .length();
                  var1 = '0';
                  var7 = -1;
            }

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

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

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

      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 -> 70;
            case 1 -> 126;
            case 2 -> 72;
            case 3 -> 34;
            case 4 -> 59;
            case 5 -> 67;
            default -> 4;
         });
      }

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