package fr.xephi.authme.security;

import org.apache.commons.lang.ObjectUtils.Null;

import fr.xephi.authme.security.crypts.BCRYPT;
import fr.xephi.authme.security.crypts.BCRYPT2Y;
import fr.xephi.authme.security.crypts.CRAZYCRYPT1;
import fr.xephi.authme.security.crypts.CryptPBKDF2;
import fr.xephi.authme.security.crypts.CryptPBKDF2Django;
import fr.xephi.authme.security.crypts.DOUBLEMD5;
import fr.xephi.authme.security.crypts.IPB3;
import fr.xephi.authme.security.crypts.JOOMLA;
import fr.xephi.authme.security.crypts.MD5;
import fr.xephi.authme.security.crypts.MD5VB;
import fr.xephi.authme.security.crypts.MYBB;
import fr.xephi.authme.security.crypts.PHPBB;
import fr.xephi.authme.security.crypts.PHPFUSION;
import fr.xephi.authme.security.crypts.PLAINTEXT;
import fr.xephi.authme.security.crypts.ROYALAUTH;
import fr.xephi.authme.security.crypts.SALTED2MD5;
import fr.xephi.authme.security.crypts.SALTEDSHA512;
import fr.xephi.authme.security.crypts.SHA1;
import fr.xephi.authme.security.crypts.SHA256;
import fr.xephi.authme.security.crypts.SHA512;
import fr.xephi.authme.security.crypts.SMF;
import fr.xephi.authme.security.crypts.WBB3;
import fr.xephi.authme.security.crypts.WBB4;
import fr.xephi.authme.security.crypts.WHIRLPOOL;
import fr.xephi.authme.security.crypts.WORDPRESS;
import fr.xephi.authme.security.crypts.XAUTH;
import fr.xephi.authme.security.crypts.XF;

public enum HashAlgorithm {

	BCRYPT(BCRYPT.class),
	BCRYPT2Y(BCRYPT2Y.class),
	CRAZYCRYPT1(CRAZYCRYPT1.class),
	CUSTOM(Null.class),
	DOUBLEMD5(DOUBLEMD5.class),
	IPB3(IPB3.class),
	JOOMLA(JOOMLA.class),
	MD5(MD5.class),
	MD5VB(MD5VB.class),
	MYBB(MYBB.class),
	PBKDF2(CryptPBKDF2.class),
	PBKDF2DJANGO(CryptPBKDF2Django.class),
	PHPBB(PHPBB.class),
	PHPFUSION(PHPFUSION.class),
	PLAINTEXT(PLAINTEXT.class),
	ROYALAUTH(ROYALAUTH.class),
	SALTED2MD5(SALTED2MD5.class),
	SALTEDSHA512(SALTEDSHA512.class),
	SHA1(SHA1.class),
	SHA256(SHA256.class),
	SHA512(SHA512.class),
	SMF(SMF.class),
	WBB3(WBB3.class),
	WBB4(WBB4.class),
	WHIRLPOOL(WHIRLPOOL.class),
	WORDPRESS(WORDPRESS.class),
	XAUTH(XAUTH.class),
	XENFORO(XF.class);

	Class<?> classe;

	HashAlgorithm(final Class<?> classe) {
		this.classe = classe;
	}

	public Class<?> getclasse() {
		return classe;
	}

}
