Botan
1.10.17
src
pbkdf
pbkdf1
pbkdf1.cpp
Go to the documentation of this file.
1
/*
2
* PBKDF1
3
* (C) 1999-2007 Jack Lloyd
4
*
5
* Distributed under the terms of the Botan license
6
*/
7
8
#include <botan/pbkdf1.h>
9
#include <botan/exceptn.h>
10
11
namespace
Botan
{
12
13
/*
14
* Return a PKCS#5 PBKDF1 derived key
15
*/
16
OctetString
PKCS5_PBKDF1::derive_key
(
size_t
key_len,
17
const
std::string& passphrase,
18
const
byte
salt[],
size_t
salt_size,
19
size_t
iterations)
const
20
{
21
if
(iterations == 0)
22
throw
Invalid_Argument
(
"PKCS5_PBKDF1: Invalid iteration count"
);
23
24
if
(key_len > hash->output_length())
25
throw
Invalid_Argument
(
"PKCS5_PBKDF1: Requested output length too long"
);
26
27
hash->update(passphrase);
28
hash->update(salt, salt_size);
29
SecureVector<byte>
key = hash->final();
30
31
for
(
size_t
j = 1; j != iterations; ++j)
32
{
33
hash->update(key);
34
hash->final(&key[0]);
35
}
36
37
return
OctetString
(&key[0], std::min<size_t>(key_len, key.
size
()));
38
}
39
40
}
Botan::MemoryRegion::size
size_t size() const
Definition
secmem.h:29
Botan::OctetString
Definition
symkey.h:20
Botan::OctetString::OctetString
OctetString(class RandomNumberGenerator &rng, size_t len)
Definition
symkey.cpp:20
Botan::PKCS5_PBKDF1::derive_key
OctetString derive_key(size_t output_len, const std::string &passphrase, const byte salt[], size_t salt_len, size_t iterations) const
Definition
pbkdf1.cpp:16
Botan::SecureVector
Definition
secmem.h:329
Botan
Definition
algo_base.h:14
Botan::Invalid_Argument
std::invalid_argument Invalid_Argument
Definition
exceptn.h:20
Generated by
1.18.0