interface for the data processing part of block ciphers More...
#include <cryptlib.h>
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 |
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.
void BlockTransformation::ProcessBlock | ( | const byte * | inBlock, | |
byte * | outBlock | |||
) | const [inline] |
encrypt or decrypt one block
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().