Botan  1.11.4
Public Member Functions | List of all members
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
 
secure_vector< bytederive (size_t key_len, const byte secret[], size_t secret_len, const byte seed[], size_t seed_len) const
 
secure_vector< bytederive_key (size_t key_len, const secure_vector< byte > &secret, const std::string &salt="") const
 
template<typename Alloc , typename Alloc2 >
secure_vector< bytederive_key (size_t key_len, const std::vector< byte, Alloc > &secret, const std::vector< byte, Alloc2 > &salt) const
 
secure_vector< bytederive_key (size_t key_len, const secure_vector< byte > &secret, const byte salt[], size_t salt_len) const
 
secure_vector< bytederive_key (size_t key_len, const byte secret[], size_t secret_len, const std::string &salt="") const
 
secure_vector< bytederive_key (size_t key_len, const byte secret[], size_t secret_len, const byte salt[], size_t salt_len) 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

Botan::TLS_PRF::TLS_PRF ( )

Definition at line 62 of file prf_tls.cpp.

63  {
64  hmac_md5 = new HMAC(new MD5);
65  hmac_sha1 = new HMAC(new SHA_160);
66  }
Botan::TLS_PRF::~TLS_PRF ( )

Definition at line 68 of file prf_tls.cpp.

69  {
70  delete hmac_md5;
71  delete hmac_sha1;
72  }

Member Function Documentation

void Botan::KDF::clear ( )
inlinevirtualinherited

Zeroize internal state

Implements Botan::Algorithm.

Definition at line 86 of file kdf.h.

86 {}
KDF* Botan::TLS_PRF::clone ( ) const
inlinevirtual

Implements Botan::KDF.

Definition at line 28 of file prf_tls.h.

28 { return new TLS_PRF; }
secure_vector< 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 77 of file prf_tls.cpp.

80  {
81  secure_vector<byte> output(key_len);
82 
83  size_t S1_len = (secret_len + 1) / 2,
84  S2_len = (secret_len + 1) / 2;
85  const byte* S1 = secret;
86  const byte* S2 = secret + (secret_len - S2_len);
87 
88  P_hash(output, hmac_md5, S1, S1_len, seed, seed_len);
89  P_hash(output, hmac_sha1, S2, S2_len, seed, seed_len);
90 
91  return output;
92  }
secure_vector< byte > Botan::KDF::derive_key ( size_t  key_len,
const secure_vector< 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.

Referenced by Botan::KDF::derive_key(), and Botan::PK_Key_Agreement::derive_key().

18  {
19  return derive_key(key_len, &secret[0], secret.size(),
20  reinterpret_cast<const byte*>(salt.data()),
21  salt.length());
22  }
template<typename Alloc , typename Alloc2 >
secure_vector<byte> Botan::KDF::derive_key ( size_t  key_len,
const std::vector< byte, Alloc > &  secret,
const std::vector< byte, Alloc2 > &  salt 
) const
inlineinherited

Derive a key

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

Definition at line 40 of file kdf.h.

References Botan::TLS::derive_key().

43  {
44  return derive_key(key_len, &secret[0], secret.size(),
45  &salt[0], salt.size());
46  }
secure_vector< byte > Botan::KDF::derive_key ( size_t  key_len,
const secure_vector< 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.

References Botan::KDF::derive_key().

30  {
31  return derive_key(key_len, &secret[0], secret.size(),
32  salt, salt_len);
33  }
secure_vector< 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 38 of file kdf.cpp.

References Botan::KDF::derive_key().

41  {
42  return derive_key(key_len, secret, secret_len,
43  reinterpret_cast<const byte*>(salt.data()),
44  salt.length());
45  }
secure_vector< 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 50 of file kdf.cpp.

53  {
54  return derive(key_len, secret, secret_len, salt, salt_len);
55  }
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: