8 #include <botan/pbkdf1.h> 9 #include <botan/exceptn.h> 14 const std::string& passphrase,
15 const uint8_t salt[],
size_t salt_len,
17 std::chrono::milliseconds msec)
const 19 if(output_len > m_hash->output_length())
22 m_hash->update(passphrase);
26 const auto start = std::chrono::high_resolution_clock::now();
27 size_t iterations_performed = 1;
33 if(iterations_performed % 10000 == 0)
35 auto time_taken = std::chrono::high_resolution_clock::now() - start;
36 auto msec_taken = std::chrono::duration_cast<std::chrono::milliseconds>(time_taken);
41 else if(iterations_performed == iterations)
45 m_hash->final(key.data());
47 ++iterations_performed;
50 copy_mem(output_buf, key.data(), output_len);
51 return iterations_performed;
size_t pbkdf(uint8_t output_buf[], size_t output_len, const std::string &passphrase, const uint8_t salt[], size_t salt_len, size_t iterations, std::chrono::milliseconds msec) const override
void copy_mem(T *out, const T *in, size_t n)
std::vector< T, secure_allocator< T > > secure_vector