Crypto++

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | Public Attributes
BlockTransformation Class Reference

interface for the data processing part of block ciphers More...

`#include <cryptlib.h>`

Inheritance diagram for BlockTransformation:

List of all members.

## Public Types

enum | { BT_InBlockIsCounter = 1, BT_DontIncrementInOutPointers = 2, BT_XorInput = 4, BT_ReverseDirection = 8, BT_AllowParallel = 16 }

## 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

## 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 428 of file cryptlib.h.

## 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 436 of file cryptlib.h.

virtual 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.

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

- cryptlib.h