package com.l7tech.server.identity;

import com.l7tech.identity.AuthenticationException;
import com.l7tech.identity.Group;
import com.l7tech.identity.GroupManager;
import com.l7tech.identity.IdentityProvider;
import com.l7tech.identity.User;
import com.l7tech.identity.UserManager;
import com.l7tech.objectmodel.FindException;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import java.math.BigInteger;
import java.security.cert.X509Certificate;
import javax.security.auth.x500.X500Principal;

public interface AuthenticatingIdentityProvider<UT extends User, GT extends Group, UMT extends UserManager<UT>, GMT extends GroupManager<UT, GT>>
   extends IdentityProvider<UT, GT, UMT, GMT> {
   AuthenticationResult authenticate(LoginCredentials var1) throws AuthenticationException;

   AuthenticationResult authenticate(LoginCredentials var1, boolean var2) throws AuthenticationException;

   UT findUserByCredential(LoginCredentials var1) throws FindException;

   X509Certificate findCertByIssuerAndSerial(X500Principal var1, BigInteger var2) throws FindException;

   X509Certificate findCertBySki(String var1) throws FindException;

   X509Certificate findCertByThumbprintSHA1(String var1) throws FindException;

   X509Certificate findCertBySubjectDn(X500Principal var1) throws FindException;
}
