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:
Algorithm Clonable BlockCipher SAFER::Base SimpleKeyingInterfaceImpl< BlockCipher, BTEA_Info > TwoBases< BlockCipher, Blowfish_Info > TwoBases< BlockCipher, Camellia_Info > TwoBases< BlockCipher, CAST128_Info > TwoBases< BlockCipher, CAST256_Info > TwoBases< BlockCipher, DES_EDE2_Info > TwoBases< BlockCipher, DES_EDE3_Info > TwoBases< BlockCipher, DES_Info > TwoBases< BlockCipher, DES_XEX3_Info > TwoBases< BlockCipher, GOST_Info > TwoBases< BlockCipher, IDEA_Info > TwoBases< BlockCipher, LR_Info< T > > TwoBases< BlockCipher, MARS_Info > TwoBases< BlockCipher, MDC_Info< T > > TwoBases< BlockCipher, RC2_Info > TwoBases< BlockCipher, RC5_Info > TwoBases< BlockCipher, RC6_Info > TwoBases< BlockCipher, Rijndael_Info > TwoBases< BlockCipher, SEED_Info > TwoBases< BlockCipher, Serpent_Info > TwoBases< BlockCipher, SHACAL2_Info > TwoBases< BlockCipher, SHARK_Info > TwoBases< BlockCipher, SKIPJACK_Info > TwoBases< BlockCipher, Square_Info > TwoBases< BlockCipher, TEA_Info > TwoBases< BlockCipher, ThreeWay_Info > TwoBases< BlockCipher, Twofish_Info > TwoBases< BlockCipher, XTEA_Info >

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 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 429 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 437 of file cryptlib.h.

Referenced by AdvancedProcessBlocks(), CBC_CTS_Decryption::ProcessLastBlock(), CBC_CTS_Encryption::ProcessLastBlock(), 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 141 of file cryptlib.cpp.

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

Referenced by CBC_Decryption::ProcessData(), CBC_Encryption::ProcessData(), ECB_OneWay::ProcessData(), CMAC_Base::TruncatedFinal(), CMAC_Base::Update(), and CBC_MAC_Base::Update().


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