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

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.policy.assertion.xmlsec.RequireSaml;
import com.l7tech.security.saml.SamlConstants;
import com.l7tech.server.policy.variable.ExpandVariables;
import com.l7tech.server.util.ContextVariableUtils;
import com.l7tech.util.ArrayUtils;
import com.l7tech.util.Option;
import com.l7tech.util.TextUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import x0Assertion.oasisNamesTcSAML2.AudienceRestrictionType;
import x0Assertion.oasisNamesTcSAML2.ConditionsType;
import x0Assertion.oasisNamesTcSAML2.NameIDType;
import x0Assertion.oasisNamesTcSAML2.SubjectConfirmationDataType;
import x0Assertion.oasisNamesTcSAML2.SubjectConfirmationType;
import x0Assertion.oasisNamesTcSAML2.SubjectType;

class e {
   private static final Logger a;
   private static final String[] b;

   static void a(
      RequireSaml var0,
      SubjectType var1,
      Calendar var2,
      Collection<String> var3,
      Collection<SamlAssertionValidate.Error> var4,
      Map<String, Object> var5,
      Audit var6
   ) {
      if (var1 == null) {
         String[] var61 = b;
         var4.add(new SamlAssertionValidate.Error(var61[4], null));
      } else {
         String var7 = var0.getNameQualifier();
         String var8 = var7 == null ? var7 : ExpandVariables.process(var7, var5, var6);
         NameIDType var9 = var1.getNameID();
         if (var8 != null && !"".equals(var8) && var9 != null) {
            String var10 = var9.getNameQualifier();
            if (!var8.equals(var10)) {
               String[] var60 = b;
               SamlAssertionValidate.Error var29 = new SamlAssertionValidate.Error(var60[19], null, var10, var8);
               var4.add(var29);
               a.finer(var29.toString());
               return;
            }

            String[] var27 = b;
            a.fine(var27[1] + var8);
         }

         boolean var28 = false;
         String[] var11 = var0.getNameFormats();
         String var12 = var9 != null && var9.getFormat() != null ? var9.getFormat() : SamlConstants.NAMEIDENTIFIER_UNSPECIFIED;
         if (var9 != null && var11 != null) {
            for (String var16 : var11) {
               if (var16.equals(var12)) {
                  var28 = true;
                  String[] var48 = b;
                  a.fine(var48[28] + var16);
                  break;
               }

               if (var16.equals(SamlConstants.NAMEIDENTIFIER_UNSPECIFIED)) {
                  var28 = true;
                  String[] var47 = b;
                  a.fine(var47[23] + var16);
                  break;
               }
            }
         }

         if (!var28) {
            String[] var59 = b;
            SamlAssertionValidate.Error var31 = new SamlAssertionValidate.Error(var59[11], null, var12, Arrays.asList(var11));
            var4.add(var31);
            a.finer(var31.toString());
         } else {
            String[] var30 = (String[])ArrayUtils.copy(var0.getSubjectConfirmations());

            for (int var32 = 0; var32 < var30.length; var32++) {
               String var34 = var30[var32];
               String var36 = (String)SamlConstants.CONF_MAP_SAML_1TO2.get(var34);
               if (var36 != null) {
                  var30[var32] = var36;
               }
            }

            ArrayList var33 = new ArrayList();
            SubjectConfirmationType[] var35 = var1.getSubjectConfirmationArray();
            ArrayList var37 = new ArrayList();
            boolean var17 = false;
            if (var35 != null) {
               for (SubjectConfirmationType var21 : var35) {
                  SubjectConfirmationDataType var22 = var21.getSubjectConfirmationData();
                  boolean var23 = true;
                  if (var22 != null) {
                     if (var0.isSubjectConfirmationDataCheckValidity()) {
                        Calendar var24 = var22.getNotBefore();
                        if (var24 != null && var2.before(b(var24))) {
                           String[] var49 = b;
                           a(var33, var49[8], var2.getTime().toString(), var24.getTime().toString());
                           var23 = false;
                        }

                        Calendar var25 = var22.getNotOnOrAfter();
                        if (var25 != null) {
                           Calendar var26 = a(var25);
                           if (var2.equals(var26) || var2.after(var26)) {
                              String[] var50 = b;
                              a(var33, var50[27], var2.getTime().toString(), var25.getTime().toString());
                              var23 = false;
                           }
                        }

                        if (var24 != null && var25 != null && !var24.before(var25)) {
                           Logger var10000 = a;
                           String var10001 = var25.getTime().toString();
                           String var10002 = var24.getTime().toString();
                           String[] var51 = b;
                           var10000.finer(var51[30] + var10001 + var51[26] + var10002);
                           var4.add(new SamlAssertionValidate.Error(var51[35], null, var25.getTime().toString(), var24.getTime().toString()));
                           var23 = false;
                        }
                     }

                     if (var0.isSubjectConfirmationDataCheckAddress() && var22.getAddress() != null && (var3 == null || !var3.contains(var22.getAddress()))) {
                        String[] var52 = b;
                        a(var33, var52[10], var22.getAddress());
                        var23 = false;
                     }

                     String var45 = var0.getSubjectConfirmationDataRecipient();
                     String var46 = var45 == null ? var45 : ExpandVariables.process(var45, var5, var6);
                     if (var46 != null && var22.getRecipient() != null && !var46.equals(var22.getRecipient())) {
                        String[] var53 = b;
                        a(var33, var53[13], var22.getRecipient(), var46);
                        var23 = false;
                     }
                  }

                  if (var23) {
                     var37.add(var21.getMethod());
                  } else {
                     var17 = true;
                  }
               }
            }

            if (var37.isEmpty() && var0.isNoSubjectConfirmation()) {
               String[] var58 = b;
               a.fine(var58[31]);
            } else {
               boolean var38 = false;

               for (String var44 : var30) {
                  if (var37.contains(var44)) {
                     var38 = true;
                     String[] var54 = b;
                     a.fine(var54[34] + var44);
                     break;
                  }
               }

               if (!var38) {
                  var4.addAll(var33);
                  ArrayList var40 = new ArrayList<>(Arrays.asList(var30));
                  if (var0.isNoSubjectConfirmation()) {
                     String[] var55 = b;
                     var40.add(var55[12]);
                  }

                  SamlAssertionValidate.Error var62 = new SamlAssertionValidate.Error;
                  String var63;
                  if (var17) {
                     String[] var56 = b;
                     var63 = var56[32];
                  } else {
                     var63 = "";
                  }

                  String[] var57 = b;
                  var62./* $VF: Unable to resugar constructor */<init>(var57[15] + var63 + var57[21], null, var37, var40);
                  SamlAssertionValidate.Error var42 = var62;
                  var4.add(var42);
                  a.finer(var42.toString());
               }
            }
         }
      }
   }

   private static void a(Collection<SamlAssertionValidate.Error> var0, String var1, Object... var2) {
      SamlAssertionValidate.Error var3 = new SamlAssertionValidate.Error(var1, null, var2);
      if (a.isLoggable(Level.FINE)) {
         a.fine(var3.toString());
      }

      var0.add(var3);
   }

   static void a(RequireSaml var0, ConditionsType var1, Calendar var2, Collection<SamlAssertionValidate.Error> var3, Map<String, Object> var4, Audit var5) {
      if (!var0.isCheckAssertionValidity()) {
         String[] var8 = b;
         a.finer(var8[18]);
      } else if (var1 == null) {
         String[] var11 = b;
         a.finer(var11[0]);
         var3.add(new SamlAssertionValidate.Error(var11[24], null));
      } else {
         Calendar var6 = var1.getNotBefore();
         Calendar var7 = var1.getNotOnOrAfter();
         if (var6 != null && var7 != null) {
            var6 = SamlAssertionValidate.b(var6);
            var7 = SamlAssertionValidate.a(var7);
            if (var2.before(var6)) {
               Logger var10000 = a;
               String var10001 = var2.getTime().toString();
               String var10002 = var6.getTime().toString();
               String[] var13 = b;
               var10000.finer(var13[6] + var10001 + var13[3] + var10002);
               var3.add(new SamlAssertionValidate.Error(var13[20], null, var6.getTime().toString()));
            }

            if (var2.equals(var7) || var2.after(var7)) {
               Logger var17 = a;
               String var18 = var2.getTime().toString();
               String var19 = var7.getTime().toString();
               String[] var14 = b;
               var17.finer(var14[37] + var18 + var14[22] + var19);
               var3.add(new SamlAssertionValidate.Error(var14[14], null, var7.getTime().toString()));
            }
         } else {
            String[] var12 = b;
            a.finer(var12[5]);
            var3.add(new SamlAssertionValidate.Error(var12[25], null));
         }
      }

      a(var0, var1, var3, var4, var5);
      if (var1 != null) {
         if (var1.getOneTimeUseArray() != null && var1.getOneTimeUseArray().length > 1) {
            String[] var15 = b;
            a.finer(var15[7]);
            var3.add(new SamlAssertionValidate.Error(var15[38], null));
         }

         if (var1.getProxyRestrictionArray() != null && var1.getProxyRestrictionArray().length > 1) {
            String[] var16 = b;
            a.finer(var16[29]);
            var3.add(new SamlAssertionValidate.Error(var16[2], null));
         }
      }
   }

   private static void a(RequireSaml var0, ConditionsType var1, Collection<SamlAssertionValidate.Error> var2, Map<String, Object> var3, Audit var4) {
      String var5 = var0.getAudienceRestriction();
      Option var6 = Option.optional(var0.getAudienceRestriction());
      List var7 = !var6.isSome()
         ? Collections.emptyList()
         : ContextVariableUtils.getAllResolvedStrings(var5, var3, var4, TextUtils.URI_STRING_SPLIT_PATTERN, new f());
      if (var7.isEmpty()) {
         String[] var22 = b;
         a.finer(var22[16]);
      } else if (var1 == null) {
         String[] var21 = b;
         SamlAssertionValidate.Error var17 = new SamlAssertionValidate.Error(var21[33], null);
         var2.add(var17);
         a.finer(var17.toString());
      } else {
         AudienceRestrictionType[] var8 = var1.getAudienceRestrictionArray();
         if (var8.length <= 0) {
            String[] var20 = b;
            SamlAssertionValidate.Error var18 = new SamlAssertionValidate.Error(var20[36], null, var7);
            a.finer(var18.toString());
            var2.add(var18);
         } else {
            boolean var9 = false;
            StringBuilder var10 = new StringBuilder();

            for (AudienceRestrictionType var14 : var8) {
               if (a.isLoggable(Level.FINE)) {
                  Logger var10000 = a;
                  String var10001 = String.valueOf(var7);
                  String[] var16 = b;
                  var10000.fine(var16[9] + var10001);
               }

               String[] var15 = var14.getAudienceArray();
               if (ArrayUtils.containsAny(var15, var7.toArray(new String[var7.size()]))) {
                  var9 = true;
                  break;
               }

               var10.append(Arrays.asList(var15));
            }

            if (!var9) {
               SamlAssertionValidate.Error var19 = new SamlAssertionValidate.Error(b[17], null, var10, var7);
               a.finer(var19.toString());
               var2.add(var19);
            }
         }
      }
   }

   static Calendar a(Calendar var0) {
      return SamlAssertionValidate.a(var0);
   }

   static Calendar b(Calendar var0) {
      return SamlAssertionValidate.b(var0);
   }

   static {
      String[] var5 = new String[39];
      int var3 = 0;
      String var2 = "\u0017+2w3{c5&54&/pt)3>#2a=%2#k{{;j\u001f?)?| #3>4{}5<9p%>p:j,\"\"(p:>94\u0017\u0019+(3/>qt\u0004==\"{D!+09!2p&j7\u0019?0$.+y1j\f\"(#l\u0006//$52v #3>g8z:.5$.4{'j=\"\"{{;>| \")x=>(5#u\ft\u00043$g\u0019p2%.5}\u0010\u0007?>:\"8at\u00189!22g1.M\u001a%|\u0006&7|0#()g\u000bp&#34g8z:.5$.4{'j411>56/9>g+g199>3>qxj?1)5z j*1+2q5>9p\u00044{0#(9(5f*\u0017%24./|;$|w\t4at\b96()psj?8\"8~t,=9+>qxj2?0{/1\u0019?0$.+y1j\u0013>\"\u000f|9/\t#\"{v;$8932z:9|15>5:%(p7>g9#($\"?;<\u0017%24./|;$|w\t4at\b96()psj?8\"8~t,=9+>qxj2?0{//z!p\t4at\b96()pn1m-8\u0002+09#:a=$;p&.q=/23\"{g19(\".8a=%2#g:r5#2#3{g193<1>qt&5#3a5L\u0007>=$\"6p:>|3(5q=>5?){|'j5>1:y=.pp`\u001aq089#4|5/z!p#4p'j2?3{x5>?8g8y=/2$g:q089#4u5\u001a+15g\u001dz&'=$g?z19|>(/59+(3/{e&//5)/p0e.56.|&/8p<kh{1m-\u0004\u001a%25R\u0007>=$\"6p:>|3(5q=>5?){|'j5>1:y=.pp`\tp7#,9\"5asj'`:{q;//p)4at'=$$35&/-%.)p0j*1+.pt1m-i\"\u0007\u000b\u0011\u001cg/|7!9$g3t'j9(72g1.|14{z2p|+w&\u001f\u0007?>:\"8at\t3>!2g9+(9(5ft'5#*:a7\"|!\u001a%|12?|1$?5g)p'>.9$/|;$|\"\"*`19(5#B\u0015?89\"5v1j\u000e54/g=)(9(55\u0017\"93,{S5#05#{g1)991>qt1l-g>m$/?$\"?5;$9p(=5/{!\u001f\u001a%|\u00114(p&>5?){C5&54./lt89!2>f /89\u001a+15g\n`5&56.>g'j8?\"(5:%(p*:a7\"| 5>f1$(5#tg1;)95>qt1l-h $),\u0007\u000b\u0011\u001cg/|7!9$g?z19|>(/56/??*>5\"+09#{`:>5<}{nd7\u001a$89#\"5a1.s1$8p$>94g %)e'a:\ft\u00043$g\u0019p2%.5}\u0014\u0019+(3/>qt\u0004==\"{S;8113{<\u0017+2w3{c5&54&/pt)3>#2a=%2#k{{;j\u001f?)?| #3>4{}5<9p%>p:j,\"\"(p:>94M\u001a%|\u0006&7|0#()g\u000bp&#34g8z:.5$.4{'j411>56/9>g+g199>3>qxj?1)5z j*1+2q5>9p\u00044{0#(9(5f!t\u0007\t\u0003\u0013{w1j013>gt>41){2\u001a%(p\u0005>s;89wgG\u0017%24./|;$|w\t4at\u00052p\b)5\u0015,(55|57\"93,{s5#05#w5:%+jg %)j\u0012?3{Z:j\u0013\"g\u001as /.jg $)\u0014\u0019+(3/>qt\u0004==\"{S;8113{7\u0019?0$.+y1j\f\"(#l\u0006//$52v #3>g8z:.5$.4{'j=\"\"{{;>| \")x=>(5#u2\u0007>=$\"6p:>|3(5q=>5?){|'j5>1:y=.pp`\u0015z j\u0013>g\u0014gt\u000b:$\")2t#\u0019+(3/>qt\u0019)2->v j\u001f?)=|&'=$.4{tm\u0012?)>2#|93=\"{v;$:956t #3>4{b189p5>\u007f1)(5#r58\u0017+2w3{c5&54&/pt)3>#2a=%2#k{{;j\u001f?)?| #3>4{}5<9p%>p:j:?25q\u001d\u0019+(3/>qt\u0019)2->v j\u001f?)=|&'=$.4{tZ\u0007>=$\"6p:>|3(5q=>5?){|'j5>1:y=.pp`\u0015z j\u0013>g\u0014gt\u000b:$\")2t\u0007\t\u0003\u0013{w1j013>gt>41){2\u001a%(p\u0005>s;89w}{nd7s+v&]\u0015?89\"5v1j\u000e54/g=)(9(55\u0017\"93,{S5#05#{=59/55/|;$|4(>ft$3$g(e1)56>{t!.55)8pt89#3)|7>5?){v;$8932z:c";
      int var4 = "\u0017+2w3{c5&54&/pt)3>#2a=%2#k{{;j\u001f?)?| #3>4{}5<9p%>p:j,\"\"(p:>94\u0017\u0019+(3/>qt\u0004==\"{D!+09!2p&j7\u0019?0$.+y1j\f\"(#l\u0006//$52v #3>g8z:.5$.4{'j=\"\"{{;>| \")x=>(5#u\ft\u00043$g\u0019p2%.5}\u0010\u0007?>:\"8at\u00189!22g1.M\u001a%|\u0006&7|0#()g\u000bp&#34g8z:.5$.4{'j411>56/9>g+g199>3>qxj?1)5z j*1+2q5>9p\u00044{0#(9(5f*\u0017%24./|;$|w\t4at\b96()psj?8\"8~t,=9+>qxj2?0{/1\u0019?0$.+y1j\u0013>\"\u000f|9/\t#\"{v;$8932z:9|15>5:%(p7>g9#($\"?;<\u0017%24./|;$|w\t4at\b96()psj?8\"8~t,=9+>qxj2?0{//z!p\t4at\b96()pn1m-8\u0002+09#:a=$;p&.q=/23\"{g19(\".8a=%2#g:r5#2#3{g193<1>qt&5#3a5L\u0007>=$\"6p:>|3(5q=>5?){|'j5>1:y=.pp`\u001aq089#4|5/z!p#4p'j2?3{x5>?8g8y=/2$g:q089#4u5\u001a+15g\u001dz&'=$g?z19|>(/59+(3/{e&//5)/p0e.56.|&/8p<kh{1m-\u0004\u001a%25R\u0007>=$\"6p:>|3(5q=>5?){|'j5>1:y=.pp`\tp7#,9\"5asj'`:{q;//p)4at'=$$35&/-%.)p0j*1+.pt1m-i\"\u0007\u000b\u0011\u001cg/|7!9$g3t'j9(72g1.|14{z2p|+w&\u001f\u0007?>:\"8at\t3>!2g9+(9(5ft'5#*:a7\"|!\u001a%|12?|1$?5g)p'>.9$/|;$|\"\"*`19(5#B\u0015?89\"5v1j\u000e54/g=)(9(55\u0017\"93,{S5#05#{g1)991>qt1l-g>m$/?$\"?5;$9p(=5/{!\u001f\u001a%|\u00114(p&>5?){C5&54./lt89!2>f /89\u001a+15g\n`5&56.>g'j8?\"(5:%(p*:a7\"| 5>f1$(5#tg1;)95>qt1l-h $),\u0007\u000b\u0011\u001cg/|7!9$g?z19|>(/56/??*>5\"+09#{`:>5<}{nd7\u001a$89#\"5a1.s1$8p$>94g %)e'a:\ft\u00043$g\u0019p2%.5}\u0014\u0019+(3/>qt\u0004==\"{S;8113{<\u0017+2w3{c5&54&/pt)3>#2a=%2#k{{;j\u001f?)?| #3>4{}5<9p%>p:j,\"\"(p:>94M\u001a%|\u0006&7|0#()g\u000bp&#34g8z:.5$.4{'j411>56/9>g+g199>3>qxj?1)5z j*1+2q5>9p\u00044{0#(9(5f!t\u0007\t\u0003\u0013{w1j013>gt>41){2\u001a%(p\u0005>s;89wgG\u0017%24./|;$|w\t4at\u00052p\b)5\u0015,(55|57\"93,{s5#05#w5:%+jg %)j\u0012?3{Z:j\u0013\"g\u001as /.jg $)\u0014\u0019+(3/>qt\u0004==\"{S;8113{7\u0019?0$.+y1j\f\"(#l\u0006//$52v #3>g8z:.5$.4{'j=\"\"{{;>| \")x=>(5#u2\u0007>=$\"6p:>|3(5q=>5?){|'j5>1:y=.pp`\u0015z j\u0013>g\u0014gt\u000b:$\")2t#\u0019+(3/>qt\u0019)2->v j\u001f?)=|&'=$.4{tm\u0012?)>2#|93=\"{v;$:956t #3>4{b189p5>\u007f1)(5#r58\u0017+2w3{c5&54&/pt)3>#2a=%2#k{{;j\u001f?)?| #3>4{}5<9p%>p:j:?25q\u001d\u0019+(3/>qt\u0019)2->v j\u001f?)=|&'=$.4{tZ\u0007>=$\"6p:>|3(5q=>5?){|'j5>1:y=.pp`\u0015z j\u0013>g\u0014gt\u000b:$\")2t\u0007\t\u0003\u0013{w1j013>gt>41){2\u001a%(p\u0005>s;89w}{nd7s+v&]\u0015?89\"5v1j\u000e54/g=)(9(55\u0017\"93,{S5#05#{=59/55/|;$|4(>ft$3$g(e1)56>{t!.55)8pt89#3)|7>5?){v;$8932z:c"
         .length();
      char var1 = '<';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 60;
         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) {
                     b = var5;
                     a = Logger.getLogger(e.class.getName());
                     return;
                  }

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

                  var2 = "}OX^DE\u0016QN\u0016\u001dc^\u000b\u001eoX\u001abC_\u007fFB__\u0016_]HSYF\u0011\u0019_IZ_I\u001d_POA\u001a\u00171sUZNDA\u0013[\u0000yTHe\u0016SEcIH\u0011\u001cQNRSYX\u0010PS\u0016[_T_POB\u001a]T\rSIBNHUQ";
                  var4 = "}OX^DE\u0016QN\u0016\u001dc^\u000b\u001eoX\u001abC_\u007fFB__\u0016_]HSYF\u0011\u0019_IZ_I\u001d_POA\u001a\u00171sUZNDA\u0013[\u0000yTHe\u0016SEcIH\u0011\u001cQNRSYX\u0010PS\u0016[_T_POB\u001a]T\rSIBNHUQ"
                     .length();
                  var1 = '/';
                  var7 = -1;
            }

            var10000 = 86;
            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] ^ 41);
      }

      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 -> 104;
            case 1 -> 118;
            case 2 -> 96;
            case 3 -> 108;
            case 4 -> 123;
            case 5 -> 103;
            default -> 41;
         });
      }

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