Crypto++ 8.9 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
| inline virtual

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

Provides number of bytes operated upon during an iteration.

Returns
  bytes operated upon during an iteration, in bytes

See also
  GetOptimalBlockSize()

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

## ◆ GetOptimalBlockSize()

virtual unsigned int AdditiveCipherAbstractPolicy::GetOptimalBlockSize | ( |  | ) | const
| inline virtual

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

Provides buffer size based on iterations.

Returns
  the buffer size based on iterations, in bytes

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

## ◆ WriteKeystream()

virtual void AdditiveCipherAbstractPolicy::WriteKeystream | ( | byte * | keystream,
|  | size_t | iterationCount
| ) |  |
| inline virtual

Generate the keystream.

Parameters

  keystream | the key stream
  iterationCount | the 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
| inline virtual

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

## ◆ OperateKeystream()

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

Operates the keystream.

Parameters

  operation | the operation with additional flags
  output | the output buffer
  input | the input buffer
  iterationCount | the 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

  params | set of NameValuePairs use to initialize this object
  key | a byte array used to key the cipher
  length | the size of the key array

Implemented in XSalsa20_Policy.

## ◆ CipherResynchronize()

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

Resynchronize the cipher.

Parameters

  keystreamBuffer | the keystream buffer
  iv | a byte array used to resynchronize the cipher
  length | the 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 | ) |
| inline virtual

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
| inline virtual

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:

- strciphr.h