diff options
Diffstat (limited to 'CryptoPP/modexppc.h')
-rw-r--r-- | CryptoPP/modexppc.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/CryptoPP/modexppc.h b/CryptoPP/modexppc.h new file mode 100644 index 000000000..fbe701279 --- /dev/null +++ b/CryptoPP/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 |