Crypto++  7.0
Free C++ class library of cryptographic schemes
Public Types | Public Member Functions | Static Public Attributes | List of all members
AdditiveCipherConcretePolicy< WT, W, X, BASE > Struct Template Referenceabstract

Base class for additive stream ciphers. More...

+ Inheritance diagram for AdditiveCipherConcretePolicy< WT, W, X, BASE >:

Public Types

typedef WT WordType
 

Public Member Functions

unsigned int GetAlignment () const
 Provides data alignment requirements. More...
 
unsigned int GetBytesPerIteration () const
 Provides number of bytes operated upon during an iteration. More...
 
unsigned int GetIterationsToBuffer () const
 Provides buffer size based on iterations. More...
 
bool CanOperateKeystream () const
 Flag indicating. More...
 
virtual void OperateKeystream (KeystreamOperation operation, byte *output, const byte *input, size_t iterationCount)=0
 Operates the keystream. More...
 

Static Public Attributes

static const int BYTES_PER_ITERATION = sizeof(WordType) * W
 

Detailed Description

template<typename WT, unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>
struct AdditiveCipherConcretePolicy< WT, W, X, BASE >

Base class for additive stream ciphers.

Template Parameters
WTword type
Wcount of words
Xbytes per iteration count
BASEAdditiveCipherAbstractPolicy derived base class

Definition at line 201 of file strciphr.h.

Member Function Documentation

◆ GetAlignment()

template<typename WT, unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>
unsigned int AdditiveCipherConcretePolicy< WT, W, X, BASE >::GetAlignment ( ) const
inline

Provides data alignment requirements.

Returns
data alignment requirements, in bytes

Internally, the default implementation returns 1. If the stream cipher is implemented using an SSE2 ASM or intrinsics, then the value returned is usually 16.

Definition at line 213 of file strciphr.h.

◆ GetBytesPerIteration()

template<typename WT, unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>
unsigned int AdditiveCipherConcretePolicy< WT, W, X, BASE >::GetBytesPerIteration ( ) const
inline

Provides number of bytes operated upon during an iteration.

Returns
bytes operated upon during an iteration, in bytes
See also
GetOptimalBlockSize()

Definition at line 219 of file strciphr.h.

◆ GetIterationsToBuffer()

template<typename WT, unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>
unsigned int AdditiveCipherConcretePolicy< WT, W, X, BASE >::GetIterationsToBuffer ( ) const
inline

Provides buffer size based on iterations.

Returns
the buffer size based on iterations, in bytes

Definition at line 223 of file strciphr.h.

◆ CanOperateKeystream()

template<typename WT, unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>
bool AdditiveCipherConcretePolicy< WT, W, X, BASE >::CanOperateKeystream ( ) const
inline

Flag indicating.

Returns
true if the stream can be generated independent of the transformation input, false otherwise
See also
CanOperateKeystream(), OperateKeystream(), WriteKeystream()

Definition at line 228 of file strciphr.h.

◆ OperateKeystream()

template<typename WT, unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>
virtual void AdditiveCipherConcretePolicy< WT, W, X, BASE >::OperateKeystream ( KeystreamOperation  operation,
byte *  output,
const byte *  input,
size_t  iterationCount 
)
pure virtual

Operates the keystream.

Parameters
operationthe operation with additional flags
outputthe output buffer
inputthe input buffer
iterationCountthe number of iterations to perform on the input

OperateKeystream() will attempt to operate upon GetOptimalBlockSize() buffer, which will be derived from GetBytesPerIteration().

See also
CanOperateKeystream(), OperateKeystream(), WriteKeystream(), KeystreamOperation()

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