Crypto++
Public Types | Public Member Functions | Public Attributes | List of all members
BlockTransformation Class Referenceabstract

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

#include <cryptlib.h>

Inheritance diagram for BlockTransformation:
Algorithm Clonable BlockCipher SAFER::Base SimpleKeyingInterfaceImpl< BlockCipher, BTEA_Info > SAFER::Dec SAFER::Enc AlgorithmImpl< SimpleKeyingInterfaceImpl< BlockCipher, BTEA_Info >, BTEA_Info >

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 More...
 
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) More...
 
CipherDir GetCipherDirection () const
 
virtual std::string AlgorithmName () const
 returns name of this algorithm, not universally implemented yet
 
virtual ClonableClone () 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: