Crypto++
8.2
Free C++ class library of cryptographic schemes
|
Go to the documentation of this file.
6 #ifndef CRYPTOPP_SIMPLE_H
7 #define CRYPTOPP_SIMPLE_H
11 #if CRYPTOPP_MSC_VERSION
12 # pragma warning(push)
13 # pragma warning(disable: 4127 4189)
24 template <
class DERIVED,
class BASE>
28 Clonable * Clone()
const {
return new DERIVED(*
static_cast<const DERIVED *
>(
this));}
35 template <
class BASE,
class ALGORITHM_INFO=BASE>
43 static std::string CRYPTOPP_API StaticAlgorithmName() {
return ALGORITHM_INFO::StaticAlgorithmName();}
48 std::string
AlgorithmName()
const {
return ALGORITHM_INFO::StaticAlgorithmName();}
101 bool IsolatedFlush(
bool hardFlush,
bool blocking)
102 {CRYPTOPP_UNUSED(hardFlush); CRYPTOPP_UNUSED(blocking);
return false;}
111 bool Flush(
bool completeFlush,
int propagation=-1,
bool blocking=
true)
112 {
return ChannelFlush(
DEFAULT_CHANNEL, completeFlush, propagation, blocking);}
113 bool IsolatedFlush(
bool hardFlush,
bool blocking)
114 {CRYPTOPP_UNUSED(hardFlush); CRYPTOPP_UNUSED(blocking);
CRYPTOPP_ASSERT(
false);
return false;}
115 bool ChannelFlush(
const std::string &channel,
bool hardFlush,
int propagation=-1,
bool blocking=
true)
117 if (hardFlush && !InputBufferIsEmpty())
118 throw CannotFlush(
"Unflushable<T>: this object has buffered input that cannot be flushed");
122 return attached && propagation ? attached->
ChannelFlush(channel, hardFlush, propagation-1, blocking) :
false;
127 virtual bool InputBufferIsEmpty()
const {
return false;}
151 size_t Put2(
const byte *inString,
size_t length,
int messageEnd,
bool blocking)
152 {CRYPTOPP_UNUSED(inString); CRYPTOPP_UNUSED(length); CRYPTOPP_UNUSED(messageEnd); CRYPTOPP_UNUSED(blocking);
throw InputRejected();}
157 bool IsolatedFlush(
bool hardFlush,
bool blocking)
158 {CRYPTOPP_UNUSED(hardFlush); CRYPTOPP_UNUSED(blocking);
return false;}
159 bool IsolatedMessageSeriesEnd(
bool blocking)
160 {CRYPTOPP_UNUSED(blocking);
throw InputRejected();}
161 size_t ChannelPut2(
const std::string &channel,
const byte *inString,
size_t length,
int messageEnd,
bool blocking)
162 {CRYPTOPP_UNUSED(channel); CRYPTOPP_UNUSED(inString); CRYPTOPP_UNUSED(length); CRYPTOPP_UNUSED(messageEnd); CRYPTOPP_UNUSED(blocking);
throw InputRejected();}
163 bool ChannelMessageSeriesEnd(
const std::string& channel,
int messageEnd,
bool blocking)
164 {CRYPTOPP_UNUSED(channel); CRYPTOPP_UNUSED(messageEnd); CRYPTOPP_UNUSED(blocking);
throw InputRejected();}
191 virtual bool Flush(
bool hardFlush,
int propagation=-1,
bool blocking=
true) =0;
196 bool IsolatedFlush(
bool hardFlush,
bool blocking)
197 {CRYPTOPP_UNUSED(hardFlush); CRYPTOPP_UNUSED(blocking);
CRYPTOPP_ASSERT(
false);
return false;}
228 bool Flush(
bool hardFlush,
int propagation=-1,
bool blocking=
true)
229 {
return this->ChannelFlush(
DEFAULT_CHANNEL, hardFlush, propagation, blocking);}
240 {
return this->ChannelMessageSeriesEnd(
DEFAULT_CHANNEL, propagation, blocking);}
260 size_t Put2(
const byte *inString,
size_t length,
int messageEnd,
bool blocking)
261 {
return this->ChannelPut2(
DEFAULT_CHANNEL, inString, length, messageEnd, blocking);}
269 size_t PutModifiable2(
byte *inString,
size_t length,
int messageEnd,
bool blocking)
270 {
return this->ChannelPutModifiable2(
DEFAULT_CHANNEL, inString, length, messageEnd, blocking);}
274 byte * ChannelCreatePutSpace(
const std::string &channel,
size_t &size)
275 {CRYPTOPP_UNUSED(channel); size = 0;
return NULLPTR;}
276 bool ChannelPutModifiable(
const std::string &channel,
byte *inString,
size_t length)
277 {this->ChannelPut(channel, inString, length);
return false;}
279 virtual size_t ChannelPut2(
const std::string &channel,
const byte *begin,
size_t length,
int messageEnd,
bool blocking) =0;
280 size_t ChannelPutModifiable2(
const std::string &channel,
byte *begin,
size_t length,
int messageEnd,
bool blocking)
281 {
return ChannelPut2(channel, begin, length, messageEnd, blocking);}
283 virtual bool ChannelFlush(
const std::string &channel,
bool hardFlush,
int propagation=-1,
bool blocking=
true) =0;
296 void SetAutoSignalPropagation(
int propagation)
297 {m_autoSignalPropagation = propagation;}
298 int GetAutoSignalPropagation()
const
299 {
return m_autoSignalPropagation;}
302 int m_autoSignalPropagation;
306 class CRYPTOPP_DLL CRYPTOPP_NO_VTABLE
Store :
public AutoSignaling<InputRejecting<BufferedTransformation> >
314 m_messageEnd =
false;
315 StoreInitialize(parameters);
319 bool GetNextMessage();
323 virtual void StoreInitialize(
const NameValuePairs ¶meters) =0;
341 {CRYPTOPP_UNUSED(target); CRYPTOPP_UNUSED(transferBytes); CRYPTOPP_UNUSED(channel); CRYPTOPP_UNUSED(blocking); transferBytes = 0;
return 0;}
343 {CRYPTOPP_UNUSED(target); CRYPTOPP_UNUSED(begin); CRYPTOPP_UNUSED(end); CRYPTOPP_UNUSED(channel); CRYPTOPP_UNUSED(blocking);
return 0;}
354 {CRYPTOPP_UNUSED(params);}
355 size_t Put2(
const byte *inString,
size_t length,
int messageEnd,
bool blocking)
356 {CRYPTOPP_UNUSED(inString); CRYPTOPP_UNUSED(length); CRYPTOPP_UNUSED(messageEnd); CRYPTOPP_UNUSED(blocking);
return 0;}
361 #if CRYPTOPP_MSC_VERSION
362 # pragma warning(pop)
Multiple channels support for custom signal processing.
AutoSignaling(int propagation=-1)
Construct an AutoSignaling.
virtual bool Flush(bool hardFlush, int propagation=-1, bool blocking=true)=0
Flush buffered input and/or output, with signal propagation.
A method was called which was not implemented.
Exception thrown when an invalid derived key length is encountered.
bool MessageSeriesEnd(int propagation=-1, bool blocking=true)
Marks the end of a series of messages, with signal propagation.
void IsolatedInitialize(const NameValuePairs ¶meters)
Initialize or reinitialize this object, without signal propagation.
void IsolatedInitialize(const NameValuePairs ¶ms)
Initialize or reinitialize this object, without signal propagation.
size_t PutModifiable2(byte *inString, size_t length, int messageEnd, bool blocking)
Input multiple bytes that may be modified by callee.
Exception thrown when an invalid salt length is encountered.
Store()
Construct a Store.
Interface for cloning objects.
#define CRYPTOPP_ASSERT(exp)
Debugging and diagnostic assertion.
Implementation of BufferedTransformation's attachment interface.
Acts as a Source for pre-existing, static data.
const std::string DEFAULT_CHANNEL
Default channel for BufferedTransformation.
Acts as an input discarding Filter or Sink.
size_t Put2(const byte *inString, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing.
unsigned int NumberOfMessages() const
Provides the number of meesages processed by this object.
Interface for custom flush signals.
size_t TransferTo2(BufferedTransformation &target, lword &transferBytes, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true)
Transfer bytes from this object to another BufferedTransformation.
Exception thrown when an invalid personalization string length is encountered.
Utility functions for the Crypto++ library.
byte * CreatePutSpace(size_t &size)
Request space which can be written into by the caller.
Interface for custom flush signals propagation.
size_t CopyRangeTo2(BufferedTransformation &target, lword &begin, lword end=LWORD_MAX, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true) const
Copy bytes from this object to another BufferedTransformation.
Exception thrown when an invalid number of rounds is encountered.
std::string IntToString(T value, unsigned int base=10)
Converts a value to a string.
bool Flush(bool hardFlush, int propagation=-1, bool blocking=true)
Flush buffered input and/or output, with signal propagation.
Base class for unflushable filters.
Provides auto signaling support.
size_t Put2(const byte *inString, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing.
Base class for bufferless filters.
An invalid argument was detected.
std::string AlgorithmName() const
The algorithm name.
const NameValuePairs & g_nullNameValuePairs
An empty set of name-value pairs.
Base class for identifying alogorithm.
Crypto++ library namespace.
Library configuration file.
Exception thrown when an invalid block size is encountered.
Exception thrown when an invalid key length is encountered.
virtual void Initialize(const NameValuePairs ¶meters=g_nullNameValuePairs, int propagation=-1)=0
Initialize or reinitialize this object, with signal propagation.
Interface for retrieving values given their names.
Abstract base classes that provide a uniform interface to this library.
std::string AlgorithmName() const
Provides the name of this algorithm.
Flush(true) was called but it can't completely flush its buffers.