/*************************************************
* GNU MP Reducer Header File                     *
* (C) 1999-2003 The Botan Project                *
*************************************************/

#ifndef BOTAN_EXT_GNU_MP_H__
#define BOTAN_EXT_GNU_MP_H__

#include <botan/reducer.h>

namespace Botan {

/*************************************************
* GNU MP Reducer                                 *
*************************************************/
class GMP_Reducer : public ModularReducer
   {
   public:
      BigInt multiply(const BigInt&, const BigInt&) const;
      BigInt square(const BigInt&) const;
      BigInt reduce(const BigInt&) const;

      GMP_Reducer(const BigInt&);
      ~GMP_Reducer();
   private:
      struct mp_holder* gmp_mod;
   };

}

#endif
