Crypto++  8.8
Free C++ class library of cryptographic schemes
Public Member Functions | List of all members
AdditiveCipherAbstractPolicy Struct 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...
 
virtual std::string AlgorithmProvider () const
 Retrieve the provider of this algorithm. More...
 

Detailed Description

Policy object for additive stream ciphers.

Definition at line 104 of file strciphr.h.

Member Function Documentation

◆ GetAlignment()

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< WT, W, X, BASE >, AdditiveCipherConcretePolicy< word32, 20 >, AdditiveCipherConcretePolicy< word32, 4 >, AdditiveCipherConcretePolicy< word32, 8 >, AdditiveCipherConcretePolicy< word32, 256 >, AdditiveCipherConcretePolicy< word32, 16 >, and AdditiveCipherConcretePolicy< word32, 1, 64 >.

Definition at line 112 of file strciphr.h.

◆ GetBytesPerIteration()

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

◆ GetOptimalBlockSize()

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 123 of file strciphr.h.

◆ GetIterationsToBuffer()

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

◆ WriteKeystream()

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 133 of file strciphr.h.

◆ CanOperateKeystream()

virtual bool AdditiveCipherAbstractPolicy::CanOperateKeystream ( ) const
inlinevirtual

◆ OperateKeystream()

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< WT, W, X, BASE >, AdditiveCipherConcretePolicy< word32, 20 >, AdditiveCipherConcretePolicy< word32, 4 >, AdditiveCipherConcretePolicy< word32, 8 >, AdditiveCipherConcretePolicy< word32, 256 >, AdditiveCipherConcretePolicy< word32, 16 >, and AdditiveCipherConcretePolicy< word32, 1, 64 >.

Definition at line 149 of file strciphr.h.

◆ CipherSetKey()

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.

◆ CipherResynchronize()

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 163 of file strciphr.h.

◆ CipherIsRandomAccess()

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.

◆ SeekToIteration()

virtual void AdditiveCipherAbstractPolicy::SeekToIteration ( lword  iterationCount)
inlinevirtual

Seeks to a random position in the stream.

See also
CipherIsRandomAccess()

Definition at line 174 of file strciphr.h.

◆ AlgorithmProvider()

virtual std::string AdditiveCipherAbstractPolicy::AlgorithmProvider ( ) const
inlinevirtual

Retrieve the provider of this algorithm.

Returns
the algorithm provider

The algorithm provider can be a name like "C++", "SSE", "NEON", "AESNI", "ARMv8" and "Power8". C++ is standard C++ code. Other labels, like SSE, usually indicate a specialized implementation using instructions from a higher instruction set architecture (ISA). Future labels may include external hardware like a hardware security module (HSM).

Generally speaking Wei Dai's original IA-32 ASM code falls under "SSE2". Labels like "SSSE3" and "SSE4.1" follow after Wei's code and use intrinsics instead of ASM.

Algorithms which combine different instructions or ISAs provide the dominant one. For example on x86 AES/GCM returns "AESNI" rather than "CLMUL" or "AES+SSE4.1" or "AES+CLMUL" or "AES+SSE4.1+CLMUL".

Note
Provider is not universally implemented yet.

Definition at line 192 of file strciphr.h.


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