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