Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef CRYPTOPP_MODEXPPC_H |
2 | | #define CRYPTOPP_MODEXPPC_H |
3 | | |
4 | | #include "cryptlib.h" |
5 | | #include "modarith.h" |
6 | | #include "integer.h" |
7 | | #include "algebra.h" |
8 | | #include "eprecomp.h" |
9 | | #include "smartptr.h" |
10 | | #include "pubkey.h" |
11 | | |
12 | | #if CRYPTOPP_MSC_VERSION |
13 | | # pragma warning(push) |
14 | | # pragma warning(disable: 4231 4275) |
15 | | #endif |
16 | | |
17 | | NAMESPACE_BEGIN(CryptoPP) |
18 | | |
19 | | CRYPTOPP_DLL_TEMPLATE_CLASS DL_FixedBasePrecomputationImpl<Integer>; |
20 | | |
21 | | class ModExpPrecomputation : public DL_GroupPrecomputation<Integer> |
22 | | { |
23 | | public: |
24 | 0 | virtual ~ModExpPrecomputation() {} |
25 | | |
26 | | // DL_GroupPrecomputation |
27 | 0 | bool NeedConversions() const {return true;} |
28 | 0 | Element ConvertIn(const Element &v) const {return m_mr->ConvertIn(v);} |
29 | 0 | virtual Element ConvertOut(const Element &v) const {return m_mr->ConvertOut(v);} |
30 | 0 | const AbstractGroup<Element> & GetGroup() const {return m_mr->MultiplicativeGroup();} |
31 | 0 | Element BERDecodeElement(BufferedTransformation &bt) const {return Integer(bt);} |
32 | 0 | void DEREncodeElement(BufferedTransformation &bt, const Element &v) const {v.DEREncode(bt);} |
33 | | |
34 | | // non-inherited |
35 | 0 | void SetModulus(const Integer &v) {m_mr.reset(new MontgomeryRepresentation(v));} |
36 | 0 | const Integer & GetModulus() const {return m_mr->GetModulus();} |
37 | | |
38 | | private: |
39 | | value_ptr<MontgomeryRepresentation> m_mr; |
40 | | }; |
41 | | |
42 | | NAMESPACE_END |
43 | | |
44 | | #if CRYPTOPP_MSC_VERSION |
45 | | # pragma warning(pop) |
46 | | #endif |
47 | | |
48 | | #endif |