package com.l7tech.gateway.common.admin;

import com.l7tech.gateway.common.security.rbac.Secured;
import com.l7tech.identity.AuthenticationException;
import com.l7tech.objectmodel.InvalidPasswordException;
import java.io.Serializable;
import java.util.Map;
import javax.security.auth.login.LoginException;

@Secured
@Administrative
public interface AdminLogin {
   String ERR_MSG_USERNAME_PSWD_BOTH_REQUIRED = "Username and password are both required.";

   @Administrative(authenticated = false, licensed = false)
   AdminLogin.ServerCertificateVerificationInfo getServerCertificateVerificationInfo(String var1, byte[] var2) throws SecurityException;

   @Deprecated
   @Administrative(authenticated = false, licensed = false)
   byte[] getServerCertificate(String var1);

   @Administrative(authenticated = false, licensed = false)
   AdminLoginResult loginNew(String var1, String var2) throws SecurityException, LoginException;

   @Administrative(authenticated = false, licensed = false)
   @Deprecated
   AdminLoginResult login(String var1, String var2) throws SecurityException, LoginException;

   @Administrative(authenticated = false, licensed = false)
   AdminLoginResult loginWithPasswordUpdate(String var1, String var2, String var3) throws SecurityException, LoginException, InvalidPasswordException;

   @Administrative(authenticated = false, licensed = false)
   AdminLoginResult resume(String var1) throws AuthenticationException;

   @Administrative(licensed = false)
   void logout();

   @Administrative(licensed = false)
   void changePassword(String var1, String var2) throws LoginException, InvalidPasswordException;

   @Administrative(licensed = false)
   void ping();

   @Administrative(licensed = false)
   Map<String, String> getGatewayInfo();

   @Administrative(licensed = false, authenticated = false)
   String getPreLoginWarningText();

   class ServerCertificateVerificationInfo implements Serializable {
      public final String verifierFormat;
      public final byte[] serverNonce;
      public final byte[] userSalt;
      public final byte[] checkHash;
      static final long serialVersionUID = 1711475706279526479L;

      public ServerCertificateVerificationInfo(String var1, byte[] var2, byte[] var3, byte[] var4) {
         this.verifierFormat = var1;
         this.serverNonce = var2;
         this.userSalt = var3;
         this.checkHash = var4;
      }
   }
}
