# BlockTransformation Class Reference

`#include <cryptlib.h>`

Inheritance diagram for BlockTransformation:

List of all members.

## Detailed Description

interface for the data processing part of block ciphers

Classes derived from BlockTransformation are block ciphers in ECB mode (for example the DES::Encryption class), which are stateless. These classes should not be used directly, but only in combination with a mode class (see CipherModeDocumentation in modes.h).

Definition at line 436 of file cryptlib.h.

## Public Types
enum | { BT_InBlockIsCounter = 1, BT_DontIncrementInOutPointers = 2, BT_XorInput = 4, BT_ReverseDirection = 8 }
## Public Member Functions
virtual void | ProcessAndXorBlock (const byte *inBlock, const byte *xorBlock, byte *outBlock) const =0
| encrypt or decrypt inBlock, xor with xorBlock, and write to outBlock
void | ProcessBlock (const byte *inBlock, byte *outBlock) const
| encrypt or decrypt one block
void | ProcessBlock (byte *inoutBlock) const
| encrypt or decrypt one block in place
virtual unsigned int | BlockSize () const =0
| block size of the cipher in bytes
virtual unsigned int | OptimalDataAlignment () const
| returns how inputs and outputs should be aligned for optimal performance
virtual bool | IsPermutation () const
| returns true if this is a permutation (i.e. there is an inverse transformation)
virtual bool | IsForwardTransformation () const =0
| returns true if this is an encryption object
virtual unsigned int | OptimalNumberOfParallelBlocks () const
| return number of blocks that can be processed in parallel, for bit-slicing implementations
virtual size_t | AdvancedProcessBlocks (const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) const
| encrypt and xor blocks according to flags (see FlagsForAdvancedProcessBlocks)
CipherDir | GetCipherDirection () const
virtual std::string | AlgorithmName () const
| returns name of this algorithm, not universally implemented yet
virtual Clonable * | Clone () const
| this is not implemented by most classes yet
## Public Attributes
enum BlockTransformation:: { ... } | FlagsForAdvancedProcessBlocks

## Member Function Documentation

void BlockTransformation::ProcessBlock | ( | const byte * | inBlock,
|  | byte * | outBlock |
| ) |  |  | const`[inline]`

encrypt or decrypt one block

Precondition:
  size of inBlock and outBlock == BlockSize()

Definition at line 444 of file cryptlib.h.

Referenced by AdvancedProcessBlocks(), and CMAC_Base::Update().

size_t BlockTransformation::AdvancedProcessBlocks | ( | const byte * | inBlocks,
|  | const byte * | xorBlocks,
|  | byte * | outBlocks,
|  | size_t | length,
|  | word32 | flags |
| ) |  |  | const`[virtual]`

encrypt and xor blocks according to flags (see FlagsForAdvancedProcessBlocks)

/note If BT_InBlockIsCounter is set, last byte of inBlocks may be modified.

Definition at line 134 of file cryptlib.cpp.

References BlockSize(), ProcessAndXorBlock(), and ProcessBlock().

Referenced by CMAC_Base::TruncatedFinal(), CMAC_Base::Update(), and CBC_MAC_Base::Update().

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

- cryptlib.h
- cryptlib.cpp