package com.l7tech.security.saml;

import com.l7tech.common.io.CertUtils;
import com.l7tech.message.Message;
import com.l7tech.security.xml.DsigUtil;
import com.l7tech.security.xml.KeyInfoDetails;
import com.l7tech.security.xml.KeyInfoInclusionType;
import com.l7tech.security.xml.SignatureCreationContext;
import com.l7tech.security.xml.SignerInfo;
import com.l7tech.security.xml.SupportedDigestMethods;
import com.l7tech.security.xml.SupportedSignatureMethods;
import com.l7tech.security.xml.decorator.DecorationRequirements;
import com.l7tech.security.xml.decorator.DecoratorException;
import com.l7tech.security.xml.decorator.WssDecoratorImpl;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.DomUtils;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.HexUtils;
import com.l7tech.util.InvalidDocumentFormatException;
import com.l7tech.util.NamespaceFactory;
import com.l7tech.util.RandomUtil;
import com.l7tech.util.SoapConstants;
import com.l7tech.util.TooManyChildElementsException;
import com.l7tech.xml.MessageNotSoapException;
import com.l7tech.xml.saml.SamlAssertion;
import com.l7tech.xml.soap.SoapUtil;
import java.io.IOException;
import java.net.InetAddress;
import java.security.GeneralSecurityException;
import java.security.PrivateKey;
import java.security.SignatureException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Set;
import java.util.TimeZone;
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.keys.KeyInfo;
import org.apache.xml.security.keys.content.X509Data;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;

public class SamlAssertionGenerator {
   public static final String BEFORE_OFFSET_SYSTEM_PROPERTY;
   public static final String AFTER_OFFSET_SYSTEM_PROPERTY;
   public static final String SUBJECT_ENABLE_DNS_SYSTEM_PROPERTY;
   static final TimeZone a;
   private static final String b;
   private final SignerInfo c;
   private final e d;
   private final e e;
   static final int f = 120;
   static final int g = 300;
   private static final String[] h;

   public SamlAssertionGenerator(SignerInfo var1) {
      this.c = var1;
      this.d = new f();
      this.e = new g();
   }

   public Document createAssertion(SubjectStatement var1, SamlAssertionGenerator.Options var2) throws SignatureException, CertificateException, UnrecoverableKeyException {
      return this.createAssertion(new SubjectStatement[]{var1}, var2);
   }

   public Document createAssertion(SubjectStatement[] var1, SamlAssertionGenerator.Options var2) throws SignatureException, CertificateException, UnrecoverableKeyException {
      String var3 = var2.getCustomIssuer();

      String var10000;
      label41: {
         try {
            if (var3 != null) {
               var10000 = null;
               break label41;
            }
         } catch (SignatureException var8) {
            throw a(var8);
         }

         var10000 = this.c.getCertificateChain()[0].getSubjectDN().getName();
      }

      String var4 = var10000;

      label33: {
         try {
            if (var2.getVersion() == 1) {
               var9 = this.d.createStatementDocument(var2, var4, var1);
               break label33;
            }
         } catch (SignatureException var7) {
            throw a(var7);
         }

         var9 = this.e.createStatementDocument(var2, var4, var1);
      }

      Document var5 = var9;

      try {
         if (var2.isSignAssertion()) {
            signAssertion(var2, var5, this.c.getPrivate(), this.c.getCertificateChain(), var2.getIssuerKeyInfoType());
         }

         return var5;
      } catch (SignatureException var6) {
         throw a(var6);
      }
   }

   public Document attachStatement(Document param1, SubjectStatement param2, SamlAssertionGenerator.Options param3) throws SignatureException, CertificateException, UnrecoverableKeyException {
      // $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 0
      // 01: getfield com/l7tech/security/saml/SamlAssertionGenerator.c Lcom/l7tech/security/xml/SignerInfo;
      // 04: invokevirtual com/l7tech/security/xml/SignerInfo.getCertificateChain ()[Ljava/security/cert/X509Certificate;
      // 07: bipush 0
      // 08: aaload
      // 09: invokevirtual java/security/cert/X509Certificate.getSubjectDN ()Ljava/security/Principal;
      // 0c: invokeinterface java/security/Principal.getName ()Ljava/lang/String; 1
      // 11: astore 4
      // 13: aload 3
      // 14: invokevirtual com/l7tech/security/saml/SamlAssertionGenerator$Options.getVersion ()I
      // 17: bipush 1
      // 18: if_icmpne 34
      // 1b: aload 0
      // 1c: getfield com/l7tech/security/saml/SamlAssertionGenerator.d Lcom/l7tech/security/saml/e;
      // 1f: aload 3
      // 20: aload 4
      // 22: bipush 1
      // 23: anewarray 455
      // 26: dup
      // 27: bipush 0
      // 28: aload 2
      // 29: aastore
      // 2a: invokevirtual com/l7tech/security/saml/e.createStatementDocument (Lcom/l7tech/security/saml/SamlAssertionGenerator$Options;Ljava/lang/String;[Lcom/l7tech/security/saml/SubjectStatement;)Lorg/w3c/dom/Document;
      // 2d: goto 46
      // 30: invokestatic com/l7tech/security/saml/SamlAssertionGenerator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 33: athrow
      // 34: aload 0
      // 35: getfield com/l7tech/security/saml/SamlAssertionGenerator.e Lcom/l7tech/security/saml/e;
      // 38: aload 3
      // 39: aload 4
      // 3b: bipush 1
      // 3c: anewarray 455
      // 3f: dup
      // 40: bipush 0
      // 41: aload 2
      // 42: aastore
      // 43: invokevirtual com/l7tech/security/saml/e.createStatementDocument (Lcom/l7tech/security/saml/SamlAssertionGenerator$Options;Ljava/lang/String;[Lcom/l7tech/security/saml/SubjectStatement;)Lorg/w3c/dom/Document;
      // 46: astore 5
      // 48: aload 3
      // 49: invokevirtual com/l7tech/security/saml/SamlAssertionGenerator$Options.isSignAssertion ()Z
      // 4c: ifeq 7c
      // 4f: aload 2
      // 50: invokevirtual com/l7tech/security/saml/SubjectStatement.isConfirmationHolderOfKey ()Z
      // 53: ifeq 7c
      // 56: goto 5d
      // 59: invokestatic com/l7tech/security/saml/SamlAssertionGenerator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5c: athrow
      // 5d: aload 3
      // 5e: aload 5
      // 60: aload 0
      // 61: getfield com/l7tech/security/saml/SamlAssertionGenerator.c Lcom/l7tech/security/xml/SignerInfo;
      // 64: invokevirtual com/l7tech/security/xml/SignerInfo.getPrivate ()Ljava/security/PrivateKey;
      // 67: aload 0
      // 68: getfield com/l7tech/security/saml/SamlAssertionGenerator.c Lcom/l7tech/security/xml/SignerInfo;
      // 6b: invokevirtual com/l7tech/security/xml/SignerInfo.getCertificateChain ()[Ljava/security/cert/X509Certificate;
      // 6e: aload 3
      // 6f: invokevirtual com/l7tech/security/saml/SamlAssertionGenerator$Options.getIssuerKeyInfoType ()Lcom/l7tech/security/xml/KeyInfoInclusionType;
      // 72: invokestatic com/l7tech/security/saml/SamlAssertionGenerator.signAssertion (Lcom/l7tech/security/saml/SamlAssertionGenerator$Options;Lorg/w3c/dom/Document;Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;Lcom/l7tech/security/xml/KeyInfoInclusionType;)V
      // 75: goto 7c
      // 78: invokestatic com/l7tech/security/saml/SamlAssertionGenerator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7b: athrow
      // 7c: aload 0
      // 7d: aload 1
      // 7e: aload 5
      // 80: aload 3
      // 81: invokevirtual com/l7tech/security/saml/SamlAssertionGenerator.attachAssertion (Lorg/w3c/dom/Document;Lorg/w3c/dom/Document;Lcom/l7tech/security/saml/SamlAssertionGenerator$Options;)V
      // 84: aload 5
      // 86: areturn
      // try (8 -> 24): 24 java/security/SignatureException
      // try (38 -> 44): 45 java/security/SignatureException
      // try (41 -> 58): 59 java/security/SignatureException
   }

   protected void attachAssertion(Document var1, Document var2, SamlAssertionGenerator.Options var3) throws SignatureException, CertificateException {
      try {
         Element var4 = SoapUtil.getBodyElement(var1);

         try {
            if (var4 == null) {
               throw new MessageNotSoapException();
            }
         } catch (SignatureException var10) {
            throw a(var10);
         }

         WssDecoratorImpl var5 = new WssDecoratorImpl();
         DecorationRequirements var6 = new DecorationRequirements();
         Set var7 = var6.getElementsToSign();
         if (var3.isProofOfPosessionRequired()) {
            SignerInfo var8 = var3.getAttestingEntity();

            try {
               if (var8 == null) {
                  throw new IllegalArgumentException(h[1]);
               }
            } catch (SignatureException var11) {
               throw a(var11);
            }

            var7.add(var4);
            var6.setSenderSamlToken(SamlAssertion.newInstance(var2.getDocumentElement()));
            var6.setSenderMessageSigningPrivateKey(var8.getPrivate());
            var6.setSenderMessageSigningCertificate(var8.getCertificateChain()[0]);
         }

         var6.setSecurityHeaderActor(var3.getSecurityHeaderActor());
         var5.decorateMessage(new Message(var1), var6);
      } catch (SignatureException var12) {
         throw var12;
      } catch (CertificateException var13) {
         throw var13;
      } catch (DecoratorException var14) {
         String var27 = ExceptionUtils.getMessage(var14);
         String[] var23 = h;
         throw new SignatureException(var23[0] + var27, var14);
      } catch (MessageNotSoapException var15) {
         String var26 = ExceptionUtils.getMessage(var15);
         String[] var22 = h;
         throw new SignatureException(var22[13] + var26, var15);
      } catch (InvalidDocumentFormatException var16) {
         String var25 = ExceptionUtils.getMessage(var16);
         String[] var21 = h;
         throw new SignatureException(var21[13] + var25, var16);
      } catch (IOException var17) {
         String var24 = ExceptionUtils.getMessage(var17);
         String[] var20 = h;
         throw new SignatureException(var20[13] + var24, var17);
      } catch (GeneralSecurityException var18) {
         String var10002 = ExceptionUtils.getMessage(var18);
         String[] var9 = h;
         throw new SignatureException(var9[13] + var10002, var18);
      } catch (SAXException var19) {
         throw new SignatureException(h[13] + ExceptionUtils.getMessage(var19), var19);
      }
   }

   public static void signAssertion(SamlAssertionGenerator.Options var0, Document var1, PrivateKey var2, X509Certificate[] var3, KeyInfoInclusionType var4) throws SignatureException {
      SupportedSignatureMethods var5 = DsigUtil.getSignatureMethod(var2);
      String var6 = SupportedDigestMethods.fromAlias(var5.getDigestAlgorithmName()).getCanonicalName();
      SignatureCreationContext.Builder var7 = new SignatureCreationContext.Builder();

      String var10000;
      label75: {
         try {
            var7.setSigningKey(var2);
            var7.setSignatureMethodDigestAlg(var5.getDigestAlgorithmName());
            var7.setReferenceDigestAlg(var6);
            if (var0.getVersion() == 1) {
               var10000 = h[2];
               break label75;
            }
         } catch (Exception var23) {
            throw a(var23);
         }

         String[] var16 = h;
         var10000 = var16[14];
      }

      String var8 = var10000;
      var7.includeEnvelopedTransform(true);
      String var9 = var1.getDocumentElement().getAttribute(var8);
      var7.setElementReferenceList(List.of(new SignatureCreationContext.ElementReference(var1.getDocumentElement(), null, var8, var9)));
      var7.addInclusiveNamespaceToTransform(true);
      KeyInfo var10 = new KeyInfo(var1);
      Element var11;
      switch (com.l7tech.security.saml.b.a[var4.ordinal()]) {
         case 1:
            var11 = var10.getElement();

            try {
               String var25 = CertUtils.getThumbprintSHA1(var3[0]);
               KeyInfoDetails.makeKeyId(var25, true, SoapConstants.VALUETYPE_X509_THUMB_SHA1).populateExistingKeyInfoElement(new NamespaceFactory(), var11);
               break;
            } catch (Exception var19) {
               throw new SignatureException(var19);
            }
         case 2:
            var11 = var10.getElement();

            try {
               String var24 = CertUtils.getSki(var3[0]);
               KeyInfoDetails.makeKeyId(var24, true, SoapConstants.VALUETYPE_SKI).populateExistingKeyInfoElement(new NamespaceFactory(), var11);
               break;
            } catch (Exception var18) {
               throw new SignatureException(var18);
            }
         case 3:
            X509Data var12 = new X509Data(var1);

            try {
               var12.addSubjectName(var3[0]);
               var12.addCertificate(var3[0]);
            } catch (XMLSecurityException var17) {
               throw new SignatureException(var17);
            }

            var10.add(var12);
            var11 = var10.getElement();
            break;
         case 4:
         default:
            String[] var27 = h;
            throw new IllegalArgumentException(var27[11]);
      }

      String[] var28 = h;
      var11.setAttributeNS(DomUtils.XMLNS_NS, var28[10], SoapConstants.DIGSIG_URI);
      var7.setKeyInfoChildElement(var11);
      Element var26 = var7.build().createSignature();
      Node var13 = var1.importNode(var26, true);

      try {
         if (var0.getVersion() == 1) {
            var1.getDocumentElement().appendChild(var13);
            return;
         }
      } catch (Exception var22) {
         throw a(var22);
      }

      try {
         Element var14 = var1.getDocumentElement();
         var28 = h;
         Element var15 = DomUtils.findOnlyOneChildElementByName(var14, var28[9], var28[4]);

         try {
            if (var15 == null) {
               throw new IllegalArgumentException(var28[3]);
            }
         } catch (Exception var20) {
            throw a(var20);
         }

         var14.insertBefore(var13, DomUtils.findNextElementSibling(var15));
      } catch (TooManyChildElementsException var21) {
         throw new IllegalArgumentException(h[15], var21);
      }
   }

   public static String generateAssertionId(@Nullable String var0) {
      byte[] var1 = new byte[16];

      try {
         RandomUtil.nextBytes(var1);
         if (var0 != null) {
            return var0 + "-" + HexUtils.hexDump(var1);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      return h[6] + "-" + HexUtils.hexDump(var1);
   }

   static {
      String[] var5 = new String[17];
      int var3 = 0;
      String var2 = "4\u0006:&;Ro\u0018\u0013& '\u0015<\u0005\u001c-i\u001a3Q=T< *\u0019y\u0005Nh;!\u0006'&/RS\u0017T8&:\u0001y\u0002\u0007!&'Rn\u0014\u0005= ;\u0017x]T? =\u001as\u0004\u0000h(=\u0006y\u0002\u0000!'.Ry\u001f\u0000!=0Rw\u0014\r;\u000b0\u0007;,;\u0006u\u001e\u001a\u0001\r\"8\u001a>(%\u001bxQ'\t\u0004\u0005R]\u0002\u0007-;=\u001bs\u001fT`'&RU\u0002\u0007=,;[\u00068\u0007;<,\u0000$\u0002\u0015%%g\u0010y\u0017\u001b:,g\u001fu\u001f\u0001<,g\u001dz\u0017\u0007-=g\u001e+\u0005\u0011+!g\u0011s\u001c\r\"\u0015%%\b\u0001o\u0014\u0006< &\u001c\"\u0012\u001b%g%Eh\u0014\u0017 g:\u0017\u007f\u0004\u0006!=0\\o\u0010\u0019$g,\u001c}\u0013\u0018-\r\u0007!#\u0002\u0015%%g\u0013z\u0005\u0011:g$\u001br\u0004\u0000-g&\u0014z\u0002\u0011<g%Eh\u0014\u0017 g*\u001dq%\u0004\u0006&s&\u0013o\u0018\u0007r'(\u001fy\u0002N<*s!]<8r{gB&\u0010\u0007;,;\u0006u\u001e\u001a\u0005\t\u0019$':3:\u00111\u0000'\u0014s%\r8,i\u001fi\u0002\u0000h+,R_4&\u001cei!H#+\u001c\u0001\u001c?^!&\u0001\u0007\u001dRs\u0003T\u001b\u001d\u001b-O:=\r\"\u0015%%\b\u0001o\u0014\u0006< &\u001c\u001f4\u0006:&;Ro\u0018\u0013& '\u0015<\u0005\u001c-i\u001a3Q=T< *\u0019y\u0005Nh\u000280";
      int var4 = "4\u0006:&;Ro\u0018\u0013& '\u0015<\u0005\u001c-i\u001a3Q=T< *\u0019y\u0005Nh;!\u0006'&/RS\u0017T8&:\u0001y\u0002\u0007!&'Rn\u0014\u0005= ;\u0017x]T? =\u001as\u0004\u0000h(=\u0006y\u0002\u0000!'.Ry\u001f\u0000!=0Rw\u0014\r;\u000b0\u0007;,;\u0006u\u001e\u001a\u0001\r\"8\u001a>(%\u001bxQ'\t\u0004\u0005R]\u0002\u0007-;=\u001bs\u001fT`'&RU\u0002\u0007=,;[\u00068\u0007;<,\u0000$\u0002\u0015%%g\u0010y\u0017\u001b:,g\u001fu\u001f\u0001<,g\u001dz\u0017\u0007-=g\u001e+\u0005\u0011+!g\u0011s\u001c\r\"\u0015%%\b\u0001o\u0014\u0006< &\u001c\"\u0012\u001b%g%Eh\u0014\u0017 g:\u0017\u007f\u0004\u0006!=0\\o\u0010\u0019$g,\u001c}\u0013\u0018-\r\u0007!#\u0002\u0015%%g\u0013z\u0005\u0011:g$\u001br\u0004\u0000-g&\u0014z\u0002\u0011<g%Eh\u0014\u0017 g*\u001dq%\u0004\u0006&s&\u0013o\u0018\u0007r'(\u001fy\u0002N<*s!]<8r{gB&\u0010\u0007;,;\u0006u\u001e\u001a\u0005\t\u0019$':3:\u00111\u0000'\u0014s%\r8,i\u001fi\u0002\u0000h+,R_4&\u001cei!H#+\u001c\u0001\u001c?^!&\u0001\u0007\u001dRs\u0003T\u001b\u001d\u001b-O:=\r\"\u0015%%\b\u0001o\u0014\u0006< &\u001c\u001f4\u0006:&;Ro\u0018\u0013& '\u0015<\u0005\u001c-i\u001a3Q=T< *\u0019y\u0005Nh\u000280"
         .length();
      char var1 = 31;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 74;
         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) {
                     h = var5;
                     String[] var9 = h;
                     SUBJECT_ENABLE_DNS_SYSTEM_PROPERTY = h[7];
                     AFTER_OFFSET_SYSTEM_PROPERTY = var9[8];
                     b = var9[12];
                     BEFORE_OFFSET_SYSTEM_PROPERTY = var9[5];
                     a = TimeZone.getTimeZone(h[16]);
                     return;
                  }

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

                  var2 = "?\u001d9/\"\u001c\u007fV \u000e\u0003\u0002UZ\u0005\u0000*<:\u001ct\u0018Sg#;\u0019o\u001f\u0003#+n<h\u0005\u0006*<=\\\u0003#'\f";
                  var4 = "?\u001d9/\"\u001c\u007fV \u000e\u0003\u0002UZ\u0005\u0000*<:\u001ct\u0018Sg#;\u0019o\u001f\u0003#+n<h\u0005\u0006*<=\\\u0003#'\f"
                     .length();
                  var1 = ')';
                  var7 = -1;
            }

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

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

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

      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 -> 59;
            case 1 -> 62;
            case 2 -> 2;
            case 3 -> 3;
            case 4 -> 3;
            case 5 -> 56;
            default -> 86;
         });
      }

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

   public static class Options {
      public static final int VERSION_1 = 1;
      public static final int VERSION_2 = 2;
      private KeyInfoInclusionType a = KeyInfoInclusionType.CERT;
      private boolean b = true;
      private int c = 120;
      private int d = 300;
      private InetAddress e;
      private boolean f;
      private boolean g;
      private SignerInfo h;
      private String i;
      private int j;
      private String k;
      private List<String> l;
      private String m;
      private String n;
      private String o;
      private int p;
      private int q;
      private String r;
      private String s;
      private String t;
      private static final String u;

      public Options() {
         this.f = ConfigFactory.getBooleanProperty(u, false);
         this.g = true;
         this.j = 1;
         this.p = -1;
         this.q = -1;
      }

      public int getNotBeforeSeconds() {
         return this.c;
      }

      public void setNotBeforeSeconds(int var1) {
         this.c = var1;
      }

      public int getNotAfterSeconds() {
         return this.d;
      }

      public void setNotAfterSeconds(int var1) {
         this.d = var1;
      }

      public boolean isProofOfPosessionRequired() {
         return this.b;
      }

      public void setProofOfPosessionRequired(boolean var1) {
         this.b = var1;
      }

      public boolean isSignAssertion() {
         return this.g;
      }

      public void setSignAssertion(boolean var1) {
         this.g = var1;
      }

      public InetAddress getClientAddress() {
         return this.e;
      }

      public void setClientAddress(InetAddress var1) {
         this.e = var1;
      }

      public boolean isClientAddressDNS() {
         return this.f;
      }

      public void setClientAddressDNS(boolean var1) {
         this.f = var1;
      }

      public void setId(String var1) {
         this.i = var1;
      }

      public String getId() {
         return this.i;
      }

      public SignerInfo getAttestingEntity() {
         return this.h;
      }

      public void setAttestingEntity(SignerInfo var1) {
         this.h = var1;
      }

      public int getVersion() {
         return this.j;
      }

      public void setVersion(int var1) {
         this.j = var1;
      }

      public String getSecurityHeaderActor() {
         return this.k;
      }

      public void setSecurityHeaderActor(String var1) {
         this.k = var1;
      }

      public KeyInfoInclusionType getIssuerKeyInfoType() {
         return this.a;
      }

      public void setIssuerKeyInfoType(KeyInfoInclusionType var1) {
         this.a = var1;
      }

      public List<String> getAudienceRestriction() {
         return this.l;
      }

      public void setAudienceRestriction(List<String> var1) {
         this.l = var1;
      }

      public String getSubjectConfirmationDataRecipient() {
         return this.m;
      }

      public void setSubjectConfirmationDataRecipient(String var1) {
         this.m = var1;
      }

      public String getSubjectConfirmationDataAddress() {
         return this.n;
      }

      public void setSubjectConfirmationDataAddress(String var1) {
         this.n = var1;
      }

      public String getSubjectConfirmationDataInResponseTo() {
         return this.o;
      }

      public void setSubjectConfirmationDataInResponseTo(String var1) {
         this.o = var1;
      }

      public int getSubjectConfirmationDataNotBeforeSecondsInPast() {
         return this.p;
      }

      public void setSubjectConfirmationDataNotBeforeSecondsInPast(int var1) {
         this.p = var1;
      }

      public int getSubjectConfirmationDataNotOnOrAfterExpirySeconds() {
         return this.q;
      }

      public void setSubjectConfirmationDataNotOnOrAfterExpirySeconds(int var1) {
         this.q = var1;
      }

      @Nullable
      public String getCustomIssuer() {
         return this.r;
      }

      public void setCustomIssuer(String var1) {
         this.r = var1;
      }

      @Nullable
      public String getCustomIssuerFormat() {
         return this.s;
      }

      public void setCustomIssuerFormat(String var1) {
         this.s = var1;
      }

      @Nullable
      public String getCustomIssuerNameQualifier() {
         return this.t;
      }

      public void setCustomIssuerNameQualifier(String var1) {
         this.t = var1;
      }

      static {
         String var10002 = a(43, a(",\u000b\u0002bkdQ*\u0007\u0007bt6F:\u0016\u00068~}V.\t\u0003bb=D-\b\n\bI\u0000"));
         byte var10001 = -1;
         u = var10002;
      }

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

         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 -> 100;
               case 1 -> 79;
               case 2 -> 68;
               case 3 -> 103;
               case 4 -> 44;
               case 5 -> 120;
               default -> 14;
            });
         }

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