diff options
author | bertagaz <bertagaz@ptitcanardnoir.org> | 2011-06-14 15:26:19 +0200 |
---|---|---|
committer | bertagaz <bertagaz@ptitcanardnoir.org> | 2011-06-14 15:26:19 +0200 |
commit | 30e9097985656920f01a72efc1088caa2b8d41b3 (patch) | |
tree | bedbdb1aaa484af467e538110ab4c0c95985b6b8 /embeddedcryptopp/modexppc.h |
Imported Upstream version 0.5.29upstream/0.5.29
Diffstat (limited to 'embeddedcryptopp/modexppc.h')
-rw-r--r-- | embeddedcryptopp/modexppc.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/embeddedcryptopp/modexppc.h b/embeddedcryptopp/modexppc.h new file mode 100644 index 0000000..fbe7012 --- /dev/null +++ b/embeddedcryptopp/modexppc.h @@ -0,0 +1,34 @@ +#ifndef CRYPTOPP_MODEXPPC_H +#define CRYPTOPP_MODEXPPC_H + +#include "modarith.h" +#include "eprecomp.h" +#include "smartptr.h" +#include "pubkey.h" + +NAMESPACE_BEGIN(CryptoPP) + +CRYPTOPP_DLL_TEMPLATE_CLASS DL_FixedBasePrecomputationImpl<Integer>; + +class ModExpPrecomputation : public DL_GroupPrecomputation<Integer> +{ +public: + // DL_GroupPrecomputation + bool NeedConversions() const {return true;} + Element ConvertIn(const Element &v) const {return m_mr->ConvertIn(v);} + virtual Element ConvertOut(const Element &v) const {return m_mr->ConvertOut(v);} + const AbstractGroup<Element> & GetGroup() const {return m_mr->MultiplicativeGroup();} + Element BERDecodeElement(BufferedTransformation &bt) const {return Integer(bt);} + void DEREncodeElement(BufferedTransformation &bt, const Element &v) const {v.DEREncode(bt);} + + // non-inherited + void SetModulus(const Integer &v) {m_mr.reset(new MontgomeryRepresentation(v));} + const Integer & GetModulus() const {return m_mr->GetModulus();} + +private: + value_ptr<MontgomeryRepresentation> m_mr; +}; + +NAMESPACE_END + +#endif |