Crypto++  8.2
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
 Word type for the cipher.
 

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
 Number of bytes for an iteration. More...
 

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 221 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 227 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 231 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 237 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()

Member Data Documentation

◆ BYTES_PER_ITERATION

template<typename WT, unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>
const int AdditiveCipherConcretePolicy< WT, W, X, BASE >::BYTES_PER_ITERATION = sizeof(WordType) * W
static

Number of bytes for an iteration.

BYTES_PER_ITERATION is the product sizeof(WordType) * W. For example, ChaCha uses 16 each word32, and the value of BYTES_PER_ITERATION is 64. Each invocation of the ChaCha block function produces 64 bytes of keystream.

Definition at line 211 of file strciphr.h.


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