package com.l7tech.server;

import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.util.Cacheable;
import com.l7tech.util.Pair;
import java.io.IOException;
import java.security.KeyStoreException;
import javax.net.ssl.KeyManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public interface DefaultKeyCache {
   @Cacheable(relevantArg = 0, maxAge = 5000)
   @NotNull
   SsgKeyEntry getSslInfo() throws IOException;

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @NotNull
   SsgKeyEntry getServerSslInfo() throws IOException;

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @NotNull
   SsgKeyEntry getClientSslInfo() throws IOException;

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @Nullable
   SsgKeyEntry getCaInfo();

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @Nullable
   SsgKeyEntry getAuditSigningInfo();

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @Nullable
   SsgKeyEntry getAuditViewerInfo();

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @Nullable
   Pair<Goid, String> getAuditViewerAlias();

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @NotNull
   KeyManager[] getSslKeyManagers();

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @NotNull
   KeyManager[] getServerSslKeyManagers();

   @Cacheable(relevantArg = 0, maxAge = 5000)
   @NotNull
   KeyManager[] getClientSslKeyManagers();

   @Cacheable(relevantArg = 0, maxAge = 10000)
   @NotNull
   SsgKeyEntry lookupKeyByKeyAlias(Pair<String, Goid> var1) throws FindException, KeyStoreException, IOException;
}
