title: Reason for the signature of Crypto++ PKCS5_PBKDF2_HMAC class?
body: <p>In the Crypto++ manual for <a href="https://www.cryptopp.com/docs/ref/class_p_k_c_s5___p_b_k_d_f2___h_m_a_c.html" rel="nofollow noreferrer">PKCS5_PBKDF2_HMAC</a> there are two signatures of DeriveKey.</p>
  
  <p>First:</p>
  
  <pre><code>size_t  DeriveKey (byte *derived, size_t derivedLen, const byte *secret, size_t secretLen, const NameValuePairs &amp;params=g_nullNameValuePairs) const
  </code></pre>
  
  <p>Second:</p>
  
  <pre><code>size_t  DeriveKey (byte *derived, size_t derivedLen, byte purpose, const byte *secret, size_t secretLen, const byte *salt, size_t saltLen, unsigned int iterations, double timeInSeconds=0) const
  </code></pre>
  
  <p>I would like to understand the purpose of the last parameter in the first signature. 
  <code>NameValuePairs &amp;params=g_nullNameValuePairs</code>.</p>
  
  <p>Unfortunately in the documentation I did not find an usage example.
  Generally, my aim is to replace the calls of the second function with nullptr salts to first  but at the same time I need to send  <code>unsigned int iterations, double timeInSecond</code>.</p>