package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.AssertionNodeNameFactory;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.annotation.RequiresSOAP;
import java.util.regex.Pattern;

@RequiresSOAP(wss = true)
public class RequireWssSaml extends RequireSaml implements SecurityHeaderAddressable {
   private XmlSecurityRecipientContext recipientContext = XmlSecurityRecipientContext.getLocalRecipient();
   private boolean requireSenderVouchesWithMessageSignature = false;
   private boolean requireHolderOfKeyWithMessageSignature = false;
   static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   private static final Pattern converter;
   static final long serialVersionUID = -7160881717254078873L;
   private static final String[] c;

   public RequireWssSaml() {
   }

   public RequireWssSaml(RequireWssSaml var1) {
      this.copyFrom(var1);
   }

   public static RequireWssSaml newHolderOfKey() {
      RequireWssSaml var0 = new RequireWssSaml();
      setNewHolderOfKeyProperties(var0);
      return var0;
   }

   protected static void setNewHolderOfKeyProperties(RequireWssSaml var0) {
      var0.setVersion(0);
      var0.setRequireHolderOfKeyWithMessageSignature(true);
      var0.setSubjectConfirmations(new String[]{c[16]});
      var0.setSubjectConfirmationDataCheckAddress(true);
   }

   public static RequireWssSaml newSenderVouches() {
      RequireWssSaml var0 = new RequireWssSaml();
      var0.setVersion(0);
      var0.setRequireSenderVouchesWithMessageSignature(true);
      var0.setSubjectConfirmations(new String[]{c[30]});
      var0.setSubjectConfirmationDataCheckAddress(true);
      return var0;
   }

   public void copyFrom(RequireWssSaml var1) {
      super.copyFrom(var1);
      this.setRecipientContext(var1.getRecipientContext());
      this.setRequireHolderOfKeyWithMessageSignature(var1.isRequireHolderOfKeyWithMessageSignature());
      this.setRequireSenderVouchesWithMessageSignature(var1.isRequireSenderVouchesWithMessageSignature());
   }

   @Override
   public XmlSecurityRecipientContext getRecipientContext() {
      return this.recipientContext;
   }

   @Override
   public void setRecipientContext(XmlSecurityRecipientContext var1) {
      if (var1 == null) {
         var1 = XmlSecurityRecipientContext.getLocalRecipient();
      }

      this.recipientContext = var1;
   }

   public boolean isRequireHolderOfKeyWithMessageSignature() {
      return this.requireHolderOfKeyWithMessageSignature;
   }

   public void setRequireHolderOfKeyWithMessageSignature(boolean var1) {
      this.requireHolderOfKeyWithMessageSignature = var1;
   }

   public boolean isRequireSenderVouchesWithMessageSignature() {
      return this.requireSenderVouchesWithMessageSignature;
   }

   public void setRequireSenderVouchesWithMessageSignature(boolean var1) {
      this.requireSenderVouchesWithMessageSignature = var1;
   }

   @Override
   public boolean isCredentialSource() {
      return true;
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      String[] var2 = c;
      var1.put(var2[7], var2[20]);
      var1.put(var2[28], var2[3]);
      var1.put(var2[29], var2[15]);
      var1.put(var2[5], new p(this));
      var1.put(var2[21], var2[6]);
      var1.put(var2[8], var2[2]);
      var1.put(var2[31], var2[32]);
      var1.put(var2[13], var2[9]);
      var1.put(var2[11], policyNameFactory);
      var1.put(var2[1], Boolean.TRUE);
      var1.put(var2[26], var2[19]);
      var1.put(var2[12], var2[4]);
      var1.put(var2[22], var2[18]);
      var1.put(var2[23], new q(this));
      var1.put(var2[24], var2[27]);
      var1.put(var2[17], new String[]{var2[0]});
      return var1;
   }

   @Override
   protected String getAssertionDisplayName() {
      return c[14];
   }

   public static String toContextVariableName(String var0) {
      try {
         if (var0 == null) {
            throw new NullPointerException();
         }
      } catch (NullPointerException var4) {
         throw a(var4);
      }

      var0 = var0.trim();

      try {
         if (var0.length() < 1) {
            throw new IllegalArgumentException();
         }
      } catch (NullPointerException var3) {
         throw a(var3);
      }

      String var1 = converter.matcher(var0).replaceAll("_");

      try {
         if (Character.isDigit(var1.charAt(0))) {
            return "n" + var1;
         }
      } catch (NullPointerException var2) {
         throw a(var2);
      }

      return var1;
   }

   static {
      String[] var5 = new String[33];
      int var3 = 0;
      String var2 = "PVY\u0006Cn}^[N\u0011_q\fDF_\u0007rd}]\\_\rD\u0019btw/\u0010IQZPTC`oQW\\V\u0006\u0010JWKTH\u0007:vTN\u0006G|G\u0011VR\u0006SvM\u0011SU\u0011\u0010iVT\u0015i\"}Q\u001ebA[\u0017Up[_AICcx]DGS\u0017I=NCZJ\u0006BiWTF.RZWL\\*JTVRLSrPBZV\u0006\u001fo[BZO\u0011SxM\u001eMW\u000fgtJYv_\u0011D,\b\u001fRS\u0005\u0010PFI\u0006BiW^[|\u0002SiQCL=RZWM\\*JTVRMSrPBZV\u0006\u001eiLTP\u0014\u0013_qWRL\u0014\u0002TkWRP\u0014\"TylTDO\nBxiBFi\u0002]q\u007fUCS\u0000U\tB]U\u0011DS_\\P\u0014AGU\u0013UoJXPI\"SiW^[t\u0002]x2RZWM\\*JTVRMSrPBZV\u0006\u001e|]E\\U\r\u001eXZXAh\u0006AhWCPm\u0010CN_\\Y{\u0000DtQ_\u001acPK\u0016Yo[\u0011f{.|=j^^_\r\u0010ML^SS\u000fU\u0015AZV\nSdp^Q_-Qp[wTY\u0017_oG\u0019RYS\u0006^i\u007fBF_\u0011DtQ_eU\u000fY~GxVU\r\u0019AGU\u0013UoJXPI\"SiW^[y\u000fQnM_TW\u0006\u0012cPK\u0016Yo[\u0011f{.|=j^^_\r.RZWL\\*JTVRLSrPBZV\u0006\u001fo[BZO\u0011SxM\u001eMW\u000fgtJYv_\u0011D,\b\u001fRS\u0005,DGTY_|MXF\u0000\rQp[B\u000fN\u0000\nN\u007f|y\u0000R\u001e-\u0004RX\u0000\u000b_qZTG\u0017\fV0UTL\u0017BPY\f^y_CLj\u0002\\xJEP|\f\\y[CF2RZWM\\*JTVRM@rRXVCMF|RXQ[\u0017_o\u0010bTW\u000fci_EPW\u0006^ihPYS\u0007QiQC=RZWM\\*JTVRM@oQIL\u0014\u0013_qWRL\u0014\u0002Cn[CAS\f^3F\\YI\u0006S3}]\\_\rDO[@@_\u0010DJMBf[\u000e\\\u001acPK\u0016Yo[\u0011f{.|=j^^_\r\u0010ML^SS\u000fU\u0015AZV\nSd\u007fUCS\u0000U^RPFI\rQp[\u0018AZV\nSdhPYS\u0007QiQCvV\u0002CnPPX_\u001bAZV\nSdhPYS\u0007QiQCsV\u0002WnxPVN\fBd\u0017CPI\f\\k[Ue[\u000fUiJT{U\u0007US_\\P\fjk[NJ\\\u0013k\u0005\u0017Zm\u0018RYS\u0006^i\u007fBF_\u0011DtQ_vV\u0002CnPPX_\u001fcPK\u0016Yo[\u0011f{.|=j^^_\r\u0010ML^SS\u000fU=\u0016G\u0004\u0013\u000bUPI\u0000BtNE\\U\r\u000fATV\u0006Di[\u007fZ^\u0006y~Q_-DGTY_|MXF\u0000\rQp[B\u000fN\u0000\nN\u007f|y\u0000R\u001e-\u0004RX\u0000\u0010UsZTG\u0017\u0015_h]YPI";
      int var4 = "PVY\u0006Cn}^[N\u0011_q\fDF_\u0007rd}]\\_\rD\u0019btw/\u0010IQZPTC`oQW\\V\u0006\u0010JWKTH\u0007:vTN\u0006G|G\u0011VR\u0006SvM\u0011SU\u0011\u0010iVT\u0015i\"}Q\u001ebA[\u0017Up[_AICcx]DGS\u0017I=NCZJ\u0006BiWTF.RZWL\\*JTVRLSrPBZV\u0006\u001fo[BZO\u0011SxM\u001eMW\u000fgtJYv_\u0011D,\b\u001fRS\u0005\u0010PFI\u0006BiW^[|\u0002SiQCL=RZWM\\*JTVRMSrPBZV\u0006\u001eiLTP\u0014\u0013_qWRL\u0014\u0002TkWRP\u0014\"TylTDO\nBxiBFi\u0002]q\u007fUCS\u0000U\tB]U\u0011DS_\\P\u0014AGU\u0013UoJXPI\"SiW^[t\u0002]x2RZWM\\*JTVRMSrPBZV\u0006\u001e|]E\\U\r\u001eXZXAh\u0006AhWCPm\u0010CN_\\Y{\u0000DtQ_\u001acPK\u0016Yo[\u0011f{.|=j^^_\r\u0010ML^SS\u000fU\u0015AZV\nSdp^Q_-Qp[wTY\u0017_oG\u0019RYS\u0006^i\u007fBF_\u0011DtQ_eU\u000fY~GxVU\r\u0019AGU\u0013UoJXPI\"SiW^[y\u000fQnM_TW\u0006\u0012cPK\u0016Yo[\u0011f{.|=j^^_\r.RZWL\\*JTVRLSrPBZV\u0006\u001fo[BZO\u0011SxM\u001eMW\u000fgtJYv_\u0011D,\b\u001fRS\u0005,DGTY_|MXF\u0000\rQp[B\u000fN\u0000\nN\u007f|y\u0000R\u001e-\u0004RX\u0000\u000b_qZTG\u0017\fV0UTL\u0017BPY\f^y_CLj\u0002\\xJEP|\f\\y[CF2RZWM\\*JTVRM@rRXVCMF|RXQ[\u0017_o\u0010bTW\u000fci_EPW\u0006^ihPYS\u0007QiQC=RZWM\\*JTVRM@oQIL\u0014\u0013_qWRL\u0014\u0002Cn[CAS\f^3F\\YI\u0006S3}]\\_\rDO[@@_\u0010DJMBf[\u000e\\\u001acPK\u0016Yo[\u0011f{.|=j^^_\r\u0010ML^SS\u000fU\u0015AZV\nSd\u007fUCS\u0000U^RPFI\rQp[\u0018AZV\nSdhPYS\u0007QiQCvV\u0002CnPPX_\u001bAZV\nSdhPYS\u0007QiQCsV\u0002WnxPVN\fBd\u0017CPI\f\\k[Ue[\u000fUiJT{U\u0007US_\\P\fjk[NJ\\\u0013k\u0005\u0017Zm\u0018RYS\u0006^i\u007fBF_\u0011DtQ_vV\u0002CnPPX_\u001fcPK\u0016Yo[\u0011f{.|=j^^_\r\u0010ML^SS\u000fU=\u0016G\u0004\u0013\u000bUPI\u0000BtNE\\U\r\u000fATV\u0006Di[\u007fZ^\u0006y~Q_-DGTY_|MXF\u0000\rQp[B\u000fN\u0000\nN\u007f|y\u0000R\u001e-\u0004RX\u0000\u0010UsZTG\u0017\u0015_h]YPI"
         .length();
      char var1 = '\r';
      int var7 = -1;

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

         while (true) {
            String var8 = d(var10000, d(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     baseName = c[10];
                     policyNameFactory = new o();
                     converter = Pattern.compile(c[25]);
                     return;
                  }

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

                  var2 = "\u001c\u001a\bN\b2\u0017\u0005\r\u0014\u007f\u000e4\n\u0003\u0006.]\u0002.'\u000f\u0007\n\u0011\u0001w\u0017\t\u000b\u000f\u0011\u000e/\r\u001f\u0007\u000b[B2\u0006\u001f\u0007\u0012L\u000e%\u0010C-\u0003W\u0019qUB\u000f\u000eX";
                  var4 = "\u001c\u001a\bN\b2\u0017\u0005\r\u0014\u007f\u000e4\n\u0003\u0006.]\u0002.'\u000f\u0007\n\u0011\u0001w\u0017\t\u000b\u000f\u0011\u000e/\r\u001f\u0007\u000b[B2\u0006\u001f\u0007\u0012L\u000e%\u0010C-\u0003W\u0019qUB\u000f\u000eX"
                     .length();
                  var1 = 20;
                  var7 = -1;
            }

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

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

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

      return var10000;
   }

   private static String d(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 -> 94;
            case 1 -> 90;
            case 2 -> 85;
            case 3 -> 12;
            case 4 -> 95;
            case 5 -> 114;
            default -> 81;
         });
      }

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