14#define HashWordPtr(x) ((HashWordType*)(void*)(x))
15#define ConstHashWordPtr(x) ((const HashWordType*)(const void*)(x))
24 static std::string StaticAlgorithmName() {
return std::string(
"MDC/")+B::StaticAlgorithmName();}
37 typedef typename H::HashWordType HashWordType;
40 void UncheckedSetKey(
const byte *userKey,
unsigned int length,
const NameValuePairs ¶ms)
42 CRYPTOPP_UNUSED(params);
43 this->AssertValidKeyLength(length);
47 void ProcessAndXorBlock(
const byte *inBlock,
const byte *xorBlock,
byte *outBlock)
const
50 H::Transform(Buffer(), Key());
55 xorbuf(outBlock, xorBlock, m_buffer, this->BLOCKSIZE);
63 bool IsPermutation()
const {
return false;}
65 unsigned int OptimalDataAlignment()
const {
return sizeof(HashWordType);}
68 HashWordType *Key() {
return HashWordPtr(m_key.data());}
69 const HashWordType *Key()
const {
return ConstHashWordPtr(m_key.data());}
70 HashWordType *Buffer()
const {
return HashWordPtr(m_buffer.data());}
Allocates a block of memory with cleanup.
Provides class member functions to key a block cipher.
Provides a base implementation of Algorithm and SimpleKeyingInterface for block ciphers.
Inherited by algorithms with fixed block size.
Inherited by keyed algorithms with fixed key length.
Fixed size stack-based SecBlock.
Interface for retrieving values given their names.
@ BIG_ENDIAN_ORDER
byte order is big-endian
Utility functions for the Crypto++ library.
T ConditionalByteReverse(ByteOrder order, T value)
Reverses bytes in a value depending upon endianness.
CRYPTOPP_DLL void xorbuf(byte *buf, const byte *mask, size_t count)
Performs an XOR of a buffer with a mask.
Crypto++ library namespace.
Classes and functions for secure memory allocations.
Classes and functions for implementing secret key algorithms.
MDC_Info cipher information.