/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.CertGenParams
 *  com.l7tech.gateway.common.security.keystore.SsgKeyEntry
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.NamedEntity
 *  com.l7tech.objectmodel.ObjectNotFoundException
 *  com.l7tech.security.prov.CertificateRequest
 *  org.jetbrains.annotations.NotNull
 *  org.springframework.transaction.annotation.Propagation
 *  org.springframework.transaction.annotation.Transactional
 */
package com.l7tech.server.security.keystore;

import com.l7tech.common.io.CertGenParams;
import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.NamedEntity;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.security.prov.CertificateRequest;
import com.l7tech.server.security.keystore.SsgKeyStore;
import java.security.InvalidKeyException;
import java.security.KeyStoreException;
import java.security.SignatureException;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

public interface SsgKeyFinder
extends NamedEntity {
    public Goid getGoid();

    public SsgKeyStoreType getType();

    public boolean isMutable();

    public boolean isKeyExportSupported();

    public SsgKeyStore getKeyStore();

    public List<String> getAliases() throws KeyStoreException;

    @Transactional(propagation=Propagation.SUPPORTS, readOnly=true)
    @NotNull
    public SsgKeyEntry getCertificateChain(String var1) throws ObjectNotFoundException, KeyStoreException;

    @Transactional(propagation=Propagation.SUPPORTS, readOnly=true)
    public CertificateRequest makeCertificateSigningRequest(String var1, CertGenParams var2) throws InvalidKeyException, SignatureException, KeyStoreException;

    public static final class SsgKeyStoreType
    extends Enum<SsgKeyStoreType> {
        public static final /* enum */ SsgKeyStoreType OTHER;
        public static final /* enum */ SsgKeyStoreType PKCS12_SOFTWARE;
        public static final /* enum */ SsgKeyStoreType PKCS11_HARDWARE;
        public static final /* enum */ SsgKeyStoreType LUNA_HARDWARE;
        public static final /* enum */ SsgKeyStoreType NCIPHER_HARDWARE;
        public static final /* enum */ SsgKeyStoreType GENERIC;
        private static final /* synthetic */ SsgKeyStoreType[] $VALUES;

        public static SsgKeyStoreType[] values() {
            return (SsgKeyStoreType[])$VALUES.clone();
        }

        public static SsgKeyStoreType valueOf(String string) {
            return Enum.valueOf(SsgKeyStoreType.class, string);
        }

        private static /* synthetic */ SsgKeyStoreType[] $values() {
            return new SsgKeyStoreType[]{OTHER, PKCS12_SOFTWARE, PKCS11_HARDWARE, LUNA_HARDWARE, NCIPHER_HARDWARE, GENERIC};
        }

        /*
         * Unable to fully structure code
         */
        static {
            block10: {
                block9: {
                    var0 = new String[6];
                    var4_1 = 0;
                    var3_2 = "\fVq]\tRX\u001d]y_\u0005@K\u0010P\r\u000e@vL\u001e_K\u0010QoL\u0013R\u000f\u0012^{^p%U\u0011Z~Y\u0016VX\u0007\u0007\u0005PvH\u0013^I";
                    var5_3 = "\fVq]\tRX\u001d]y_\u0005@K\u0010P\r\u000e@vL\u001e_K\u0010QoL\u0013R\u000f\u0012^{^p%U\u0011Z~Y\u0016VX\u0007\u0007\u0005PvH\u0013^I".length();
                    var2_4 = 16;
                    var1_5 = -1;
lbl7:
                    // 2 sources

                    while (true) {
                        v0 = 74;
                        v1 = ++var1_5;
                        v2 = var3_2.substring(v1, v1 + var2_4);
                        v3 = -1;
                        break block9;
                        break;
                    }
lbl13:
                    // 1 sources

                    while (true) {
                        var0[var4_1++] = SsgKeyStoreType.a(v0, SsgKeyStoreType.a(v2));
                        if ((var1_5 += var2_4) < var5_3) {
                            var2_4 = var3_2.charAt(var1_5);
                            ** continue;
                        }
                        var3_2 = "x4\u0005=f\u000fg+\u000e+\u0005S \u007f!\u001f<c#-r";
                        var5_3 = "x4\u0005=f\u000fg+\u000e+\u0005S \u007f!\u001f<c#-r".length();
                        var2_4 = 5;
                        var1_5 = -1;
lbl22:
                        // 2 sources

                        while (true) {
                            v0 = 63;
                            v4 = ++var1_5;
                            v2 = var3_2.substring(v4, v4 + var2_4);
                            v3 = 0;
                            break block9;
                            break;
                        }
                        break;
                    }
lbl28:
                    // 1 sources

                    while (true) {
                        var0[var4_1++] = SsgKeyStoreType.a(v0, SsgKeyStoreType.a(v2));
                        if ((var1_5 += var2_4) < var5_3) {
                            var2_4 = var3_2.charAt(var1_5);
                            ** continue;
                        }
                        break block10;
                        break;
                    }
                }
                switch (v3) {
                    default: {
                        ** continue;
                    }
                    ** case 0:
lbl39:
                    // 1 sources

                    ** continue;
                }
            }
            SsgKeyStoreType.OTHER = new SsgKeyStoreType();
            SsgKeyStoreType.PKCS12_SOFTWARE = new SsgKeyStoreType();
            SsgKeyStoreType.PKCS11_HARDWARE = new SsgKeyStoreType();
            SsgKeyStoreType.LUNA_HARDWARE = new SsgKeyStoreType();
            SsgKeyStoreType.NCIPHER_HARDWARE = new SsgKeyStoreType();
            SsgKeyStoreType.GENERIC = new SsgKeyStoreType();
            SsgKeyStoreType.$VALUES = SsgKeyStoreType.$values();
        }

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

        /*
         * Handled impossible loop by duplicating code
         * Enabled aggressive block sorting
         */
        private static String a(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 -> 8;
                        case 1 -> 95;
                        case 2 -> 114;
                        case 3 -> 71;
                        case 4 -> 11;
                        case 5 -> 93;
                        default -> 64;
                    })));
                    ++n3;
                    n4 = n4;
                } while (n4 > n3);
            }
            return new String(cArray2).intern();
        }
    }
}

