You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.0 KiB
34 lines
1.0 KiB
#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
|
|
|