Crypto++ 8.7
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...

#include <strciphr.h>

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

Public Types

typedef WT WordType
 Word type for the cipher. More...
 

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...
 
- Public Member Functions inherited from AdditiveCipherAbstractPolicy
virtual unsigned int GetAlignment () const
 Provides data alignment requirements. More...
 
virtual unsigned int GetBytesPerIteration () const =0
 Provides number of bytes operated upon during an iteration. More...
 
virtual unsigned int GetOptimalBlockSize () const
 Provides number of ideal bytes to process. More...
 
virtual unsigned int GetIterationsToBuffer () const =0
 Provides buffer size based on iterations. More...
 
virtual void WriteKeystream (byte *keystream, size_t iterationCount)
 Generate the keystream. More...
 
virtual bool CanOperateKeystream () const
 Flag indicating. More...
 
virtual void OperateKeystream (KeystreamOperation operation, byte *output, const byte *input, size_t iterationCount)
 Operates the keystream. More...
 
virtual void CipherSetKey (const NameValuePairs &params, const byte *key, size_t length)=0
 Key the cipher. More...
 
virtual void CipherResynchronize (byte *keystreamBuffer, const byte *iv, size_t length)
 Resynchronize the cipher. More...
 
virtual bool CipherIsRandomAccess () const =0
 Flag indicating random access. More...
 
virtual void SeekToIteration (lword iterationCount)
 Seeks to a random position in the stream. More...
 
virtual std::string AlgorithmProvider () const
 Retrieve the provider of this algorithm. 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 Typedef Documentation

◆ WordType

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

Word type for the cipher.

Definition at line 204 of file strciphr.h.

Constructor & Destructor Documentation

◆ ~AdditiveCipherConcretePolicy()

template<typename WT , unsigned int W, unsigned int X = 1, class BASE = AdditiveCipherAbstractPolicy>
virtual AdditiveCipherConcretePolicy< WT, W, X, BASE >::~AdditiveCipherConcretePolicy ( )
inlinevirtual

Definition at line 213 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
inlinevirtual

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.

Reimplemented from AdditiveCipherAbstractPolicy.

Definition at line 220 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
inlinevirtual

Provides number of bytes operated upon during an iteration.

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

Implements AdditiveCipherAbstractPolicy.

Definition at line 225 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
inlinevirtual

Provides buffer size based on iterations.

Returns
the buffer size based on iterations, in bytes

Implements AdditiveCipherAbstractPolicy.

Definition at line 229 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
inlinevirtual

Flag indicating.

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

Reimplemented from AdditiveCipherAbstractPolicy.

Definition at line 235 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()

Reimplemented from AdditiveCipherAbstractPolicy.

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: