package com.l7tech.security.xml.processor;

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

class e extends d implements DerivedKeyToken {
   private final byte[] a;
   private final XmlSecurityToken b;
   private final String c;
   private static final String d;

   public e(Element var1, byte[] var2, XmlSecurityToken var3) throws InvalidDocumentFormatException {
      super(var1);
      this.a = var2;
      this.b = var3;
      this.c = SoapUtil.getElementWsuId(var1);
   }

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

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

   byte[] a() {
      return this.a;
   }

   public XmlSecurityToken getSourceToken() {
      return this.b;
   }

   @Override
   public String toString() {
      return d + this.a.toString();
   }

   @Override
   public byte[] getSecretKey() {
      return this.a;
   }

   static {
      String var10002 = b(31, b("HaRX+\u001cvGaYe2\u0012wb>\u0000"));
      byte var10001 = -1;
      d = var10002;
   }

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

      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 -> 19;
            case 1 -> 27;
            case 2 -> 63;
            case 3 -> 46;
            case 4 -> 66;
            case 5 -> 102;
            default -> 13;
         });
      }

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