package com.l7tech.external.assertions.gatewaymanagement.server;

import com.l7tech.gateway.api.impl.PrivateKeyExportContext;
import com.l7tech.gateway.api.impl.PrivateKeyExportResult;
import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.gateway.common.security.rbac.OperationType;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.server.admin.PrivateKeyAdminHelper;
import com.l7tech.util.Either;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Pair;
import java.security.KeyStoreException;
import java.security.UnrecoverableKeyException;

class bq implements ResourceFactorySupport.TransactionalCallback<Either<ResourceFactory.ResourceNotFoundException, PrivateKeyExportResult>> {
   final Pair val$keyId;
   final PrivateKeyExportContext val$resource;
   final PrivateKeyResourceFactory this$0;
   private static final String a;

   bq(PrivateKeyResourceFactory var1, Pair var2, PrivateKeyExportContext var3) {
      this.this$0 = var1;
      this.val$keyId = var2;
      this.val$resource = var3;
   }

   public Either<ResourceFactory.ResourceNotFoundException, PrivateKeyExportResult> execute() throws ObjectModelException {
      try {
         SsgKeyEntry var1 = this.this$0.a(this.val$keyId);
         this.this$0.checkPermittedForAnyEntity(OperationType.DELETE, EntityType.SSG_KEY_ENTRY);
         char[] var2 = this.val$resource.getPassword().toCharArray();

         String var10000;
         label30: {
            try {
               if (this.val$resource.getAlias() == null) {
                  var10000 = var1.getAlias();
                  break label30;
               }
            } catch (UnrecoverableKeyException var8) {
               throw a(var8);
            }

            var10000 = this.val$resource.getAlias();
         }

         String var3 = var10000;

         byte[] var4;
         try {
            PrivateKeyAdminHelper var5 = this.this$0.a();
            var4 = var5.doExportKeyAsPkcs12(var1.getKeystoreId(), var1.getAlias(), var3, var2);
         } catch (UnrecoverableKeyException var6) {
            throw new ResourceFactory.ResourceNotFoundException(a);
         } catch (KeyStoreException var7) {
            throw new ResourceFactory.ResourceAccessException(ExceptionUtils.getMessage(var7), var7);
         }

         PrivateKeyExportResult var10 = new PrivateKeyExportResult();
         var10.setPkcs12Data(var4);
         return Either.right(var10);
      } catch (ResourceFactory.ResourceNotFoundException var9) {
         return Either.left(var9);
      }
   }

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

   static {
      String var10002 = a(107, a("&'\u000f\u001crS[V\u001e\u0003\u00133D_\u0018;\t\u001e3E[V0\u001e\u001a|UJ\u00131H"));
      byte var10001 = -1;
      a = var10002;
   }

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

      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 -> 29;
            case 1 -> 62;
            case 2 -> 13;
            case 3 -> 1;
            case 4 -> 120;
            case 5 -> 76;
            default -> 85;
         });
      }

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