9 #include <botan/hkdf.h>
14 const uint8_t secret[],
size_t secret_len,
15 const uint8_t salt[],
size_t salt_len,
16 const uint8_t label[],
size_t label_len)
const
22 extract.
kdf(prk.data(), prk.size(), secret, secret_len, salt, salt_len,
nullptr, 0);
23 return expand.kdf(key, key_len, prk.data(), prk.size(),
nullptr, 0, label, label_len);
27 const uint8_t secret[],
size_t secret_len,
28 const uint8_t salt[],
size_t salt_len,
29 const uint8_t[],
size_t)
const
34 m_prf->set_key(std::vector<uint8_t>(m_prf->output_length()));
38 m_prf->set_key(salt, salt_len);
41 m_prf->update(secret, secret_len);
44 const size_t written =
std::min(prk.size(), key_len);
45 copy_mem(&key[0], prk.data(), written);
50 const uint8_t secret[],
size_t secret_len,
51 const uint8_t salt[],
size_t salt_len,
52 const uint8_t label[],
size_t label_len)
const
54 m_prf->set_key(secret, secret_len);
60 while(offset != key_len && counter != 0)
63 m_prf->update(label, label_len);
64 m_prf->update(salt, salt_len);
65 m_prf->update(counter++);
68 const size_t written =
std::min(h.size(), key_len - offset);
69 copy_mem(&key[offset], h.data(), written);
size_t kdf(uint8_t key[], size_t key_len, const uint8_t secret[], size_t secret_len, const uint8_t salt[], size_t salt_len, const uint8_t label[], size_t label_len) const override
std::vector< T, secure_allocator< T >> secure_vector
void copy_mem(T *out, const T *in, size_t n)
size_t kdf(uint8_t key[], size_t key_len, const uint8_t secret[], size_t secret_len, const uint8_t salt[], size_t salt_len, const uint8_t label[], size_t label_len) const override