aboutsummaryrefslogtreecommitdiffstats
path: root/src/math/numbertheory/reducer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/math/numbertheory/reducer.h')
-rw-r--r--src/math/numbertheory/reducer.h32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/math/numbertheory/reducer.h b/src/math/numbertheory/reducer.h
index d234e0735..80c0f27e1 100644
--- a/src/math/numbertheory/reducer.h
+++ b/src/math/numbertheory/reducer.h
@@ -1,14 +1,14 @@
/*
* Modular Reducer
-* (C) 1999-2007 Jack Lloyd
+* (C) 1999-2010 Jack Lloyd
*
* Distributed under the terms of the Botan license
*/
-#ifndef BOTAN_MODARITH_H__
-#define BOTAN_MODARITH_H__
+#ifndef BOTAN_MODULAR_REDUCER_H__
+#define BOTAN_MODULAR_REDUCER_H__
-#include <botan/bigint.h>
+#include <botan/numthry.h>
namespace Botan {
@@ -18,14 +18,30 @@ namespace Botan {
class BOTAN_DLL Modular_Reducer
{
public:
- BigInt multiply(const BigInt&, const BigInt&) const;
- BigInt square(const BigInt&) const;
- BigInt reduce(const BigInt&) const;
+ BigInt reduce(const BigInt& x) const;
+
+ /**
+ * Multiply mod p
+ */
+ BigInt multiply(const BigInt& x, const BigInt& y) const
+ { return reduce(x * y); }
+
+ /**
+ * Square mod p
+ */
+ BigInt square(const BigInt& x) const
+ { return reduce(Botan::square(x)); }
+
+ /**
+ * Cube mod p
+ */
+ BigInt cube(const BigInt& x) const
+ { return multiply(x, this->square(x)); }
bool initialized() const { return (mod_words != 0); }
Modular_Reducer() { mod_words = 0; }
- Modular_Reducer(const BigInt&);
+ Modular_Reducer(const BigInt& mod);
private:
BigInt modulus, modulus_2, mu;
u32bit mod_words, mod2_words, mu_words;