|
Crypto++
8.4
Free C++ class library of cryptographic schemes
|
Base class for additive stream ciphers with SymmetricCipher interface. More...
Inheritance diagram for AdditiveCipherTemplate< BASE >:Public Types | |
| typedef BASE::PolicyInterface | PolicyInterface |
Public Types inherited from AbstractPolicyHolder< AdditiveCipherAbstractPolicy, SymmetricCipher > | |
| typedef AdditiveCipherAbstractPolicy | PolicyInterface |
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... | |
Public Member Functions | |
| void | GenerateBlock (byte *output, size_t size) |
| Generate random array of bytes. More... | |
| void | ProcessData (byte *outString, const byte *inString, size_t length) |
| Apply keystream to data. More... | |
| void | Resynchronize (const byte *iv, int length=-1) |
| Resynchronize the cipher. More... | |
| unsigned int | OptimalBlockSize () const |
| Provides number of ideal bytes to process. More... | |
| unsigned int | GetOptimalNextBlockSize () const |
| Provides number of ideal bytes to process. More... | |
| unsigned int | OptimalDataAlignment () const |
| Provides number of ideal data alignment. More... | |
| bool | IsSelfInverting () const |
| Determines if the cipher is self inverting. More... | |
| bool | IsForwardTransformation () const |
| Determines if the cipher is a forward transformation. More... | |
| bool | IsRandomAccess () const |
| Flag indicating random access. More... | |
| void | Seek (lword position) |
| Seeks to a random position in the stream. More... | |
| std::string | AlgorithmProvider () const |
| Retrieve the provider of this algorithm. More... | |
Public Member Functions inherited from SimpleKeyingInterface | |
| virtual size_t | MinKeyLength () const =0 |
| Returns smallest valid key length. More... | |
| virtual size_t | MaxKeyLength () const =0 |
| Returns largest valid key length. More... | |
| virtual size_t | DefaultKeyLength () const =0 |
| Returns default key length. More... | |
| virtual size_t | GetValidKeyLength (size_t keylength) const =0 |
| Returns a valid key length for the algorithm. More... | |
| virtual bool | IsValidKeyLength (size_t keylength) const |
| Returns whether keylength is a valid key length. More... | |
| 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... | |
| virtual IV_Requirement | IVRequirement () const =0 |
| Minimal requirement for secure IVs. 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... | |
| virtual unsigned int | IVSize () const |
| Returns length of the IV accepted by this object. 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 | GetNextIV (RandomNumberGenerator &rng, byte *iv) |
| Retrieves a secure IV for the next message. More... | |
Public Member Functions inherited from 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 | GetOptimalBlockSizeUsed () const |
| Provides the number of bytes used in the current block when processing at optimal block size. More... | |
| virtual size_t | ProcessLastBlock (byte *outString, size_t outLength, const byte *inString, size_t inLength) |
| Encrypt or decrypt the last block of data. More... | |
| virtual unsigned int | MinLastBlockSize () const |
| Provides the size of the last block. More... | |
| virtual bool | IsLastBlockSpecial () const |
| Determines if the last block receives special processing. 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... | |
Public Member Functions inherited from 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 * | Clone () const |
| Copies this object. More... | |
Public Member Functions inherited from RandomNumberGenerator | |
| virtual void | IncorporateEntropy (const byte *input, size_t length) |
| Update RNG state with additional unpredictable values. More... | |
| virtual bool | CanIncorporateEntropy () const |
| Determines if a generator can accept additional entropy. More... | |
| virtual byte | GenerateByte () |
| Generate new random byte and return it. More... | |
| virtual unsigned int | GenerateBit () |
| Generate new random bit and return it. More... | |
| virtual word32 | GenerateWord32 (word32 min=0, word32 max=0xffffffffUL) |
| Generate a random 32 bit word in the range min to max, inclusive. More... | |
| virtual void | GenerateIntoBufferedTransformation (BufferedTransformation &target, const std::string &channel, lword length) |
| Generate random bytes into a BufferedTransformation. More... | |
| virtual void | DiscardBytes (size_t n) |
| Generate and discard n bytes. More... | |
| template<class IT > | |
| void | Shuffle (IT begin, IT end) |
| Randomly shuffle the specified array. More... | |
Base class for additive stream ciphers with SymmetricCipher interface.
| BASE | AbstractPolicyHolder base class |
Definition at line 299 of file strciphr.h.
|
virtual |
Generate random array of bytes.
| output | the byte buffer |
| size | the length of the buffer, in bytes All generated values are uniformly distributed over the range specified within the constraints of a particular generator. |
Reimplemented from RandomNumberGenerator.
|
virtual |
Apply keystream to data.
| outString | a buffer to write the transformed data |
| inString | a buffer to read the data |
| length | the size fo the buffers, in bytes This is the primary method to operate a stream cipher. For example:
size_t size = 30;
byte plain[size] = "Do or do not; there is no try";
byte cipher[size];
...
ChaCha20 chacha(key, keySize);
chacha.ProcessData(cipher, plain, size);
|
Implements StreamTransformation.
|
virtual |
Resynchronize the cipher.
| iv | a byte array used to resynchronize the cipher |
| length | the size of the IV array |
Reimplemented from SimpleKeyingInterface.
|
inlinevirtual |
Provides number of ideal bytes to process.
Reimplemented from StreamTransformation.
Definition at line 336 of file strciphr.h.
|
inline |
Provides number of ideal bytes to process.
Definition at line 342 of file strciphr.h.
|
inlinevirtual |
Provides number of ideal data alignment.
Reimplemented from StreamTransformation.
Definition at line 347 of file strciphr.h.
|
inlinevirtual |
Determines if the cipher is self inverting.
Implements StreamTransformation.
Definition at line 351 of file strciphr.h.
|
inlinevirtual |
Determines if the cipher is a forward transformation.
Implements StreamTransformation.
Definition at line 355 of file strciphr.h.
|
inlinevirtual |
Flag indicating random access.
Implements StreamTransformation.
Definition at line 360 of file strciphr.h.
|
virtual |
Seeks to a random position in the stream.
| position | the absolute position in the stream |
Reimplemented from StreamTransformation.
|
inlinevirtual |
Retrieve the provider of this algorithm.
AES/GCM returns "AESNI" rather than "CLMUL" or "AES+SSE4.1" or "AES+CLMUL" or "AES+SSE4.1+CLMUL". Reimplemented from Algorithm.
Definition at line 381 of file strciphr.h.