package com.l7tech.security.xml.processor;

import com.l7tech.security.token.SecurityContextToken;
import com.l7tech.security.token.SecurityTokenType;
import com.l7tech.util.InvalidDocumentFormatException;
import com.l7tech.xml.soap.SoapUtil;
import org.w3c.dom.Element;

public class SecurityContextTokenImpl extends f implements SecurityContextToken {
   private final SecurityContext c;
   private final String d;
   private final String e;
   private final String f;
   private static final String g;

   public SecurityContextTokenImpl(SecurityContext var1, Element var2, String var3) throws InvalidDocumentFormatException {
      super(var2);
      this.c = var1;
      this.d = var3;
      SecurityContextTokenImpl var10000 = this;
      String var10001 = var2 != null ? var2.getNamespaceURI() : SoapUtil.WSSC_NAMESPACE2;

      label20: {
         try {
            var10000.e = var10001;
            var10000 = this;
            if (var2 != null) {
               var10001 = SoapUtil.getElementWsuId(var2);
               break label20;
            }
         } catch (InvalidDocumentFormatException var4) {
            throw a(var4);
         }

         var10001 = null;
      }

      var10000.f = var10001;
   }

   @Override
   public SecurityContext getSecurityContext() {
      return this.c;
   }

   @Override
   public SecurityTokenType getType() {
      return SecurityTokenType.WSSC_CONTEXT;
   }

   @Override
   public String getElementId() {
      return this.f;
   }

   @Override
   public String getContextIdentifier() {
      return this.d;
   }

   @Override
   public String getWsscNamespace() {
      return this.e;
   }

   @Override
   public String toString() {
      return g + this.c.toString();
   }

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

   static {
      String var10002 = b(108, b("Z%_9lc\u0011p\u0003S\"jo\u001d}\u0014S'{d_)"));
      byte var10001 = -1;
      g = var10002;
   }

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

      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 -> 101;
            case 1 -> 44;
            case 2 -> 80;
            case 3 -> 32;
            case 4 -> 114;
            case 5 -> 102;
            default -> 9;
         });
      }

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