Crypto++ 8.0 Free C++ class library of cryptographic schemes

Public Member Functions | List of all members
CipherModeBase Class Referenceabstract

Block cipher mode of operation information. More...

Inheritance diagram for CipherModeBase:

## Public Member Functions
std::string | AlgorithmProvider () const
| Retrieve the provider of this algorithm. More...
size_t | MinKeyLength () const
| Returns smallest valid key length. More...
size_t | MaxKeyLength () const
| Returns largest valid key length. More...
size_t | DefaultKeyLength () const
| Returns default key length. More...
size_t | GetValidKeyLength (size_t keylength) const
| Returns a valid key length for the algorithm. More...
bool | IsValidKeyLength (size_t keylength) const
| Returns whether keylength is a valid key length. More...
unsigned int | OptimalDataAlignment () const
| Provides input and output data alignment for optimal performance. More...
unsigned int | IVSize () const
| Returns length of the IV accepted by this object. More...
virtual IV_Requirement | IVRequirement () const =0
| Minimal requirement for secure IVs. More...
void | SetCipher (BlockCipher &cipher)
| Set external block cipher. More...
void | SetCipherWithIV (BlockCipher &cipher, const byte *iv, int feedbackSize=0)
| Set external block cipher and IV. More...
Public Member Functions inherited from SimpleKeyingInterface
virtual void | SetKey (const byte *key, size_t length, const NameValuePairs &params=g_nullNameValuePairs)
| Sets or reset the key of this object. More...
void | SetKeyWithRounds (const byte *key, size_t length, int rounds)
| Sets or reset the key of this object. More...
void | SetKeyWithIV (const byte *key, size_t length, const byte *iv, size_t ivLength)
| Sets or reset the key of this object. More...
void | SetKeyWithIV (const byte *key, size_t length, const byte *iv)
| Sets or reset the key of this object. More...
bool | IsResynchronizable () const
| Determines if the object can be resynchronized. More...
bool | CanUseRandomIVs () const
| Determines if the object can use random IVs. More...
bool | CanUsePredictableIVs () const
| Determines if the object can use random but possibly predictable IVs. More...
bool | CanUseStructuredIVs () const
| Determines if the object can use structured IVs. More...
unsigned int | DefaultIVLength () const
| Provides the default size of an IV. More...
virtual unsigned int | MinIVLength () const
| Provides the minimum size of an IV. More...
virtual unsigned int | MaxIVLength () const
| Provides the maximum size of an IV. More...
virtual void | Resynchronize (const byte *iv, int ivLength=-1)
| Resynchronize with an IV. More...
virtual void | GetNextIV (RandomNumberGenerator &rng, byte *iv)
| Retrieves a secure IV for the next message. More...
Public Member Functions inherited from StreamTransformation
StreamTransformation & | Ref ()
| Provides a reference to this object. More...
virtual unsigned int | MandatoryBlockSize () const
| Provides the mandatory block size of the cipher. More...
virtual unsigned int | OptimalBlockSize () const
| Provides the input block size most efficient for this cipher. More...
virtual unsigned int | GetOptimalBlockSizeUsed () const
| Provides the number of bytes used in the current block when processing at optimal block size. More...
virtual void | ProcessData (byte *outString, const byte *inString, size_t length)=0
| Encrypt or decrypt an array of bytes. More...
virtual size_t | ProcessLastBlock (byte *outString, size_t outLength, const byte *inString, size_t inLength)
| Encrypt or decrypt the last block of data. More...
virtual unsigned int | MinLastBlockSize () const
| Provides the size of the last block. More...
virtual bool | IsLastBlockSpecial () const
| Determines if the last block receives special processing. More...
void | ProcessString (byte *inoutString, size_t length)
| Encrypt or decrypt a string of bytes. More...
void | ProcessString (byte *outString, const byte *inString, size_t length)
| Encrypt or decrypt a string of bytes. More...
byte | ProcessByte (byte input)
| Encrypt or decrypt a byte. More...
virtual bool | IsRandomAccess () const =0
| Determines whether the cipher supports random access. More...
virtual void | Seek (lword pos)
| Seek to an absolute position. More...
virtual bool | IsSelfInverting () const =0
| Determines whether the cipher is self-inverting. More...
virtual bool | IsForwardTransformation () const =0
| Determines if the cipher is being operated in its forward direction. More...
Public Member Functions inherited from Algorithm
| Algorithm (bool checkSelfTestStatus=true)
| Interface for all crypto algorithms. More...
virtual std::string | AlgorithmName () const
| Provides the name of this algorithm. More...
Public Member Functions inherited from Clonable
virtual Clonable * | Clone () const
| Copies this object. More...

## Additional Inherited Members
Public Types inherited from SimpleKeyingInterface
enum | IV_Requirement { UNIQUE_IV = 0, RANDOM_IV, UNPREDICTABLE_RANDOM_IV, INTERNALLY_GENERATED_IV, NOT_RESYNCHRONIZABLE }
| Secure IVs requirements as enumerated values. More...

## Detailed Description

Block cipher mode of operation information.

Definition at line 49 of file modes.h.

## Member Function Documentation

## ◆ AlgorithmProvider()

std::string CipherModeBase::AlgorithmProvider | ( |  | ) | const
| inline virtual

Retrieve the provider of this algorithm.

Returns
  the algorithm provider

The algorithm provider can be a name like "C++", "SSE", "NEON", "AESNI", "ARMv8" and "Power8". C++ is standard C++ code. Other labels, like SSE, usually indicate a specialized implementation using instructions from a higher instruction set architecture (ISA). Future labels may include external hardware like a hardware security module (HSM).

Generally speaking Wei Dai's original IA-32 ASM code falls under "SSE2". Labels like "SSSE3" and "SSE4.1" follow after Wei's code and use intrinsics instead of ASM.

Algorithms which combine different instructions or ISAs provide the dominant one. For example on x86 `AES/GCM` returns "AESNI" rather than "CLMUL" or "AES+SSE4.1" or "AES+CLMUL" or "AES+SSE4.1+CLMUL".

Note
  Provider is not universally implemented yet.

Since
  Crypto++ 8.0

Reimplemented from Algorithm.

Reimplemented in AdditiveCipherTemplate< AbstractPolicyHolder< AdditiveCipherAbstractPolicy, CTR_ModePolicy > >.

Definition at line 55 of file modes.h.

## ◆ MinKeyLength()

size_t CipherModeBase::MinKeyLength | ( |  | ) | const
| inline virtual

Returns smallest valid key length.

Returns
  the minimum key length, in bytes

Implements SimpleKeyingInterface.

Definition at line 61 of file modes.h.

## ◆ MaxKeyLength()

size_t CipherModeBase::MaxKeyLength | ( |  | ) | const
| inline virtual

Returns largest valid key length.

Returns
  the maximum key length, in bytes

Implements SimpleKeyingInterface.

Definition at line 65 of file modes.h.

## ◆ DefaultKeyLength()

size_t CipherModeBase::DefaultKeyLength | ( |  | ) | const
| inline virtual

Returns default key length.

Returns
  the default key length, in bytes

Implements SimpleKeyingInterface.

Definition at line 69 of file modes.h.

## ◆ GetValidKeyLength()

size_t CipherModeBase::GetValidKeyLength | ( | size_t | keylength | ) | const
| inline virtual

Returns a valid key length for the algorithm.

Parameters

  keylength | the size of the key, in bytes

Returns
  the valid key length, in bytes

keylength is provided in bytes, not bits. If keylength is less than MIN_KEYLENGTH, then the function returns MIN_KEYLENGTH. If keylength is greater than MAX_KEYLENGTH, then the function returns MAX_KEYLENGTH. if If keylength is a multiple of KEYLENGTH_MULTIPLE, then keylength is returned. Otherwise, the function returns a lower multiple of KEYLENGTH_MULTIPLE.

Implements SimpleKeyingInterface.

Definition at line 79 of file modes.h.

## ◆ IsValidKeyLength()

bool CipherModeBase::IsValidKeyLength | ( | size_t | keylength | ) | const
| inline virtual

Returns whether keylength is a valid key length.

Parameters

  keylength | the requested keylength

Returns
  true if keylength is valid, false otherwise

Internally the function calls GetValidKeyLength()

Reimplemented from SimpleKeyingInterface.

Definition at line 85 of file modes.h.

## ◆ OptimalDataAlignment()

unsigned int CipherModeBase::OptimalDataAlignment | ( |  | ) | const
| inline virtual

Provides input and output data alignment for optimal performance.

Returns
  the input data alignment that provides optimal performance

See also
  GetAlignment() and OptimalBlockSize()

Reimplemented from StreamTransformation.

Reimplemented in AdditiveCipherTemplate< AbstractPolicyHolder< AdditiveCipherAbstractPolicy, CTR_ModePolicy > >.

Definition at line 90 of file modes.h.

## ◆ IVSize()

unsigned int CipherModeBase::IVSize | ( |  | ) | const
| inline virtual

Returns length of the IV accepted by this object.

Returns
  the size of an IV, in bytes

Exceptions

  NotImplemented() | if the object does not support resynchronization

The default implementation throws NotImplemented

Reimplemented from SimpleKeyingInterface.

Definition at line 96 of file modes.h.

## ◆ IVRequirement()

virtual IV_Requirement CipherModeBase::IVRequirement | ( |  | ) | const
| pure virtual

Minimal requirement for secure IVs.

Returns
  the secure IV requirement of the algorithm

Implements SimpleKeyingInterface.

Implemented in CBC_ModeBase, ECB_OneWay, CTR_ModePolicy, OFB_ModePolicy, and CFB_ModePolicy.

## ◆ SetCipher()

void CipherModeBase::SetCipher | ( | BlockCipher & | cipher | ) |
| inline

Set external block cipher.

Parameters

  cipher | An external block cipher

The cipher should be keyed.

Definition at line 105 of file modes.h.

## ◆ SetCipherWithIV()

void CipherModeBase::SetCipherWithIV | ( | BlockCipher & | cipher,
|  | const byte * | iv,
|  | int | feedbackSize = `0`
| ) |  |
| inline

Set external block cipher and IV.

Parameters

  cipher | An external block cipher
  iv | a byte array used to resynchronize the cipher
  feedbackSize | the feedback size, in bytes

The cipher should be keyed.

Definition at line 117 of file modes.h.

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

- modes.h
- modes.cpp