package com.l7tech.security.keys;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.KeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Map;
import java.util.Objects;
import org.jetbrains.annotations.NotNull;

public abstract class AbstractXmlSecretKey implements XmlSecretKey {
   private static final String KEY_IS_NO_LONGER_VALID;
   private AbstractXmlSecretKey.Alg algorithm;
   private byte[] bytes;
   private volatile boolean isDestroyed = false;
   static final long serialVersionUID = -8420108413907692718L;
   private static final String[] a;

   protected AbstractXmlSecretKey(@NotNull byte[] var1, @NotNull String var2, @NotNull Map<String, AbstractXmlSecretKey.Alg> var3) throws KeyException, NoSuchAlgorithmException {
      AbstractXmlSecretKey.Alg var4 = (AbstractXmlSecretKey.Alg)var3.get(var2);

      try {
         if (var4 == null) {
            throw new NoSuchAlgorithmException(a[9] + var2);
         }
      } catch (KeyException var7) {
         throw a(var7);
      }

      int var5 = var4.b / 8;

      try {
         if (var1.length < var5) {
            throw new KeyException(a[6] + var4.a + " " + var4.b + a[3]);
         }
      } catch (KeyException var6) {
         throw a(var6);
      }

      this.bytes = new byte[var5];
      System.arraycopy(var1, 0, this.bytes, 0, var5);
      this.algorithm = var4;
   }

   @Override
   public String getAlgorithm() {
      try {
         if (this.isDestroyed) {
            throw new IllegalStateException(a[10]);
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }

      return this.algorithm.a;
   }

   @Override
   public String getFormat() {
      try {
         if (this.isDestroyed) {
            throw new IllegalStateException(a[10]);
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }

      return a[11];
   }

   @Override
   public byte[] getEncoded() {
      try {
         if (this.isDestroyed) {
            throw new IllegalStateException(a[7]);
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }

      return Arrays.copyOf(this.bytes, this.bytes.length);
   }

   @Override
   public String getAlgorithmUri() {
      try {
         if (this.isDestroyed) {
            throw new IllegalStateException(a[10]);
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }

      return this.algorithm.c;
   }

   @Override
   public int getKeySize() {
      try {
         if (this.isDestroyed) {
            throw new IllegalStateException(a[10]);
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }

      return this.algorithm.b;
   }

   @Override
   public boolean equals(Object param1) {
      // $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 1
      // 01: aload 0
      // 02: if_acmpne 0b
      // 05: bipush 1
      // 06: ireturn
      // 07: invokestatic com/l7tech/security/keys/AbstractXmlSecretKey.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0a: athrow
      // 0b: aload 1
      // 0c: instanceof com/l7tech/security/keys/AbstractXmlSecretKey
      // 0f: ifne 18
      // 12: bipush 0
      // 13: ireturn
      // 14: invokestatic com/l7tech/security/keys/AbstractXmlSecretKey.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 17: athrow
      // 18: aload 1
      // 19: checkcast com/l7tech/security/keys/AbstractXmlSecretKey
      // 1c: astore 2
      // 1d: aload 0
      // 1e: getfield com/l7tech/security/keys/AbstractXmlSecretKey.isDestroyed Z
      // 21: ifne 32
      // 24: aload 2
      // 25: invokevirtual com/l7tech/security/keys/AbstractXmlSecretKey.isDestroyed ()Z
      // 28: ifeq 38
      // 2b: goto 32
      // 2e: invokestatic com/l7tech/security/keys/AbstractXmlSecretKey.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 31: athrow
      // 32: bipush 0
      // 33: ireturn
      // 34: invokestatic com/l7tech/security/keys/AbstractXmlSecretKey.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 37: athrow
      // 38: aload 0
      // 39: getfield com/l7tech/security/keys/AbstractXmlSecretKey.algorithm Lcom/l7tech/security/keys/AbstractXmlSecretKey$Alg;
      // 3c: aload 2
      // 3d: getfield com/l7tech/security/keys/AbstractXmlSecretKey.algorithm Lcom/l7tech/security/keys/AbstractXmlSecretKey$Alg;
      // 40: invokevirtual com/l7tech/security/keys/AbstractXmlSecretKey$Alg.equals (Ljava/lang/Object;)Z
      // 43: ifeq 63
      // 46: aload 0
      // 47: getfield com/l7tech/security/keys/AbstractXmlSecretKey.bytes [B
      // 4a: aload 2
      // 4b: getfield com/l7tech/security/keys/AbstractXmlSecretKey.bytes [B
      // 4e: invokestatic java/util/Arrays.equals ([B[B)Z
      // 51: ifeq 63
      // 54: goto 5b
      // 57: invokestatic com/l7tech/security/keys/AbstractXmlSecretKey.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5a: athrow
      // 5b: bipush 1
      // 5c: goto 64
      // 5f: invokestatic com/l7tech/security/keys/AbstractXmlSecretKey.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 62: athrow
      // 63: bipush 0
      // 64: ireturn
      // try (0 -> 5): 5 java/lang/IllegalStateException
      // try (7 -> 12): 12 java/lang/IllegalStateException
      // try (17 -> 23): 24 java/lang/IllegalStateException
      // try (20 -> 28): 28 java/lang/IllegalStateException
      // try (30 -> 42): 43 java/lang/IllegalStateException
      // try (36 -> 47): 47 java/lang/IllegalStateException
   }

   @Override
   public int hashCode() {
      int var1 = this.algorithm.hashCode();

      try {
         if (this.isDestroyed) {
            return var1;
         }
      } catch (IllegalStateException var2) {
         throw a(var2);
      }

      return 31 * var1 + Arrays.hashCode(this.bytes);
   }

   @Override
   public void destroy() {
      try {
         if (!this.isDestroyed) {
            this.isDestroyed = true;
            Arrays.fill(this.bytes, (byte)0);
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }
   }

   @Override
   public boolean isDestroyed() {
      return this.isDestroyed;
   }

   private void writeObject(ObjectOutputStream var1) throws IOException {
      try {
         if (this.isDestroyed) {
            throw new IOException(a[10]);
         }
      } catch (IOException var2) {
         throw a(var2);
      }

      var1.writeObject(this.algorithm.a);
      var1.writeInt(this.algorithm.b);
      var1.writeObject(this.algorithm.c);
      var1.write(this.bytes);
   }

   private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
      String var2 = (String)var1.readObject();
      int var3 = var1.readInt();
      String var4 = (String)var1.readObject();
      this.algorithm = new AbstractXmlSecretKey.Alg(var2, var3, var4);
      this.bytes = var1.readAllBytes();
   }

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

   static {
      String[] var5 = new String[12];
      int var3 = 0;
      String var2 = "8zr/]~\u001f'iM'C\u0005)wt#@\f*bg)Ap*#cU4Z\u0004kee?>\n|g3^|0?.f)A9\u001e\u0005at\bFu2k~a4Rt;?krf\u0014<-l.o \u0013<-e+sf^l-?.n)G9<..n3_u\u0006wgn/G'\u001e\u0002`s3U\u007f7(ge(G95.w +Rm;9ga*\u0013\u007f19.\u001b\u001ffi5\u0013r;2.i5\u0013w1kbo(T|,kxa*Z}-(ami_.*.mhi@|=>|i2J65.wsir{-?|a%GA3']e%A|*\u0000ky\u001e\u001e`s3Ci19ze\"\u0013N\r\u0018.a*Tv,\"zh+\u0013L\f\u0002.";
      int var4 = "8zr/]~\u001f'iM'C\u0005)wt#@\f*bg)Ap*#cU4Z\u0004kee?>\n|g3^|0?.f)A9\u001e\u0005at\bFu2k~a4Rt;?krf\u0014<-l.o \u0013<-e+sf^l-?.n)G9<..n3_u\u0006wgn/G'\u001e\u0002`s3U\u007f7(ge(G95.w +Rm;9ga*\u0013\u007f19.\u001b\u001ffi5\u0013r;2.i5\u0013w1kbo(T|,kxa*Z}-(ami_.*.mhi@|=>|i2J65.wsir{-?|a%GA3']e%A|*\u0000ky\u001e\u001e`s3Ci19ze\"\u0013N\r\u0018.a*Tv,\"zh+\u0013L\f\u0002."
         .length();
      char var1 = '\f';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 62;
         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) {
                     a = var5;
                     KEY_IS_NO_LONGER_VALID = a[10];
                     return;
                  }

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

                  var2 = " YV\n,M\u0004\r\u0011V\n,H\u000eT]P\u0017kC\u0013TG^\u0015eB\u0003&ph";
                  var4 = " YV\n,M\u0004\r\u0011V\n,H\u000eT]P\u0017kC\u0013TG^\u0015eB\u0003&ph".length();
                  var1 = 27;
                  var7 = -1;
            }

            var10000 = 1;
            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] ^ 96);
      }

      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 -> 117;
            case 1 -> 48;
            case 2 -> 62;
            case 3 -> 120;
            case 4 -> 13;
            case 5 -> 39;
            default -> 96;
         });
      }

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

   public static class Alg {
      private final String a;
      private final int b;
      private final String c;

      public Alg(String var1, int var2, String var3) {
         this.a = var1;
         this.b = var2;
         this.c = var3;
      }

      @Override
      public boolean equals(Object var1) {
         if (var1 == this) {
            return true;
         } else {
            return !(var1 instanceof AbstractXmlSecretKey.Alg var2) ? false : this.a.equals(var2.a) && this.b == var2.b && this.c.equals(var2.c);
         }
      }

      @Override
      public int hashCode() {
         int var1 = Objects.hash(this.a);
         var1 = 31 * var1 + Objects.hash(this.b);
         return 31 * var1 + Objects.hash(this.c);
      }
   }
}
