1 /*
2 * KDF Base Class
3 * (C) 1999-2007 Jack Lloyd
4 *
5 * Distributed under the terms of the Botan license
6 */
7
8 #include <botan/kdf.h>
9
10 namespace Botan {
11
12 /*
13 * Derive a key
14 */
derive_key(size_t key_len,const MemoryRegion<byte> & secret,const std::string & salt) const15 SecureVector<byte> KDF::derive_key(size_t key_len,
16 const MemoryRegion<byte>& secret,
17 const std::string& salt) const
18 {
19 return derive_key(key_len, &secret[0], secret.size(),
20 reinterpret_cast<const byte*>(salt.data()),
21 salt.length());
22 }
23
24 /*
25 * Derive a key
26 */
derive_key(size_t key_len,const MemoryRegion<byte> & secret,const byte salt[],size_t salt_len) const27 SecureVector<byte> KDF::derive_key(size_t key_len,
28 const MemoryRegion<byte>& secret,
29 const byte salt[], size_t salt_len) const
30 {
31 return derive_key(key_len, &secret[0], secret.size(),
32 salt, salt_len);
33 }
34
35 /*
36 * Derive a key
37 */
derive_key(size_t key_len,const MemoryRegion<byte> & secret,const MemoryRegion<byte> & salt) const38 SecureVector<byte> KDF::derive_key(size_t key_len,
39 const MemoryRegion<byte>& secret,
40 const MemoryRegion<byte>& salt) const
41 {
42 return derive_key(key_len, &secret[0], secret.size(),
43 &salt[0], salt.size());
44 }
45
46 /*
47 * Derive a key
48 */
derive_key(size_t key_len,const byte secret[],size_t secret_len,const std::string & salt) const49 SecureVector<byte> KDF::derive_key(size_t key_len,
50 const byte secret[], size_t secret_len,
51 const std::string& salt) const
52 {
53 return derive_key(key_len, secret, secret_len,
54 reinterpret_cast<const byte*>(salt.data()),
55 salt.length());
56 }
57
58 /*
59 * Derive a key
60 */
derive_key(size_t key_len,const byte secret[],size_t secret_len,const byte salt[],size_t salt_len) const61 SecureVector<byte> KDF::derive_key(size_t key_len,
62 const byte secret[], size_t secret_len,
63 const byte salt[], size_t salt_len) const
64 {
65 return derive(key_len, secret, secret_len, salt, salt_len);
66 }
67
68 }
69