Botan 1.10.17
Botan::KDF2 Class Reference

#include <kdf2.h>

Inheritance diagram for Botan::KDF2:
Botan::KDF Botan::Algorithm

Public Member Functions

void clear ()
KDFclone () const
SecureVector< bytederive (size_t, const byte[], size_t, const byte[], size_t) const
SecureVector< bytederive_key (size_t key_len, const byte secret[], size_t secret_len, const byte salt[], size_t salt_len) const
SecureVector< bytederive_key (size_t key_len, const byte secret[], size_t secret_len, const std::string &salt="") const
SecureVector< bytederive_key (size_t key_len, const MemoryRegion< byte > &secret, const byte salt[], size_t salt_len) const
SecureVector< bytederive_key (size_t key_len, const MemoryRegion< byte > &secret, const MemoryRegion< byte > &salt) const
SecureVector< bytederive_key (size_t key_len, const MemoryRegion< byte > &secret, const std::string &salt="") const
 KDF2 (const KDF2 &other)
 KDF2 (HashFunction *h)
std::string name () const
 ~KDF2 ()

Detailed Description

KDF2, from IEEE 1363

Definition at line 19 of file kdf2.h.

Constructor & Destructor Documentation

◆ KDF2() [1/2]

Botan::KDF2::KDF2 ( HashFunction * h)
inline

Definition at line 28 of file kdf2.h.

28: hash(h) {}

Referenced by clone(), Botan::get_kdf(), and KDF2().

◆ KDF2() [2/2]

Botan::KDF2::KDF2 ( const KDF2 & other)
inline

Definition at line 29 of file kdf2.h.

29: KDF(), hash(other.hash->clone()) {}

References clone(), and KDF2().

◆ ~KDF2()

Botan::KDF2::~KDF2 ( )
inline

Definition at line 30 of file kdf2.h.

30{ delete hash; }

Member Function Documentation

◆ clear()

void Botan::KDF::clear ( )
inlinevirtualinherited

Zeroize internal state

Implements Botan::Algorithm.

Definition at line 81 of file kdf.h.

81{}

◆ clone()

KDF * Botan::KDF2::clone ( ) const
inlinevirtual

Implements Botan::KDF.

Definition at line 26 of file kdf2.h.

26{ return new KDF2(hash->clone()); }
KDF2(HashFunction *h)
Definition kdf2.h:28

References KDF2().

Referenced by KDF2().

◆ derive()

SecureVector< byte > Botan::KDF2::derive ( size_t out_len,
const byte secret[],
size_t secret_len,
const byte P[],
size_t P_len ) const
virtual

Implements Botan::KDF.

Definition at line 15 of file kdf2.cpp.

18 {
19 SecureVector<byte> output;
20 u32bit counter = 1;
21
22 while(out_len && counter)
23 {
24 hash->update(secret, secret_len);
25 hash->update_be(counter);
26 hash->update(P, P_len);
27
28 SecureVector<byte> hash_result = hash->final();
29
30 size_t added = std::min(hash_result.size(), out_len);
31 output += std::make_pair(&hash_result[0], added);
32 out_len -= added;
33
34 ++counter;
35 }
36
37 return output;
38 }
unsigned int u32bit
Definition types.h:32

References Botan::MemoryRegion< T >::size().

◆ derive_key() [1/5]

SecureVector< byte > Botan::KDF::derive_key ( size_t key_len,
const byte secret[],
size_t secret_len,
const byte salt[],
size_t salt_len ) const
inherited

Derive a key

Parameters
key_lenthe desired output length in bytes
secretthe secret input
secret_lensize of secret in bytes
salta diversifier
salt_lensize of salt in bytes

Definition at line 61 of file kdf.cpp.

64 {
65 return derive(key_len, secret, secret_len, salt, salt_len);
66 }

◆ derive_key() [2/5]

SecureVector< byte > Botan::KDF::derive_key ( size_t key_len,
const byte secret[],
size_t secret_len,
const std::string & salt = "" ) const
inherited

Derive a key

Parameters
key_lenthe desired output length in bytes
secretthe secret input
secret_lensize of secret in bytes
salta diversifier

Definition at line 49 of file kdf.cpp.

52 {
53 return derive_key(key_len, secret, secret_len,
54 reinterpret_cast<const byte*>(salt.data()),
55 salt.length());
56 }
SecureVector< byte > derive_key(size_t key_len, const MemoryRegion< byte > &secret, const std::string &salt="") const
Definition kdf.cpp:15

References derive_key().

◆ derive_key() [3/5]

SecureVector< byte > Botan::KDF::derive_key ( size_t key_len,
const MemoryRegion< byte > & secret,
const byte salt[],
size_t salt_len ) const
inherited

Derive a key

Parameters
key_lenthe desired output length in bytes
secretthe secret input
salta diversifier
salt_lensize of salt in bytes

Definition at line 27 of file kdf.cpp.

30 {
31 return derive_key(key_len, &secret[0], secret.size(),
32 salt, salt_len);
33 }

References derive_key(), and Botan::MemoryRegion< T >::size().

◆ derive_key() [4/5]

SecureVector< byte > Botan::KDF::derive_key ( size_t key_len,
const MemoryRegion< byte > & secret,
const MemoryRegion< byte > & salt ) const
inherited

Derive a key

Parameters
key_lenthe desired output length in bytes
secretthe secret input
salta diversifier

Definition at line 38 of file kdf.cpp.

41 {
42 return derive_key(key_len, &secret[0], secret.size(),
43 &salt[0], salt.size());
44 }

References derive_key(), and Botan::MemoryRegion< T >::size().

◆ derive_key() [5/5]

SecureVector< byte > Botan::KDF::derive_key ( size_t key_len,
const MemoryRegion< byte > & secret,
const std::string & salt = "" ) const
inherited

Derive a key

Parameters
key_lenthe desired output length in bytes
secretthe secret input
salta diversifier

Definition at line 15 of file kdf.cpp.

18 {
19 return derive_key(key_len, &secret[0], secret.size(),
20 reinterpret_cast<const byte*>(salt.data()),
21 salt.length());
22 }

References derive_key(), and Botan::MemoryRegion< T >::size().

Referenced by derive_key(), derive_key(), derive_key(), and derive_key().

◆ name()

std::string Botan::KDF2::name ( ) const
inlinevirtual
Returns
name of this algorithm

Implements Botan::Algorithm.

Definition at line 25 of file kdf2.h.

25{ return "KDF2(" + hash->name() + ")"; }

The documentation for this class was generated from the following files: