MCPcopy Create free account
hub / github.com/LUX-Core/lux / PrepareCascade

Method PrepareCascade

src/cryptopp/eprecomp.cpp:69–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

67}
68
69template <class T> void DL_FixedBasePrecomputationImpl<T>::PrepareCascade(const DL_GroupPrecomputation<Element> &i_group, std::vector<BaseAndExponent<Element> > &eb, const Integer &exponent) const
70{
71 const AbstractGroup<T> &group = i_group.GetGroup();
72
73 Integer r, q, e = exponent;
74 bool fastNegate = group.InversionIsFast() && m_windowSize > 1;
75 unsigned int i;
76
77 for (i=0; i+1<m_bases.size(); i++)
78 {
79 Integer::DivideByPowerOf2(r, q, e, m_windowSize);
80 std::swap(q, e);
81 if (fastNegate && r.GetBit(m_windowSize-1))
82 {
83 ++e;
84 eb.push_back(BaseAndExponent<Element>(group.Inverse(m_bases[i]), m_exponentBase - r));
85 }
86 else
87 eb.push_back(BaseAndExponent<Element>(m_bases[i], r));
88 }
89 eb.push_back(BaseAndExponent<Element>(m_bases[i], e));
90}
91
92template <class T> T DL_FixedBasePrecomputationImpl<T>::Exponentiate(const DL_GroupPrecomputation<Element> &group, const Integer &exponent) const
93{

Callers 1

CascadeExponentiateMethod · 0.80

Calls 5

GetGroupMethod · 0.80
swapFunction · 0.70
sizeMethod · 0.45
push_backMethod · 0.45
InverseMethod · 0.45

Tested by

no test coverage detected