From eb483dd3a6308407c14bf3ba59b92035e0f991f2 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sun, 1 Apr 2018 15:49:00 -0400 Subject: [PATCH] Add additional asserts to Scrypt --- scrypt.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scrypt.cpp b/scrypt.cpp index 8e3870aa..063bbe5c 100644 --- a/scrypt.cpp +++ b/scrypt.cpp @@ -223,10 +223,13 @@ void Scrypt::ValidateParameters(size_t derivedLen, word64 cost, word64 blockSize } } + CRYPTOPP_ASSERT(IsPowerOf2(cost)); if (IsPowerOf2(cost) == false) throw InvalidArgument("Scrypt: cost must be a power of 2"); const word64 prod = static_cast(blockSize) * parallelization; + CRYPTOPP_ASSERT(prod < (1U << 30)); + if (prod >= (1U << 30)) { std::ostringstream oss; oss << "r*p " << prod << " is larger than " << (1U << 30); @@ -285,7 +288,6 @@ size_t Scrypt::DeriveKey(byte*derived, size_t derivedLen, const byte*secret, siz CRYPTOPP_ASSERT(secret /*&& secretLen*/); CRYPTOPP_ASSERT(derived && derivedLen); CRYPTOPP_ASSERT(derivedLen <= MaxDerivedLength()); - CRYPTOPP_ASSERT(IsPowerOf2(cost)); ThrowIfInvalidDerivedLength(derivedLen); ValidateParameters(derivedLen, cost, blockSize, parallel);