summaryrefslogtreecommitdiff
path: root/rw.h
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2015-11-05 01:59:46 -0500
committerJeffrey Walton <noloader@gmail.com>2015-11-05 01:59:46 -0500
commit48809d4e85c125814425c621d8d0d89f95405924 (patch)
tree1010fd16c4b1199f3d27dd726dda241a2bd29f83 /rw.h
parent025337a94aceb75d188149db70c2094673772816 (diff)
downloadcryptopp-git-48809d4e85c125814425c621d8d0d89f95405924.tar.gz
CRYPTOPP 5.6.3 RC6 checkin
Diffstat (limited to 'rw.h')
-rw-r--r--rw.h222
1 files changed, 104 insertions, 118 deletions
diff --git a/rw.h b/rw.h
index c91436d6..37875e31 100644
--- a/rw.h
+++ b/rw.h
@@ -1,118 +1,104 @@
-#ifndef CRYPTOPP_RW_H
-#define CRYPTOPP_RW_H
-
-/** \file
- This file contains classes that implement the
- Rabin-Williams signature schemes as defined in IEEE P1363.
-*/
-
-#include "cryptlib.h"
-#include "integer.h"
-#include "pubkey.h"
-
-NAMESPACE_BEGIN(CryptoPP)
-
-//! _
-class CRYPTOPP_DLL RWFunction : public TrapdoorFunction, public PublicKey
-{
- typedef RWFunction ThisClass;
-
-public:
- void Initialize(const Integer &n)
- {m_n = n;}
-
- void BERDecode(BufferedTransformation &bt);
- void DEREncode(BufferedTransformation &bt) const;
-
- void Save(BufferedTransformation &bt) const
- {DEREncode(bt);}
- void Load(BufferedTransformation &bt)
- {BERDecode(bt);}
-
- Integer ApplyFunction(const Integer &x) const;
- Integer PreimageBound() const {return ++(m_n>>1);}
- Integer ImageBound() const {return m_n;}
-
- bool Validate(RandomNumberGenerator &rng, unsigned int level) const;
- bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const;
- void AssignFrom(const NameValuePairs &source);
-
- const Integer& GetModulus() const {return m_n;}
- void SetModulus(const Integer &n) {m_n = n;}
-
-protected:
- Integer m_n;
-};
-
-//! _
-class CRYPTOPP_DLL InvertibleRWFunction : public RWFunction, public TrapdoorFunctionInverse, public PrivateKey
-{
- typedef InvertibleRWFunction ThisClass;
-
-public:
- InvertibleRWFunction() : m_precompute(false) {}
-
- void Initialize(const Integer &n, const Integer &p, const Integer &q, const Integer &u);
- // generate a random private key
- void Initialize(RandomNumberGenerator &rng, unsigned int modulusBits)
- {GenerateRandomWithKeySize(rng, modulusBits);}
-
- void BERDecode(BufferedTransformation &bt);
- void DEREncode(BufferedTransformation &bt) const;
-
- void Save(BufferedTransformation &bt) const
- {DEREncode(bt);}
- void Load(BufferedTransformation &bt)
- {BERDecode(bt);}
-
- Integer CalculateInverse(RandomNumberGenerator &rng, const Integer &x) const;
-
- // GeneratibleCryptoMaterial
- bool Validate(RandomNumberGenerator &rng, unsigned int level) const;
- bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const;
- void AssignFrom(const NameValuePairs &source);
- /*! parameters: (ModulusSize) */
- void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &alg);
-
- const Integer& GetPrime1() const {return m_p;}
- const Integer& GetPrime2() const {return m_q;}
- const Integer& GetMultiplicativeInverseOfPrime2ModPrime1() const {return m_u;}
-
- void SetPrime1(const Integer &p) {m_p = p;}
- void SetPrime2(const Integer &q) {m_q = q;}
- void SetMultiplicativeInverseOfPrime2ModPrime1(const Integer &u) {m_u = u;}
-
- virtual bool SupportsPrecomputation() const {return true;}
- virtual void Precompute(unsigned int unused = 0) {PrecomputeTweakedRoots();}
- virtual void Precompute(unsigned int unused = 0) const {PrecomputeTweakedRoots();}
-
- virtual void LoadPrecomputation(BufferedTransformation &storedPrecomputation);
- virtual void SavePrecomputation(BufferedTransformation &storedPrecomputation) const;
-
-protected:
- void PrecomputeTweakedRoots() const;
-
-protected:
- Integer m_p, m_q, m_u;
-
- mutable Integer m_pre_2_9p, m_pre_2_3q, m_pre_q_p;
- mutable bool m_precompute;
-};
-
-//! RW
-struct RW
-{
- static std::string StaticAlgorithmName() {return "RW";}
- typedef RWFunction PublicKey;
- typedef InvertibleRWFunction PrivateKey;
-};
-
-//! RWSS
-template <class STANDARD, class H>
-struct RWSS : public TF_SS<STANDARD, H, RW>
-{
-};
-
-NAMESPACE_END
-
-#endif
+#ifndef CRYPTOPP_RW_H
+#define CRYPTOPP_RW_H
+
+/** \file
+ This file contains classes that implement the
+ Rabin-Williams signature schemes as defined in IEEE P1363.
+*/
+
+#include "cryptlib.h"
+#include "pubkey.h"
+#include "integer.h"
+
+NAMESPACE_BEGIN(CryptoPP)
+
+//! _
+class CRYPTOPP_DLL RWFunction : public TrapdoorFunction, public PublicKey
+{
+ typedef RWFunction ThisClass;
+
+public:
+ void Initialize(const Integer &n)
+ {m_n = n;}
+
+ void BERDecode(BufferedTransformation &bt);
+ void DEREncode(BufferedTransformation &bt) const;
+
+ void Save(BufferedTransformation &bt) const
+ {DEREncode(bt);}
+ void Load(BufferedTransformation &bt)
+ {BERDecode(bt);}
+
+ Integer ApplyFunction(const Integer &x) const;
+ Integer PreimageBound() const {return ++(m_n>>1);}
+ Integer ImageBound() const {return m_n;}
+
+ bool Validate(RandomNumberGenerator &rng, unsigned int level) const;
+ bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const;
+ void AssignFrom(const NameValuePairs &source);
+
+ const Integer& GetModulus() const {return m_n;}
+ void SetModulus(const Integer &n) {m_n = n;}
+
+protected:
+ Integer m_n;
+};
+
+//! _
+class CRYPTOPP_DLL InvertibleRWFunction : public RWFunction, public TrapdoorFunctionInverse, public PrivateKey
+{
+ typedef InvertibleRWFunction ThisClass;
+
+public:
+ void Initialize(const Integer &n, const Integer &p, const Integer &q, const Integer &u)
+ {m_n = n; m_p = p; m_q = q; m_u = u;}
+ // generate a random private key
+ void Initialize(RandomNumberGenerator &rng, unsigned int modulusBits)
+ {GenerateRandomWithKeySize(rng, modulusBits);}
+
+ void BERDecode(BufferedTransformation &bt);
+ void DEREncode(BufferedTransformation &bt) const;
+
+ void Save(BufferedTransformation &bt) const
+ {DEREncode(bt);}
+ void Load(BufferedTransformation &bt)
+ {BERDecode(bt);}
+
+ Integer CalculateInverse(RandomNumberGenerator &rng, const Integer &x) const;
+
+ // GeneratibleCryptoMaterial
+ bool Validate(RandomNumberGenerator &rng, unsigned int level) const;
+ bool GetVoidValue(const char *name, const std::type_info &valueType, void *pValue) const;
+ void AssignFrom(const NameValuePairs &source);
+ /*! parameters: (ModulusSize) */
+ void GenerateRandom(RandomNumberGenerator &rng, const NameValuePairs &alg);
+
+ const Integer& GetPrime1() const {return m_p;}
+ const Integer& GetPrime2() const {return m_q;}
+ const Integer& GetMultiplicativeInverseOfPrime2ModPrime1() const {return m_u;}
+
+ void SetPrime1(const Integer &p) {m_p = p;}
+ void SetPrime2(const Integer &q) {m_q = q;}
+ void SetMultiplicativeInverseOfPrime2ModPrime1(const Integer &u) {m_u = u;}
+
+protected:
+ Integer m_p, m_q, m_u;
+};
+
+//! RW
+struct RW
+{
+ static std::string StaticAlgorithmName() {return "RW";}
+ typedef RWFunction PublicKey;
+ typedef InvertibleRWFunction PrivateKey;
+};
+
+//! RWSS
+template <class STANDARD, class H>
+struct RWSS : public TF_SS<STANDARD, H, RW>
+{
+};
+
+NAMESPACE_END
+
+#endif