Security Scol plugin
Public Member Functions | Protected Member Functions | List of all members
KeyDerivationFunction Class Referenceabstract

Interface for key derivation functions. More...

#include <cryptlib.h>

Inheritance diagram for KeyDerivationFunction:
Algorithm Clonable HKDF< T > PasswordBasedKeyDerivationFunction Scrypt PKCS12_PBKDF< T > PKCS5_PBKDF1< T > PKCS5_PBKDF2_HMAC< T >

Public Member Functions

virtual std::string AlgorithmName () const =0
 Provides the name of this algorithm.
 
virtual size_t MinDerivedKeyLength () const
 Determine minimum number of bytes.
 
virtual size_t MaxDerivedKeyLength () const
 Determine maximum number of bytes.
 
virtual size_t GetValidDerivedLength (size_t keylength) const =0
 Returns a valid key length for the derivation function.
 
virtual bool IsValidDerivedLength (size_t keylength) const
 Returns whether keylength is a valid key length.
 
virtual size_t DeriveKey (byte *derived, size_t derivedLen, const byte *secret, size_t secretLen, const NameValuePairs &params=g_nullNameValuePairs) const =0
 Derive a key from a seed.
 
virtual void SetParameters (const NameValuePairs &params)
 Set or change parameters.
 
- Public Member Functions inherited from Algorithm
 Algorithm (bool checkSelfTestStatus=true)
 Interface for all crypto algorithms.
 
virtual std::string AlgorithmProvider () const
 Retrieve the provider of this algorithm.
 
- Public Member Functions inherited from Clonable
virtual ClonableClone () const
 Copies this object.
 

Protected Member Functions

virtual const AlgorithmGetAlgorithm () const =0
 Returns the base class Algorithm.
 
void ThrowIfInvalidDerivedKeyLength (size_t length) const
 Validates the derived key length.
 

Detailed Description

Interface for key derivation functions.

Since
Crypto++ 7.0
See also
KeyDerivationFunction on the Crypto++ wiki

Definition at line 1522 of file cryptlib.h.

Constructor & Destructor Documentation

◆ ~KeyDerivationFunction()

virtual KeyDerivationFunction::~KeyDerivationFunction ( )
inlinevirtual

Definition at line 1525 of file cryptlib.h.

Member Function Documentation

◆ AlgorithmName()

virtual std::string KeyDerivationFunction::AlgorithmName ( ) const
pure virtual

Provides the name of this algorithm.

Returns
the standard algorithm name

Reimplemented from Algorithm.

Implemented in HKDF< T >, PKCS5_PBKDF1< T >, PKCS5_PBKDF2_HMAC< T >, PKCS12_PBKDF< T >, and Scrypt.

◆ DeriveKey()

virtual size_t KeyDerivationFunction::DeriveKey ( byte derived,
size_t  derivedLen,
const byte secret,
size_t  secretLen,
const NameValuePairs params = g_nullNameValuePairs 
) const
pure virtual

Derive a key from a seed.

Parameters
derivedthe derived output buffer
derivedLenthe size of the derived buffer, in bytes
secretthe seed input buffer
secretLenthe size of the secret buffer, in bytes
paramsadditional initialization parameters to configure this object
Returns
the number of iterations performed
Exceptions
InvalidDerivedKeyLengthif derivedLen is invalid for the scheme

DeriveKey() provides a standard interface to derive a key from a secret seed and other parameters. Each class that derives from KeyDerivationFunction provides an overload that accepts most parameters used by the derivation function.

the number of iterations performed by DeriveKey() may be 1. For example, a scheme like HKDF does not use the iteration count so it returns 1.

Implemented in HKDF< T >, Scrypt, PKCS5_PBKDF1< T >, PKCS5_PBKDF2_HMAC< T >, and PKCS12_PBKDF< T >.

◆ GetAlgorithm()

virtual const Algorithm & KeyDerivationFunction::GetAlgorithm ( ) const
protectedpure virtual

Returns the base class Algorithm.

Returns
the base class Algorithm

Implemented in HKDF< T >, PKCS5_PBKDF1< T >, PKCS5_PBKDF2_HMAC< T >, PKCS12_PBKDF< T >, and Scrypt.

◆ GetValidDerivedLength()

virtual size_t KeyDerivationFunction::GetValidDerivedLength ( size_t  keylength) const
pure virtual

Returns a valid key length for the derivation function.

Parameters
keylengththe size of the derived key, in bytes
Returns
the valid key length, in bytes

Implemented in HKDF< T >, PKCS5_PBKDF1< T >, PKCS5_PBKDF2_HMAC< T >, PKCS12_PBKDF< T >, and Scrypt.

◆ IsValidDerivedLength()

virtual bool KeyDerivationFunction::IsValidDerivedLength ( size_t  keylength) const
inlinevirtual

Returns whether keylength is a valid key length.

Parameters
keylengththe requested keylength
Returns
true if the derived keylength is valid, false otherwise

Internally the function calls GetValidKeyLength()

Definition at line 1548 of file cryptlib.h.

◆ MaxDerivedKeyLength()

size_t KeyDerivationFunction::MaxDerivedKeyLength ( ) const
virtual

Determine maximum number of bytes.

Returns
Maximum number of bytes which can be derived

Reimplemented in HKDF< T >, PKCS5_PBKDF1< T >, PKCS5_PBKDF2_HMAC< T >, PKCS12_PBKDF< T >, and Scrypt.

Definition at line 341 of file cryptlib.cpp.

◆ MinDerivedKeyLength()

size_t KeyDerivationFunction::MinDerivedKeyLength ( ) const
virtual

Determine minimum number of bytes.

Returns
Minimum number of bytes which can be derived

Definition at line 336 of file cryptlib.cpp.

◆ SetParameters()

void KeyDerivationFunction::SetParameters ( const NameValuePairs params)
virtual

Set or change parameters.

Parameters
paramsadditional initialization parameters to configure this object

SetParameters() is useful for setting common parameters when an object is reused. Some derivation function classes may choose to implement it.

Definition at line 352 of file cryptlib.cpp.

◆ ThrowIfInvalidDerivedKeyLength()

void KeyDerivationFunction::ThrowIfInvalidDerivedKeyLength ( size_t  length) const
protected

Validates the derived key length.

Parameters
lengththe size of the derived key material, in bytes
Exceptions
InvalidKeyLengthif the key length is invalid

Definition at line 346 of file cryptlib.cpp.


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