wake.h
Go to the documentation of this file.
// wake.h - originally written and placed in the public domain by Wei Dai
/// \file wake.h
/// \brief Classes for WAKE stream cipher
#ifndef CRYPTOPP_WAKE_H
#define CRYPTOPP_WAKE_H
#include "seckey.h"
#include "secblock.h"
#include "strciphr.h"
NAMESPACE_BEGIN(CryptoPP)
/// \brief WAKE stream cipher information
/// \tparam B Endianness of the stream cipher
/// \since Crypto++ 1.0
template <class B = BigEndian>
struct WAKE_OFB_Info : public FixedKeyLength<32>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return B::ToEnum() == LITTLE_ENDIAN_ORDER ? "WAKE-OFB-LE" : "WAKE-OFB-BE";}
};
class CRYPTOPP_NO_VTABLE WAKE_Base
{
protected:
word32 M(word32 x, word32 y);
void GenKey(word32 k0, word32 k1, word32 k2, word32 k3);
word32 t[257];
word32 r3, r4, r5, r6;
};
/// \brief WAKE stream cipher operation
/// \tparam B Endianness of the stream cipher
/// \since Crypto++ 1.0
template <class B = BigEndian>
class CRYPTOPP_NO_VTABLE WAKE_Policy : public AdditiveCipherConcretePolicy<word32, 1, 64>, protected WAKE_Base
{
protected:
void CipherSetKey(const NameValuePairs &params, const byte *key, size_t length);
// OFB
void OperateKeystream(KeystreamOperation operation, byte *output, const byte *input, size_t iterationCount);
bool CipherIsRandomAccess() const {return false;}
};
/// \brief WAKE stream cipher
/// \tparam B Endianness of the stream cipher
/// \since Crypto++ 1.0
template <class B = BigEndian>
struct WAKE_OFB : public WAKE_OFB_Info<B>, public SymmetricCipherDocumentation
{
typedef SymmetricCipherFinal<ConcretePolicyHolder<WAKE_Policy<B>, AdditiveCipherTemplate<> >, WAKE_OFB_Info<B> > Encryption;
typedef Encryption Decryption;
};
NAMESPACE_END
#endif
AdditiveCipherTemplate
Base class for additive stream ciphers with SymmetricCipher interface.
Definition strciphr.h:298
FixedKeyLength
Inherited by keyed algorithms with fixed key length.
Definition seckey.h:125
NameValuePairs
Interface for retrieving values given their names.
Definition cryptlib.h:327
SymmetricCipherFinal
SymmetricCipher implementation.
Definition strciphr.h:684
WAKE_Base
Definition wake.h:25
WAKE_Policy
WAKE stream cipher operation.
Definition wake.h:39
word32
unsigned int word32
32-bit unsigned datatype
Definition config_int.h:72
LITTLE_ENDIAN_ORDER
@ LITTLE_ENDIAN_ORDER
byte order is little-endian
Definition cryptlib.h:150
CryptoPP
Crypto++ library namespace.
secblock.h
Classes and functions for secure memory allocations.
seckey.h
Classes and functions for implementing secret key algorithms.
strciphr.h
Classes for implementing stream ciphers.
KeystreamOperation
KeystreamOperation
Keystream operation flags.
Definition strciphr.h:88
AdditiveCipherConcretePolicy
Base class for additive stream ciphers.
Definition strciphr.h:202
SymmetricCipherDocumentation
Provides Encryption and Decryption typedefs used by derived classes to implement a symmetric cipher.
Definition seckey.h:414
WAKE_OFB_Info
WAKE stream cipher information.
Definition wake.h:20
WAKE_OFB
WAKE stream cipher.
Definition wake.h:52