Crypto++  5.6.4
Free C++ class library of cryptographic schemes
Public Member Functions | List of all members
AdditiveCipherAbstractPolicy Class Referenceabstract

Policy object for additive stream ciphers. More...

+ Inheritance diagram for AdditiveCipherAbstractPolicy:

Public Member Functions

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...
 

Detailed Description

Policy object for additive stream ciphers.

Definition at line 108 of file strciphr.h.

Member Function Documentation

virtual unsigned int AdditiveCipherAbstractPolicy::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 in AdditiveCipherConcretePolicy< word32, 20 >, AdditiveCipherConcretePolicy< word32, 8 >, AdditiveCipherConcretePolicy< word32, 256 >, AdditiveCipherConcretePolicy< word32, 16 >, and AdditiveCipherConcretePolicy< word32, 1, 64 >.

Definition at line 116 of file strciphr.h.

virtual unsigned int AdditiveCipherAbstractPolicy::GetBytesPerIteration ( ) const
pure virtual

Provides number of bytes operated upon during an iteration.

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

Implemented in AdditiveCipherConcretePolicy< word32, 20 >, AdditiveCipherConcretePolicy< word32, 8 >, AdditiveCipherConcretePolicy< word32, 256 >, AdditiveCipherConcretePolicy< word32, 16 >, and AdditiveCipherConcretePolicy< word32, 1, 64 >.

virtual unsigned int AdditiveCipherAbstractPolicy::GetOptimalBlockSize ( ) const
inlinevirtual

Provides number of ideal bytes to process.

Returns
the ideal number of bytes to process

Internally, the default implementation returns GetBytesPerIteration()

See also
GetBytesPerIteration()

Definition at line 127 of file strciphr.h.

virtual unsigned int AdditiveCipherAbstractPolicy::GetIterationsToBuffer ( ) const
pure virtual
virtual void AdditiveCipherAbstractPolicy::WriteKeystream ( byte *  keystream,
size_t  iterationCount 
)
inlinevirtual

Generate the keystream.

Parameters
keystreamthe key stream
iterationCountthe number of iterations to generate the key stream
See also
CanOperateKeystream(), OperateKeystream(), WriteKeystream()

Definition at line 137 of file strciphr.h.

virtual bool AdditiveCipherAbstractPolicy::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 in AdditiveCipherConcretePolicy< word32, 20 >, AdditiveCipherConcretePolicy< word32, 8 >, AdditiveCipherConcretePolicy< word32, 256 >, AdditiveCipherConcretePolicy< word32, 16 >, and AdditiveCipherConcretePolicy< word32, 1, 64 >.

Definition at line 143 of file strciphr.h.

virtual void AdditiveCipherAbstractPolicy::OperateKeystream ( KeystreamOperation  operation,
byte *  output,
const byte *  input,
size_t  iterationCount 
)
inlinevirtual

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 in AdditiveCipherConcretePolicy< word32, 20 >, AdditiveCipherConcretePolicy< word32, 8 >, AdditiveCipherConcretePolicy< word32, 256 >, AdditiveCipherConcretePolicy< word32, 16 >, and AdditiveCipherConcretePolicy< word32, 1, 64 >.

Definition at line 153 of file strciphr.h.

virtual void AdditiveCipherAbstractPolicy::CipherSetKey ( const NameValuePairs params,
const byte *  key,
size_t  length 
)
pure virtual

Key the cipher.

Parameters
paramsset of NameValuePairs use to initialize this object
keya byte array used to key the cipher
lengththe size of the key array

Implemented in XSalsa20_Policy.

virtual void AdditiveCipherAbstractPolicy::CipherResynchronize ( byte *  keystreamBuffer,
const byte *  iv,
size_t  length 
)
inlinevirtual

Resynchronize the cipher.

Parameters
keystreamBufferthe keystream buffer
iva byte array used to resynchronize the cipher
lengththe size of the IV array

Reimplemented in XSalsa20_Policy.

Definition at line 166 of file strciphr.h.

virtual bool AdditiveCipherAbstractPolicy::CipherIsRandomAccess ( ) const
pure virtual

Flag indicating random access.

Returns
true if the cipher is seekable, false otherwise
See also
SeekToIteration()

Implemented in CTR_ModePolicy, and OFB_ModePolicy.

virtual void AdditiveCipherAbstractPolicy::SeekToIteration ( lword  iterationCount)
inlinevirtual

Seeks to a random position in the stream.

Returns
iterationCount
See also
CipherIsRandomAccess()

Definition at line 177 of file strciphr.h.


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