/*
   +----------------------------------------------------------------------+
   | Copyright (c) 2002-2005 J Smith <dark_panda@hushmail.com>            |
   | Crypto++ sources (not included) copyright (c) 1995-2003 Wei Dai      |
   +----------------------------------------------------------------------+
   | Check out COPYING for the exact license.                             |
   +----------------------------------------------------------------------+

$Id: jhaval.h,v 1.8 2005/01/06 18:16:42 jay Exp $
*/

#ifndef __JHAVAL_H__
#define __JHAVAL_H__

#include "jconfig.h"

#if ENABLED_HAVAL || ENABLED_HAVAL3 || ENABLED_HAVAL4 || ENABLED_HAVAL5

#include "jhash_t.h"

// Crypto++ headers...

#include "haval.h"

using namespace CryptoPP;

#if ENABLED_HAVAL
class JHAVAL : public JHash_Template<HAVAL, HAVAL_HASH>
{
	public:
		JHAVAL(string plaintext = "") : JHash_Template<HAVAL, HAVAL_HASH>(plaintext) { }

		static string getHashName() { return "HAVAL"; }
};
#endif

#if ENABLED_HAVAL3
class JHAVAL3 : public JHash_Template<HAVAL3, HAVAL3_HASH>
{
	public:
		JHAVAL3(string plaintext = "") : JHash_Template<HAVAL3, HAVAL3_HASH>(plaintext) { }

		static string getHashName() { return "HAVAL3"; }
};
#endif

#if ENABLED_HAVAL4
class JHAVAL4 : public JHash_Template<HAVAL4, HAVAL4_HASH>
{
	public:
		JHAVAL4(string plaintext = "") : JHash_Template<HAVAL4, HAVAL4_HASH>(plaintext) { }

		static string getHashName() { return "HAVAL4"; }
};
#endif

#if ENABLED_HAVAL5
class JHAVAL5 : public JHash_Template<HAVAL5, HAVAL5_HASH>
{
	public:
		JHAVAL5(string plaintext = "") : JHash_Template<HAVAL5, HAVAL5_HASH>(plaintext) { }

		static string getHashName() { return "HAVAL5"; }
};
#endif

#endif
#endif
