Fabcoin Core
0.16.2
P2P Digital Currency
|
CTR block cipher mode of operation. More...
#include <modes.h>
Public Member Functions | |
CRYPTOPP_STATIC_CONSTEXPR const char *CRYPTOPP_API | StaticAlgorithmName () |
virtual | ~CTR_ModePolicy () |
bool | CipherIsRandomAccess () const |
Flag indicating random access. More... | |
IV_Requirement | IVRequirement () const |
Minimal requirement for secure IVs. More... | |
Public Member Functions inherited from CipherModeBase | |
virtual | ~CipherModeBase () |
size_t | MinKeyLength () const |
Returns smallest valid key length. More... | |
size_t | MaxKeyLength () const |
Returns largest valid key length. More... | |
size_t | DefaultKeyLength () const |
Returns default key length. More... | |
size_t | GetValidKeyLength (size_t n) const |
Returns a valid key length for the algorithm. More... | |
bool | IsValidKeyLength (size_t n) const |
Returns whether keylength is a valid key length. More... | |
unsigned int | OptimalDataAlignment () const |
Provides input and output data alignment for optimal performance. More... | |
unsigned int | IVSize () const |
Returns length of the IV accepted by this object. More... | |
void | SetCipher (BlockCipher &cipher) |
void | SetCipherWithIV (BlockCipher &cipher, const byte *iv, int feedbackSize=0) |
Public Member Functions inherited from SimpleKeyingInterface | |
virtual | ~SimpleKeyingInterface () |
virtual void | SetKey (const byte *key, size_t length, const NameValuePairs ¶ms=g_nullNameValuePairs) |
Sets or reset the key of this object. More... | |
void | SetKeyWithRounds (const byte *key, size_t length, int rounds) |
Sets or reset the key of this object. More... | |
void | SetKeyWithIV (const byte *key, size_t length, const byte *iv, size_t ivLength) |
Sets or reset the key of this object. More... | |
void | SetKeyWithIV (const byte *key, size_t length, const byte *iv) |
Sets or reset the key of this object. More... | |
bool | IsResynchronizable () const |
Determines if the object can be resynchronized. More... | |
bool | CanUseRandomIVs () const |
Determines if the object can use random IVs. More... | |
bool | CanUsePredictableIVs () const |
Determines if the object can use random but possibly predictable IVs. More... | |
bool | CanUseStructuredIVs () const |
Determines if the object can use structured IVs. More... | |
unsigned int | DefaultIVLength () const |
Provides the default size of an IV. More... | |
virtual unsigned int | MinIVLength () const |
Provides the minimum size of an IV. More... | |
virtual unsigned int | MaxIVLength () const |
Provides the maximum size of an IV. More... | |
virtual void | Resynchronize (const byte *iv, int ivLength=-1) |
Resynchronize with an IV. More... | |
virtual void | GetNextIV (RandomNumberGenerator &rng, byte *iv) |
Retrieves a secure IV for the next message. More... | |
Public Member Functions inherited from StreamTransformation | |
virtual | ~StreamTransformation () |
StreamTransformation & | Ref () |
Provides a reference to this object. More... | |
virtual unsigned int | MandatoryBlockSize () const |
Provides the mandatory block size of the cipher. More... | |
virtual unsigned int | OptimalBlockSize () const |
Provides the input block size most efficient for this cipher. More... | |
virtual unsigned int | GetOptimalBlockSizeUsed () const |
Provides the number of bytes used in the current block when processing at optimal block size. More... | |
virtual void | ProcessData (byte *outString, const byte *inString, size_t length)=0 |
Encrypt or decrypt an array of bytes. More... | |
virtual void | ProcessLastBlock (byte *outString, const byte *inString, size_t length) |
Encrypt or decrypt the last block of data. More... | |
virtual unsigned int | MinLastBlockSize () const |
Provides the size of the last block. More... | |
void | ProcessString (byte *inoutString, size_t length) |
Encrypt or decrypt a string of bytes. More... | |
void | ProcessString (byte *outString, const byte *inString, size_t length) |
Encrypt or decrypt a string of bytes. More... | |
byte | ProcessByte (byte input) |
Encrypt or decrypt a byte. More... | |
virtual bool | IsRandomAccess () const =0 |
Determines whether the cipher supports random access. More... | |
virtual void | Seek (lword pos) |
Seek to an absolute position. More... | |
virtual bool | IsSelfInverting () const =0 |
Determines whether the cipher is self-inverting. More... | |
virtual bool | IsForwardTransformation () const =0 |
Determines if the cipher is being operated in its forward direction. More... | |
Public Member Functions inherited from Algorithm | |
virtual | ~Algorithm () |
Algorithm (bool checkSelfTestStatus=true) | |
Interface for all crypto algorithms. More... | |
virtual std::string | AlgorithmName () const |
Provides the name of this algorithm. More... | |
Public Member Functions inherited from Clonable | |
virtual | ~Clonable () |
virtual Clonable * | Clone () const |
Copies this object. More... | |
Public Member Functions inherited from AdditiveCipherAbstractPolicy | |
virtual | ~AdditiveCipherAbstractPolicy () |
virtual unsigned int | GetOptimalBlockSize () const |
Provides number of ideal bytes to process. More... | |
Protected Member Functions | |
virtual void | IncrementCounterBy256 () |
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... | |
void | WriteKeystream (byte *buffer, size_t iterationCount) |
Generate the keystream. More... | |
bool | CanOperateKeystream () const |
Flag indicating. More... | |
void | OperateKeystream (KeystreamOperation operation, byte *output, const byte *input, size_t iterationCount) |
Operates the keystream. More... | |
void | CipherResynchronize (byte *keystreamBuffer, const byte *iv, size_t length) |
Resynchronize the cipher. More... | |
void | SeekToIteration (lword iterationCount) |
Seeks to a random position in the stream. More... | |
Protected Member Functions inherited from CipherModeBase | |
CipherModeBase () | |
unsigned int | BlockSize () const |
virtual void | SetFeedbackSize (unsigned int feedbackSize) |
virtual void | ResizeBuffers () |
Protected Member Functions inherited from SymmetricCipher | |
const Algorithm & | GetAlgorithm () const |
Returns the base class Algorithm. More... | |
Protected Member Functions inherited from SimpleKeyingInterface | |
virtual void | UncheckedSetKey (const byte *key, unsigned int length, const NameValuePairs ¶ms)=0 |
Sets the key for this object without performing parameter validation. More... | |
void | ThrowIfInvalidKeyLength (size_t length) |
Validates the key length. More... | |
void | ThrowIfResynchronizable () |
Validates the object. More... | |
void | ThrowIfInvalidIV (const byte *iv) |
Validates the IV. More... | |
size_t | ThrowIfInvalidIVLength (int length) |
Validates the IV length. More... | |
const byte * | GetIVAndThrowIfInvalid (const NameValuePairs ¶ms, size_t &size) |
Retrieves and validates the IV. More... | |
void | AssertValidKeyLength (size_t length) const |
Validates the key length. More... | |
Protected Attributes | |
AlignedSecByteBlock | m_counterArray |
Protected Attributes inherited from CipherModeBase | |
BlockCipher * | m_cipher |
AlignedSecByteBlock | m_register |
Additional Inherited Members | |
Public Types inherited from SimpleKeyingInterface | |
enum | IV_Requirement { UNIQUE_IV = 0, RANDOM_IV, UNPREDICTABLE_RANDOM_IV, INTERNALLY_GENERATED_IV, NOT_RESYNCHRONIZABLE } |
Secure IVs requirements as enumerated values. More... | |
|
inlineprotectedvirtual |
Flag indicating.
Reimplemented from AdditiveCipherAbstractPolicy.
|
inlinevirtual |
Flag indicating random access.
Implements AdditiveCipherAbstractPolicy.
|
protectedvirtual |
Resynchronize the cipher.
keystreamBuffer | the keystream buffer |
iv | a byte array used to resynchronize the cipher |
length | the size of the IV array |
Reimplemented from AdditiveCipherAbstractPolicy.
Definition at line 142 of file modes.cpp.
|
inlineprotectedvirtual |
Provides data alignment requirements.
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.
|
inlineprotectedvirtual |
Provides number of bytes operated upon during an iteration.
Implements AdditiveCipherAbstractPolicy.
|
inlineprotectedvirtual |
Provides buffer size based on iterations.
Implements AdditiveCipherAbstractPolicy.
|
protectedvirtual |
Reimplemented in GCM_Base::GCTR.
Definition at line 117 of file modes.cpp.
|
inlinevirtual |
Minimal requirement for secure IVs.
Implements CipherModeBase.
|
protectedvirtual |
Operates the keystream.
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().
Reimplemented from AdditiveCipherAbstractPolicy.
Definition at line 122 of file modes.cpp.
|
protectedvirtual |
Seeks to a random position in the stream.
Reimplemented from AdditiveCipherAbstractPolicy.
Definition at line 105 of file modes.cpp.
|
inline |
|
inlineprotectedvirtual |
Generate the keystream.
keystream | the key stream |
iterationCount | the number of iterations to generate the key stream |
Reimplemented from AdditiveCipherAbstractPolicy.
|
protected |