From 66a6994e991edcd94e3144d2bcbc5d634deecbb3 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Mon, 26 Aug 2019 14:44:52 -0400 Subject: [PATCH] Add asserts to pubkey.h --- pubkey.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pubkey.h b/pubkey.h index 2dbfeb95..4ddbc36b 100644 --- a/pubkey.h +++ b/pubkey.h @@ -770,7 +770,9 @@ public: if (m_validationLevel > level) return true; + CRYPTOPP_ASSERT(ValidateGroup(rng, level)); bool pass = ValidateGroup(rng, level); + CRYPTOPP_ASSERT(ValidateElement(level, GetSubgroupGenerator(), &GetBasePrecomputation())); pass = pass && ValidateElement(level, GetSubgroupGenerator(), &GetBasePrecomputation()); m_validationLevel = pass ? level+1 : 0; @@ -1215,14 +1217,21 @@ public: // GeneratableCryptoMaterial bool Validate(RandomNumberGenerator &rng, unsigned int level) const { + CRYPTOPP_ASSERT(GetAbstractGroupParameters().Validate(rng, level)); bool pass = GetAbstractGroupParameters().Validate(rng, level); const Integer &q = GetAbstractGroupParameters().GetSubgroupOrder(); const Integer &x = GetPrivateExponent(); + CRYPTOPP_ASSERT(x.IsPositive()); + CRYPTOPP_ASSERT(x < q); pass = pass && x.IsPositive() && x < q; + if (level >= 1) + { + CRYPTOPP_ASSERT(Integer::Gcd(x, q) == Integer::One()); pass = pass && Integer::Gcd(x, q) == Integer::One(); + } return pass; } @@ -1305,7 +1314,9 @@ public: // CryptoMaterial bool Validate(RandomNumberGenerator &rng, unsigned int level) const { + CRYPTOPP_ASSERT(GetAbstractGroupParameters().Validate(rng, level)); bool pass = GetAbstractGroupParameters().Validate(rng, level); + CRYPTOPP_ASSERT(GetAbstractGroupParameters().ValidateElement(level, this->GetPublicElement(), &GetPublicPrecomputation())); pass = pass && GetAbstractGroupParameters().ValidateElement(level, this->GetPublicElement(), &GetPublicPrecomputation()); return pass; }