rc5.h
Go to the documentation of this file.
// rc5.h - originally written and placed in the public domain by Wei Dai
/// \file rc5.h
/// \brief Classes for the RC5 block cipher
#ifndef CRYPTOPP_RC5_H
#define CRYPTOPP_RC5_H
#include "seckey.h"
#include "secblock.h"
NAMESPACE_BEGIN(CryptoPP)
/// \brief RC5 block cipher information
/// \since Crypto++ 1.0
struct RC5_Info : public FixedBlockSize<8>, public VariableKeyLength<16, 0, 255>, public VariableRounds<16>
{
CRYPTOPP_STATIC_CONSTEXPR const char* StaticAlgorithmName() {return "RC5";}
typedef word32 RC5_WORD;
};
/// \brief RC5 block cipher
/// \sa <a href="http://www.cryptopp.com/wiki/RC5">RC5</a>
/// \since Crypto++ 1.0
class RC5 : public RC5_Info, public BlockCipherDocumentation
{
class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl<RC5_Info>
{
public:
void UncheckedSetKey(const byte *userKey, unsigned int length, const NameValuePairs &params);
protected:
unsigned int r; // number of rounds
SecBlock<RC5_WORD> sTable; // expanded key table
};
class CRYPTOPP_NO_VTABLE Enc : public Base
{
public:
void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
};
class CRYPTOPP_NO_VTABLE Dec : public Base
{
public:
void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
};
public:
typedef BlockCipherFinal<ENCRYPTION, Enc> Encryption;
typedef BlockCipherFinal<DECRYPTION, Dec> Decryption;
};
typedef RC5::Encryption RC5Encryption;
typedef RC5::Decryption RC5Decryption;
NAMESPACE_END
#endif
BlockCipherFinal< ENCRYPTION, Enc >
BlockCipherImpl
Provides a base implementation of Algorithm and SimpleKeyingInterface for block ciphers.
Definition: seckey.h:306
FixedBlockSize
Inherited by algorithms with fixed block size.
Definition: seckey.h:41
NameValuePairs
Interface for retrieving values given their names.
Definition: cryptlib.h:322
RC5
RC5 block cipher.
Definition: rc5.h:26
SecBlock< RC5_WORD >
VariableKeyLength
Inherited by keyed algorithms with variable key length.
Definition: seckey.h:166
VariableRounds
Inherited by algorithms with variable number of rounds.
Definition: seckey.h:65
word32
unsigned int word32
32-bit unsigned datatype
Definition: config_int.h:62
CryptoPP
Crypto++ library namespace.
secblock.h
Classes and functions for secure memory allocations.
seckey.h
Classes and functions for implementing secret key algorithms.
BlockCipherDocumentation
Provides Encryption and Decryption typedefs used by derived classes to implement a block cipher.
Definition: seckey.h:399
RC5_Info
RC5 block cipher information.
Definition: rc5.h:17