summaryrefslogtreecommitdiff
path: root/scrypt.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2019-05-19 18:52:37 -0400
committerJeffrey Walton <noloader@gmail.com>2019-05-19 18:52:37 -0400
commit2c0455edf8a60c4a4483c199f9eb19d74942e92a (patch)
treeb5bbac14e828a8fef182a361ce9389e4b4d5a90b /scrypt.cpp
parente3788aacc587c6e0d259a61402e914c62f91cd27 (diff)
downloadcryptopp-git-2c0455edf8a60c4a4483c199f9eb19d74942e92a.tar.gz
Add additional asserts in Scrypt::ValidateParameters (GH #842)
We still need to figure out what to do, but we can start warning users immediately.
Diffstat (limited to 'scrypt.cpp')
-rw-r--r--scrypt.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/scrypt.cpp b/scrypt.cpp
index 97493cd5..686c5ecd 100644
--- a/scrypt.cpp
+++ b/scrypt.cpp
@@ -184,6 +184,12 @@ size_t Scrypt::GetValidDerivedLength(size_t keylength) const
void Scrypt::ValidateParameters(size_t derivedLen, word64 cost, word64 blockSize, word64 parallelization) const
{
+ // https://github.com/weidai11/cryptopp/issues/842
+ CRYPTOPP_ASSERT(derivedLen != 0);
+ CRYPTOPP_ASSERT(cost != 0);
+ CRYPTOPP_ASSERT(blockSize != 0);
+ CRYPTOPP_ASSERT(parallelization != 0);
+
// Optimizer should remove this on 32-bit platforms
if (std::numeric_limits<size_t>::max() > std::numeric_limits<word32>::max())
{
@@ -274,7 +280,7 @@ size_t Scrypt::DeriveKey(byte*derived, size_t derivedLen, const byte*secret, siz
ThrowIfInvalidDerivedLength(derivedLen);
ValidateParameters(derivedLen, cost, blockSize, parallel);
- AlignedSecByteBlock B(static_cast<size_t>(blockSize * parallel * 128U));
+ AlignedSecByteBlock B(static_cast<size_t>(blockSize * parallel * 128U));
// 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen)
PBKDF2_SHA256(B, B.size(), secret, secretLen, salt, saltLen, 1);