SimpleKeyingInterface

From Crypto++ Wiki
Jump to navigation Jump to search
SimpleKeyingInterface
Documentation
#include <cryptopp/cryptlib.h>

SimpleKeyingInterface is a class used by symmetric ciphers to provide functions for security parameters such as keys, initialization vectors and rounds.

Keying Functions

SimpleKeyingInterface provides the following functions for keying material.

Keying functions
Function Comments
MinKeyLength minimum key length, in bytes
MaxKeyLength maximum key length, in bytes
DefaultKeyLength default key length, in bytes
GetValidKeyLength returns a valid key length, rounds up to the next valid length if needed
IsValidKeyLength returns true if the key length is valid
SetKey sets only the key for the algorithm
SetKeyWithRounds sets the key and rounds for the algorithm
SetKeyWithIV sets the key and iv for the algorithm

Nearly all ciphers simply use SetKeyWithIV. However, SetKey takes a NameValuePairs, so more security parameters can be set for an algorithm if needed.

SetKey (const byte *key, size_t length, const NameValuePairs &params = g_nullNameValuePairs)

IV Functions

SimpleKeyingInterface provides the following functions for initialization vectors.

IV functions
Function Comments
IVRequirement iv requirements, such as unique or random
IsResynchronizable returns true if the algorithm uses an iv
CanUseRandomIVs returns true if the algorithm can use a random iv
CanUsePredictableIVs returns true if the algorithm can use a predictable iv
CanUseStructuredIVs returns true if the algorithm can use a structured iv
IVSize iv size, in bytes
DefaultIVLength minimum iv length, in bytes
MaxIVLength maximum iv length, in bytes
DefaultIVLength default iv length, in bytes
Resynchronize sets a new iv under a key for the algorithm
GetNextIV returns an iv for the algorithm

IVRequirement returns the type of IV used by the algorithm as an IV_Requirement enumeration. The values are listed below.

IV_Requirement values
Value Meaning
UNIQUE_IV The IV must be unique.
RANDOM_IV The IV must be random and possibly predictable.
UNPREDICTABLE_RANDOM_IV The IV must be random and unpredictable.
INTERNALLY_GENERATED_IV The IV is set by the object.
NOT_RESYNCHRONIZABLE The object does not use an IV.