package com.l7tech.security.xml;

import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.policy.assertion.UsesEntities;
import com.l7tech.policy.assertion.UsesVariables;
import com.l7tech.util.FullQName;
import com.l7tech.util.GoidUpgradeMapper;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import org.jetbrains.annotations.Nullable;

public class XmlElementVerifierConfig implements Serializable, UsesVariables, UsesEntities {
   public static final Set<FullQName> DEFAULT_ID_ATTRS = Collections.unmodifiableSet(
      new LinkedHashSet<FullQName>() {
         static final long serialVersionUID = 907520580142645024L;
         private static final String[] a;

         {
            String[] var1 = a;
            this.add(new FullQName(var1[7], null, var1[11]));
            this.add(new FullQName(var1[8], null, var1[0]));
            this.add(new FullQName(var1[4], null, var1[0]));
            this.add(new FullQName(var1[9], null, var1[0]));
            this.add(new FullQName(var1[2], var1[13], var1[3]));
            this.add(new FullQName(var1[10], var1[12], var1[6]));
            this.add(new FullQName(null, null, var1[0]));
            this.add(new FullQName(null, null, var1[1]));
            this.add(new FullQName(null, null, var1[5]));
         }

         static {
            String[] var5 = new String[14];
            int var3 = 0;
            String var2 = "7\u0002\u0002\u0017\u0002%\u000b\u0014\u007fVdTS\u0017\u0015+\u0002jXE\r\\e\u000f1fa3*+]%\u0005\u001a\u001f\u0015b\tyAI\u0011\b\u000b?\u0015b\tyAI\u0011\bX(-\u0016\u0012e\u001c1\u001a\u000f\r\u0005y\tfTSP\u001e|\u0000xZA\u000eH~\u001el\u001aW\rI#\\;\u0006\u000fNP>\u0019\u007f\\L\u0017\u0012h\u00027\"\u00027\"R\u0016\u0012e\u001c1\u001a\u000f\u001a\tr\u001f%ZA\r\u000fbAdEE\u0010H~\u001el\u001aW\r\u0015>^;\u0005\u0014QV CdTS\u0017\u0015<^;\u0005\u0014NW<\u001bxF\r\t\u0015b\th@R\u0017\u0012hA~AI\u0012\u000fe\u0015&\u0004\u000eNHi\u001fo-\u0016\u0012e\u001c1\u001a\u000f\r\u0005y\tfTSP\u001e|\u0000xZA\u000eH~\u001el\u001aW\rI#\\;\u0007\u000fNQ>\u0019\u007f\\L\u0017\u0012h-\u0016\u0012e\u001c1\u001a\u000f\r\u0005y\tfTSP\u001e|\u0000xZA\u000eH~\u001el\u001aW\rI#\\;\u0006\u000fNP>\u0019\u007f\\L\u0017\u0012h%\u000b\u0014\u007fVdTS\u0017\u0015+\u0002jXE\r\\e\u000f1fa3*+^%\u0005\u001a\u001f\u0015b\tyAI\u0011\b\u00027\u0002";
            int var4 = "7\u0002\u0002\u0017\u0002%\u000b\u0014\u007fVdTS\u0017\u0015+\u0002jXE\r\\e\u000f1fa3*+]%\u0005\u001a\u001f\u0015b\tyAI\u0011\b\u000b?\u0015b\tyAI\u0011\bX(-\u0016\u0012e\u001c1\u001a\u000f\r\u0005y\tfTSP\u001e|\u0000xZA\u000eH~\u001el\u001aW\rI#\\;\u0006\u000fNP>\u0019\u007f\\L\u0017\u0012h\u00027\"\u00027\"R\u0016\u0012e\u001c1\u001a\u000f\u001a\tr\u001f%ZA\r\u000fbAdEE\u0010H~\u001el\u001aW\r\u0015>^;\u0005\u0014QV CdTS\u0017\u0015<^;\u0005\u0014NW<\u001bxF\r\t\u0015b\th@R\u0017\u0012hA~AI\u0012\u000fe\u0015&\u0004\u000eNHi\u001fo-\u0016\u0012e\u001c1\u001a\u000f\r\u0005y\tfTSP\u001e|\u0000xZA\u000eH~\u001el\u001aW\rI#\\;\u0007\u000fNQ>\u0019\u007f\\L\u0017\u0012h-\u0016\u0012e\u001c1\u001a\u000f\r\u0005y\tfTSP\u001e|\u0000xZA\u000eH~\u001el\u001aW\rI#\\;\u0006\u000fNP>\u0019\u007f\\L\u0017\u0012h%\u000b\u0014\u007fVdTS\u0017\u0015+\u0002jXE\r\\e\u000f1fa3*+^%\u0005\u001a\u001f\u0015b\tyAI\u0011\b\u00027\u0002"
               .length();
            char var1 = 2;
            int var7 = -1;

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

               while (true) {
                  String var8 = a(var10000, a(var10001));
                  switch (var10002) {
                     case 0:
                        var5[var3++] = var8;
                        if ((var7 += var1) >= var4) {
                           a = var5;
                           return;
                        }

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

                        var2 = ".5N1[\u0005.5N1[";
                        var4 = ".5N1[\u0005.5N1[".length();
                        var1 = 5;
                        var7 = -1;
                  }

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

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

            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 -> 15;
                  case 1 -> 23;
                  case 2 -> 96;
                  case 3 -> 29;
                  case 4 -> 122;
                  case 5 -> 68;
                  default -> 81;
               });
            }

            return new String(var10001).intern();
         }
      }
   );
   private String verifyCertificateName;
   private Goid verifyCertificateGoid;
   private String verifyCertificateVariableName;
   private boolean ignoreKeyInfo;
   private FullQName[] customIdAttrs;
   private boolean xAdESEnabled;
   static final long serialVersionUID = -6577466669004872184L;

   public String getVerifyCertificateName() {
      return this.verifyCertificateName;
   }

   public void setVerifyCertificateName(@Nullable String var1) {
      this.verifyCertificateName = var1;
   }

   public Goid getVerifyCertificateGoid() {
      return this.verifyCertificateGoid;
   }

   public void setVerifyCertificateGoid(Goid var1) {
      this.verifyCertificateGoid = var1;
   }

   @Deprecated
   public void setVerifyCertificateOid(long var1) {
      this.setVerifyCertificateGoid(GoidUpgradeMapper.mapOid(EntityType.TRUSTED_CERT, var1));
   }

   public String getVerifyCertificateVariableName() {
      return this.verifyCertificateVariableName;
   }

   public void setVerifyCertificateVariableName(@Nullable String var1) {
      this.verifyCertificateVariableName = var1;
   }

   public boolean isIgnoreKeyInfo() {
      return this.ignoreKeyInfo;
   }

   public void setIgnoreKeyInfo(boolean var1) {
      this.ignoreKeyInfo = var1;
   }

   public FullQName[] getCustomIdAttrs() {
      return this.customIdAttrs;
   }

   public void setCustomIdAttrs(@Nullable FullQName[] var1) {
      this.customIdAttrs = var1;
   }

   public boolean getXAdESEnabled() {
      return this.xAdESEnabled;
   }

   public void setXAdESEnabled(boolean var1) {
      this.xAdESEnabled = var1;
   }

   @Override
   public String[] getVariablesUsed() {
      ArrayList var1 = new ArrayList();
      if (this.verifyCertificateVariableName != null && this.verifyCertificateVariableName.length() > 0) {
         var1.add(this.verifyCertificateVariableName);
      }

      return var1.toArray(new String[var1.size()]);
   }

   @Override
   public EntityHeader[] getEntitiesUsed() {
      EntityHeader[] var1 = new EntityHeader[0];
      if (this.verifyCertificateGoid != null && !PersistentEntity.DEFAULT_GOID.equals(this.verifyCertificateGoid)) {
         var1 = new EntityHeader[]{new EntityHeader(this.verifyCertificateGoid, EntityType.TRUSTED_CERT, null, null)};
      } else if (this.verifyCertificateName != null) {
         var1 = new EntityHeader[]{new EntityHeader(Goid.DEFAULT_GOID, EntityType.TRUSTED_CERT, this.verifyCertificateName, null)};
      }

      return var1;
   }

   @Override
   public void replaceEntity(EntityHeader var1, EntityHeader var2) {
      if (var1.getType() == EntityType.TRUSTED_CERT
         && var2.getType() == EntityType.TRUSTED_CERT
         && this.verifyCertificateGoid != null
         && this.verifyCertificateGoid.equals(var1.getGoid())) {
         this.verifyCertificateGoid = var2.getGoid();
      } else if (var1.getType() == EntityType.TRUSTED_CERT
         && var2.getType() == EntityType.TRUSTED_CERT
         && this.verifyCertificateName != null
         && this.verifyCertificateName.equals(var1.getName())) {
         this.verifyCertificateName = var2.getName();
      }
   }
}
