/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.AliasNotFoundException
 *  com.l7tech.common.io.CertGenParams
 *  com.l7tech.common.io.CertUtils
 *  com.l7tech.common.io.KeyGenParams
 *  com.l7tech.common.io.ParamsCertificateGenerator
 *  com.l7tech.common.io.SslCertificateSniffer
 *  com.l7tech.common.io.SslCertificateSniffer$HostnameMismatchException
 *  com.l7tech.common.io.X509GeneralName
 *  com.l7tech.gateway.common.AsyncAdminMethods$JobId
 *  com.l7tech.gateway.common.LicenseException
 *  com.l7tech.gateway.common.LicenseManager
 *  com.l7tech.gateway.common.admin.LicenseRuntimeException
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.audit.AuditDetailMessage
 *  com.l7tech.gateway.common.audit.SystemMessages
 *  com.l7tech.gateway.common.cluster.ClusterProperty
 *  com.l7tech.gateway.common.security.MultipleAliasesException
 *  com.l7tech.gateway.common.security.RevocationCheckPolicy
 *  com.l7tech.gateway.common.security.SpecialKeyType
 *  com.l7tech.gateway.common.security.TrustedCertAdmin
 *  com.l7tech.gateway.common.security.TrustedCertAdmin$HostnameMismatchException
 *  com.l7tech.gateway.common.security.keystore.KeystoreFileEntityHeader
 *  com.l7tech.gateway.common.security.keystore.SsgKeyEntry
 *  com.l7tech.gateway.common.security.keystore.SsgKeyMetadata
 *  com.l7tech.gateway.common.security.password.SecurePassword
 *  com.l7tech.gateway.common.security.password.SecurePassword$SecurePasswordType
 *  com.l7tech.objectmodel.DeleteException
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.ObjectNotFoundException
 *  com.l7tech.objectmodel.PersistentEntity
 *  com.l7tech.objectmodel.SaveException
 *  com.l7tech.objectmodel.SecurityZone
 *  com.l7tech.objectmodel.UpdateException
 *  com.l7tech.objectmodel.VersionException
 *  com.l7tech.security.cert.BouncyCastleCertUtils
 *  com.l7tech.security.cert.TrustedCert
 *  com.l7tech.security.cert.TrustedCert$PolicyUsageType
 *  com.l7tech.security.cert.TrustedCertManager
 *  com.l7tech.security.keys.PemUtils
 *  com.l7tech.security.prov.CertificateRequest
 *  com.l7tech.security.prov.JceProvider
 *  com.l7tech.security.prov.RsaSignerEngine
 *  com.l7tech.security.prov.bc.BouncyCastleRsaSignerEngine
 *  com.l7tech.security.types.CertificateValidationResult
 *  com.l7tech.security.types.CertificateValidationType
 *  com.l7tech.util.ArrayUtils
 *  com.l7tech.util.Background
 *  com.l7tech.util.Config
 *  com.l7tech.util.ExceptionUtils
 *  org.apache.commons.lang3.ObjectUtils
 *  org.bouncycastle.asn1.pkcs.CertificationRequestInfo
 *  org.bouncycastle.pkcs.PKCS10CertificationRequest
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.beans.BeansException
 *  org.springframework.context.ApplicationContext
 *  org.springframework.context.ApplicationContextAware
 *  org.springframework.context.ApplicationEvent
 *  org.springframework.context.ApplicationEventPublisher
 *  org.springframework.context.ApplicationEventPublisherAware
 */
package com.l7tech.server.admin;

import com.l7tech.common.io.AliasNotFoundException;
import com.l7tech.common.io.CertGenParams;
import com.l7tech.common.io.CertUtils;
import com.l7tech.common.io.KeyGenParams;
import com.l7tech.common.io.ParamsCertificateGenerator;
import com.l7tech.common.io.SslCertificateSniffer;
import com.l7tech.common.io.X509GeneralName;
import com.l7tech.gateway.common.AsyncAdminMethods;
import com.l7tech.gateway.common.LicenseException;
import com.l7tech.gateway.common.LicenseManager;
import com.l7tech.gateway.common.admin.LicenseRuntimeException;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.audit.SystemMessages;
import com.l7tech.gateway.common.cluster.ClusterProperty;
import com.l7tech.gateway.common.security.MultipleAliasesException;
import com.l7tech.gateway.common.security.RevocationCheckPolicy;
import com.l7tech.gateway.common.security.SpecialKeyType;
import com.l7tech.gateway.common.security.TrustedCertAdmin;
import com.l7tech.gateway.common.security.keystore.KeystoreFileEntityHeader;
import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.gateway.common.security.keystore.SsgKeyMetadata;
import com.l7tech.gateway.common.security.password.SecurePassword;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.SecurityZone;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.VersionException;
import com.l7tech.security.cert.BouncyCastleCertUtils;
import com.l7tech.security.cert.TrustedCert;
import com.l7tech.security.cert.TrustedCertManager;
import com.l7tech.security.keys.PemUtils;
import com.l7tech.security.prov.CertificateRequest;
import com.l7tech.security.prov.JceProvider;
import com.l7tech.security.prov.RsaSignerEngine;
import com.l7tech.security.prov.bc.BouncyCastleRsaSignerEngine;
import com.l7tech.security.types.CertificateValidationResult;
import com.l7tech.security.types.CertificateValidationType;
import com.l7tech.server.DefaultKey;
import com.l7tech.server.admin.AsyncAdminMethodsImpl;
import com.l7tech.server.admin.PrivateKeyAdminHelper;
import com.l7tech.server.admin.n;
import com.l7tech.server.admin.o;
import com.l7tech.server.admin.u;
import com.l7tech.server.admin.v;
import com.l7tech.server.audit.Auditor;
import com.l7tech.server.cluster.ClusterPropertyManager;
import com.l7tech.server.event.AdminInfo;
import com.l7tech.server.event.admin.DetailedAdminEvent;
import com.l7tech.server.identity.cert.RevocationCheckPolicyManager;
import com.l7tech.server.security.cert.CertValidationProcessor;
import com.l7tech.server.security.keystore.SsgKeyFinder;
import com.l7tech.server.security.keystore.SsgKeyMetadataManager;
import com.l7tech.server.security.keystore.SsgKeyStore;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.server.security.password.SecurePasswordManager;
import com.l7tech.util.ArrayUtils;
import com.l7tech.util.Background;
import com.l7tech.util.Config;
import com.l7tech.util.ExceptionUtils;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigInteger;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PublicKey;
import java.security.SignatureException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.security.interfaces.ECPublicKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.ECParameterSpec;
import java.security.spec.ECPoint;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EventObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimerTask;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.security.auth.x500.X500Principal;
import org.apache.commons.lang3.ObjectUtils;
import org.bouncycastle.asn1.pkcs.CertificationRequestInfo;
import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;

/*
 * Exception performing whole class analysis ignored.
 */
public class TrustedCertAdminImpl
extends AsyncAdminMethodsImpl
implements ApplicationEventPublisherAware,
TrustedCertAdmin,
ApplicationContextAware {
    private static final String e;
    private static final String f;
    private static final String g;
    private static final String h;
    private final DefaultKey i;
    private final LicenseManager j;
    private final SsgKeyStoreManager k;
    private final SsgKeyMetadataManager l;
    private final SecurePasswordManager m;
    private final ClusterPropertyManager n;
    private ApplicationEventPublisher o;
    private Auditor p;
    private final CertValidationProcessor q;
    private final Config r;
    private Logger s;
    private final TrustedCertManager t;
    private final RevocationCheckPolicyManager u;
    private static final String[] v;

    public TrustedCertAdminImpl(TrustedCertManager trustedCertManager, RevocationCheckPolicyManager revocationCheckPolicyManager, DefaultKey defaultKey, LicenseManager licenseManager, SsgKeyStoreManager ssgKeyStoreManager, @NotNull SsgKeyMetadataManager ssgKeyMetadataManager, SecurePasswordManager securePasswordManager, ClusterPropertyManager clusterPropertyManager, @NotNull CertValidationProcessor certValidationProcessor, @NotNull Config config) {
        if (ssgKeyMetadataManager == null) {
            TrustedCertAdminImpl.a(0);
        }
        if (certValidationProcessor == null) {
            TrustedCertAdminImpl.a(1);
        }
        if (config == null) {
            TrustedCertAdminImpl.a(2);
        }
        super(7200);
        this.s = Logger.getLogger(this.getClass().getName());
        this.t = trustedCertManager;
        if (trustedCertManager == null) {
            String[] stringArray = v;
            throw new IllegalArgumentException(stringArray[28]);
        }
        try {
            this.u = revocationCheckPolicyManager;
            if (revocationCheckPolicyManager == null) {
                throw new IllegalArgumentException(v[66]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw TrustedCertAdminImpl.a(illegalArgumentException);
        }
        try {
            this.i = defaultKey;
            if (defaultKey == null) {
                throw new IllegalArgumentException(v[86]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw TrustedCertAdminImpl.a(illegalArgumentException);
        }
        try {
            this.j = licenseManager;
            if (licenseManager == null) {
                throw new IllegalArgumentException(v[35]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw TrustedCertAdminImpl.a(illegalArgumentException);
        }
        try {
            this.k = ssgKeyStoreManager;
            if (ssgKeyStoreManager == null) {
                throw new IllegalArgumentException(v[18]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw TrustedCertAdminImpl.a(illegalArgumentException);
        }
        try {
            this.m = securePasswordManager;
            if (securePasswordManager == null) {
                throw new IllegalArgumentException(v[11]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw TrustedCertAdminImpl.a(illegalArgumentException);
        }
        try {
            this.n = clusterPropertyManager;
            if (clusterPropertyManager == null) {
                throw new IllegalArgumentException(v[43]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw TrustedCertAdminImpl.a(illegalArgumentException);
        }
        this.l = ssgKeyMetadataManager;
        this.q = certValidationProcessor;
        this.r = config;
    }

    public boolean getKeyStoreAllowDuplicatesBySubjectDN() {
        return this.r.getBooleanProperty(v[91], false);
    }

    private void b() {
        try {
            this.j.requireFeature(v[77]);
        }
        catch (LicenseException licenseException) {
            throw new LicenseRuntimeException(licenseException);
        }
    }

    private void c() {
        try {
            this.j.requireFeature(v[3]);
        }
        catch (LicenseException licenseException) {
            throw new LicenseRuntimeException(licenseException);
        }
    }

    public List<TrustedCert> findAllCerts() throws FindException {
        return new ArrayList<TrustedCert>(this.d().findAll());
    }

    public TrustedCert findCertByPrimaryKey(Goid goid) throws FindException {
        return (TrustedCert)this.d().findByPrimaryKey(goid);
    }

    public Collection<TrustedCert> findCertsBySubjectDn(String string) throws FindException {
        return this.d().findBySubjectDn(CertUtils.formatDN((String)string));
    }

    public boolean validateCertChainForCc(@NotNull X509Certificate[] x509CertificateArray) throws CertificateException {
        try {
            if (x509CertificateArray == null) {
                TrustedCertAdminImpl.a(3);
            }
        }
        catch (CertificateException certificateException) {
            throw TrustedCertAdminImpl.a(certificateException);
        }
        CertificateValidationResult certificateValidationResult = this.q.checkWithCcRequirements(x509CertificateArray, CertificateValidationType.PATH_VALIDATION, CertificateValidationType.REVOCATION, CertValidationProcessor.Facility.OTHER, (Audit)this.p, false);
        try {
            if (certificateValidationResult != CertificateValidationResult.OK) {
                throw new CertificateException(v[52] + certificateValidationResult.toString());
            }
        }
        catch (CertificateException certificateException) {
            throw TrustedCertAdminImpl.a(certificateException);
        }
        return true;
    }

    public Goid saveCert(TrustedCert trustedCert) throws SaveException, UpdateException, VersionException, CertificateException {
        Goid goid;
        block11: {
            block12: {
                block10: {
                    try {
                        this.b();
                        if (trustedCert.getRevocationCheckPolicyType() != null) break block10;
                        trustedCert.setRevocationCheckPolicyType(TrustedCert.PolicyUsageType.USE_DEFAULT);
                        break block11;
                    }
                    catch (SaveException saveException) {
                        throw TrustedCertAdminImpl.a((Exception)((Object)saveException));
                    }
                }
                try {
                    try {
                        try {
                            if (trustedCert.getRevocationCheckPolicyType() != TrustedCert.PolicyUsageType.SPECIFIED || trustedCert.getRevocationCheckPolicyOid() != null) break block11;
                        }
                        catch (SaveException saveException) {
                            throw TrustedCertAdminImpl.a((Exception)((Object)saveException));
                        }
                        if (!trustedCert.isUnsaved()) break block12;
                    }
                    catch (SaveException saveException) {
                        throw TrustedCertAdminImpl.a((Exception)((Object)saveException));
                    }
                    throw new SaveException(v[69]);
                }
                catch (SaveException saveException) {
                    throw TrustedCertAdminImpl.a((Exception)((Object)saveException));
                }
            }
            throw new UpdateException(v[48]);
        }
        this.validateCert(trustedCert);
        if (trustedCert.isUnsaved()) {
            goid = this.d().save((PersistentEntity)trustedCert);
        } else {
            this.d().update((PersistentEntity)trustedCert);
            goid = trustedCert.getGoid();
        }
        return goid;
    }

    public void deleteCert(Goid goid) throws FindException, DeleteException {
        this.b();
        this.d().delete(goid);
    }

    public List<RevocationCheckPolicy> findAllRevocationCheckPolicies() throws FindException {
        return new ArrayList<RevocationCheckPolicy>(this.e().findAll());
    }

    public RevocationCheckPolicy findRevocationCheckPolicyByPrimaryKey(Goid goid) throws FindException {
        return (RevocationCheckPolicy)this.e().findByPrimaryKey(goid);
    }

    public Goid saveRevocationCheckPolicy(RevocationCheckPolicy revocationCheckPolicy) throws SaveException, UpdateException, VersionException {
        Goid goid;
        this.b();
        RevocationCheckPolicyManager revocationCheckPolicyManager = this.e();
        if (RevocationCheckPolicy.DEFAULT_GOID.equals((Object)revocationCheckPolicy.getGoid())) {
            goid = revocationCheckPolicyManager.save((PersistentEntity)revocationCheckPolicy);
        } else {
            revocationCheckPolicyManager.update((PersistentEntity)revocationCheckPolicy);
            goid = revocationCheckPolicy.getGoid();
        }
        return goid;
    }

    public void deleteRevocationCheckPolicy(Goid goid) throws FindException, DeleteException {
        this.b();
        this.e().delete(goid);
    }

    public X509Certificate[] getCertficatesFromKeystoreBytes(@Nullable byte[] byArray, String string, @Nullable char[] cArray, char[] cArray2, @Nullable String string2) throws UnrecoverableKeyException, MultipleAliasesException, CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, NoSuchProviderException, AliasNotFoundException {
        return this.f().getCertficatesFromKeystoreBytes(byArray, string, cArray, cArray2, string2);
    }

    public X509Certificate[] retrieveCertFromUrl(String string) throws IOException, TrustedCertAdmin.HostnameMismatchException {
        this.b();
        return this.retrieveCertFromUrl(string, false);
    }

    public X509Certificate[] retrieveCertFromUrl(String string, boolean bl2) throws IOException, TrustedCertAdmin.HostnameMismatchException {
        this.b();
        try {
            return SslCertificateSniffer.retrieveCertFromUrl((String)string, (boolean)bl2);
        }
        catch (SslCertificateSniffer.HostnameMismatchException hostnameMismatchException) {
            throw new TrustedCertAdmin.HostnameMismatchException(hostnameMismatchException.getCertname(), hostnameMismatchException.getHostname());
        }
    }

    public AsyncAdminMethods.JobId<X509Certificate[]> retrieveCertFromUrlAsync(String string, boolean bl2) {
        FutureTask<X509Certificate[]> futureTask = new FutureTask<X509Certificate[]>(AdminInfo.find(false).wrapCallable(new n(this, string, bl2)));
        Background.scheduleOneShot((TimerTask)new u(this, futureTask), (long)0L);
        return this.registerJob(futureTask, X509Certificate[].class);
    }

    public X509Certificate getSSGRootCert() throws IOException, CertificateException {
        SsgKeyEntry ssgKeyEntry = this.i.getCaInfo();
        try {
            if (ssgKeyEntry == null) {
                throw new IOException(v[21]);
            }
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
        return ssgKeyEntry.getCertificate();
    }

    public X509Certificate getSSGSslCert() throws IOException, CertificateException {
        return this.i.getServerSslInfo().getCertificate();
    }

    public X509Certificate getSSGServerSslCert() throws IOException, CertificateException {
        return this.i.getServerSslInfo().getCertificate();
    }

    public X509Certificate getSSGClientSslCert() throws IOException, CertificateException {
        return this.i.getClientSslInfo().getCertificate();
    }

    public X509Certificate getSSGAuditSigningCert() throws IOException, CertificateException {
        X509Certificate x509Certificate;
        SsgKeyEntry ssgKeyEntry = this.i.getAuditSigningInfo();
        try {
            x509Certificate = ssgKeyEntry != null ? ssgKeyEntry.getCertificate() : this.getSSGServerSslCert();
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
        return x509Certificate;
    }

    public List<KeystoreFileEntityHeader> findAllKeystores(boolean bl2) throws IOException, FindException, KeyStoreException {
        List<SsgKeyFinder> list = this.k.findAll();
        ArrayList<KeystoreFileEntityHeader> arrayList = new ArrayList<KeystoreFileEntityHeader>();
        for (SsgKeyFinder ssgKeyFinder : list) {
            boolean bl3;
            String string;
            String string2;
            Goid goid;
            KeystoreFileEntityHeader keystoreFileEntityHeader;
            KeystoreFileEntityHeader keystoreFileEntityHeader2;
            ArrayList<KeystoreFileEntityHeader> arrayList2;
            try {
                try {
                    if (!bl2 && ssgKeyFinder.getType() == SsgKeyFinder.SsgKeyStoreType.PKCS11_HARDWARE) {
                        continue;
                    }
                }
                catch (IOException iOException) {
                    throw TrustedCertAdminImpl.a(iOException);
                }
            }
            catch (IOException iOException) {
                throw TrustedCertAdminImpl.a(iOException);
            }
            try {
                KeystoreFileEntityHeader keystoreFileEntityHeader3;
                arrayList2 = arrayList;
                keystoreFileEntityHeader2 = keystoreFileEntityHeader3;
                keystoreFileEntityHeader = keystoreFileEntityHeader3;
                goid = ssgKeyFinder.getGoid();
                string2 = ssgKeyFinder.getName();
                string = ssgKeyFinder.getType().toString();
                bl3 = !ssgKeyFinder.isMutable();
            }
            catch (IOException iOException) {
                throw TrustedCertAdminImpl.a(iOException);
            }
            keystoreFileEntityHeader2(goid, string2, string, bl3);
            arrayList2.add(keystoreFileEntityHeader);
        }
        return arrayList;
    }

    /*
     * Unable to fully structure code
     */
    public List<SsgKeyEntry> findAllKeys(Goid var1_1, boolean var2_2) throws IOException, CertificateException, FindException {
        try {
            var3_3 = this.k.findByPrimaryKey(var1_1);
            var4_6 = new ArrayList<SsgKeyEntry>();
            var5_7 = var3_3.getAliases();
            for (String var7_9 : var5_7) {
                var8_10 = var3_3.getCertificateChain(var7_9);
                if (var2_2) ** GOTO lbl14
                try {
                    block8: {
                        if (var8_10.isRestrictedAccess()) continue;
                        break block8;
                        catch (KeyStoreException v0) {
                            throw TrustedCertAdminImpl.a(v0);
                        }
                    }
                    var4_6.add(var8_10);
                }
                catch (KeyStoreException v1) {
                    throw TrustedCertAdminImpl.a(v1);
                }
            }
            return var4_6;
        }
        catch (KeyStoreException var3_4) {
            throw new CertificateException(var3_4);
        }
        catch (ObjectNotFoundException var3_5) {
            throw new FindException(TrustedCertAdminImpl.v[32] + String.valueOf(var1_1));
        }
    }

    public SsgKeyEntry findKeyEntry(String string, Goid goid) throws FindException, KeyStoreException {
        return this.f().doFindKeyEntry(string, goid);
    }

    public void deleteKey(Goid goid, String string) throws IOException, CertificateException, DeleteException {
        try {
            this.c();
            if (string == null) {
                throw new NullPointerException(v[29]);
            }
        }
        catch (KeyStoreException keyStoreException) {
            throw TrustedCertAdminImpl.a(keyStoreException);
        }
        try {
            SsgKeyFinder ssgKeyFinder = this.k.findByPrimaryKey(goid);
            SsgKeyStore ssgKeyStore = ssgKeyFinder.getKeyStore();
            try {
                if (ssgKeyStore == null) {
                    throw new DeleteException(v[8] + String.valueOf(goid) + v[76]);
                }
            }
            catch (KeyStoreException keyStoreException) {
                throw TrustedCertAdminImpl.a(keyStoreException);
            }
            PrivateKeyAdminHelper privateKeyAdminHelper = this.f();
            try {
                if (privateKeyAdminHelper.isKeyActive(ssgKeyStore, string)) {
                    throw new DeleteException(v[63] + string + v[53]);
                }
            }
            catch (KeyStoreException keyStoreException) {
                throw TrustedCertAdminImpl.a(keyStoreException);
            }
            privateKeyAdminHelper.validateKeyDeletionAllowed(goid, string);
            privateKeyAdminHelper.doDeletePrivateKeyEntry(ssgKeyStore, string);
        }
        catch (KeyStoreException keyStoreException) {
            throw new CertificateException(keyStoreException);
        }
        catch (FindException findException) {
            throw new DeleteException(v[47] + ExceptionUtils.getMessage((Throwable)findException), (Throwable)findException);
        }
    }

    public AsyncAdminMethods.JobId<X509Certificate> generateKeyPair(Goid goid, String string, @Nullable SsgKeyMetadata ssgKeyMetadata, X500Principal x500Principal, int n2, int n3, boolean bl2, String string2) throws FindException, GeneralSecurityException {
        this.c();
        PrivateKeyAdminHelper privateKeyAdminHelper = this.f();
        return this.registerJob(privateKeyAdminHelper.doGenerateKeyPair(goid, string, ssgKeyMetadata, x500Principal, new KeyGenParams(n2), n3, bl2, string2), X509Certificate.class);
    }

    public AsyncAdminMethods.JobId<X509Certificate> generateEcKeyPair(Goid goid, String string, @Nullable SsgKeyMetadata ssgKeyMetadata, X500Principal x500Principal, String string2, int n2, boolean bl2, String string3) throws FindException, GeneralSecurityException {
        this.c();
        PrivateKeyAdminHelper privateKeyAdminHelper = this.f();
        return this.registerJob(privateKeyAdminHelper.doGenerateKeyPair(goid, string, ssgKeyMetadata, x500Principal, new KeyGenParams(string2), n2, bl2, string3), X509Certificate.class);
    }

    private SsgKeyMetadata a(Goid goid, @NotNull String string, @Nullable SecurityZone securityZone) {
        SsgKeyMetadata ssgKeyMetadata;
        try {
            if (string == null) {
                TrustedCertAdminImpl.a(4);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw TrustedCertAdminImpl.a(illegalArgumentException);
        }
        try {
            ssgKeyMetadata = securityZone == null ? null : new SsgKeyMetadata(goid, string, securityZone);
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw TrustedCertAdminImpl.a(illegalArgumentException);
        }
        return ssgKeyMetadata;
    }

    public byte[] generateCSR(Goid goid, String string, CertGenParams certGenParams) throws FindException {
        SsgKeyFinder ssgKeyFinder;
        this.c();
        try {
            ssgKeyFinder = this.k.findByPrimaryKey(goid);
        }
        catch (KeyStoreException keyStoreException) {
            String[] stringArray = v;
            this.s.log(Level.WARNING, stringArray[92], keyStoreException);
            throw new FindException(stringArray[92], (Throwable)keyStoreException);
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            String[] stringArray = v;
            throw new FindException(stringArray[92], (Throwable)objectNotFoundException);
        }
        if (ssgKeyFinder == null) {
            String[] stringArray = v;
            this.s.log(Level.WARNING, stringArray[92]);
            throw new FindException(stringArray[92]);
        }
        SsgKeyStore ssgKeyStore = ssgKeyFinder.getKeyStore();
        try {
            CertificateRequest certificateRequest = ssgKeyStore.makeCertificateSigningRequest(string, certGenParams);
            this.p.logAndAudit((AuditDetailMessage)SystemMessages.CERT_SIGNING_REQUEST, certGenParams.getSubjectDn().getName());
            String[] stringArray = v;
            this.addAuditEntry(new EventObject(certificateRequest), stringArray[31] + certGenParams.getSubjectDn().getName());
            return certificateRequest.getEncoded();
        }
        catch (Exception exception) {
            String[] stringArray = v;
            this.s.log(Level.WARNING, stringArray[92], exception);
            throw new FindException(stringArray[25], (Throwable)exception);
        }
    }

    public String[] signCSR(Goid goid, String string, byte[] byArray, X500Principal x500Principal, int n2, String string2, String string3) throws FindException, GeneralSecurityException {
        X509Certificate x509Certificate;
        X509Certificate[] x509CertificateArray;
        byte[] byArray2;
        SsgKeyFinder ssgKeyFinder;
        this.c();
        try {
            ssgKeyFinder = this.k.findByPrimaryKey(goid);
        }
        catch (KeyStoreException keyStoreException) {
            String[] stringArray = v;
            this.s.log(Level.WARNING, stringArray[92], keyStoreException);
            throw new FindException(stringArray[92], (Throwable)keyStoreException);
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            String[] stringArray = v;
            throw new FindException(stringArray[92], (Throwable)objectNotFoundException);
        }
        if (ssgKeyFinder == null) {
            String[] stringArray = v;
            this.s.log(Level.WARNING, stringArray[92]);
            throw new FindException(stringArray[12]);
        }
        SsgKeyStore ssgKeyStore = ssgKeyFinder.getKeyStore();
        SsgKeyEntry ssgKeyEntry = ssgKeyStore.getCertificateChain(string);
        RsaSignerEngine rsaSignerEngine = JceProvider.getInstance().createRsaSignerEngine(ssgKeyEntry.getPrivateKey(), ssgKeyEntry.getCertificateChain());
        try {
            byArray2 = CertUtils.csrPemToBinary((byte[])byArray);
        }
        catch (IOException iOException) {
            byArray2 = byArray;
        }
        try {
            x509CertificateArray = new CertGenParams(x500Principal, n2, false, string2);
            x509CertificateArray.setHashAlgorithm(string3);
            x509Certificate = (X509Certificate)rsaSignerEngine.createCertificate(byArray2, x509CertificateArray.useUserCertDefaults());
        }
        catch (GeneralSecurityException generalSecurityException) {
            throw generalSecurityException;
        }
        catch (Exception exception) {
            String[] stringArray = v;
            throw new SignatureException(stringArray[9] + ExceptionUtils.getMessage((Throwable)exception), exception);
        }
        x509CertificateArray = ssgKeyEntry.getCertificateChain();
        X509Certificate[] x509CertificateArray2 = new X509Certificate[x509CertificateArray.length + 1];
        System.arraycopy(x509CertificateArray, 0, x509CertificateArray2, 1, x509CertificateArray.length);
        x509CertificateArray2[0] = x509Certificate;
        try {
            String[] stringArray = new String[x509CertificateArray2.length];
            try {
                for (int i2 = 0; i2 < x509CertificateArray2.length; ++i2) {
                    stringArray[i2] = CertUtils.encodeAsPEM((X509Certificate)x509CertificateArray2[i2]);
                }
            }
            catch (KeyStoreException keyStoreException) {
                throw TrustedCertAdminImpl.a(keyStoreException);
            }
            return stringArray;
        }
        catch (IOException iOException) {
            throw new SignatureException(v[40] + ExceptionUtils.getMessage((Throwable)iOException), iOException);
        }
    }

    public List<String> findImpactedKeysByUpdateKeyEntry(@NotNull SsgKeyEntry ssgKeyEntry) throws UpdateException {
        try {
            if (ssgKeyEntry == null) {
                TrustedCertAdminImpl.a(5);
            }
        }
        catch (UpdateException updateException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)updateException));
        }
        try {
            this.c();
            if (this.a(ssgKeyEntry)) {
                return this.f().findImpactedKeysByReplaceCertChain(ssgKeyEntry.getKeystoreId(), ssgKeyEntry.getAlias(), ssgKeyEntry.getCertificateChain());
            }
        }
        catch (UpdateException updateException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)updateException));
        }
        return new ArrayList<String>();
    }

    public final void updateKeyEntry(@NotNull SsgKeyEntry ssgKeyEntry) throws UpdateException {
        try {
            if (ssgKeyEntry == null) {
                TrustedCertAdminImpl.a(6);
            }
        }
        catch (UpdateException updateException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)updateException));
        }
        this.updateKeyEntry(ssgKeyEntry, false);
    }

    public void updateKeyEntry(@NotNull SsgKeyEntry ssgKeyEntry, boolean bl2) throws UpdateException {
        try {
            if (ssgKeyEntry == null) {
                TrustedCertAdminImpl.a(7);
            }
        }
        catch (FindException findException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)findException));
        }
        this.c();
        try {
            if (this.a(ssgKeyEntry)) {
                this.f().doUpdateCertificateChain(ssgKeyEntry.getKeystoreId(), ssgKeyEntry.getAlias(), ssgKeyEntry.getCertificateChain(), bl2);
            }
            SsgKeyEntry ssgKeyEntry2 = this.f().doFindKeyEntry(ssgKeyEntry.getAlias(), ssgKeyEntry.getKeystoreId());
            try {
                if (!ObjectUtils.equals((Object)ssgKeyEntry2.getKeyMetadata(), (Object)ssgKeyEntry.getKeyMetadata())) {
                    this.f().doUpdateKeyMetadata(ssgKeyEntry.getKeystoreId(), ssgKeyEntry.getAlias(), ssgKeyEntry.getKeyMetadata());
                }
            }
            catch (FindException findException) {
                throw TrustedCertAdminImpl.a((Exception)((Object)findException));
            }
        }
        catch (FindException | KeyStoreException throwable) {
            throw new UpdateException(v[95], throwable);
        }
        catch (UpdateException updateException) {
            this.s.log(Level.WARNING, ExceptionUtils.getMessage((Throwable)updateException), ExceptionUtils.getDebugException((Throwable)updateException));
            throw updateException;
        }
    }

    private boolean a(@NotNull SsgKeyEntry ssgKeyEntry) throws UpdateException {
        X509Certificate[] x509CertificateArray;
        try {
            if (ssgKeyEntry == null) {
                TrustedCertAdminImpl.a(8);
            }
        }
        catch (CertificateException certificateException) {
            throw TrustedCertAdminImpl.a(certificateException);
        }
        X509Certificate[] x509CertificateArray2 = ssgKeyEntry.getCertificateChain();
        for (int i2 = 0; i2 < x509CertificateArray2.length; ++i2) {
            x509CertificateArray = ssgKeyEntry.getCertificateChain()[i2];
            try {
                x509CertificateArray2[i2] = CertUtils.decodeCert((byte[])x509CertificateArray.getEncoded());
                continue;
            }
            catch (CertificateException certificateException) {
                this.s.log(Level.INFO, ExceptionUtils.getMessage((Throwable)certificateException), ExceptionUtils.getDebugException((Throwable)certificateException));
                String[] stringArray = v;
                throw new UpdateException(stringArray[59], (Throwable)certificateException);
            }
        }
        try {
            boolean bl2;
            block12: {
                SsgKeyEntry ssgKeyEntry2 = this.f().doFindKeyEntry(ssgKeyEntry.getAlias(), ssgKeyEntry.getKeystoreId());
                x509CertificateArray = ssgKeyEntry2.getCertificateChain();
                bl2 = false;
                if (x509CertificateArray2.length == x509CertificateArray.length) {
                    int n2 = 0;
                    while (true) {
                        block13: {
                            try {
                                if (n2 >= x509CertificateArray.length) break block12;
                                if (CertUtils.certsAreEqual((X509Certificate)x509CertificateArray[n2], (X509Certificate)x509CertificateArray2[n2])) break block13;
                            }
                            catch (CertificateException certificateException) {
                                throw TrustedCertAdminImpl.a(certificateException);
                            }
                            bl2 = true;
                            break block12;
                        }
                        ++n2;
                    }
                }
                bl2 = true;
            }
            return bl2;
        }
        catch (FindException | KeyStoreException throwable) {
            throw new UpdateException(v[15], throwable);
        }
    }

    /*
     * Loose catch block
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     */
    public List<String> findImpactedKeysByImportKey(Goid goid, String string, @Nullable byte[] byArray, String string2, @Nullable char[] cArray, char[] cArray2, @Nullable String string3) throws GeneralSecurityException, SaveException, AliasNotFoundException, MultipleAliasesException {
        List<String> list;
        this.c();
        try {
            list = this.f().findImpactedKeysByImportKey(goid, string, byArray, string2, cArray, cArray2, string3);
        }
        catch (IOException iOException) {
            try {
                throw new KeyStoreException(ExceptionUtils.getMessage((Throwable)iOException), iOException);
                catch (NoSuchAlgorithmException | UnrecoverableKeyException | CertificateException generalSecurityException) {
                    throw new KeyStoreException(generalSecurityException);
                }
                catch (NoSuchProviderException noSuchProviderException) {
                    this.s.log(Level.WARNING, ExceptionUtils.getDebugException((Throwable)noSuchProviderException), () -> v[72] + ExceptionUtils.getMessage((Throwable)noSuchProviderException));
                    throw new KeyStoreException(noSuchProviderException);
                }
            }
            catch (Throwable throwable) {
                try {
                    if (byArray != null) {
                        ArrayUtils.zero((byte[])byArray);
                    }
                }
                catch (IOException iOException2) {
                    throw TrustedCertAdminImpl.a(iOException2);
                }
                try {
                    if (cArray != null) {
                        ArrayUtils.zero((char[])cArray);
                    }
                }
                catch (IOException iOException3) {
                    throw TrustedCertAdminImpl.a(iOException3);
                }
                try {
                    if (cArray2 == null) throw throwable;
                    ArrayUtils.zero((char[])cArray2);
                    throw throwable;
                }
                catch (IOException iOException4) {
                    throw TrustedCertAdminImpl.a(iOException4);
                }
            }
        }
        try {
            if (byArray != null) {
                ArrayUtils.zero((byte[])byArray);
            }
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
        try {
            if (cArray != null) {
                ArrayUtils.zero((char[])cArray);
            }
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
        try {
            if (cArray2 == null) return list;
            ArrayUtils.zero((char[])cArray2);
            return list;
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
    }

    public final SsgKeyEntry importKeyFromKeyStoreFile(Goid goid, String string, @Nullable SsgKeyMetadata ssgKeyMetadata, byte[] byArray, String string2, @Nullable char[] cArray, @Nullable char[] cArray2, String string3) throws FindException, SaveException, KeyStoreException, MultipleAliasesException, AliasNotFoundException {
        return this.importKeyFromKeyStoreFile(goid, string, ssgKeyMetadata, byArray, string2, cArray, cArray2, string3, false);
    }

    /*
     * Loose catch block
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     */
    public String getSubjectDNBeforeImport(Goid goid, String string, byte[] byArray, String string2, @Nullable char[] cArray, @Nullable char[] cArray2, String string3) throws SaveException, KeyStoreException, MultipleAliasesException, AliasNotFoundException {
        String string4;
        try {
            this.c();
            PrivateKeyAdminHelper privateKeyAdminHelper = this.f();
            string4 = privateKeyAdminHelper.getSubjectDNBeforeImport(goid, string, byArray, string2, cArray, cArray2, string3);
        }
        catch (IOException iOException) {
            try {
                throw new KeyStoreException(ExceptionUtils.getMessage((Throwable)iOException), iOException);
                catch (NoSuchAlgorithmException | UnrecoverableKeyException | CertificateException generalSecurityException) {
                    throw new KeyStoreException(generalSecurityException);
                }
                catch (NoSuchProviderException noSuchProviderException) {
                    this.s.log(Level.WARNING, ExceptionUtils.getDebugException((Throwable)noSuchProviderException), () -> v[72] + ExceptionUtils.getMessage((Throwable)noSuchProviderException));
                    throw new KeyStoreException(noSuchProviderException);
                }
            }
            catch (Throwable throwable) {
                try {
                    if (byArray != null) {
                        ArrayUtils.zero((byte[])byArray);
                    }
                }
                catch (IOException iOException2) {
                    throw TrustedCertAdminImpl.a(iOException2);
                }
                try {
                    if (cArray != null) {
                        ArrayUtils.zero((char[])cArray);
                    }
                }
                catch (IOException iOException3) {
                    throw TrustedCertAdminImpl.a(iOException3);
                }
                try {
                    if (cArray2 == null) throw throwable;
                    ArrayUtils.zero((char[])cArray2);
                    throw throwable;
                }
                catch (IOException iOException4) {
                    throw TrustedCertAdminImpl.a(iOException4);
                }
            }
        }
        try {
            if (byArray != null) {
                ArrayUtils.zero((byte[])byArray);
            }
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
        try {
            if (cArray != null) {
                ArrayUtils.zero((char[])cArray);
            }
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
        try {
            if (cArray2 == null) return string4;
            ArrayUtils.zero((char[])cArray2);
            return string4;
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
    }

    /*
     * Loose catch block
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     */
    public SsgKeyEntry importKeyFromKeyStoreFile(Goid goid, String string, @Nullable SsgKeyMetadata ssgKeyMetadata, byte[] byArray, String string2, @Nullable char[] cArray, @Nullable char[] cArray2, String string3, boolean bl2) throws FindException, SaveException, KeyStoreException, MultipleAliasesException, AliasNotFoundException {
        SsgKeyEntry ssgKeyEntry;
        try {
            this.c();
            PrivateKeyAdminHelper privateKeyAdminHelper = this.f();
            ssgKeyEntry = privateKeyAdminHelper.doImportKeyFromKeyStoreFile(goid, string, ssgKeyMetadata, byArray, string2, cArray, cArray2, string3, bl2);
        }
        catch (IOException iOException) {
            try {
                throw new KeyStoreException(ExceptionUtils.getMessage((Throwable)iOException), iOException);
                catch (NoSuchAlgorithmException | UnrecoverableKeyException | CertificateException | ExecutionException exception) {
                    throw new KeyStoreException(exception);
                }
                catch (NoSuchProviderException noSuchProviderException) {
                    this.s.log(Level.WARNING, ExceptionUtils.getDebugException((Throwable)noSuchProviderException), () -> v[83] + ExceptionUtils.getMessage((Throwable)noSuchProviderException));
                    throw new KeyStoreException(noSuchProviderException);
                }
                catch (InterruptedException interruptedException) {
                    Thread.currentThread().interrupt();
                    throw new KeyStoreException(interruptedException);
                }
            }
            catch (Throwable throwable) {
                try {
                    if (byArray != null) {
                        ArrayUtils.zero((byte[])byArray);
                    }
                }
                catch (IOException iOException2) {
                    throw TrustedCertAdminImpl.a(iOException2);
                }
                try {
                    if (cArray != null) {
                        ArrayUtils.zero((char[])cArray);
                    }
                }
                catch (IOException iOException3) {
                    throw TrustedCertAdminImpl.a(iOException3);
                }
                try {
                    if (cArray2 == null) throw throwable;
                    ArrayUtils.zero((char[])cArray2);
                    throw throwable;
                }
                catch (IOException iOException4) {
                    throw TrustedCertAdminImpl.a(iOException4);
                }
            }
        }
        try {
            if (byArray != null) {
                ArrayUtils.zero((byte[])byArray);
            }
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
        try {
            if (cArray != null) {
                ArrayUtils.zero((char[])cArray);
            }
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
        try {
            if (cArray2 == null) return ssgKeyEntry;
            ArrayUtils.zero((char[])cArray2);
            return ssgKeyEntry;
        }
        catch (IOException iOException) {
            throw TrustedCertAdminImpl.a(iOException);
        }
    }

    public byte[] exportKey(Goid goid, String string, String string2, char[] cArray) throws FindException, KeyStoreException, UnrecoverableKeyException {
        this.c();
        PrivateKeyAdminHelper privateKeyAdminHelper = this.f();
        return privateKeyAdminHelper.doExportKeyAsPkcs12(goid, string, string2, cArray);
    }

    /*
     * Exception decompiling
     */
    public SsgKeyEntry findDefaultKey(SpecialKeyType var1_1) throws KeyStoreException {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 4[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

    /*
     * Exception decompiling
     */
    public boolean isDefaultKeyMutable(SpecialKeyType var1_1) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 1[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1055)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

    /*
     * Unable to fully structure code
     */
    public void setDefaultKey(SpecialKeyType var1_1, Goid var2_2, String var3_3) throws UpdateException {
        block42: {
            try {
                if (var1_1 == null) {
                    throw new NullPointerException(TrustedCertAdminImpl.v[2]);
                }
            }
            catch (FindException v0) {
                throw TrustedCertAdminImpl.a((Exception)v0);
            }
            try {
                if (Goid.isDefault((Goid)var2_2)) {
                    throw new IllegalArgumentException(TrustedCertAdminImpl.v[0]);
                }
            }
            catch (FindException v1) {
                throw TrustedCertAdminImpl.a((Exception)v1);
            }
            try {
                if (!this.isDefaultKeyMutable(var1_1)) {
                    throw new IllegalArgumentException(TrustedCertAdminImpl.v[81] + String.valueOf(var1_1) + TrustedCertAdminImpl.v[33]);
                }
            }
            catch (FindException v2) {
                throw TrustedCertAdminImpl.a((Exception)v2);
            }
            var4_4 = PrivateKeyAdminHelper.getClusterPropertyForSpecialKeyType(var1_1);
            try {
                block50: {
                    block48: {
                        block49: {
                            block47: {
                                block46: {
                                    block45: {
                                        block44: {
                                            block54: {
                                                block53: {
                                                    block43: {
                                                        block40: {
                                                            block51: {
                                                                block41: {
                                                                    var5_5 = this.k.lookupKeyByKeyAlias(var3_3, var2_2);
                                                                    var6_7 = String.valueOf(var5_5.getKeystoreId()) + ":" + var5_5.getAlias();
                                                                    var7_8 = (ClusterProperty)this.n.findByUniqueName(var4_4);
                                                                    if (var7_8 == null) {
                                                                        var7_8 = new ClusterProperty(var4_4, var6_7);
                                                                        this.n.save((PersistentEntity)var7_8);
                                                                    } else {
                                                                        var7_8.setValue(var6_7);
                                                                        this.n.update((PersistentEntity)var7_8);
                                                                    }
                                                                    var8_9 = PrivateKeyAdminHelper.getClusterPropertyForSpecialKeyType(SpecialKeyType.SSL);
                                                                    var9_10 = (ClusterProperty)this.n.findByUniqueName(var8_9);
                                                                    var10_11 = PrivateKeyAdminHelper.getClusterPropertyForSpecialKeyType(SpecialKeyType.SERVER_SSL);
                                                                    var11_12 = (ClusterProperty)this.n.findByUniqueName(var10_11);
                                                                    var12_13 = PrivateKeyAdminHelper.getClusterPropertyForSpecialKeyType(SpecialKeyType.CLIENT_SSL);
                                                                    var13_14 = (ClusterProperty)this.n.findByUniqueName(var12_13);
                                                                    try {
                                                                        if (!var1_1.equals((Object)SpecialKeyType.SSL)) break block40;
                                                                        if (var11_12 != null) break block41;
                                                                    }
                                                                    catch (FindException v3) {
                                                                        throw TrustedCertAdminImpl.a((Exception)v3);
                                                                    }
                                                                    var11_12 = new ClusterProperty(var10_11, var6_7);
                                                                    this.n.save((PersistentEntity)var11_12);
                                                                    break block51;
                                                                }
                                                                var11_12.setValue(var6_7);
                                                                this.n.update((PersistentEntity)var11_12);
                                                            }
                                                            if (var13_14 == null) {
                                                                var13_14 = new ClusterProperty(var12_13, var6_7);
                                                                this.n.save((PersistentEntity)var13_14);
                                                            } else {
                                                                var13_14.setValue(var6_7);
                                                                this.n.update((PersistentEntity)var13_14);
                                                            }
                                                        }
                                                        if (var1_1.equals((Object)SpecialKeyType.SERVER_SSL)) ** GOTO lbl66
                                                        try {
                                                            block52: {
                                                                if (!var1_1.equals((Object)SpecialKeyType.CLIENT_SSL)) break block42;
                                                                break block52;
                                                                catch (FindException v4) {
                                                                    throw TrustedCertAdminImpl.a((Exception)v4);
                                                                }
                                                            }
                                                            if (var11_12 != null) break block43;
                                                        }
                                                        catch (FindException v5) {
                                                            throw TrustedCertAdminImpl.a((Exception)v5);
                                                        }
                                                        var11_12 = (ClusterProperty)this.n.findByUniqueName(var10_11);
                                                    }
                                                    if (var13_14 == null) {
                                                        var13_14 = (ClusterProperty)this.n.findByUniqueName(var12_13);
                                                    }
                                                    try {
                                                        if (var11_12 == null || var13_14 == null) break block42;
                                                    }
                                                    catch (FindException v6) {
                                                        throw TrustedCertAdminImpl.a((Exception)v6);
                                                    }
                                                    var14_15 = var11_12.getValue();
                                                    var15_16 = var13_14.getValue();
                                                    if (var14_15 == null) break block44;
                                                    if (var14_15.trim().isEmpty()) break block44;
                                                    break block53;
                                                    catch (FindException v7) {
                                                        throw TrustedCertAdminImpl.a((Exception)v7);
                                                    }
                                                }
                                                if (var15_16 == null) break block44;
                                                break block54;
                                                catch (FindException v8) {
                                                    throw TrustedCertAdminImpl.a((Exception)v8);
                                                }
                                            }
                                            try {
                                                block55: {
                                                    if (var15_16.trim().isEmpty()) break block44;
                                                    break block55;
                                                    catch (FindException v9) {
                                                        throw TrustedCertAdminImpl.a((Exception)v9);
                                                    }
                                                }
                                                v10 = true;
                                                break block45;
                                            }
                                            catch (FindException v11) {
                                                throw TrustedCertAdminImpl.a((Exception)v11);
                                            }
                                        }
                                        v10 = false;
                                    }
                                    var16_17 = v10;
                                    if (!var16_17) break block46;
                                    try {
                                        block56: {
                                            if (!var14_15.equals(var15_16)) break block46;
                                            break block56;
                                            catch (FindException v12) {
                                                throw TrustedCertAdminImpl.a((Exception)v12);
                                            }
                                        }
                                        v13 = true;
                                        break block47;
                                    }
                                    catch (FindException v14) {
                                        throw TrustedCertAdminImpl.a((Exception)v14);
                                    }
                                }
                                v13 = false;
                            }
                            var17_18 = v13;
                            try {
                                if (!var17_18) break block48;
                                if (var9_10 != null) break block49;
                            }
                            catch (FindException v15) {
                                throw TrustedCertAdminImpl.a((Exception)v15);
                            }
                            var9_10 = new ClusterProperty(var8_9, var14_15);
                            this.n.save((PersistentEntity)var9_10);
                            break block42;
                        }
                        var9_10.setValue(var14_15);
                        this.n.update((PersistentEntity)var9_10);
                        break block42;
                    }
                    try {
                        if (!var16_17) break block42;
                        if (var9_10 != null) break block50;
                    }
                    catch (FindException v16) {
                        throw TrustedCertAdminImpl.a((Exception)v16);
                    }
                    var18_19 = TrustedCertAdminImpl.v;
                    var9_10 = new ClusterProperty(var8_9, var18_19[17]);
                    this.n.save((PersistentEntity)var9_10);
                    break block42;
                }
                var9_10.setValue(TrustedCertAdminImpl.v[73]);
                this.n.update((PersistentEntity)var9_10);
            }
            catch (FindException | SaveException | KeyStoreException var5_6) {
                throw new UpdateException(var5_6);
            }
        }
    }

    public List<SecurePassword> findAllSecurePasswords() throws FindException {
        ArrayList<SecurePassword> arrayList = new ArrayList<SecurePassword>();
        Collection collection = this.m.findAll();
        for (SecurePassword securePassword : collection) {
            securePassword.setEncodedPassword(null);
            arrayList.add(securePassword);
        }
        return arrayList;
    }

    public SecurePassword findSecurePasswordById(Goid goid) throws FindException {
        return (SecurePassword)this.m.findByPrimaryKey(goid);
    }

    public SecurePassword findSecurePasswordByName(String string) throws FindException {
        return (SecurePassword)this.m.findByUniqueName(string);
    }

    public Goid saveSecurePassword(SecurePassword securePassword) throws UpdateException, SaveException, FindException {
        try {
            if (Goid.isDefault((Goid)securePassword.getGoid())) {
                return this.a(securePassword);
            }
        }
        catch (UpdateException updateException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)updateException));
        }
        return this.b(securePassword);
    }

    private Goid a(SecurePassword securePassword) throws SaveException {
        securePassword.setEncodedPassword("");
        securePassword.setLastUpdate(0L);
        return this.m.save((PersistentEntity)securePassword);
    }

    private Goid b(SecurePassword securePassword) throws FindException, UpdateException {
        Goid goid = securePassword.getGoid();
        SecurePassword securePassword2 = (SecurePassword)this.m.findByPrimaryKey(goid);
        try {
            if (securePassword2 == null) {
                throw new ObjectNotFoundException(v[23] + String.valueOf(goid));
            }
        }
        catch (FindException findException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)findException));
        }
        securePassword.setEncodedPassword(securePassword2.getEncodedPassword());
        this.m.update((PersistentEntity)securePassword);
        return goid;
    }

    public void setSecurePassword(Goid goid, char[] cArray) throws FindException, UpdateException {
        SecurePassword securePassword = (SecurePassword)this.m.findByPrimaryKey(goid);
        try {
            if (securePassword == null) {
                throw new ObjectNotFoundException();
            }
        }
        catch (FindException findException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)findException));
        }
        securePassword.setEncodedPassword(this.m.encryptPassword(cArray));
        securePassword.setLastUpdate(System.currentTimeMillis());
        this.m.update((PersistentEntity)securePassword);
    }

    public AsyncAdminMethods.JobId<Boolean> setGeneratedSecurePassword(Goid goid, int n2) throws FindException, UpdateException {
        block4: {
            try {
                try {
                    if (n2 >= 512 && n2 <= 16384) break block4;
                }
                catch (FindException findException) {
                    throw TrustedCertAdminImpl.a((Exception)((Object)findException));
                }
                throw new UpdateException(v[7] + n2);
            }
            catch (FindException findException) {
                throw TrustedCertAdminImpl.a((Exception)((Object)findException));
            }
        }
        this.a(goid, SecurePassword.SecurePasswordType.PEM_PRIVATE_KEY);
        FutureTask<Boolean> futureTask = new FutureTask<Boolean>(AdminInfo.find(false).wrapCallable(new o(this, n2, goid)));
        Background.scheduleOneShot((TimerTask)new v(this, futureTask), (long)0L);
        return this.registerJob(futureTask, Boolean.class);
    }

    private SecurePassword a(Goid goid, SecurePassword.SecurePasswordType securePasswordType) throws FindException, UpdateException {
        SecurePassword securePassword = (SecurePassword)this.m.findByPrimaryKey(goid);
        try {
            if (securePassword == null) {
                throw new ObjectNotFoundException();
            }
        }
        catch (FindException findException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)findException));
        }
        try {
            if (securePassword.getType() != securePasswordType) {
                throw new UpdateException(v[41]);
            }
        }
        catch (FindException findException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)findException));
        }
        return securePassword;
    }

    public String getSecurePasswordPublicKey(Goid goid) throws FindException {
        SecurePassword securePassword = (SecurePassword)this.m.findByPrimaryKey(goid);
        try {
            if (securePassword == null) {
                throw new ObjectNotFoundException();
            }
        }
        catch (Exception exception) {
            throw TrustedCertAdminImpl.a(exception);
        }
        try {
            if (securePassword.getType() != SecurePassword.SecurePasswordType.PEM_PRIVATE_KEY) {
                throw new FindException(v[65]);
            }
        }
        catch (Exception exception) {
            throw TrustedCertAdminImpl.a(exception);
        }
        try {
            String string = securePassword.getEncodedPassword();
            if (string != null) {
                KeyPair keyPair = PemUtils.doReadKeyPair((String)new String(this.m.decryptPassword(string)));
                return PemUtils.writeKey((PublicKey)keyPair.getPublic(), (boolean)true);
            }
        }
        catch (Exception exception) {
            String[] stringArray = v;
            throw new FindException(stringArray[78] + ExceptionUtils.getMessage((Throwable)exception));
        }
        throw new FindException(v[54]);
    }

    public void deleteSecurePassword(Goid goid) throws DeleteException, FindException {
        this.m.delete(goid);
    }

    public Map<String, Object> getCsrProperties(byte[] byArray) {
        Object object;
        Object object2;
        Serializable serializable;
        Object object3;
        PKCS10CertificationRequest pKCS10CertificationRequest;
        byte[] byArray2;
        HashMap<String, Object> hashMap = new HashMap<String, Object>();
        try {
            byArray2 = CertUtils.csrPemToBinary((byte[])byArray);
        }
        catch (IOException iOException) {
            byArray2 = byArray;
        }
        try {
            pKCS10CertificationRequest = new PKCS10CertificationRequest(byArray2);
        }
        catch (IOException iOException) {
            String[] stringArray = v;
            this.s.log(Level.WARNING, stringArray[89]);
            return null;
        }
        CertificationRequestInfo certificationRequestInfo = pKCS10CertificationRequest.toASN1Structure().getCertificationRequestInfo();
        String[] stringArray = v;
        hashMap.put(stringArray[50], certificationRequestInfo.getSubject().toString());
        try {
            object3 = BouncyCastleCertUtils.extractSubjectAlternativeNamesFromCertRequest((PKCS10CertificationRequest)pKCS10CertificationRequest);
            if (!object3.isEmpty()) {
                serializable = new ArrayList();
                object2 = object3.iterator();
                while (object2.hasNext()) {
                    object = (X509GeneralName)object2.next();
                    serializable.add(CertUtils.convertFromX509GeneralName((X509GeneralName)object));
                }
                stringArray = v;
                hashMap.put(stringArray[46], serializable);
            }
        }
        catch (Exception exception) {
            stringArray = v;
            this.s.log(Level.WARNING, stringArray[19]);
            return hashMap;
        }
        try {
            object3 = BouncyCastleRsaSignerEngine.getPublicKey((PKCS10CertificationRequest)pKCS10CertificationRequest);
        }
        catch (Exception exception) {
            stringArray = v;
            this.s.log(Level.WARNING, stringArray[79] + ExceptionUtils.getMessage((Throwable)exception));
            return hashMap;
        }
        if (object3 instanceof RSAPublicKey) {
            serializable = (RSAPublicKey)object3;
            object2 = serializable.getModulus();
            stringArray = v;
            hashMap.put(stringArray[70], stringArray[67]);
            hashMap.put(stringArray[68], String.valueOf(((BigInteger)object2).bitLength()));
            hashMap.put(stringArray[57], ((BigInteger)object2).toString(16));
            hashMap.put(stringArray[38], serializable.getPublicExponent().toString(16));
        } else if (object3 instanceof ECPublicKey) {
            serializable = (ECPublicKey)object3;
            object2 = serializable.getParams();
            object = serializable.getW();
            String string = CertUtils.guessEcCurveName((PublicKey)object3);
            try {
                hashMap.put(v[71], v[22]);
                if (string != null) {
                    hashMap.put(v[16], string);
                }
            }
            catch (IOException iOException) {
                throw TrustedCertAdminImpl.a(iOException);
            }
            stringArray = v;
            hashMap.put(stringArray[55], String.valueOf(((ECParameterSpec)object2).getCurve().getField().getFieldSize()));
            hashMap.put(stringArray[87], ((ECPoint)object).getAffineX().toString());
            hashMap.put(stringArray[82], ((ECPoint)object).getAffineY().toString());
        } else {
            hashMap.put(v[71], object3.getAlgorithm());
        }
        return hashMap;
    }

    public boolean isShortSigningKey(Goid goid, String string) throws FindException, KeyStoreException {
        SsgKeyFinder ssgKeyFinder;
        this.c();
        try {
            ssgKeyFinder = this.k.findByPrimaryKey(goid);
        }
        catch (KeyStoreException keyStoreException) {
            String[] stringArray = v;
            this.s.log(Level.WARNING, stringArray[61], keyStoreException);
            throw new FindException(stringArray[92], (Throwable)keyStoreException);
        }
        catch (ObjectNotFoundException objectNotFoundException) {
            String[] stringArray = v;
            throw new FindException(stringArray[92], (Throwable)objectNotFoundException);
        }
        if (ssgKeyFinder == null) {
            String[] stringArray = v;
            this.s.log(Level.WARNING, stringArray[92]);
            throw new FindException(stringArray[10]);
        }
        SsgKeyStore ssgKeyStore = ssgKeyFinder.getKeyStore();
        SsgKeyEntry ssgKeyEntry = ssgKeyStore.getCertificateChain(string);
        X509Certificate x509Certificate = ssgKeyEntry.getCertificateChain()[0];
        PublicKey publicKey = x509Certificate.getPublicKey();
        return ParamsCertificateGenerator.isShortKey((PublicKey)publicKey);
    }

    public SsgKeyMetadata findKeyMetadata(Goid goid) throws FindException {
        return (SsgKeyMetadata)this.l.findByPrimaryKey(goid);
    }

    public Goid saveOrUpdateMetadata(@NotNull SsgKeyMetadata ssgKeyMetadata) throws SaveException {
        try {
            if (ssgKeyMetadata == null) {
                TrustedCertAdminImpl.a(9);
            }
        }
        catch (UpdateException updateException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)updateException));
        }
        try {
            if (Goid.isDefault((Goid)ssgKeyMetadata.getGoid())) {
                return this.l.save((PersistentEntity)ssgKeyMetadata);
            }
        }
        catch (UpdateException updateException) {
            throw TrustedCertAdminImpl.a((Exception)((Object)updateException));
        }
        try {
            this.l.update((PersistentEntity)ssgKeyMetadata);
        }
        catch (UpdateException updateException) {
            throw new SaveException((Throwable)updateException);
        }
        return ssgKeyMetadata.getGoid();
    }

    public void addAuditEntry(EventObject eventObject, String string) {
        this.o.publishEvent((ApplicationEvent)new DetailedAdminEvent(eventObject, string));
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.p = new Auditor(this, applicationContext, this.s);
    }

    private TrustedCertManager d() {
        return this.t;
    }

    private RevocationCheckPolicyManager e() {
        return this.u;
    }

    public void validateCert(@NotNull TrustedCert trustedCert) throws CertificateException {
        block11: {
            block12: {
                try {
                    if (trustedCert == null) {
                        TrustedCertAdminImpl.a(10);
                    }
                }
                catch (CertificateException certificateException) {
                    throw TrustedCertAdminImpl.a(certificateException);
                }
                try {
                    if (!this.r.getBooleanProperty(v[26], false)) break block11;
                    if (!trustedCert.isTrustAnchor()) break block12;
                }
                catch (CertificateException certificateException) {
                    throw TrustedCertAdminImpl.a(certificateException);
                }
                CertificateValidationResult certificateValidationResult = this.q.checkWithCcRequirements(new X509Certificate[]{trustedCert.getCertificate()}, CertificateValidationType.CERTIFICATE_ONLY, CertificateValidationType.CERTIFICATE_ONLY, CertValidationProcessor.Facility.OTHER, (Audit)this.p, trustedCert.isTrustAnchor());
                try {
                    if (certificateValidationResult != CertificateValidationResult.OK) {
                        throw new CertificateException(v[45] + certificateValidationResult.toString());
                    }
                    break block11;
                }
                catch (CertificateException certificateException) {
                    throw TrustedCertAdminImpl.a(certificateException);
                }
            }
            CertificateValidationResult certificateValidationResult = this.q.checkWithCcRequirements(new X509Certificate[]{trustedCert.getCertificate()}, CertificateValidationType.PATH_VALIDATION, CertificateValidationType.REVOCATION, CertValidationProcessor.Facility.OTHER, (Audit)this.p, trustedCert.isTrustAnchor());
            try {
                if (certificateValidationResult != CertificateValidationResult.OK) {
                    throw new CertificateException(v[58] + certificateValidationResult.toString());
                }
            }
            catch (CertificateException certificateException) {
                throw TrustedCertAdminImpl.a(certificateException);
            }
        }
    }

    PrivateKeyAdminHelper f() {
        return new PrivateKeyAdminHelper(this.i, this.k, this.o);
    }

    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        this.o = applicationEventPublisher;
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void a(int var0) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 2[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1050)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

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

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[96];
                var3_1 = 0;
                var2_2 = "\u001e\"6\u0005sdT9k&U}bD,v*\u0007s't\u001b\"(\u0000es\u001d=ge\u0006fb^6d,\u0010r)\u0011\u0011me\u0006cdU\u007fi \fB~M:8e\u001b\u001e\".\u0010oSD/ge\u0018ctI\u007f` UewX<k#\u001csc\u0010,g7\u0003\u007fdXeI \fEsR-g\f,g7\u0003su~0l#\u001cq,<m(Zz0I:a-ZebO)g7ZwcP6lj!drN+g!6suI\u001ef(\u001cxNP/n*<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zs~>,$\u0019\u007ffN\u0011\u0016l3\u0014znY\u007fi \f6tT%ge\"\nl$\u0017zb\u001d+me\u0011skX+ge\u001es~\u0007\u007fi \fesR-ge\u001cr'\u001c\nl$\u0017zb\u001d+me\u0006\u007f`S\u007fa \u0007bn[6a$\u0001s=\u001d\u0014<c+\u001bys\u001d9k+\u00116lX&q1\u001adb!,g&\u0000dbm>q6\u0002yuY\u0012c+\u0014qbO\u007fk6UdbL*k7\u0010r\u0014<c+\u001bys\u001d9k+\u00116lX&q1\u001adb1<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zs~3k \u001bbTN3,$\u0019\u007ffN\b\u0016l3\u0014znY\u007f%\nl$\u0017zb\u001d+me\u0007ssO6g3\u00106bE6q1\u001cx`\u001d4g<UsiI-{\u0018:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)S>o \u0013r3\u007f!^Nn\u001bM\u0000&XHi\u001aZ\f&B\u001e\fq\">s~n+m7\u0010[fS>e \u00076nN\u007fp \u0004cnO:f0\nl$\u0017zb\u001d+me\u0012ss\u001d\fw'\u001fsdI\u007fC)\u0001suS>v,\u0003s's>o \u00066aO0oe6EU\u0014,c3\u0010Yuh/f$\u0001sJX+c!\u0014bfA\u0011me\u0011sa\\*n1UUF\u001d<g7\u0001\u007faT<c1\u00106nN\u007fa0\u0007dbS+n<UrbN6e+\u0014bbY\u007fm+UboT,\"\u0002\u0014bbJ>{\r\u001aAe\u0005ceQ6ae\u001es~\"\u0011me\u0006bhO:fe\u0005wtN(m7\u00116bE6q1\u00066pT+je<R'\u0005*l6\u0010b\u0010:p7\u001ad'P>i,\u001bq'~\fP\u001f+p0\u0006bbY\u001cg7\u00018q\\3k!\u0014bb~:p1\u001cpn^>v \u0016)c)\u001crfI:A \u0007bDU>k+3yu~< +p0\u0006bbY\u007fa \u0007b'P>l$\u0012su\u001d6qe\u0007svH6p \u0011\b4g<4zn\\,)\nl$\u0017zb\u001d+me\u001ats\\6le\u0011sa\\*n1UUkT:l1UETq\u007fi \f,'\u001b\u0018g+\u0010dfI:fe6EU\u0011\u007fQ0\u0017|b^+\"\u0001;,'\u001a\u0011me\u001es~N+m7\u00106aR*l!UanI7\"\f16.\u007fr7\u001c`fI:\".\u0010o'^>l+\u001ab'_:\"&\u001dwiZ:fe\u001ax'I7k6Ue~N+g([>\u001ep\"\u0000{bS+\"#\u001ad'}\u0011m1;ckQ\u007fr$\u0007wjX+g7U1\"Nx\"*\u00136\"Nq'6U{rN+\"+\u001ab'_:\"+\u0000zk\u001b\u0013k&\u0010xtX\u007fo$\u001bw`X-\",\u00066uX.w,\u0007sc\b4g<0xsO& 9k+\u0011_jM>a1\u0010rLX&q\u0007\fCwY>v >s~x1v7\f\u001e-q$[fr_3k&[}bDqr0\u0017zn^qg=\u0005yiX1v\u0010'7uLUbO+k#\u001cufI:q\u001c\nl$\u0017zb\u001d+me\u0006\u007f`S\u007fa \u0007bn[6a$\u0001s=\u001d!\u001cc+\u001bys\u001d8g+\u0010dfI:\"5\u0014etJ0p!UphO\u007fv<\u0005s\"\nl$\u0017zb\u001d+me\u001ats\\6le\u0011sa\\*n1UETq\u007fi \f,'\"<n0\u0006bbO\u000fp*\u0005suI&O$\u001bw`X-\",\u00066uX.w,\u0007sc\u000e*r!\u0014bbv:{\u0000\u001bbuD+\u001cg7\u0001\u007faT<c1\u00106q\\3k!\u0014bnR1\"#\u0014\u007fkX;\"2\u001cbo\u001d,v$\u0001ct\u0007\u007f\u0019,w'\u001fsdIqc)\u0001suS>v,\u0003s)S>o \u0006\u0019\nl$\u0017zb\u001d+me\u0013\u007fiY\u007fi \fesR-g\u007fUQ\u001e\"7\u0010`h^>v,\u001ax'^7g&\u001e\u007fiZ\u007fr*\u0019\u007fdD\u007fo0\u0006b'_:\"6\u0005sdT9k \u00116aR-\"1\u001d\u007ft\u001d-g3\u001aufI6m+UuoX<i,\u001bq'I&r [\b2g1\u0014rfI>\n,w'\u001fsdIqf+\u000e6q\u0006\u001dwnS\nr!\u0014bbY?\u001cg7\u0001\u007faT<c1\u00106w\\+je\u0014xc\u001d-g3\u001aufI6m+U`fQ6f$\u0001\u007fhS\u007fd$\u001czbY\u007fu,\u0001~'N+c1\u0000e=\u001d9x\",\u00066nS\u007fw6\u00106eD\u007fv-\u00106dR1l \u0016bhO\u007fd*\u00076dH-p \u001bb'\\;o,\u001b6dR1l \u0016bnR1\u0011\u0014g<UxhI\u007fc3\u0014\u007fk\\=n \u0018:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)N6x -<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)\\*f,\u0001EnZ1k+\u00128fQ6c6\u0016-q$[fr_3k&[}bDqo*\u0011ckH,?\u001cg7\u0001\u007faT<c1\u00106w\\+je\u0014xc\u001d-g3\u001aufI6m+U`fQ6f$\u0001\u007fhS\u007fd$\u001czbY\u007fu,\u0001~'N+c1\u0000e=\u001d\u0015\nl$\u0017zb\u001d+me\u0011sdR;ge\u0016suI\u0004<g7\u0001\u0016:p7\u001ad'Z:v1\u001cx`\u001d4g<\u0006bhO:+<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zsn,nk\u0014zn\\,\u0005\u0014g<U1\u0005*l6\u0010b\u0018\nl \rfb^+g!UffN,u*\u0007r'I&r +-g3\u001aufI6m+UuoX<ie\u0005ykT<{e\u0018wi\\8g7U\u007ft\u001d-g4\u0000\u007fuX;\u000e\rQ\u0004Ufr_3k&U}bD\u0013-q$[fr_3k&[}bDqq,\u000fsQ\u001e\"7\u0010`h^>v,\u001ax'^7g&\u001e\u007fiZ\u007fr*\u0019\u007fdD\u007fo0\u0006b'_:\"6\u0005sdT9k \u00116aR-\"1\u001d\u007ft\u001d-g3\u001aufI6m+UuoX<i,\u001bq'I&r [\u000f/w'\u0019\u007fd\u00134g<[b~M:\u000f/w'\u0019\u007fd\u00134g<[b~M:5\u0016l3\u0014znY\u007fa*\u00188k\n+g&\u001d8lX&Q1\u001adb\u0013/i&\u0006'5\u0013/c7\u0006\u007fiZqr7\u001a`nY:p\u007fU\u0013r3\u007f!^Nn\u001bM\u0000&XHi\u001aZ\f&B\b2c.\u0010[bI>\u0005>n,\u0014e\r\u007fk6Udb\\;/*\u001bz~\u0012,g7\u0003\u007fdXeV7\u0000esn+m7\u0010\u0015\u001ap7\u001ad'\\<a \u0006enS8\".\u0010o=\u001d+\nl$\u0017zb\u001d+me\u0012ss\u001d+j Ufr_3k&U}bD\u007fd7\u001a{'I7ge6EU\u0007\u007f\u0006ck+\u001cb9\u0004\u000bj U#:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)M0k+\u00018p\u0013&,&\u001ayuY5\u0016l3\u0014znY\u007fa*\u00188k\n+g&\u001d8lX&Q1\u001adb\u0013/i&\u0006'5\u0013/c7\u0006\u007fiZqr7\u001a`nY:p\u007fU\u0015,q\">s~p:v$\u0011ws\\\u0012c+\u0014qbO\r<g7\u0001@fQ6f$\u0001yu\u0016;g#\u0014ckI\u0014g<U\u007ft\u001d-g4\u0000\u007fuX;#:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)M0k+\u00018p\u0013',&\u001ayuY1<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zsn:p3\u0010dTN3,$\u0019\u007ffNK\nl$\u0017zb\u001d+me\u0016db\\+ge\u0001~b\u001d\u000fI\u0006&'7~:p1\u001cpn^>v,\u001axUX.w \u0006b'[-m(UboX\u007ff \u0016ycX;\"\u0006&D'_&v \u00068,<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)\\*f,\u0001@nX(g7[wkT>q#4g<&bhO:,$\u0019zhJ\u001bw5\u0019\u007fd\\+g67oTH=h \u0016bCs\u0016:p7\u001ad'Z:v1\u001cx`\u001d4g<\u0006bhO:\f)c)\u001crfI:A \u0007b";
                var4_3 = "\u001e\"6\u0005sdT9k&U}bD,v*\u0007s't\u001b\"(\u0000es\u001d=ge\u0006fb^6d,\u0010r)\u0011\u0011me\u0006cdU\u007fi \fB~M:8e\u001b\u001e\".\u0010oSD/ge\u0018ctI\u007f` UewX<k#\u001csc\u0010,g7\u0003\u007fdXeI \fEsR-g\f,g7\u0003su~0l#\u001cq,<m(Zz0I:a-ZebO)g7ZwcP6lj!drN+g!6suI\u001ef(\u001cxNP/n*<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zs~>,$\u0019\u007ffN\u0011\u0016l3\u0014znY\u007fi \f6tT%ge\"\nl$\u0017zb\u001d+me\u0011skX+ge\u001es~\u0007\u007fi \fesR-ge\u001cr'\u001c\nl$\u0017zb\u001d+me\u0006\u007f`S\u007fa \u0007bn[6a$\u0001s=\u001d\u0014<c+\u001bys\u001d9k+\u00116lX&q1\u001adb!,g&\u0000dbm>q6\u0002yuY\u0012c+\u0014qbO\u007fk6UdbL*k7\u0010r\u0014<c+\u001bys\u001d9k+\u00116lX&q1\u001adb1<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zs~3k \u001bbTN3,$\u0019\u007ffN\b\u0016l3\u0014znY\u007f%\nl$\u0017zb\u001d+me\u0007ssO6g3\u00106bE6q1\u001cx`\u001d4g<UsiI-{\u0018:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)S>o \u0013r3\u007f!^Nn\u001bM\u0000&XHi\u001aZ\f&B\u001e\fq\">s~n+m7\u0010[fS>e \u00076nN\u007fp \u0004cnO:f0\nl$\u0017zb\u001d+me\u0012ss\u001d\fw'\u001fsdI\u007fC)\u0001suS>v,\u0003s's>o \u00066aO0oe6EU\u0014,c3\u0010Yuh/f$\u0001sJX+c!\u0014bfA\u0011me\u0011sa\\*n1UUF\u001d<g7\u0001\u007faT<c1\u00106nN\u007fa0\u0007dbS+n<UrbN6e+\u0014bbY\u007fm+UboT,\"\u0002\u0014bbJ>{\r\u001aAe\u0005ceQ6ae\u001es~\"\u0011me\u0006bhO:fe\u0005wtN(m7\u00116bE6q1\u00066pT+je<R'\u0005*l6\u0010b\u0010:p7\u001ad'P>i,\u001bq'~\fP\u001f+p0\u0006bbY\u001cg7\u00018q\\3k!\u0014bb~:p1\u001cpn^>v \u0016)c)\u001crfI:A \u0007bDU>k+3yu~< +p0\u0006bbY\u007fa \u0007b'P>l$\u0012su\u001d6qe\u0007svH6p \u0011\b4g<4zn\\,)\nl$\u0017zb\u001d+me\u001ats\\6le\u0011sa\\*n1UUkT:l1UETq\u007fi \f,'\u001b\u0018g+\u0010dfI:fe6EU\u0011\u007fQ0\u0017|b^+\"\u0001;,'\u001a\u0011me\u001es~N+m7\u00106aR*l!UanI7\"\f16.\u007fr7\u001c`fI:\".\u0010o'^>l+\u001ab'_:\"&\u001dwiZ:fe\u001ax'I7k6Ue~N+g([>\u001ep\"\u0000{bS+\"#\u001ad'}\u0011m1;ckQ\u007fr$\u0007wjX+g7U1\"Nx\"*\u00136\"Nq'6U{rN+\"+\u001ab'_:\"+\u0000zk\u001b\u0013k&\u0010xtX\u007fo$\u001bw`X-\",\u00066uX.w,\u0007sc\b4g<0xsO& 9k+\u0011_jM>a1\u0010rLX&q\u0007\fCwY>v >s~x1v7\f\u001e-q$[fr_3k&[}bDqr0\u0017zn^qg=\u0005yiX1v\u0010'7uLUbO+k#\u001cufI:q\u001c\nl$\u0017zb\u001d+me\u0006\u007f`S\u007fa \u0007bn[6a$\u0001s=\u001d!\u001cc+\u001bys\u001d8g+\u0010dfI:\"5\u0014etJ0p!UphO\u007fv<\u0005s\"\nl$\u0017zb\u001d+me\u001ats\\6le\u0011sa\\*n1UETq\u007fi \f,'\"<n0\u0006bbO\u000fp*\u0005suI&O$\u001bw`X-\",\u00066uX.w,\u0007sc\u000e*r!\u0014bbv:{\u0000\u001bbuD+\u001cg7\u0001\u007faT<c1\u00106q\\3k!\u0014bnR1\"#\u0014\u007fkX;\"2\u001cbo\u001d,v$\u0001ct\u0007\u007f\u0019,w'\u001fsdIqc)\u0001suS>v,\u0003s)S>o \u0006\u0019\nl$\u0017zb\u001d+me\u0013\u007fiY\u007fi \fesR-g\u007fUQ\u001e\"7\u0010`h^>v,\u001ax'^7g&\u001e\u007fiZ\u007fr*\u0019\u007fdD\u007fo0\u0006b'_:\"6\u0005sdT9k \u00116aR-\"1\u001d\u007ft\u001d-g3\u001aufI6m+UuoX<i,\u001bq'I&r [\b2g1\u0014rfI>\n,w'\u001fsdIqf+\u000e6q\u0006\u001dwnS\nr!\u0014bbY?\u001cg7\u0001\u007faT<c1\u00106w\\+je\u0014xc\u001d-g3\u001aufI6m+U`fQ6f$\u0001\u007fhS\u007fd$\u001czbY\u007fu,\u0001~'N+c1\u0000e=\u001d9x\",\u00066nS\u007fw6\u00106eD\u007fv-\u00106dR1l \u0016bhO\u007fd*\u00076dH-p \u001bb'\\;o,\u001b6dR1l \u0016bnR1\u0011\u0014g<UxhI\u007fc3\u0014\u007fk\\=n \u0018:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)N6x -<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)\\*f,\u0001EnZ1k+\u00128fQ6c6\u0016-q$[fr_3k&[}bDqo*\u0011ckH,?\u001cg7\u0001\u007faT<c1\u00106w\\+je\u0014xc\u001d-g3\u001aufI6m+U`fQ6f$\u0001\u007fhS\u007fd$\u001czbY\u007fu,\u0001~'N+c1\u0000e=\u001d\u0015\nl$\u0017zb\u001d+me\u0011sdR;ge\u0016suI\u0004<g7\u0001\u0016:p7\u001ad'Z:v1\u001cx`\u001d4g<\u0006bhO:+<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zsn,nk\u0014zn\\,\u0005\u0014g<U1\u0005*l6\u0010b\u0018\nl \rfb^+g!UffN,u*\u0007r'I&r +-g3\u001aufI6m+UuoX<ie\u0005ykT<{e\u0018wi\\8g7U\u007ft\u001d-g4\u0000\u007fuX;\u000e\rQ\u0004Ufr_3k&U}bD\u0013-q$[fr_3k&[}bDqq,\u000fsQ\u001e\"7\u0010`h^>v,\u001ax'^7g&\u001e\u007fiZ\u007fr*\u0019\u007fdD\u007fo0\u0006b'_:\"6\u0005sdT9k \u00116aR-\"1\u001d\u007ft\u001d-g3\u001aufI6m+UuoX<i,\u001bq'I&r [\u000f/w'\u0019\u007fd\u00134g<[b~M:\u000f/w'\u0019\u007fd\u00134g<[b~M:5\u0016l3\u0014znY\u007fa*\u00188k\n+g&\u001d8lX&Q1\u001adb\u0013/i&\u0006'5\u0013/c7\u0006\u007fiZqr7\u001a`nY:p\u007fU\u0013r3\u007f!^Nn\u001bM\u0000&XHi\u001aZ\f&B\b2c.\u0010[bI>\u0005>n,\u0014e\r\u007fk6Udb\\;/*\u001bz~\u0012,g7\u0003\u007fdXeV7\u0000esn+m7\u0010\u0015\u001ap7\u001ad'\\<a \u0006enS8\".\u0010o=\u001d+\nl$\u0017zb\u001d+me\u0012ss\u001d+j Ufr_3k&U}bD\u007fd7\u001a{'I7ge6EU\u0007\u007f\u0006ck+\u001cb9\u0004\u000bj U#:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)M0k+\u00018p\u0013&,&\u001ayuY5\u0016l3\u0014znY\u007fa*\u00188k\n+g&\u001d8lX&Q1\u001adb\u0013/i&\u0006'5\u0013/c7\u0006\u007fiZqr7\u001a`nY:p\u007fU\u0015,q\">s~p:v$\u0011ws\\\u0012c+\u0014qbO\r<g7\u0001@fQ6f$\u0001yu\u0016;g#\u0014ckI\u0014g<U\u007ft\u001d-g4\u0000\u007fuX;#:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)M0k+\u00018p\u0013',&\u001ayuY1<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zsn:p3\u0010dTN3,$\u0019\u007ffNK\nl$\u0017zb\u001d+me\u0016db\\+ge\u0001~b\u001d\u000fI\u0006&'7~:p1\u001cpn^>v,\u001axUX.w \u0006b'[-m(UboX\u007ff \u0016ycX;\"\u0006&D'_&v \u00068,<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)\\*f,\u0001@nX(g7[wkT>q#4g<&bhO:,$\u0019zhJ\u001bw5\u0019\u007fd\\+g67oTH=h \u0016bCs\u0016:p7\u001ad'Z:v1\u001cx`\u001d4g<\u0006bhO:\f)c)\u001crfI:A \u0007b".length();
                var1_4 = 41;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 116;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = TrustedCertAdminImpl.b(v0, TrustedCertAdminImpl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "O)aR?'Xn( _16\u0019s) T6$\u0019o+t\u0010\u0000'\nl\"r\u0010\u0000\u00114:,eIib%O)aR?'Xn( B66\ns\"vUs'\u0000s4tY=%Xq\"y\u00106,\fh>";
                    var4_3 = "O)aR?'Xn( _16\u0019s) T6$\u0019o+t\u0010\u0000'\nl\"r\u0010\u0000\u00114:,eIib%O)aR?'Xn( B66\ns\"vUs'\u0000s4tY=%Xq\"y\u00106,\fh>".length();
                    var1_4 = 41;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 49;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = TrustedCertAdminImpl.b(v0, TrustedCertAdminImpl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        TrustedCertAdminImpl.v = var5;
        TrustedCertAdminImpl.h = TrustedCertAdminImpl.v[73];
        TrustedCertAdminImpl.g = TrustedCertAdminImpl.v[14];
        TrustedCertAdminImpl.e = TrustedCertAdminImpl.v[92];
        TrustedCertAdminImpl.f = TrustedCertAdminImpl.v[64];
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x49);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String b(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 43;
                    case 1 -> 118;
                    case 2 -> 49;
                    case 3 -> 1;
                    case 4 -> 98;
                    case 5 -> 115;
                    default -> 73;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

