package com.l7tech.gateway.common.security.signer;

import com.l7tech.common.io.CertGenParams;
import com.l7tech.common.io.CertUtils;
import com.l7tech.common.io.KeyGenParams;
import com.l7tech.common.io.NullOutputStream;
import com.l7tech.common.io.TeeInputStream;
import com.l7tech.security.cert.BouncyCastleCertUtils;
import com.l7tech.security.cert.ParamsKeyGenerator;
import com.l7tech.security.prov.JceProvider;
import com.l7tech.security.prov.RsaSignerEngine;
import com.l7tech.util.BufferPool;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.FileUtils;
import com.l7tech.util.HexUtils;
import com.l7tech.util.IOUtils;
import com.l7tech.util.PoolByteArrayOutputStream;
import com.l7tech.util.ResourceUtils;
import com.l7tech.util.FileUtils.LastModifiedFileInputStream;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileAlreadyExistsException;
import java.security.DigestInputStream;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.cert.CertPath;
import java.security.cert.CertPathBuilder;
import java.security.cert.CertPathBuilderResult;
import java.security.cert.CertPathValidator;
import java.security.cert.CertStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CollectionCertStoreParameters;
import java.security.cert.PKIXBuilderParameters;
import java.security.cert.PKIXCertPathValidatorResult;
import java.security.cert.PKIXParameters;
import java.security.cert.TrustAnchor;
import java.security.cert.X509CertSelector;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.security.auth.x500.X500Principal;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class SignerUtils {
   private static final String a;
   private static final String b;
   private static final String c;
   private static final String d;
   public static final String[] ALL_SIGNING_PROPERTIES;
   private static final String e;
   private static final String f;
   private static final int g = 1048576;
   private static final String[] i;

   public static void signZip(@NotNull Certificate var0, @NotNull PrivateKey var1, @NotNull InputStream var2, @NotNull OutputStream var3) throws Exception {
      try {
         if (var0 == null) {
            a(0);
         }
      } catch (Throwable var17) {
         throw a(var17);
      }

      try {
         if (var1 == null) {
            a(1);
         }
      } catch (Throwable var21) {
         throw a(var21);
      }

      try {
         if (var2 == null) {
            a(2);
         }
      } catch (Throwable var16) {
         throw a(var16);
      }

      try {
         if (var3 == null) {
            a(3);
         }
      } catch (Throwable var20) {
         throw a(var20);
      }

      try (ZipOutputStream var4 = new ZipOutputStream(var3)) {
         String[] var13 = i;
         var4.putNextEntry(new ZipEntry(var13[47]));
         TeeInputStream var5 = new TeeInputStream(var2, var4);
         DigestInputStream var6 = new DigestInputStream(var5, MessageDigest.getInstance(var13[76]));
         IOUtils.copyStream(var6, new NullOutputStream());
         byte[] var7 = var6.getMessageDigest().digest();
         var4.putNextEntry(new ZipEntry(var13[61]));
         String var8 = var1.getAlgorithm().toUpperCase();

         try {
            if (var13[28].equals(var8)) {
               throw new KeyStoreException(var13[67]);
            }
         } catch (Throwable var15) {
            throw a(var15);
         }

         String var10000;
         label62: {
            try {
               if (i[37].equals(var8)) {
                  var10000 = i[2];
                  break label62;
               }
            } catch (Throwable var18) {
               throw a(var18);
            }

            var10000 = var8;
         }

         var13 = i;
         String var9 = var13[49] + var10000;
         Signature var10 = Signature.getInstance(var9);
         var10.initSign(var1);
         var10.update(var7);
         byte[] var11 = var10.sign();
         Properties var12 = new Properties();
         var12.setProperty(var13[65], HexUtils.encodeBase64(var11, true));
         var12.setProperty(var13[55], HexUtils.encodeBase64(var0.getEncoded(), true));
         var12.store(var4, var13[16]);
      }
   }

   public static void signWithKeyStore(
      @NotNull File var0,
      @NotNull String var1,
      @Nullable char[] var2,
      @Nullable String var3,
      @Nullable char[] var4,
      @NotNull InputStream var5,
      @NotNull OutputStream var6
   ) throws Exception {
      try {
         if (var0 == null) {
            a(4);
         }
      } catch (Exception var16) {
         throw a(var16);
      }

      try {
         if (var1 == null) {
            a(5);
         }
      } catch (Exception var12) {
         throw a(var12);
      }

      try {
         if (var5 == null) {
            a(6);
         }
      } catch (Exception var15) {
         throw a(var15);
      }

      try {
         if (var6 == null) {
            a(7);
         }
      } catch (Exception var11) {
         throw a(var11);
      }

      KeyStore var7 = KeyStore.getInstance(var1);
      loadKeyStoreFromFile(var0, var7, var2);
      if (StringUtils.isBlank(var3)) {
         ArrayList var8 = Collections.list(var7.aliases());

         try {
            if (var8.size() != 1) {
               throw new KeyStoreException(i[7]);
            }
         } catch (Exception var14) {
            throw a(var14);
         }

         var3 = (String)var8.get(0);
      }

      Key var17 = var7.getKey(var3, var4);

      try {
         if (!(var17 instanceof PrivateKey)) {
            throw new KeyStoreException(i[42] + var3 + i[73]);
         }
      } catch (Exception var13) {
         throw a(var13);
      }

      PrivateKey var9 = (PrivateKey)var17;
      Certificate[] var10 = var7.getCertificateChain(var3);
      signZip(var10[0], var9, var5, var6);
   }

   public static KeyPair generateNewKeyPair() throws InvalidAlgorithmParameterException, NoSuchAlgorithmException {
      KeyGenParams var0 = new KeyGenParams(i[79]);
      ParamsKeyGenerator var1 = new ParamsKeyGenerator(var0);
      return var1.generateKeyPair();
   }

   @NotNull
   public static byte[] generatePkcs10CertificateSigningRequest(@NotNull KeyPair var0, @NotNull String var1, int var2, @Nullable String var3) throws SignatureException, IOException {
      try {
         if (var0 == null) {
            a(8);
         }
      } catch (SignatureException var6) {
         throw a(var6);
      }

      try {
         if (var1 == null) {
            a(9);
         }
      } catch (SignatureException var7) {
         throw a(var7);
      }

      CertGenParams var4 = new CertGenParams(new X500Principal(var1), var2, false, var3);

      try {
         byte[] var10000 = BouncyCastleCertUtils.makeCertificateRequest(var4, var0).getEncoded();
         if (var10000 == null) {
            a(10);
         }

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

   public static X509Certificate createCertificateFromCsr(@NotNull byte[] var0, @NotNull X509Certificate var1, @NotNull PrivateKey var2, int var3) throws Exception {
      try {
         if (var0 == null) {
            a(11);
         }
      } catch (Exception var8) {
         throw a(var8);
      }

      try {
         if (var1 == null) {
            a(12);
         }
      } catch (Exception var6) {
         throw a(var6);
      }

      try {
         if (var2 == null) {
            a(13);
         }
      } catch (Exception var7) {
         throw a(var7);
      }

      CertGenParams var4 = new CertGenParams();
      var4.setDaysUntilExpiry(var3);
      RsaSignerEngine var5 = JceProvider.getInstance().createRsaSignerEngine(var2, new X509Certificate[]{var1});
      return (X509Certificate)var5.createCertificate(var0, var4);
   }

   public static void saveKeyAndCertChainToKeyStoreFile(
      @NotNull File var0,
      @NotNull String var1,
      @Nullable char[] var2,
      @NotNull String var3,
      @Nullable char[] var4,
      @NotNull PrivateKey var5,
      @NotNull X509Certificate[] var6
   ) throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException {
      try {
         if (var0 == null) {
            a(14);
         }
      } catch (FileNotFoundException var14) {
         throw a(var14);
      }

      try {
         if (var1 == null) {
            a(15);
         }
      } catch (FileNotFoundException var11) {
         throw a(var11);
      }

      try {
         if (var3 == null) {
            a(16);
         }
      } catch (FileNotFoundException var13) {
         throw a(var13);
      }

      try {
         if (var5 == null) {
            a(17);
         }
      } catch (FileNotFoundException var10) {
         throw a(var10);
      }

      try {
         if (var6 == null) {
            a(18);
         }
      } catch (FileNotFoundException var12) {
         throw a(var12);
      }

      KeyStore var7 = KeyStore.getInstance(var1);

      try {
         loadKeyStoreFromFile(var0, var7, var2);
      } catch (FileNotFoundException var9) {
         var7.load(null, null);
      }

      var7.setKeyEntry(var3, var5, var4, var6);
      storeKeyStoreToFile(var0, var7, var2);
   }

   @NotNull
   protected static <T extends SignerUtils.SignedZip.InnerPayload> T readSignedZip(@NotNull InputStream param0, @NotNull InnerPayloadFactory<T> param1) throws IOException, NoSuchAlgorithmException {
      // $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:
      // 000: aload 0
      // 001: ifnonnull 010
      // 004: bipush 19
      // 006: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (I)V
      // 009: goto 010
      // 00c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 00f: athrow
      // 010: aload 1
      // 011: ifnonnull 020
      // 014: bipush 20
      // 016: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (I)V
      // 019: goto 020
      // 01c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 01f: athrow
      // 020: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // 023: astore 12
      // 025: aload 12
      // 027: bipush 76
      // 029: aaload
      // 02a: invokestatic java/security/MessageDigest.getInstance (Ljava/lang/String;)Ljava/security/MessageDigest;
      // 02d: astore 2
      // 02e: new java/util/zip/ZipInputStream
      // 031: dup
      // 032: aload 0
      // 033: invokespecial java/util/zip/ZipInputStream.<init> (Ljava/io/InputStream;)V
      // 036: astore 3
      // 037: new com/l7tech/util/PoolByteArrayOutputStream
      // 03a: dup
      // 03b: ldc 1048576
      // 03d: invokespecial com/l7tech/util/PoolByteArrayOutputStream.<init> (I)V
      // 040: astore 4
      // 042: new com/l7tech/util/PoolByteArrayOutputStream
      // 045: dup
      // 046: invokespecial com/l7tech/util/PoolByteArrayOutputStream.<init> ()V
      // 049: astore 5
      // 04b: aload 3
      // 04c: invokevirtual java/util/zip/ZipInputStream.getNextEntry ()Ljava/util/zip/ZipEntry;
      // 04f: astore 6
      // 051: aload 6
      // 053: ifnonnull 067
      // 056: new java/io/IOException
      // 059: dup
      // 05a: aload 12
      // 05c: bipush 20
      // 05e: aaload
      // 05f: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 062: athrow
      // 063: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 066: athrow
      // 067: aload 6
      // 069: invokevirtual java/util/zip/ZipEntry.isDirectory ()Z
      // 06c: ifne 087
      // 06f: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // 072: bipush 33
      // 074: aaload
      // 075: aload 6
      // 077: invokevirtual java/util/zip/ZipEntry.getName ()Ljava/lang/String;
      // 07a: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 07d: ifne 099
      // 080: goto 087
      // 083: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 086: athrow
      // 087: new java/io/IOException
      // 08a: dup
      // 08b: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // 08e: bipush 34
      // 090: aaload
      // 091: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 094: athrow
      // 095: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 098: athrow
      // 099: new com/l7tech/common/io/TeeInputStream
      // 09c: dup
      // 09d: aload 3
      // 09e: aload 4
      // 0a0: invokespecial com/l7tech/common/io/TeeInputStream.<init> (Ljava/io/InputStream;Ljava/io/OutputStream;)V
      // 0a3: astore 7
      // 0a5: new java/security/DigestInputStream
      // 0a8: dup
      // 0a9: aload 7
      // 0ab: aload 2
      // 0ac: invokespecial java/security/DigestInputStream.<init> (Ljava/io/InputStream;Ljava/security/MessageDigest;)V
      // 0af: astore 8
      // 0b1: aload 8
      // 0b3: new com/l7tech/common/io/NullOutputStream
      // 0b6: dup
      // 0b7: invokespecial com/l7tech/common/io/NullOutputStream.<init> ()V
      // 0ba: invokestatic com/l7tech/util/IOUtils.copyStream (Ljava/io/InputStream;Ljava/io/OutputStream;)J
      // 0bd: pop2
      // 0be: aload 8
      // 0c0: invokevirtual java/security/DigestInputStream.getMessageDigest ()Ljava/security/MessageDigest;
      // 0c3: invokevirtual java/security/MessageDigest.digest ()[B
      // 0c6: astore 9
      // 0c8: aload 3
      // 0c9: invokevirtual java/util/zip/ZipInputStream.getNextEntry ()Ljava/util/zip/ZipEntry;
      // 0cc: astore 10
      // 0ce: aload 10
      // 0d0: ifnonnull 0e5
      // 0d3: new java/io/IOException
      // 0d6: dup
      // 0d7: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // 0da: bipush 17
      // 0dc: aaload
      // 0dd: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 0e0: athrow
      // 0e1: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0e4: athrow
      // 0e5: aload 10
      // 0e7: invokevirtual java/util/zip/ZipEntry.isDirectory ()Z
      // 0ea: ifne 105
      // 0ed: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // 0f0: bipush 53
      // 0f2: aaload
      // 0f3: aload 10
      // 0f5: invokevirtual java/util/zip/ZipEntry.getName ()Ljava/lang/String;
      // 0f8: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0fb: ifne 117
      // 0fe: goto 105
      // 101: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 104: athrow
      // 105: new java/io/IOException
      // 108: dup
      // 109: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // 10c: bipush 51
      // 10e: aaload
      // 10f: invokespecial java/io/IOException.<init> (Ljava/lang/String;)V
      // 112: athrow
      // 113: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 116: athrow
      // 117: new com/l7tech/common/io/TeeInputStream
      // 11a: dup
      // 11b: aload 3
      // 11c: aload 5
      // 11e: invokespecial com/l7tech/common/io/TeeInputStream.<init> (Ljava/io/InputStream;Ljava/io/OutputStream;)V
      // 121: astore 7
      // 123: aload 7
      // 125: new com/l7tech/common/io/NullOutputStream
      // 128: dup
      // 129: invokespecial com/l7tech/common/io/NullOutputStream.<init> ()V
      // 12c: invokestatic com/l7tech/util/IOUtils.copyStream (Ljava/io/InputStream;Ljava/io/OutputStream;)J
      // 12f: pop2
      // 130: aload 1
      // 131: aload 4
      // 133: aload 9
      // 135: aload 5
      // 137: invokeinterface com/l7tech/gateway/common/security/signer/InnerPayloadFactory.create (Lcom/l7tech/util/PoolByteArrayOutputStream;[BLcom/l7tech/util/PoolByteArrayOutputStream;)Lcom/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload; 4
      // 13c: astore 11
      // 13e: aload 5
      // 140: invokevirtual com/l7tech/util/PoolByteArrayOutputStream.close ()V
      // 143: aload 4
      // 145: invokevirtual com/l7tech/util/PoolByteArrayOutputStream.close ()V
      // 148: aload 3
      // 149: invokevirtual java/util/zip/ZipInputStream.close ()V
      // 14c: aload 11
      // 14e: dup
      // 14f: ifnonnull 157
      // 152: bipush 21
      // 154: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (I)V
      // 157: areturn
      // 158: astore 6
      // 15a: aload 5
      // 15c: invokevirtual com/l7tech/util/PoolByteArrayOutputStream.close ()V
      // 15f: goto 16b
      // 162: astore 7
      // 164: aload 6
      // 166: aload 7
      // 168: invokevirtual java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
      // 16b: aload 6
      // 16d: athrow
      // 16e: astore 5
      // 170: aload 4
      // 172: invokevirtual com/l7tech/util/PoolByteArrayOutputStream.close ()V
      // 175: goto 181
      // 178: astore 6
      // 17a: aload 5
      // 17c: aload 6
      // 17e: invokevirtual java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
      // 181: aload 5
      // 183: athrow
      // 184: astore 4
      // 186: aload 3
      // 187: invokevirtual java/util/zip/ZipInputStream.close ()V
      // 18a: goto 196
      // 18d: astore 5
      // 18f: aload 4
      // 191: aload 5
      // 193: invokevirtual java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
      // 196: aload 4
      // 198: athrow
      // try (110 -> 127): 127 java/lang/Throwable
      // try (107 -> 117): 118 java/lang/Throwable
      // try (96 -> 105): 105 java/lang/Throwable
      // try (52 -> 69): 69 java/lang/Throwable
      // try (49 -> 59): 60 java/lang/Throwable
      // try (38 -> 47): 47 java/lang/Throwable
      // try (7 -> 11): 12 java/lang/Throwable
      // try (0 -> 4): 5 java/lang/Throwable
      // try (35 -> 147): 159 java/lang/Throwable
      // try (160 -> 162): 163 java/lang/Throwable
      // try (31 -> 149): 169 java/lang/Throwable
      // try (159 -> 169): 169 java/lang/Throwable
      // try (170 -> 172): 173 java/lang/Throwable
      // try (26 -> 151): 179 java/lang/Throwable
      // try (159 -> 179): 179 java/lang/Throwable
      // try (180 -> 182): 183 java/lang/Throwable
   }

   public static X509Certificate verifyZip(@NotNull InputStream var0) throws IOException, SignatureException {
      try {
         if (var0 == null) {
            a(22);
         }
      } catch (Throwable var8) {
         throw a(var8);
      }

      try {
         SignerUtils.SignedZip.InnerPayload var1 = readSignedZip(var0, SignerUtils.SignedZip.InnerPayload.FACTORY);

         X509Certificate var2;
         try {
            var2 = a(var1.getDataDigest(), var1.getSignatureProperties());
         } catch (Throwable var6) {
            if (var1 != null) {
               try {
                  var1.close();
               } catch (Throwable var4) {
                  var6.addSuppressed(var4);
               }
            }

            throw var6;
         }

         try {
            if (var1 != null) {
               var1.close();
            }

            return var2;
         } catch (Throwable var5) {
            throw a(var5);
         }
      } catch (CertificateException | NoSuchAlgorithmException | InvalidKeyException var7) {
         throw new SignatureException(i[82] + ExceptionUtils.getMessage(var7), var7);
      }
   }

   public static X509Certificate verifySignature(@NotNull InputStream param0, @Nullable String param1) throws IOException, SignatureException {
      // $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: ifnonnull 10
      // 04: bipush 23
      // 06: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (I)V
      // 09: goto 10
      // 0c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0f: athrow
      // 10: aload 1
      // 11: invokestatic org/apache/commons/lang3/StringUtils.isBlank (Ljava/lang/CharSequence;)Z
      // 14: ifeq 29
      // 17: new java/security/SignatureException
      // 1a: dup
      // 1b: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // 1e: bipush 8
      // 20: aaload
      // 21: invokespecial java/security/SignatureException.<init> (Ljava/lang/String;)V
      // 24: athrow
      // 25: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 28: athrow
      // 29: new java/security/DigestInputStream
      // 2c: dup
      // 2d: aload 0
      // 2e: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // 31: astore 8
      // 33: aload 8
      // 35: bipush 80
      // 37: aaload
      // 38: invokestatic java/security/MessageDigest.getInstance (Ljava/lang/String;)Ljava/security/MessageDigest;
      // 3b: invokespecial java/security/DigestInputStream.<init> (Ljava/io/InputStream;Ljava/security/MessageDigest;)V
      // 3e: astore 2
      // 3f: aload 2
      // 40: new com/l7tech/common/io/NullOutputStream
      // 43: dup
      // 44: invokespecial com/l7tech/common/io/NullOutputStream.<init> ()V
      // 47: invokestatic com/l7tech/util/IOUtils.copyStream (Ljava/io/InputStream;Ljava/io/OutputStream;)J
      // 4a: pop2
      // 4b: aload 2
      // 4c: invokevirtual java/security/DigestInputStream.getMessageDigest ()Ljava/security/MessageDigest;
      // 4f: invokevirtual java/security/MessageDigest.digest ()[B
      // 52: astore 3
      // 53: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.h Z
      // 56: ifne 70
      // 59: aload 1
      // 5a: ifnonnull 70
      // 5d: goto 64
      // 60: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 63: athrow
      // 64: new java/lang/AssertionError
      // 67: dup
      // 68: invokespecial java/lang/AssertionError.<init> ()V
      // 6b: athrow
      // 6c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 6f: athrow
      // 70: new java/io/StringReader
      // 73: dup
      // 74: aload 1
      // 75: invokespecial java/io/StringReader.<init> (Ljava/lang/String;)V
      // 78: astore 5
      // 7a: new java/util/Properties
      // 7d: dup
      // 7e: invokespecial java/util/Properties.<init> ()V
      // 81: astore 6
      // 83: aload 6
      // 85: aload 5
      // 87: invokevirtual java/util/Properties.load (Ljava/io/Reader;)V
      // 8a: aload 3
      // 8b: aload 6
      // 8d: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a ([BLjava/util/Properties;)Ljava/security/cert/X509Certificate;
      // 90: astore 4
      // 92: aload 5
      // 94: invokevirtual java/io/StringReader.close ()V
      // 97: goto b0
      // 9a: astore 6
      // 9c: aload 5
      // 9e: invokevirtual java/io/StringReader.close ()V
      // a1: goto ad
      // a4: astore 7
      // a6: aload 6
      // a8: aload 7
      // aa: invokevirtual java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V
      // ad: aload 6
      // af: athrow
      // b0: aload 4
      // b2: areturn
      // b3: astore 2
      // b4: new java/security/SignatureException
      // b7: dup
      // b8: aload 2
      // b9: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // bc: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // bf: bipush 85
      // c1: aaload
      // c2: swap
      // c3: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // c8: aload 2
      // c9: invokespecial java/security/SignatureException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // cc: athrow
      // try (42 -> 51): 51 java/lang/Throwable
      // try (40 -> 44): 45 java/lang/Throwable
      // try (7 -> 17): 17 java/lang/Throwable
      // try (0 -> 4): 5 java/lang/Throwable
      // try (58 -> 69): 72 java/lang/Throwable
      // try (73 -> 75): 76 java/lang/Throwable
      // try (19 -> 83): 84 java/security/cert/CertificateException
      // try (19 -> 83): 84 java/security/NoSuchAlgorithmException
      // try (19 -> 83): 84 java/security/InvalidKeyException
   }

   public static void verifySignatureAndIssuer(@NotNull InputStream var0, @Nullable String var1, @NotNull Collection<X509Certificate> var2) throws IOException, SignatureException {
      try {
         if (var0 == null) {
            a(24);
         }
      } catch (IOException var6) {
         throw a(var6);
      }

      try {
         if (var2 == null) {
            a(25);
         }
      } catch (IOException var7) {
         throw a(var7);
      }

      try {
         X509Certificate var3 = verifySignature(var0, var1);
         verifySignerCertIsTrusted(var2, var3);
      } catch (IOException | SignatureException var4) {
         throw var4;
      } catch (Exception var5) {
         throw new SignatureException(i[82] + ExceptionUtils.getMessage(var5), var5);
      }
   }

   @NotNull
   private static X509Certificate a(@NotNull byte[] var0, @NotNull Properties var1) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
      try {
         if (var0 == null) {
            a(26);
         }
      } catch (CertificateException var14) {
         throw a(var14);
      }

      try {
         if (var1 == null) {
            a(27);
         }
      } catch (CertificateException var21) {
         throw a(var21);
      }

      String[] var10 = i;
      String var2 = (String)var1.get(var10[77]);

      try {
         if (StringUtils.isBlank(var2)) {
            throw new SignatureException(var10[22]);
         }
      } catch (CertificateException var20) {
         throw a(var20);
      }

      var10 = i;
      String var3 = (String)var1.get(var10[60]);

      try {
         if (StringUtils.isBlank(var3)) {
            throw new SignatureException(var10[13]);
         }
      } catch (CertificateException var19) {
         throw a(var19);
      }

      byte[] var4 = HexUtils.decodeBase64(var2);

      try {
         if (var4 == null) {
            throw new SignatureException(i[64]);
         }
      } catch (CertificateException var18) {
         throw a(var18);
      }

      X509Certificate var5 = CertUtils.decodeCert(HexUtils.decodeBase64(var3));

      try {
         if (var5 == null) {
            throw new SignatureException(i[4]);
         }
      } catch (CertificateException var17) {
         throw a(var17);
      }

      PublicKey var6 = var5.getPublicKey();
      String var7 = var6.getAlgorithm().toUpperCase();

      try {
         if (i[10].equals(var7)) {
            throw new SignatureException(i[83]);
         }
      } catch (CertificateException var13) {
         throw a(var13);
      }

      String var10000;
      label83: {
         try {
            if (i[38].equals(var7)) {
               var10000 = i[15];
               break label83;
            }
         } catch (CertificateException var16) {
            throw a(var16);
         }

         var10000 = var7;
      }

      var10 = i;
      String var8 = var10[35] + var10000;
      Signature var9 = Signature.getInstance(var8);

      try {
         if (var9 == null) {
            throw new SignatureException(var10[29] + var8);
         }
      } catch (CertificateException var12) {
         throw a(var12);
      }

      try {
         var9.initVerify(var5);
         var9.update(var0);
         if (!var9.verify(var4)) {
            throw new SignatureException(i[46]);
         }
      } catch (CertificateException var15) {
         throw a(var15);
      }

      try {
         if (var5 == null) {
            a(28);
         }

         return var5;
      } catch (CertificateException var11) {
         throw a(var11);
      }
   }

   public static void verifySignerCertIsTrusted(@NotNull File var0, @NotNull String var1, @Nullable char[] var2, @NotNull X509Certificate var3) throws Exception {
      try {
         if (var0 == null) {
            a(29);
         }
      } catch (Exception var7) {
         throw a(var7);
      }

      try {
         if (var1 == null) {
            a(30);
         }
      } catch (Exception var5) {
         throw a(var5);
      }

      try {
         if (var3 == null) {
            a(31);
         }
      } catch (Exception var6) {
         throw a(var6);
      }

      Collection var4 = loadTrustedCertsFromTrustStore(var0, var1, var2);
      verifySignerCertIsTrusted(var4, var3);
   }

   public static void verifySignerCertIsTrusted(@NotNull Collection<X509Certificate> var0, @NotNull X509Certificate var1) throws Exception {
      try {
         if (var0 == null) {
            a(32);
         }
      } catch (Exception var13) {
         throw a(var13);
      }

      try {
         if (var1 == null) {
            a(33);
         }
      } catch (Exception var14) {
         throw a(var14);
      }

      HashSet var2 = new HashSet();

      for (X509Certificate var4 : var0) {
         var2.add(new TrustAnchor(var4, null));
      }

      X509CertSelector var15 = new X509CertSelector();
      var15.setCertificate(var1);
      HashSet var16 = new HashSet();
      var16.addAll(var2);
      PKIXBuilderParameters var5 = new PKIXBuilderParameters(var16, var15);
      var5.setRevocationEnabled(false);
      String[] var12 = i;
      var5.addCertStore(CertStore.getInstance(var12[86], new CollectionCertStoreParameters(var0)));
      CertPathBuilder var6 = CertPathBuilder.getInstance(var12[26]);
      CertPathBuilderResult var7 = var6.build(var5);
      CertPath var8 = var7.getCertPath();
      PKIXParameters var9 = new PKIXParameters(var2);
      var9.setRevocationEnabled(false);
      CertPathValidator var10 = CertPathValidator.getInstance(var12[72]);
      PKIXCertPathValidatorResult var11 = (PKIXCertPathValidatorResult)var10.validate(var8, var9);
   }

   @NotNull
   public static Collection<X509Certificate> loadTrustedCertsFromTrustStore(@NotNull File var0, @NotNull String var1, @Nullable char[] var2) throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException {
      try {
         if (var0 == null) {
            a(34);
         }
      } catch (KeyStoreException var10) {
         throw a(var10);
      }

      try {
         if (var1 == null) {
            a(35);
         }
      } catch (KeyStoreException var11) {
         throw a(var11);
      }

      ArrayList var3 = new ArrayList();
      KeyStore var4 = KeyStore.getInstance(var1);
      loadKeyStoreFromFile(var0, var4, var2);
      Enumeration var5 = var4.aliases();

      while (var5.hasMoreElements()) {
         String var6 = (String)var5.nextElement();
         if (var4.isCertificateEntry(var6) && var4.getCertificate(var6) instanceof X509Certificate var8) {
            var3.add(var8);
         }
      }

      try {
         if (var3 == null) {
            a(36);
         }

         return var3;
      } catch (KeyStoreException var9) {
         throw a(var9);
      }
   }

   public static boolean addTrustedCertificateToTrustStore(
      @NotNull File param0, @NotNull String param1, @Nullable char[] param2, @NotNull X509Certificate param3
   ) throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException {
      // $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: ifnonnull 10
      // 04: bipush 37
      // 06: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (I)V
      // 09: goto 10
      // 0c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0f: athrow
      // 10: aload 1
      // 11: ifnonnull 20
      // 14: bipush 38
      // 16: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (I)V
      // 19: goto 20
      // 1c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 1f: athrow
      // 20: aload 3
      // 21: ifnonnull 30
      // 24: bipush 39
      // 26: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (I)V
      // 29: goto 30
      // 2c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 2f: athrow
      // 30: aload 1
      // 31: invokestatic java/security/KeyStore.getInstance (Ljava/lang/String;)Ljava/security/KeyStore;
      // 34: astore 4
      // 36: aload 0
      // 37: aload 4
      // 39: aload 2
      // 3a: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.loadKeyStoreFromFile (Ljava/io/File;Ljava/security/KeyStore;[C)V
      // 3d: new java/util/TreeSet
      // 40: dup
      // 41: getstatic java/lang/String.CASE_INSENSITIVE_ORDER Ljava/util/Comparator;
      // 44: invokespecial java/util/TreeSet.<init> (Ljava/util/Comparator;)V
      // 47: astore 5
      // 49: aload 4
      // 4b: invokevirtual java/security/KeyStore.aliases ()Ljava/util/Enumeration;
      // 4e: astore 6
      // 50: aload 6
      // 52: invokeinterface java/util/Enumeration.hasMoreElements ()Z 1
      // 57: ifeq a7
      // 5a: aload 6
      // 5c: invokeinterface java/util/Enumeration.nextElement ()Ljava/lang/Object; 1
      // 61: checkcast java/lang/String
      // 64: astore 7
      // 66: aload 5
      // 68: aload 7
      // 6a: invokeinterface java/util/Set.add (Ljava/lang/Object;)Z 2
      // 6f: pop
      // 70: aload 4
      // 72: aload 7
      // 74: invokevirtual java/security/KeyStore.isCertificateEntry (Ljava/lang/String;)Z
      // 77: ifeq a4
      // 7a: aload 4
      // 7c: aload 7
      // 7e: invokevirtual java/security/KeyStore.getCertificate (Ljava/lang/String;)Ljava/security/cert/Certificate;
      // 81: astore 8
      // 83: aload 8
      // 85: instanceof java/security/cert/X509Certificate
      // 88: ifeq a4
      // 8b: aload 8
      // 8d: checkcast java/security/cert/X509Certificate
      // 90: aload 3
      // 91: invokestatic com/l7tech/common/io/CertUtils.certsAreEqual (Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
      // 94: ifeq a4
      // 97: goto 9e
      // 9a: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 9d: athrow
      // 9e: bipush 0
      // 9f: ireturn
      // a0: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // a3: athrow
      // a4: goto 50
      // a7: bipush 1
      // a8: istore 7
      // aa: iload 7
      // ac: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // af: astore 9
      // b1: aload 9
      // b3: bipush 68
      // b5: aaload
      // b6: swap
      // b7: invokedynamic makeConcatWithConstants (Ljava/lang/String;I)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // bc: astore 8
      // be: aload 5
      // c0: aload 8
      // c2: invokeinterface java/util/Set.contains (Ljava/lang/Object;)Z 2
      // c7: ifeq e0
      // ca: iinc 7 1
      // cd: iload 7
      // cf: getstatic com/l7tech/gateway/common/security/signer/SignerUtils.i [Ljava/lang/String;
      // d2: bipush 11
      // d4: aaload
      // d5: swap
      // d6: invokedynamic makeConcatWithConstants (Ljava/lang/String;I)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // db: astore 8
      // dd: goto be
      // e0: aload 4
      // e2: aload 8
      // e4: aload 3
      // e5: invokevirtual java/security/KeyStore.setCertificateEntry (Ljava/lang/String;Ljava/security/cert/Certificate;)V
      // e8: aload 0
      // e9: aload 4
      // eb: aload 2
      // ec: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils.storeKeyStoreToFile (Ljava/io/File;Ljava/security/KeyStore;[C)V
      // ef: bipush 1
      // f0: ireturn
      // try (0 -> 4): 5 java/security/KeyStoreException
      // try (7 -> 11): 12 java/security/KeyStoreException
      // try (14 -> 18): 19 java/security/KeyStoreException
      // try (55 -> 63): 64 java/security/KeyStoreException
      // try (58 -> 68): 68 java/security/KeyStoreException
   }

   public static void createEmptyKeyStoreFile(@NotNull File var0, @NotNull String var1, @Nullable char[] var2) throws KeyStoreException, CertificateException, NoSuchAlgorithmException, IOException {
      try {
         if (var0 == null) {
            a(40);
         }
      } catch (Throwable var7) {
         throw a(var7);
      }

      try {
         if (var1 == null) {
            a(41);
         }
      } catch (Throwable var11) {
         throw a(var11);
      }

      try {
         LastModifiedFileInputStream var3 = FileUtils.loadFileSafely(var0.getPath());

         try {
            throw new FileAlreadyExistsException(var0.getPath());
         } catch (Throwable var8) {
            if (var3 != null) {
               try {
                  var3.close();
               } catch (Throwable var6) {
                  var8.addSuppressed(var6);
               }
            }

            throw var8;
         }
      } catch (FileNotFoundException var9) {
         KeyStore var4 = KeyStore.getInstance(var1);
         var4.load(null, null);
         storeKeyStoreToFile(var0, var4, var2);
      } catch (IOException var10) {
         throw new FileAlreadyExistsException(var0.getPath());
      }
   }

   public static void storeKeyStoreToFile(@NotNull File var0, @NotNull KeyStore var1, @Nullable char[] var2) throws IOException {
      try {
         if (var0 == null) {
            a(42);
         }
      } catch (IOException var3) {
         throw a(var3);
      }

      try {
         if (var1 == null) {
            a(43);
         }
      } catch (IOException var4) {
         throw a(var4);
      }

      FileUtils.saveFileSafely(var0.getPath(), true, new a(var1, var2));
   }

   public static void loadKeyStoreFromFile(@NotNull File var0, @NotNull KeyStore var1, @Nullable char[] var2) throws CertificateException, NoSuchAlgorithmException, IOException {
      try {
         if (var0 == null) {
            a(44);
         }
      } catch (Throwable var8) {
         throw a(var8);
      }

      try {
         if (var1 == null) {
            a(45);
         }
      } catch (Throwable var9) {
         throw a(var9);
      }

      try (BufferedInputStream var3 = new BufferedInputStream(new FileInputStream(var0))) {
         var1.load(var3, var2);
      }
   }

   static {
      String[] var5 = new String[96];
      int var3 = 0;
      String var2 = "\u0004Y\u0003kq3C\u0013]\u0018|a'\u0000]=|j$V\u0002h8zkt\u0012$]!mq#K\u0004Y'|K,E\tQ=~J S\u0012] m\u0005\"{\u0017JY5\u0004W>6trV\u0002[;6\u007f$V\u0002O2`7&M\nU<w76G\u0004M!pl<\r\u0014Q4w}7\r4Q4w}7w\u0013Q?j$!Y:u}!\u0002\u0013Ws}}&M\u0003]sjq\"L\u0002Jsz}7V\u000e^:zy1GI\r\u0015]2}K,E\t]7Cq5\b\u0004K![a1G\u0014D&T:xkeO\u0012K'9z \u0002\u0014H6zq#K\u0002\\sp~eV\u000f]sr}<\u0002\u0014L<k}eA\bV'xq+QGU&ul,R\u000b]sr}<\u0002\u0002V'ka\u0015$W=m}+VGQ 9v*VGK:~v F!\u0014Y%|S [&V7Z}7V$P2pv\u0011M,]*Jl*P\u0002~:u}\u0003#k\u0012\u0007\u0013J&jl F\u000b\u0014Q4wq+E$]!m(4Q4wq+EG{6kl,D\u000e[2m}eR\u0015W#|j1[GQ 9u,Q\u0014Q=~6\n\u0017J:oy1G,]*\u0005\"{\u0017JY\t4Q4wy1W\u0015]'@K:~v$V\u0012J67h7M\u0017]!mq Q@\u00186wl7[GQ 9u,Q\u0014Q=~\t\u0004]!m[-C\u000eV\t\u0014Q4w}!x\u000eH\u001d@K:~v FI\\2m?eG\tL!`8,QGU:jk,L\u0000\f\u0013J&jl F$]!mk\u001e4Q4wy1W\u0015]sij*R\u0002J'`8,QGU:jk,L\u0000\u0016\u0013\u0014L<k}\u000eG\u001ek'vj v\b~:u}\f\f]*Jl*P\u0002~:u}\u0014\u000bW2}S [4L<k}\u0003P\bU\u0015pt \u00047s\u001aA\u0019\u0011]!p~<q\u000e_=|j\u0006G\u0015L\u001ajL7W\u0014L6}\u0003#k\u0012/!Y:u}!\u0002\u0013Ws~}1\u0002\u0014Q4wy1W\u0015]spv6V\u0006V0|8*DGY?~w7K\u0013P>#8\u0006\u0003Q4|k1\u0010\u0014Q4wO,V\u000fs6`K1M\u0015]>&J4lu L\u0013\u00185vjeb)W'Wm)NGH2ky(G\u0013]!9?`Q@\u0018<\u007f8`QI\u001d 9u0Q\u0013\u0018=vle@\u0002\u0018=lt)\n\u0014Q4w}!\f\u0003Y'6!Q!jleX\u000eHs|v1P\u001e\u0018:j8+M\u0013\u001829h)C\u000eVs\u007fq)GGV2t}!\u0002@K:~v FI\\2m?\n4p\u0012,)wU\u000eL;\u00057\u0015a,.\u0002\"{\u0002\"{\u0019\u0011]!p~<q\u000e_=xl0P\u0002o:mp\u0001K\u0000] m\u0004\u0013A#|\u0007\u0004W=m}+V\u0011,]*9k1M\u0015]s|v1P\u001e\u0018t\u0018\u0011]!p~<q\u000e_=xl0P\u0002y=}Q6Q\u0012]!\t\u0014L<k}\u0011[\u0017]\u0005\u0017J<ik\u00164Q4wy1W\u0015]sww1\u0002\u0011]!p~,G\u0003\n\u0014Q4w}!\f\u0003Y'\t\bM'im1x\u000eH\n4p\u0012,)wU\u000eL;\u0007\u0014Q4wB,RA4]0vv!\u0002\u001dQ#9}+V\u0015AspkeL\bLsx85N\u0006Q=9~,N\u0002\u0018=xu FG\u001f p\u007f+C\u0013M!|65P\bH6kl,G\u0014\u001f\u001e\u000bW2}L7W\u0014L6}[ P\u0013K\u0015kw(v\u0015M mK1M\u0015]\u0014\u0014Q4wy1W\u0015]}ij*R\u0002J'p}6\u000e\u0013J&jl\u0016V\bJ6Ma5G\u0004\u0004]!m\n\u0014Q4w}7a\u0002J'\u000e\u0013J&jl\u0016V\bJ6_q)G5\u0004W>6trV\u0002[;6\u007f$V\u0002O2`7&M\nU<w76G\u0004M!pl<\r\u0014Q4w}7\r4Q4w}7w\u0013Q?j\u0017\u0004J6xl g\nH'`S [4L<k}\u0003K\u000b]\u0004\u0004]!m\u0014\u0014Q4wy1W\u0015]}ij*R\u0002J'p}6\u000e\t]$Mj0Q\u0013]7Z}7V\n\u0014Q4wq+E,]*!!Y:u}!\u0002\u0013Ws}}&M\u0003]sjq\"L\u0006L&k}eT\u0006T&|6\t\u0014Q4wy1W\u0015]\u0018\u0004J6xl a\u0002J'p~,A\u0006L6_j*O$K!F#k\u00129s [GY?~w7K\u0013P>9q6\u0002\tW'9k0R\u0017W!m}!\u0019GJ6zw(O\u0002V79m6K\t_sKK\u0004\u0002\bJs\\[eK\tK'|y!\f\u0007\u0013J&jl F\u0005\u0006T:xk'\u0000]=|j$V\u0002h8zkt\u0012$]!mq#K\u0004Y'|K,E\tQ=~J S\u0012] m\t\u0014M1s}&V#V\u00047s\u001aA @\u00187v}6\u0002\tW'9{*L\u0013Y:w8$\u0002\u0017J:oy1GGS6`\u0019\u0011]!p~<q\u000e_=xl0P\u0002o:mp\u0001K\u0000] m\u001e\u000bW2}L7W\u0014L6}[ P\u0013K\u0015kw(v\u0015M mK1M\u0015]\u00074p\u00124*p\u0014\t\u0014Q4wy1W\u0015]\u000f\u0011]!p~<q\u000e_=xl0P\u0002\u00057\u0015a,.\u00074p\u00124*p\u0014*'v<mV0N\u000b\u0018>|l-M\u0003\u0018vj6`QGU&jleL\bLsk}1W\u0015Vswm)N!4Q4wy1W\u0015]szw0N\u0003\u0018=vle@\u0002\u0018%|j,D\u000e]7#8F#k\u00129s [GY?~w7K\u0013P>9q6\u0002\tW'9k0R\u0017W!m}!\u0019GJ6zw(O\u0002V79m6K\t_sKK\u0004\u0002\bJs\\[eK\tK'|y!\f\u000e\u0017Y*uw$F!Y0mw7[!4Q4wy1W\u0015]szw0N\u0003\u0018=vle@\u0002\u0018%|j,D\u000e]7#8\n$W?u}&V\u000eW=\u0007\f]*Iy,P\t\u0011]!p~<x\u000eH\r\u0015]2}K,E\t]7Cq5\b\f]*Jl*P\u0002\u0012\u0013J&jl F4Q4w}7a\u0002J'j\n\u0001Q?|L*q\u000e_=\u000b\u001dQ#Mw\u0013G\u0015Q5`";
      int var4 = "\u0004Y\u0003kq3C\u0013]\u0018|a'\u0000]=|j$V\u0002h8zkt\u0012$]!mq#K\u0004Y'|K,E\tQ=~J S\u0012] m\u0005\"{\u0017JY5\u0004W>6trV\u0002[;6\u007f$V\u0002O2`7&M\nU<w76G\u0004M!pl<\r\u0014Q4w}7\r4Q4w}7w\u0013Q?j$!Y:u}!\u0002\u0013Ws}}&M\u0003]sjq\"L\u0002Jsz}7V\u000e^:zy1GI\r\u0015]2}K,E\t]7Cq5\b\u0004K![a1G\u0014D&T:xkeO\u0012K'9z \u0002\u0014H6zq#K\u0002\\sp~eV\u000f]sr}<\u0002\u0014L<k}eA\bV'xq+QGU&ul,R\u000b]sr}<\u0002\u0002V'ka\u0015$W=m}+VGQ 9v*VGK:~v F!\u0014Y%|S [&V7Z}7V$P2pv\u0011M,]*Jl*P\u0002~:u}\u0003#k\u0012\u0007\u0013J&jl F\u000b\u0014Q4wq+E$]!m(4Q4wq+EG{6kl,D\u000e[2m}eR\u0015W#|j1[GQ 9u,Q\u0014Q=~6\n\u0017J:oy1G,]*\u0005\"{\u0017JY\t4Q4wy1W\u0015]'@K:~v$V\u0012J67h7M\u0017]!mq Q@\u00186wl7[GQ 9u,Q\u0014Q=~\t\u0004]!m[-C\u000eV\t\u0014Q4w}!x\u000eH\u001d@K:~v FI\\2m?eG\tL!`8,QGU:jk,L\u0000\f\u0013J&jl F$]!mk\u001e4Q4wy1W\u0015]sij*R\u0002J'`8,QGU:jk,L\u0000\u0016\u0013\u0014L<k}\u000eG\u001ek'vj v\b~:u}\f\f]*Jl*P\u0002~:u}\u0014\u000bW2}S [4L<k}\u0003P\bU\u0015pt \u00047s\u001aA\u0019\u0011]!p~<q\u000e_=|j\u0006G\u0015L\u001ajL7W\u0014L6}\u0003#k\u0012/!Y:u}!\u0002\u0013Ws~}1\u0002\u0014Q4wy1W\u0015]spv6V\u0006V0|8*DGY?~w7K\u0013P>#8\u0006\u0003Q4|k1\u0010\u0014Q4wO,V\u000fs6`K1M\u0015]>&J4lu L\u0013\u00185vjeb)W'Wm)NGH2ky(G\u0013]!9?`Q@\u0018<\u007f8`QI\u001d 9u0Q\u0013\u0018=vle@\u0002\u0018=lt)\n\u0014Q4w}!\f\u0003Y'6!Q!jleX\u000eHs|v1P\u001e\u0018:j8+M\u0013\u001829h)C\u000eVs\u007fq)GGV2t}!\u0002@K:~v FI\\2m?\n4p\u0012,)wU\u000eL;\u00057\u0015a,.\u0002\"{\u0002\"{\u0019\u0011]!p~<q\u000e_=xl0P\u0002o:mp\u0001K\u0000] m\u0004\u0013A#|\u0007\u0004W=m}+V\u0011,]*9k1M\u0015]s|v1P\u001e\u0018t\u0018\u0011]!p~<q\u000e_=xl0P\u0002y=}Q6Q\u0012]!\t\u0014L<k}\u0011[\u0017]\u0005\u0017J<ik\u00164Q4wy1W\u0015]sww1\u0002\u0011]!p~,G\u0003\n\u0014Q4w}!\f\u0003Y'\t\bM'im1x\u000eH\n4p\u0012,)wU\u000eL;\u0007\u0014Q4wB,RA4]0vv!\u0002\u001dQ#9}+V\u0015AspkeL\bLsx85N\u0006Q=9~,N\u0002\u0018=xu FG\u001f p\u007f+C\u0013M!|65P\bH6kl,G\u0014\u001f\u001e\u000bW2}L7W\u0014L6}[ P\u0013K\u0015kw(v\u0015M mK1M\u0015]\u0014\u0014Q4wy1W\u0015]}ij*R\u0002J'p}6\u000e\u0013J&jl\u0016V\bJ6Ma5G\u0004\u0004]!m\n\u0014Q4w}7a\u0002J'\u000e\u0013J&jl\u0016V\bJ6_q)G5\u0004W>6trV\u0002[;6\u007f$V\u0002O2`7&M\nU<w76G\u0004M!pl<\r\u0014Q4w}7\r4Q4w}7w\u0013Q?j\u0017\u0004J6xl g\nH'`S [4L<k}\u0003K\u000b]\u0004\u0004]!m\u0014\u0014Q4wy1W\u0015]}ij*R\u0002J'p}6\u000e\t]$Mj0Q\u0013]7Z}7V\n\u0014Q4wq+E,]*!!Y:u}!\u0002\u0013Ws}}&M\u0003]sjq\"L\u0006L&k}eT\u0006T&|6\t\u0014Q4wy1W\u0015]\u0018\u0004J6xl a\u0002J'p~,A\u0006L6_j*O$K!F#k\u00129s [GY?~w7K\u0013P>9q6\u0002\tW'9k0R\u0017W!m}!\u0019GJ6zw(O\u0002V79m6K\t_sKK\u0004\u0002\bJs\\[eK\tK'|y!\f\u0007\u0013J&jl F\u0005\u0006T:xk'\u0000]=|j$V\u0002h8zkt\u0012$]!mq#K\u0004Y'|K,E\tQ=~J S\u0012] m\t\u0014M1s}&V#V\u00047s\u001aA @\u00187v}6\u0002\tW'9{*L\u0013Y:w8$\u0002\u0017J:oy1GGS6`\u0019\u0011]!p~<q\u000e_=xl0P\u0002o:mp\u0001K\u0000] m\u001e\u000bW2}L7W\u0014L6}[ P\u0013K\u0015kw(v\u0015M mK1M\u0015]\u00074p\u00124*p\u0014\t\u0014Q4wy1W\u0015]\u000f\u0011]!p~<q\u000e_=xl0P\u0002\u00057\u0015a,.\u00074p\u00124*p\u0014*'v<mV0N\u000b\u0018>|l-M\u0003\u0018vj6`QGU&jleL\bLsk}1W\u0015Vswm)N!4Q4wy1W\u0015]szw0N\u0003\u0018=vle@\u0002\u0018%|j,D\u000e]7#8F#k\u00129s [GY?~w7K\u0013P>9q6\u0002\tW'9k0R\u0017W!m}!\u0019GJ6zw(O\u0002V79m6K\t_sKK\u0004\u0002\bJs\\[eK\tK'|y!\f\u000e\u0017Y*uw$F!Y0mw7[!4Q4wy1W\u0015]szw0N\u0003\u0018=vle@\u0002\u0018%|j,D\u000e]7#8\n$W?u}&V\u000eW=\u0007\f]*Iy,P\t\u0011]!p~<x\u000eH\r\u0015]2}K,E\t]7Cq5\b\f]*Jl*P\u0002\u0012\u0013J&jl F4Q4w}7a\u0002J'j\n\u0001Q?|L*q\u000e_=\u000b\u001dQ#Mw\u0013G\u0015Q5`"
         .length();
      char var1 = '\f';
      int var8 = -1;

      label39:
      while (true) {
         byte var10000 = 105;
         String var10001 = var2.substring(++var8, var8 + var1);
         byte var10002 = -1;

         while (true) {
            String var10 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var10;
                  if ((var8 += var1) >= var4) {
                     i = var5;
                     String[] var11 = i;
                     b = i[53];
                     e = var11[11];
                     a = var11[33];
                     c = var11[60];
                     d = var11[77];
                     f = var11[36];

                     label26: {
                        try {
                           if (!SignerUtils.class.desiredAssertionStatus()) {
                              var12 = true;
                              break label26;
                           }
                        } catch (IllegalArgumentException var6) {
                           throw a(var6);
                        }

                        var12 = false;
                     }

                     h = var12;
                     String[] var13 = new String[2];
                     String[] var9 = i;
                     var13[0] = var9[60];
                     var13[1] = var9[77];
                     ALL_SIGNING_PROPERTIES = var13;
                     return;
                  }

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

                  var2 = "T\t@,:a!V\fg\u001d:`\u0001C\rg\n-g\u0006^\u000ej*)a\u0017c\u0007W;=f\u0006d\u001cl;-";
                  var4 = "T\t@,:a!V\fg\u001d:`\u0001C\rg\n-g\u0006^\u000ej*)a\u0017c\u0007W;=f\u0006d\u001cl;-".length();
                  var1 = 6;
                  var8 = -1;
            }

            var10000 = 57;
            var10001 = var2.substring(++var8, var8 + var1);
            var10002 = 0;
         }
      }
   }

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

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

      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 -> 14;
            case 1 -> 81;
            case 2 -> 58;
            case 3 -> 112;
            case 4 -> 113;
            case 5 -> 44;
            default -> 75;
         });
      }

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

   public static final class SignedZip {
      final Collection<X509Certificate> a;
      private static final String[] b;

      public SignedZip(@NotNull X509Certificate[] var1) {
         if (var1 == null) {
            a(0);
         }

         super();
         this.a = Collections.unmodifiableCollection(Arrays.asList(var1));
      }

      public SignedZip(@NotNull Collection<X509Certificate> var1) {
         if (var1 == null) {
            a(1);
         }

         super();
         this.a = Collections.unmodifiableCollection(new ArrayList<>(var1));
      }

      @NotNull
      public <T extends SignerUtils.SignedZip.InnerPayload> T load(@NotNull File var1, @NotNull InnerPayloadFactory<T> var2) throws IOException, SignatureException {
         try {
            if (var1 == null) {
               a(2);
            }
         } catch (Throwable var9) {
            throw a(var9);
         }

         try {
            if (var2 == null) {
               a(3);
            }
         } catch (Throwable var10) {
            throw a(var10);
         }

         BufferedInputStream var3 = new BufferedInputStream(new FileInputStream(var1));

         SignerUtils.SignedZip.InnerPayload var4;
         try {
            var4 = this.load(var3, var2);
         } catch (Throwable var8) {
            try {
               var3.close();
            } catch (Throwable var6) {
               var8.addSuppressed(var6);
            }

            throw var8;
         }

         try {
            var3.close();
            if (var4 == null) {
               a(4);
            }

            return (T)var4;
         } catch (Throwable var7) {
            throw a(var7);
         }
      }

      @NotNull
      public <T extends SignerUtils.SignedZip.InnerPayload> T load(@NotNull InputStream var1, @NotNull InnerPayloadFactory<T> var2) throws IOException, SignatureException {
         try {
            if (var1 == null) {
               a(5);
            }
         } catch (IOException var8) {
            throw a(var8);
         }

         try {
            if (var2 == null) {
               a(6);
            }
         } catch (IOException var9) {
            throw a(var9);
         }

         SignerUtils.SignedZip.InnerPayload var3 = null;

         try {
            var3 = SignerUtils.readSignedZip(var1, var2);
            X509Certificate var4 = SignerUtils.a(var3.getDataDigest(), var3.getSignatureProperties());
            SignerUtils.verifySignerCertIsTrusted(this.a, var4);
         } catch (IOException | SignatureException var6) {
            ResourceUtils.closeQuietly(var3);
            throw var6;
         } catch (Exception var7) {
            ResourceUtils.closeQuietly(var3);
            throw new SignatureException(b[6] + ExceptionUtils.getMessage(var7), var7);
         }

         try {
            if (var3 == null) {
               a(7);
            }

            return (T)var3;
         } catch (IOException var5) {
            throw a(var5);
         }
      }

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

      static {
         String[] var5 = new String[12];
         int var3 = 0;
         String var2 = "m*0z\u001c\u0003ek&5z\u0017Uek2<,_W~c(2;_Gtm0/<\u0004M>},:;\u0015F>],:;\u0015FDz,1&Tgxi+81*]a\u0013z7(&\u0004Qu],:;\u0019ZvM /!\u0003\u0004b*<1>O7: \u001dQ\u007fze;:\u0002\u0014Q@*)\u001b\u0005X}.5<'\u0011Ytz /uW\u0011b)e23P\u0011b `.u\u001dAbze3:\u0004\u0014ske3 \u001cX?m*0z\u001c\u0003ek&5z\u0017Uek2<,_W~c(2;_Gtm0/<\u0004M>},:;\u0015F>],:;\u0015FDz,1&Tgxi+81*]a\u0007t,-\u0013\u0019Xt!],:;\u0011@d| }6\u001fA}je3:\u0004\u0014ske+0\u0002]wg 9oP\t},:;\u0015PKg5\u000e~$$9\u001fUuH$>!\u001fFh\u0004b*<1";
         int var4 = "m*0z\u001c\u0003ek&5z\u0017Uek2<,_W~c(2;_Gtm0/<\u0004M>},:;\u0015F>],:;\u0015FDz,1&Tgxi+81*]a\u0013z7(&\u0004Qu],:;\u0019ZvM /!\u0003\u0004b*<1>O7: \u001dQ\u007fze;:\u0002\u0014Q@*)\u001b\u0005X}.5<'\u0011Ytz /uW\u0011b)e23P\u0011b `.u\u001dAbze3:\u0004\u0014ske3 \u001cX?m*0z\u001c\u0003ek&5z\u0017Uek2<,_W~c(2;_Gtm0/<\u0004M>},:;\u0015F>],:;\u0015FDz,1&Tgxi+81*]a\u0007t,-\u0013\u0019Xt!],:;\u0011@d| }6\u001fA}je3:\u0004\u0014ske+0\u0002]wg 9oP\t},:;\u0015PKg5\u000e~$$9\u001fUuH$>!\u001fFh\u0004b*<1"
            .length();
         char var1 = '?';
         int var7 = -1;

         label24:
         while (true) {
            byte var10000 = 118;
            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) {
                        b = var5;
                        return;
                     }

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

                     var2 = "\u0000\u001e\u0001\u000e68*|9\u0000\u0013\fsOPW\u0002\u00026nLXWJ\u0014l#P\u001c\u001a\u001a\u00146&MS\u0003O\u0015'rVN\u0019O\t7jO";
                     var4 = "\u0000\u001e\u0001\u000e68*|9\u0000\u0013\fsOPW\u0002\u00026nLXWJ\u0014l#P\u001c\u001a\u001a\u00146&MS\u0003O\u0015'rVN\u0019O\t7jO"
                        .length();
                     var1 = 6;
                     var7 = -1;
               }

               var10000 = 68;
               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] ^ 103);
         }

         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 -> 120;
               case 1 -> 51;
               case 2 -> 43;
               case 3 -> 35;
               case 4 -> 6;
               case 5 -> 66;
               default -> 103;
            });
         }

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

      public static class InnerPayload implements Closeable {
         @NotNull
         public static final InnerPayloadFactory<SignerUtils.SignedZip.InnerPayload> FACTORY;
         @NotNull
         private final AtomicBoolean a;
         @NotNull
         private final byte[] b;
         private int c;
         @NotNull
         private final byte[] d;
         @NotNull
         private final byte[] e;
         private int f;
         private static final String[] q;

         protected InnerPayload(@NotNull PoolByteArrayOutputStream var1, @NotNull byte[] var2, @NotNull PoolByteArrayOutputStream var3) {
            if (var1 == null) {
               a(0);
            }

            if (var2 == null) {
               a(1);
            }

            if (var3 == null) {
               a(2);
            }

            super();
            this.a = new AtomicBoolean(false);
            this.c = var1.size();
            this.b = var1.detachPooledByteArray();
            this.d = var2;
            this.f = var3.size();
            this.e = var3.detachPooledByteArray();
         }

         @NotNull
         public InputStream getDataStream() {
            // $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: getstatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.g Z
            // 03: ifne 20
            // 06: aload 0
            // 07: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.c I
            // 0a: ifge 20
            // 0d: goto 14
            // 10: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 13: athrow
            // 14: new java/lang/AssertionError
            // 17: dup
            // 18: invokespecial java/lang/AssertionError.<init> ()V
            // 1b: athrow
            // 1c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 1f: athrow
            // 20: new java/io/ByteArrayInputStream
            // 23: dup
            // 24: aload 0
            // 25: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b [B
            // 28: bipush 0
            // 29: aload 0
            // 2a: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.c I
            // 2d: invokespecial java/io/ByteArrayInputStream.<init> ([BII)V
            // 30: areturn
            // try (0 -> 5): 6 java/lang/IllegalArgumentException
            // try (2 -> 12): 12 java/lang/IllegalArgumentException
         }

         @NotNull
         public byte[] getDataBytes() {
            // $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: getstatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.g Z
            // 03: ifne 20
            // 06: aload 0
            // 07: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.c I
            // 0a: ifge 20
            // 0d: goto 14
            // 10: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 13: athrow
            // 14: new java/lang/AssertionError
            // 17: dup
            // 18: invokespecial java/lang/AssertionError.<init> ()V
            // 1b: athrow
            // 1c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 1f: athrow
            // 20: aload 0
            // 21: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.c I
            // 24: newarray 8
            // 26: astore 1
            // 27: aload 0
            // 28: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b [B
            // 2b: bipush 0
            // 2c: aload 1
            // 2d: bipush 0
            // 2e: aload 0
            // 2f: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.c I
            // 32: invokestatic java/lang/System.arraycopy (Ljava/lang/Object;ILjava/lang/Object;II)V
            // 35: aload 1
            // 36: dup
            // 37: ifnonnull 45
            // 3a: bipush 3
            // 3b: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.a (I)V
            // 3e: goto 45
            // 41: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 44: athrow
            // 45: areturn
            // try (0 -> 5): 6 java/lang/IllegalArgumentException
            // try (2 -> 12): 12 java/lang/IllegalArgumentException
            // try (18 -> 31): 32 java/lang/IllegalArgumentException
         }

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

         @NotNull
         public byte[] getDataDigest() {
            try {
               if (this.d == null) {
                  a(4);
               }

               return this.d;
            } catch (IllegalArgumentException var1) {
               throw b(var1);
            }
         }

         @NotNull
         public InputStream getSignaturePropertiesStream() {
            // $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: getstatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.g Z
            // 03: ifne 20
            // 06: aload 0
            // 07: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.f I
            // 0a: ifge 20
            // 0d: goto 14
            // 10: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 13: athrow
            // 14: new java/lang/AssertionError
            // 17: dup
            // 18: invokespecial java/lang/AssertionError.<init> ()V
            // 1b: athrow
            // 1c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 1f: athrow
            // 20: new java/io/ByteArrayInputStream
            // 23: dup
            // 24: aload 0
            // 25: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.e [B
            // 28: bipush 0
            // 29: aload 0
            // 2a: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.f I
            // 2d: invokespecial java/io/ByteArrayInputStream.<init> ([BII)V
            // 30: areturn
            // try (0 -> 5): 6 java/lang/IllegalArgumentException
            // try (2 -> 12): 12 java/lang/IllegalArgumentException
         }

         @NotNull
         public byte[] getSignaturePropertiesBytes() {
            // $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: getstatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.g Z
            // 03: ifne 20
            // 06: aload 0
            // 07: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.f I
            // 0a: ifge 20
            // 0d: goto 14
            // 10: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 13: athrow
            // 14: new java/lang/AssertionError
            // 17: dup
            // 18: invokespecial java/lang/AssertionError.<init> ()V
            // 1b: athrow
            // 1c: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 1f: athrow
            // 20: aload 0
            // 21: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.f I
            // 24: newarray 8
            // 26: astore 1
            // 27: aload 0
            // 28: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.e [B
            // 2b: bipush 0
            // 2c: aload 1
            // 2d: bipush 0
            // 2e: aload 0
            // 2f: getfield com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.f I
            // 32: invokestatic java/lang/System.arraycopy (Ljava/lang/Object;ILjava/lang/Object;II)V
            // 35: aload 1
            // 36: dup
            // 37: ifnonnull 45
            // 3a: bipush 5
            // 3b: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.a (I)V
            // 3e: goto 45
            // 41: invokestatic com/l7tech/gateway/common/security/signer/SignerUtils$SignedZip$InnerPayload.b (Ljava/lang/Throwable;)Ljava/lang/Throwable;
            // 44: athrow
            // 45: areturn
            // try (0 -> 5): 6 java/lang/IllegalArgumentException
            // try (2 -> 12): 12 java/lang/IllegalArgumentException
            // try (18 -> 31): 32 java/lang/IllegalArgumentException
         }

         @NotNull
         public String getSignaturePropertiesString() throws IOException {
            StringWriter var1 = new StringWriter();

            try (BufferedReader var2 = new BufferedReader(new InputStreamReader(this.getSignaturePropertiesStream(), StandardCharsets.ISO_8859_1))) {
               IOUtils.copyStream(var2, var1);
               var1.flush();
            }

            try {
               String var10000 = var1.toString();
               if (var10000 == null) {
                  a(6);
               }

               return var10000;
            } catch (Throwable var6) {
               throw b(var6);
            }
         }

         @NotNull
         public Properties getSignatureProperties() throws IOException {
            Properties var1 = new Properties();

            try {
               var1.load(this.getSignaturePropertiesStream());
               if (var1 == null) {
                  a(7);
               }

               return var1;
            } catch (IOException var2) {
               throw b(var2);
            }
         }

         public int getSignaturePropertiesSize() {
            return this.f;
         }

         void a() {
            this.c = 0;
            BufferPool.returnBuffer(this.b);
            this.f = 0;
            BufferPool.returnBuffer(this.e);
         }

         @Override
         public void close() throws IOException {
            try {
               if (!this.a.getAndSet(true)) {
                  this.a();
               }
            } catch (IOException var1) {
               throw b(var1);
            }
         }

         static {
            String[] var5 = new String[13];
            int var3 = 0;
            String var2 = "6c\u00032;b\u00030r\u0002\u00137U\u001f>v\u0012\u0013&l\b\"L2i\u001aN>2\u00194e\u001fN5d\u00194q\u0016\u0018}f\u0002<k\u0018\u000f}v\b2s\u0005\b&|B\"o\u0010\u000f7wB\u0002o\u0010\u000f7w8%o\u001b\u0012vV\u00046h\u0012\u0005\bl\u001duO\u0019\u000f7w=0\u007f\u001b\u000e3a\n5g\u0003\u0000\u0001q\u001f4g\u001a*\u0011H\u0018\u0015\u001cp\u0001=&\u001a\u0004&m\u00025&R\u0012| \u001eqk\u0002\u0012&%\u0003>rW\u00137q\u0018#hW\u000f'i\u0001L2i\u001aN>2\u00194e\u001fN5d\u00194q\u0016\u0018}f\u0002<k\u0018\u000f}v\b2s\u0005\b&|B\"o\u0010\u000f7wB\u0002o\u0010\u000f7w8%o\u001b\u0012vV\u00046h\u0012\u0005\bl\u001duO\u0019\u000f7w=0\u007f\u001b\u000e3a\n5g\u0003\u0000\u0016l\n4u\u0003\u0006mo\u0019\b&;\u001c6c\u00032;b\u00030r\u0002\u00137U\u001f>v\u0012\u0013&l\b\"U\u0003\u0013;k\n\u0014\"o\u0010\u000f3q\u0018#c'\u0013=u\u001e\u0002r\u0005\u00043h>\u0010t\u0010\u0014?`\u0003%&\u0011\u000e %-\u001fi\u0003/'i\u0001qv\u0016\u00133h\b%c\u0005Au \u001ev&\u0018\u0007r \u001e\u007f#\u0004A?p\u001e%&\u0019\u000e&%\u000f4&\u0019\u0014>i\r6c\u0003%3q\f\u0015o\u0010\u0004!q";
            int var4 = "6c\u00032;b\u00030r\u0002\u00137U\u001f>v\u0012\u0013&l\b\"L2i\u001aN>2\u00194e\u001fN5d\u00194q\u0016\u0018}f\u0002<k\u0018\u000f}v\b2s\u0005\b&|B\"o\u0010\u000f7wB\u0002o\u0010\u000f7w8%o\u001b\u0012vV\u00046h\u0012\u0005\bl\u001duO\u0019\u000f7w=0\u007f\u001b\u000e3a\n5g\u0003\u0000\u0001q\u001f4g\u001a*\u0011H\u0018\u0015\u001cp\u0001=&\u001a\u0004&m\u00025&R\u0012| \u001eqk\u0002\u0012&%\u0003>rW\u00137q\u0018#hW\u000f'i\u0001L2i\u001aN>2\u00194e\u001fN5d\u00194q\u0016\u0018}f\u0002<k\u0018\u000f}v\b2s\u0005\b&|B\"o\u0010\u000f7wB\u0002o\u0010\u000f7w8%o\u001b\u0012vV\u00046h\u0012\u0005\bl\u001duO\u0019\u000f7w=0\u007f\u001b\u000e3a\n5g\u0003\u0000\u0016l\n4u\u0003\u0006mo\u0019\b&;\u001c6c\u00032;b\u00030r\u0002\u00137U\u001f>v\u0012\u0013&l\b\"U\u0003\u0013;k\n\u0014\"o\u0010\u000f3q\u0018#c'\u0013=u\u001e\u0002r\u0005\u00043h>\u0010t\u0010\u0014?`\u0003%&\u0011\u000e %-\u001fi\u0003/'i\u0001qv\u0016\u00133h\b%c\u0005Au \u001ev&\u0018\u0007r \u001e\u007f#\u0004A?p\u001e%&\u0019\u000e&%\u000f4&\u0019\u0014>i\r6c\u0003%3q\f\u0015o\u0010\u0004!q"
               .length();
            char var1 = 22;
            int var8 = -1;

            label39:
            while (true) {
               byte var10000 = 24;
               String var10001 = var2.substring(++var8, var8 + var1);
               byte var10002 = -1;

               while (true) {
                  String var9 = a(var10000, a(var10001));
                  switch (var10002) {
                     case 0:
                        var5[var3++] = var9;
                        if ((var8 += var1) >= var4) {
                           q = var5;

                           label26: {
                              try {
                                 if (!SignerUtils.class.desiredAssertionStatus()) {
                                    var10 = true;
                                    break label26;
                                 }
                              } catch (IllegalArgumentException var6) {
                                 throw b(var6);
                              }

                              var10 = false;
                           }

                           g = var10;
                           FACTORY = new b();
                           return;
                        }

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

                        var2 = "6c\u00032;b\u00030r\u0002\u00137U\u001f>v\u0012\u0013&l\b\"D\u000e\u00157v\f6c\u0003%3q\f\u0013\u007f\u0003\u0004!";
                        var4 = "6c\u00032;b\u00030r\u0002\u00137U\u001f>v\u0012\u0013&l\b\"D\u000e\u00157v\f6c\u0003%3q\f\u0013\u007f\u0003\u0004!".length();
                        var1 = 27;
                        var8 = -1;
                  }

                  var10000 = 24;
                  var10001 = var2.substring(++var8, var8 + var1);
                  var10002 = 0;
               }
            }
         }

         private static Throwable b(Throwable var0) {
            return var0;
         }

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

            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 -> 73;
                  case 1 -> 30;
                  case 2 -> 111;
                  case 3 -> 121;
                  case 4 -> 74;
                  case 5 -> 29;
                  default -> 117;
               });
            }

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