Security Scol plugin
|
Sosemanuk stream cipher implementation. More...
#include <sosemanuk.h>
Protected Member Functions | |
std::string | AlgorithmProvider () const |
Retrieve the provider of this algorithm. | |
void | CipherSetKey (const NameValuePairs ¶ms, const byte *key, size_t length) |
Key the cipher. | |
void | OperateKeystream (KeystreamOperation operation, byte *output, const byte *input, size_t iterationCount) |
Operates the keystream. | |
void | CipherResynchronize (byte *keystreamBuffer, const byte *iv, size_t length) |
Resynchronize the cipher. | |
bool | CipherIsRandomAccess () const |
Flag indicating random access. | |
Protected Attributes | |
FixedSizeSecBlock< word32, 25 *4 > | m_key |
FixedSizeAlignedSecBlock< word32, 12 > | m_state |
Additional Inherited Members | |
Public Types inherited from AdditiveCipherConcretePolicy< word32, 20 > | |
typedef word32 | WordType |
Word type for the cipher. | |
Public Member Functions inherited from AdditiveCipherConcretePolicy< word32, 20 > | |
CRYPTOPP_CONSTANT (BYTES_PER_ITERATION=sizeof(WordType) *W) | |
Number of bytes for an iteration. | |
unsigned int | GetAlignment () const |
Provides data alignment requirements. | |
unsigned int | GetBytesPerIteration () const |
Provides number of bytes operated upon during an iteration. | |
unsigned int | GetIterationsToBuffer () const |
Provides buffer size based on iterations. | |
bool | CanOperateKeystream () const |
Flag indicating. | |
Public Member Functions inherited from AdditiveCipherAbstractPolicy | |
virtual unsigned int | GetOptimalBlockSize () const |
Provides number of ideal bytes to process. | |
virtual void | WriteKeystream (byte *keystream, size_t iterationCount) |
Generate the keystream. | |
virtual void | SeekToIteration (lword iterationCount) |
Seeks to a random position in the stream. | |
Public Member Functions inherited from SosemanukInfo | |
CRYPTOPP_STATIC_CONSTEXPR const char * | StaticAlgorithmName () |
Public Member Functions inherited from VariableKeyLength< 16, 1, 32, 1, SimpleKeyingInterface::UNIQUE_IV, 16 > | |
CRYPTOPP_CONSTANT (MIN_KEYLENGTH=N) | |
The minimum key length used by the algorithm provided as a constant. | |
CRYPTOPP_CONSTANT (MAX_KEYLENGTH=M) | |
The maximum key length used by the algorithm provided as a constant. | |
CRYPTOPP_CONSTANT (DEFAULT_KEYLENGTH=D) | |
The default key length used by the algorithm provided as a constant. | |
CRYPTOPP_CONSTANT (KEYLENGTH_MULTIPLE=Q) | |
The key length multiple used by the algorithm provided as a constant. | |
CRYPTOPP_CONSTANT (IV_REQUIREMENT=IV_REQ) | |
The default IV requirements for the algorithm provided as a constant. | |
CRYPTOPP_CONSTANT (IV_LENGTH=IV_L) | |
The default initialization vector length for the algorithm provided as a constant. | |
CRYPTOPP_STATIC_CONSTEXPR size_t CRYPTOPP_API | StaticGetValidKeyLength (size_t keylength) |
Provides a valid key length for the algorithm provided by a static function. | |
Sosemanuk stream cipher implementation.
Definition at line 30 of file sosemanuk.h.
|
protectedvirtual |
Retrieve the provider of this algorithm.
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".
Reimplemented from AdditiveCipherAbstractPolicy.
Definition at line 22 of file sosemanuk.cpp.
|
inlineprotectedvirtual |
Flag indicating random access.
Implements AdditiveCipherAbstractPolicy.
Definition at line 37 of file sosemanuk.h.
|
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 39 of file sosemanuk.cpp.
|
protectedvirtual |
Key the cipher.
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 |
Implements AdditiveCipherAbstractPolicy.
Definition at line 33 of file sosemanuk.cpp.
|
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().
Implements AdditiveCipherConcretePolicy< word32, 20 >.
Definition at line 338 of file sosemanuk.cpp.
|
protected |
Definition at line 43 of file sosemanuk.h.
|
protected |
Definition at line 44 of file sosemanuk.h.