package com.l7tech.server.policy.assertion.xmlsec;

import com.l7tech.common.io.XmlUtil;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.policy.assertion.xmlsec.RequireSaml;
import com.l7tech.policy.assertion.xmlsec.SamlAttributeStatement;
import com.l7tech.policy.assertion.xmlsec.SamlAttributeStatement.Attribute;
import com.l7tech.util.Pair;
import com.l7tech.util.PoolByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import org.apache.xmlbeans.XmlObject;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import x0Assertion.oasisNamesTcSAML2.AttributeStatementType;
import x0Assertion.oasisNamesTcSAML2.AttributeType;

class h extends SamlStatementValidate {
   private SamlAttributeStatement a;
   private static final String[] c;

   h(RequireSaml var1) {
      super(var1);
      this.a = var1.getAttributeStatement();
      if (this.a == null) {
         throw new IllegalArgumentException(c[4]);
      }
   }

   @Override
   protected void validate(
      XmlObject var1, Collection<SamlAssertionValidate.Error> var2, Collection<Pair<String, String[]>> var3, Map<String, Object> var4, Audit var5
   ) {
      try {
         if (!(var1 instanceof AttributeStatementType)) {
            throw new IllegalArgumentException(c[5] + AttributeStatementType.class);
         }
      } catch (IllegalArgumentException var25) {
         throw a(var25);
      }

      AttributeStatementType var6 = (AttributeStatementType)var1;
      AttributeType[] var7 = var6.getAttributeArray();
      Attribute[] var8 = this.a.getAttributes();
      Attribute[] var9 = var8;
      int var10 = var9.length;
      int var11 = 0;

      while (var11 < var10) {
         Attribute var12 = var9[var11];
         List var13 = this.a(var12, var7, var2);

         label73: {
            try {
               if (var13 == null || var13.isEmpty()) {
                  break label73;
               }
            } catch (IllegalArgumentException var24) {
               throw a(var24);
            }

            if (var3 != null) {
               for (AttributeType var15 : var13) {
                  String var16 = var15.getName();
                  ArrayList var17 = new ArrayList();

                  for (XmlObject var21 : var15.getAttributeValueArray()) {
                     String var22 = a(var21);
                     var17.add(var22);
                  }

                  var3.add(new Pair(var16, var17.toArray(new String[var17.size()])));
               }
            }

            var11++;
            continue;
         }

         SamlAssertionValidate.Error var26 = new SamlAssertionValidate.Error(c[0], null, var12);

         try {
            if (this.logger.isLoggable(Level.FINER)) {
               this.logger.finer(var26.toString());
            }
         } catch (IllegalArgumentException var23) {
            throw a(var23);
         }

         var2.add(var26);
         return;
      }
   }

   private static String a(Node var0) throws IOException {
      PoolByteArrayOutputStream var1 = new PoolByteArrayOutputStream();
      XmlUtil.canonicalize(var0, var1);
      return var1.toString();
   }

   static String a(XmlObject var0) {
      try {
         Node var1 = var0.getDomNode();

         try {
            if (1 != var1.getNodeType() || !c[6].equals(var1.getLocalName())) {
               return a(var1);
            }
         } catch (IOException var4) {
            throw a(var4);
         }

         NodeList var2 = var1.getChildNodes();

         try {
            if (var2.getLength() == 1 && var2.item(0).getNodeType() == 3) {
               return XmlUtil.getTextValue((Element)var1);
            }
         } catch (IOException var3) {
            throw a(var3);
         }

         return a(var1);
      } catch (IOException var5) {
         throw new RuntimeException(var5);
      }
   }

   private List<AttributeType> a(Attribute param1, AttributeType[] param2, Collection param3) {
      // $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 1
      // 001: invokevirtual com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.getName ()Ljava/lang/String;
      // 004: astore 4
      // 006: aload 1
      // 007: invokevirtual com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.getNameFormat ()Ljava/lang/String;
      // 00a: astore 5
      // 00c: aload 5
      // 00e: ifnull 020
      // 011: aload 5
      // 013: invokevirtual java/lang/String.length ()I
      // 016: ifne 025
      // 019: goto 020
      // 01c: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 01f: athrow
      // 020: getstatic com/l7tech/security/saml/SamlConstants.ATTRIBUTE_NAME_FORMAT_UNSPECIFIED Ljava/lang/String;
      // 023: astore 5
      // 025: aload 1
      // 026: invokevirtual com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.getValue ()Ljava/lang/String;
      // 029: astore 6
      // 02b: aload 1
      // 02c: invokevirtual com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.isAnyValue ()Z
      // 02f: istore 7
      // 031: aload 0
      // 032: aload 4
      // 034: invokevirtual com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/String;)Z
      // 037: ifeq 068
      // 03a: new com/l7tech/server/policy/assertion/xmlsec/SamlAssertionValidate$Error
      // 03d: dup
      // 03e: getstatic com/l7tech/server/policy/assertion/xmlsec/h.c [Ljava/lang/String;
      // 041: astore 21
      // 043: aload 21
      // 045: bipush 3
      // 046: aaload
      // 047: aconst_null
      // 048: bipush 0
      // 049: anewarray 35
      // 04c: invokespecial com/l7tech/server/policy/assertion/xmlsec/SamlAssertionValidate$Error.<init> (Ljava/lang/String;Ljava/lang/Exception;[Ljava/lang/Object;)V
      // 04f: astore 8
      // 051: aload 3
      // 052: aload 8
      // 054: invokeinterface java/util/Collection.add (Ljava/lang/Object;)Z 2
      // 059: pop
      // 05a: aload 0
      // 05b: getfield com/l7tech/server/policy/assertion/xmlsec/h.logger Ljava/util/logging/Logger;
      // 05e: aload 8
      // 060: invokevirtual com/l7tech/server/policy/assertion/xmlsec/SamlAssertionValidate$Error.toString ()Ljava/lang/String;
      // 063: invokevirtual java/util/logging/Logger.finer (Ljava/lang/String;)V
      // 066: aconst_null
      // 067: areturn
      // 068: new java/util/ArrayList
      // 06b: dup
      // 06c: invokespecial java/util/ArrayList.<init> ()V
      // 06f: astore 8
      // 071: aload 2
      // 072: astore 9
      // 074: aload 9
      // 076: arraylength
      // 077: istore 10
      // 079: bipush 0
      // 07a: istore 11
      // 07c: iload 11
      // 07e: iload 10
      // 080: if_icmpge 214
      // 083: aload 9
      // 085: iload 11
      // 087: aaload
      // 088: astore 12
      // 08a: aload 4
      // 08c: aload 12
      // 08e: invokeinterface x0Assertion/oasisNamesTcSAML2/AttributeType.getName ()Ljava/lang/String; 1
      // 093: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 096: ifeq 20e
      // 099: aload 12
      // 09b: invokeinterface x0Assertion/oasisNamesTcSAML2/AttributeType.getNameFormat ()Ljava/lang/String; 1
      // 0a0: astore 13
      // 0a2: aload 13
      // 0a4: ifnonnull 0ac
      // 0a7: getstatic com/l7tech/security/saml/SamlConstants.ATTRIBUTE_NAME_FORMAT_UNSPECIFIED Ljava/lang/String;
      // 0aa: astore 13
      // 0ac: aload 5
      // 0ae: aload 13
      // 0b0: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0b3: ifne 0bd
      // 0b6: goto 20e
      // 0b9: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0bc: athrow
      // 0bd: aload 0
      // 0be: aload 6
      // 0c0: invokevirtual com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/String;)Z
      // 0c3: ifeq 115
      // 0c6: aload 12
      // 0c8: invokeinterface x0Assertion/oasisNamesTcSAML2/AttributeType.getAttributeValueArray ()[Lorg/apache/xmlbeans/XmlObject; 1
      // 0cd: arraylength
      // 0ce: ifne 115
      // 0d1: goto 0d8
      // 0d4: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0d7: athrow
      // 0d8: aload 0
      // 0d9: getfield com/l7tech/server/policy/assertion/xmlsec/h.logger Ljava/util/logging/Logger;
      // 0dc: getstatic java/util/logging/Level.FINER Ljava/util/logging/Level;
      // 0df: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 0e2: ifeq 10b
      // 0e5: goto 0ec
      // 0e8: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0eb: athrow
      // 0ec: aload 0
      // 0ed: getfield com/l7tech/server/policy/assertion/xmlsec/h.logger Ljava/util/logging/Logger;
      // 0f0: getstatic java/util/logging/Level.FINER Ljava/util/logging/Level;
      // 0f3: getstatic com/l7tech/server/policy/assertion/xmlsec/h.c [Ljava/lang/String;
      // 0f6: bipush 1
      // 0f7: aaload
      // 0f8: bipush 1
      // 0f9: anewarray 35
      // 0fc: dup
      // 0fd: bipush 0
      // 0fe: aload 4
      // 100: aastore
      // 101: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
      // 104: goto 10b
      // 107: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 10a: athrow
      // 10b: aload 8
      // 10d: aload 12
      // 10f: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 114: pop
      // 115: aload 12
      // 117: invokeinterface x0Assertion/oasisNamesTcSAML2/AttributeType.getAttributeValueArray ()[Lorg/apache/xmlbeans/XmlObject; 1
      // 11c: astore 14
      // 11e: aload 14
      // 120: astore 15
      // 122: aload 15
      // 124: arraylength
      // 125: istore 16
      // 127: bipush 0
      // 128: istore 17
      // 12a: iload 17
      // 12c: iload 16
      // 12e: if_icmpge 20e
      // 131: aload 15
      // 133: iload 17
      // 135: aaload
      // 136: astore 18
      // 138: aload 18
      // 13a: invokeinterface org/apache/xmlbeans/XmlObject.newCursor ()Lorg/apache/xmlbeans/XmlCursor; 1
      // 13f: astore 19
      // 141: iload 7
      // 143: ifeq 1a1
      // 146: aload 0
      // 147: aload 19
      // 149: invokeinterface org/apache/xmlbeans/XmlCursor.getTextValue ()Ljava/lang/String; 1
      // 14e: invokevirtual com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/String;)Z
      // 151: ifne 1a1
      // 154: goto 15b
      // 157: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 15a: athrow
      // 15b: aload 0
      // 15c: getfield com/l7tech/server/policy/assertion/xmlsec/h.logger Ljava/util/logging/Logger;
      // 15f: getstatic java/util/logging/Level.FINER Ljava/util/logging/Level;
      // 162: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 165: ifeq 194
      // 168: goto 16f
      // 16b: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 16e: athrow
      // 16f: aload 0
      // 170: getfield com/l7tech/server/policy/assertion/xmlsec/h.logger Ljava/util/logging/Logger;
      // 173: getstatic com/l7tech/server/policy/assertion/xmlsec/h.c [Ljava/lang/String;
      // 176: bipush 7
      // 178: aaload
      // 179: bipush 2
      // 17a: anewarray 35
      // 17d: dup
      // 17e: bipush 0
      // 17f: aload 4
      // 181: aastore
      // 182: dup
      // 183: bipush 1
      // 184: aload 6
      // 186: aastore
      // 187: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // 18a: invokevirtual java/util/logging/Logger.finer (Ljava/lang/String;)V
      // 18d: goto 194
      // 190: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 193: athrow
      // 194: aload 8
      // 196: aload 12
      // 198: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 19d: pop
      // 19e: goto 1f2
      // 1a1: aload 19
      // 1a3: invokeinterface org/apache/xmlbeans/XmlCursor.getTextValue ()Ljava/lang/String; 1
      // 1a8: aload 6
      // 1aa: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 1ad: ifeq 1f2
      // 1b0: aload 0
      // 1b1: getfield com/l7tech/server/policy/assertion/xmlsec/h.logger Ljava/util/logging/Logger;
      // 1b4: getstatic java/util/logging/Level.FINER Ljava/util/logging/Level;
      // 1b7: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 1ba: ifeq 1e8
      // 1bd: goto 1c4
      // 1c0: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1c3: athrow
      // 1c4: aload 0
      // 1c5: getfield com/l7tech/server/policy/assertion/xmlsec/h.logger Ljava/util/logging/Logger;
      // 1c8: getstatic com/l7tech/server/policy/assertion/xmlsec/h.c [Ljava/lang/String;
      // 1cb: bipush 2
      // 1cc: aaload
      // 1cd: bipush 2
      // 1ce: anewarray 35
      // 1d1: dup
      // 1d2: bipush 0
      // 1d3: aload 4
      // 1d5: aastore
      // 1d6: dup
      // 1d7: bipush 1
      // 1d8: aload 6
      // 1da: aastore
      // 1db: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // 1de: invokevirtual java/util/logging/Logger.finer (Ljava/lang/String;)V
      // 1e1: goto 1e8
      // 1e4: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1e7: athrow
      // 1e8: aload 8
      // 1ea: aload 12
      // 1ec: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 1f1: pop
      // 1f2: aload 19
      // 1f4: invokeinterface org/apache/xmlbeans/XmlCursor.dispose ()V 1
      // 1f9: goto 208
      // 1fc: astore 20
      // 1fe: aload 19
      // 200: invokeinterface org/apache/xmlbeans/XmlCursor.dispose ()V 1
      // 205: aload 20
      // 207: athrow
      // 208: iinc 17 1
      // 20b: goto 12a
      // 20e: iinc 11 1
      // 211: goto 07c
      // 214: aload 8
      // 216: invokeinterface java/util/List.isEmpty ()Z 1
      // 21b: ifeq 226
      // 21e: aconst_null
      // 21f: goto 228
      // 222: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 225: athrow
      // 226: aload 8
      // 228: areturn
      // try (193 -> 218): 219 java/lang/IllegalArgumentException
      // try (188 -> 198): 199 java/lang/IllegalArgumentException
      // try (155 -> 180): 181 java/lang/IllegalArgumentException
      // try (147 -> 160): 161 java/lang/IllegalArgumentException
      // try (145 -> 152): 153 java/lang/IllegalArgumentException
      // try (97 -> 118): 119 java/lang/IllegalArgumentException
      // try (90 -> 102): 103 java/lang/IllegalArgumentException
      // try (86 -> 94): 95 java/lang/IllegalArgumentException
      // try (79 -> 84): 84 java/lang/IllegalArgumentException
      // try (6 -> 11): 12 java/lang/IllegalArgumentException
      // try (145 -> 225): 228 null
      // try (228 -> 229): 228 null
      // try (237 -> 242): 242 java/lang/IllegalArgumentException
   }

   private boolean a(String 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:
      // 00: aload 1
      // 01: ifnull 14
      // 04: ldc ""
      // 06: aload 1
      // 07: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0a: ifeq 1c
      // 0d: goto 14
      // 10: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 13: athrow
      // 14: bipush 1
      // 15: goto 1d
      // 18: invokestatic com/l7tech/server/policy/assertion/xmlsec/h.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1b: athrow
      // 1c: bipush 0
      // 1d: ireturn
      // try (0 -> 6): 7 java/lang/IllegalArgumentException
      // try (2 -> 11): 11 java/lang/IllegalArgumentException
   }

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

   static {
      String[] var5 = new String[8];
      int var3 = 0;
      String var2 = "\u001cDE?h\u001e(:B\u000b5)+?&Y\f0|\u001e.r[\u00177z\u000f%&N\u0001|)8.#^\f l\u000ek)\u001b\u0018*\u001fJ\u00111a\u000f/rE\u0004?lJ0bVE%`\u001e#rE\nr\u007f\u000b''N\u0016ry\u0018.!N\u000b&l\u000ee\u001c\u001fJ\u00111a\u000f/rE\u0004?lJ0bVIr\u007f\u000b''NE)8\u0017k+\u001bE\u00133e\u0003/rj\u0011&{\u0003)'_\u0000rj\u0005%!_\u00173`\u0004?r\u0003\u000b3d\u000fk;XE<|\u0006'{.\u0013_\u0011 `\b>&NE l\u001b>;Y\u0000?l\u0004?!\u000b\r3\u007f\u000fk<D\u0011rk\u000f.<\u000b\u0016\"l\t\"4B\u00006\t\u0017S\u00157j\u001e.6\u000b";
      int var4 = "\u001cDE?h\u001e(:B\u000b5)+?&Y\f0|\u001e.r[\u00177z\u000f%&N\u0001|)8.#^\f l\u000ek)\u001b\u0018*\u001fJ\u00111a\u000f/rE\u0004?lJ0bVE%`\u001e#rE\nr\u007f\u000b''N\u0016ry\u0018.!N\u000b&l\u000ee\u001c\u001fJ\u00111a\u000f/rE\u0004?lJ0bVIr\u007f\u000b''NE)8\u0017k+\u001bE\u00133e\u0003/rj\u0011&{\u0003)'_\u0000rj\u0005%!_\u00173`\u0004?r\u0003\u000b3d\u000fk;XE<|\u0006'{.\u0013_\u0011 `\b>&NE l\u001b>;Y\u0000?l\u0004?!\u000b\r3\u007f\u000fk<D\u0011rk\u000f.<\u000b\u0016\"l\t\"4B\u00006\t\u0017S\u00157j\u001e.6\u000b"
         .length();
      char var1 = '-';
      int var7 = -1;

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

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

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

                  var2 = "x4zK\u000bcUM%XX\u000etE\u001bt!zZ\ndD\u0019.oT\u0007![\t=\"\u0019\u0003oY\u00196oU\u0017d";
                  var4 = "x4zK\u000bcUM%XX\u000etE\u001bt!zZ\ndD\u0019.oT\u0007![\t=\"\u0019\u0003oY\u00196oU\u0017d".length();
                  var1 = 14;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String b(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 -> 55;
            case 2 -> 121;
            case 3 -> 78;
            case 4 -> 21;
            case 5 -> 118;
            default -> 87;
         });
      }

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