Botan 1.10.17
Botan::TLS_PRF Class Reference

#include <prf_tls.h>

Inheritance diagram for Botan::TLS_PRF:
Botan::KDF Botan::Algorithm

Public Member Functions

void clear ()
KDFclone () const
SecureVector< bytederive (size_t key_len, const byte secret[], size_t secret_len, const byte seed[], size_t seed_len) 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
std::string name () const
 TLS_PRF ()
 ~TLS_PRF ()

Detailed Description

PRF used in TLS 1.0/1.1

Definition at line 20 of file prf_tls.h.

Constructor & Destructor Documentation

◆ TLS_PRF()

Botan::TLS_PRF::TLS_PRF ( )

Definition at line 53 of file prf_tls.cpp.

54 {
55 hmac_md5 = new HMAC(new MD5);
56 hmac_sha1 = new HMAC(new SHA_160);
57 }
HMAC(HashFunction *hash)
Definition hmac.cpp:87

References Botan::HMAC::HMAC().

Referenced by clone().

◆ ~TLS_PRF()

Botan::TLS_PRF::~TLS_PRF ( )

Definition at line 59 of file prf_tls.cpp.

60 {
61 delete hmac_md5;
62 delete hmac_sha1;
63 }

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::TLS_PRF::clone ( ) const
inlinevirtual

Implements Botan::KDF.

Definition at line 28 of file prf_tls.h.

28{ return new TLS_PRF; }

References TLS_PRF().

◆ derive()

SecureVector< byte > Botan::TLS_PRF::derive ( size_t key_len,
const byte secret[],
size_t secret_len,
const byte seed[],
size_t seed_len ) const
virtual

Implements Botan::KDF.

Definition at line 68 of file prf_tls.cpp.

71 {
72 SecureVector<byte> output(key_len);
73
74 size_t S1_len = (secret_len + 1) / 2,
75 S2_len = (secret_len + 1) / 2;
76 const byte* S1 = secret;
77 const byte* S2 = secret + (secret_len - S2_len);
78
79 P_hash(output, hmac_md5, S1, S1_len, seed, seed_len);
80 P_hash(output, hmac_sha1, S2, S2_len, seed, seed_len);
81
82 return output;
83 }

◆ 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::TLS_PRF::name ( ) const
inlinevirtual
Returns
name of this algorithm

Implements Botan::Algorithm.

Definition at line 27 of file prf_tls.h.

27{ return "TLS-PRF"; }

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