@@ -82,8 +82,8 @@ class PKCS5_PBKDF1 : public PasswordBasedKeyDerivationFunction
8282template <class T >
8383size_t PKCS5_PBKDF1 <T>::GetValidDerivedLength(size_t keylength) const
8484{
85- if (keylength > MaxDerivedLength ())
86- return MaxDerivedLength ();
85+ if (keylength > MaxDerivedKeyLength ())
86+ return MaxDerivedKeyLength ();
8787 return keylength;
8888}
8989
@@ -93,7 +93,7 @@ size_t PKCS5_PBKDF1<T>::DeriveKey(byte *derived, size_t derivedLen,
9393{
9494 CRYPTOPP_ASSERT (secret /* && secretLen*/ );
9595 CRYPTOPP_ASSERT (derived && derivedLen);
96- CRYPTOPP_ASSERT (derivedLen <= MaxDerivedLength ());
96+ CRYPTOPP_ASSERT (derivedLen <= MaxDerivedKeyLength ());
9797
9898 byte purpose = (byte)params.GetIntValueWithDefault (" Purpose" , 0 );
9999 unsigned int iterations = (unsigned int )params.GetIntValueWithDefault (" Iterations" , 1 );
@@ -112,7 +112,7 @@ size_t PKCS5_PBKDF1<T>::DeriveKey(byte *derived, size_t derivedLen, byte purpose
112112{
113113 CRYPTOPP_ASSERT (secret /* && secretLen*/ );
114114 CRYPTOPP_ASSERT (derived && derivedLen);
115- CRYPTOPP_ASSERT (derivedLen <= MaxDerivedLength ());
115+ CRYPTOPP_ASSERT (derivedLen <= MaxDerivedKeyLength ());
116116 CRYPTOPP_ASSERT (iterations > 0 || timeInSeconds > 0 );
117117 CRYPTOPP_UNUSED (purpose);
118118
@@ -137,7 +137,8 @@ size_t PKCS5_PBKDF1<T>::DeriveKey(byte *derived, size_t derivedLen, byte purpose
137137 for (i=1 ; i<iterations || (timeInSeconds && (i%128 !=0 || timer.ElapsedTimeAsDouble () < timeInSeconds)); i++)
138138 hash.CalculateDigest (buffer, buffer, buffer.size ());
139139
140- memcpy (derived, buffer, derivedLen);
140+ if (derived)
141+ memcpy (derived, buffer, derivedLen);
141142 return i;
142143}
143144
@@ -206,8 +207,8 @@ class PKCS5_PBKDF2_HMAC : public PasswordBasedKeyDerivationFunction
206207template <class T >
207208size_t PKCS5_PBKDF2_HMAC <T>::GetValidDerivedLength(size_t keylength) const
208209{
209- if (keylength > MaxDerivedLength ())
210- return MaxDerivedLength ();
210+ if (keylength > MaxDerivedKeyLength ())
211+ return MaxDerivedKeyLength ();
211212 return keylength;
212213}
213214
@@ -217,7 +218,7 @@ size_t PKCS5_PBKDF2_HMAC<T>::DeriveKey(byte *derived, size_t derivedLen,
217218{
218219 CRYPTOPP_ASSERT (secret /* && secretLen*/ );
219220 CRYPTOPP_ASSERT (derived && derivedLen);
220- CRYPTOPP_ASSERT (derivedLen <= MaxDerivedLength ());
221+ CRYPTOPP_ASSERT (derivedLen <= MaxDerivedKeyLength ());
221222
222223 byte purpose = (byte)params.GetIntValueWithDefault (" Purpose" , 0 );
223224 unsigned int iterations = (unsigned int )params.GetIntValueWithDefault (" Iterations" , 1 );
@@ -236,7 +237,7 @@ size_t PKCS5_PBKDF2_HMAC<T>::DeriveKey(byte *derived, size_t derivedLen, byte pu
236237{
237238 CRYPTOPP_ASSERT (secret /* && secretLen*/ );
238239 CRYPTOPP_ASSERT (derived && derivedLen);
239- CRYPTOPP_ASSERT (derivedLen <= MaxDerivedLength ());
240+ CRYPTOPP_ASSERT (derivedLen <= MaxDerivedKeyLength ());
240241 CRYPTOPP_ASSERT (iterations > 0 || timeInSeconds > 0 );
241242 CRYPTOPP_UNUSED (purpose);
242243
@@ -363,8 +364,8 @@ class PKCS12_PBKDF : public PasswordBasedKeyDerivationFunction
363364template <class T >
364365size_t PKCS12_PBKDF <T>::GetValidDerivedLength(size_t keylength) const
365366{
366- if (keylength > MaxDerivedLength ())
367- return MaxDerivedLength ();
367+ if (keylength > MaxDerivedKeyLength ())
368+ return MaxDerivedKeyLength ();
368369 return keylength;
369370}
370371
@@ -374,7 +375,7 @@ size_t PKCS12_PBKDF<T>::DeriveKey(byte *derived, size_t derivedLen,
374375{
375376 CRYPTOPP_ASSERT (secret /* && secretLen*/ );
376377 CRYPTOPP_ASSERT (derived && derivedLen);
377- CRYPTOPP_ASSERT (derivedLen <= MaxDerivedLength ());
378+ CRYPTOPP_ASSERT (derivedLen <= MaxDerivedKeyLength ());
378379
379380 byte purpose = (byte)params.GetIntValueWithDefault (" Purpose" , 0 );
380381 unsigned int iterations = (unsigned int )params.GetIntValueWithDefault (" Iterations" , 1 );
@@ -394,7 +395,7 @@ size_t PKCS12_PBKDF<T>::DeriveKey(byte *derived, size_t derivedLen, byte purpose
394395{
395396 CRYPTOPP_ASSERT (secret /* && secretLen*/ );
396397 CRYPTOPP_ASSERT (derived && derivedLen);
397- CRYPTOPP_ASSERT (derivedLen <= MaxDerivedLength ());
398+ CRYPTOPP_ASSERT (derivedLen <= MaxDerivedKeyLength ());
398399 CRYPTOPP_ASSERT (iterations > 0 || timeInSeconds > 0 );
399400
400401 ThrowIfInvalidDerivedLength (derivedLen);
0 commit comments