Use '*this >= m' for InverseMod reduction
The previous test used '*this > m', which did not capture 'm'pull/611/head
parent
302d210ceb
commit
a665e0825f
|
|
@ -4386,13 +4386,13 @@ Integer Integer::Gcd(const Integer &a, const Integer &b)
|
||||||
Integer Integer::InverseMod(const Integer &m) const
|
Integer Integer::InverseMod(const Integer &m) const
|
||||||
{
|
{
|
||||||
CRYPTOPP_ASSERT(m.NotNegative());
|
CRYPTOPP_ASSERT(m.NotNegative());
|
||||||
CRYPTOPP_ASSERT(m != 0);
|
CRYPTOPP_ASSERT(m.NotZero());
|
||||||
|
|
||||||
if (IsNegative())
|
if (IsNegative())
|
||||||
return Modulo(m).InverseModNext(m);
|
return Modulo(m).InverseModNext(m);
|
||||||
|
|
||||||
// http://github.com/weidai11/cryptopp/issues/602
|
// http://github.com/weidai11/cryptopp/issues/602
|
||||||
if (*this > m)
|
if (*this >= m)
|
||||||
return Modulo(m).InverseModNext(m);
|
return Modulo(m).InverseModNext(m);
|
||||||
|
|
||||||
return InverseModNext(m);
|
return InverseModNext(m);
|
||||||
|
|
@ -4401,7 +4401,7 @@ Integer Integer::InverseMod(const Integer &m) const
|
||||||
Integer Integer::InverseModNext(const Integer &m) const
|
Integer Integer::InverseModNext(const Integer &m) const
|
||||||
{
|
{
|
||||||
CRYPTOPP_ASSERT(m.NotNegative());
|
CRYPTOPP_ASSERT(m.NotNegative());
|
||||||
CRYPTOPP_ASSERT(m != 0);
|
CRYPTOPP_ASSERT(m.NotZero());
|
||||||
|
|
||||||
if (m.IsEven())
|
if (m.IsEven())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue