24 : m_threshold (0), m_channelsReady(0), m_channelsFinished(0)
27 unsigned int GetThreshold()
const {
return m_threshold;}
28 void AddOutputChannel(word32 channelId);
29 void ChannelData(word32 channelId,
const byte *inString,
size_t length,
bool messageEnd);
30 lword InputBuffered(word32 channelId)
const;
33 size_t ChannelPut2(
const std::string &channel,
const byte *begin,
size_t length,
int messageEnd,
bool blocking)
37 ChannelData(StringToWord<word32>(channel), begin, length, messageEnd != 0);
42 virtual void FlushOutputQueues();
43 virtual void OutputMessageEnds();
45 unsigned int InsertInputChannel(word32 channelId);
46 unsigned int LookupInputChannel(word32 channelId)
const;
47 void ComputeV(
unsigned int);
48 void PrepareInterpolation();
49 void ProcessInputQueues();
51 typedef std::map<word32, unsigned int> InputChannelMap;
52 InputChannelMap m_inputChannelMap;
53 InputChannelMap::iterator m_lastMapPosition;
54 std::vector<MessageQueue> m_inputQueues;
55 std::vector<word32> m_inputChannelIds, m_outputChannelIds, m_outputToInput;
56 std::vector<std::string> m_outputChannelIdStrings;
57 std::vector<ByteQueue> m_outputQueues;
59 unsigned int m_channelsReady, m_channelsFinished;
60 std::vector<SecBlock<word32> > m_v;
76 size_t Put2(
const byte *begin,
size_t length,
int messageEnd,
bool blocking);
77 bool Flush(
bool hardFlush,
int propagation=-1,
bool blocking=
true) {
return m_ida.Flush(hardFlush, propagation, blocking);}
96 void FlushOutputQueues();
97 void OutputMessageEnds();
107 : m_ida(
new OutputProxy(*
this,
true)), m_pad(
false), m_nextChannel(0)
114 size_t Put2(
const byte *begin,
size_t length,
int messageEnd,
bool blocking);
115 bool Flush(
bool hardFlush,
int propagation=-1,
bool blocking=
true) {
return m_ida.Flush(hardFlush, propagation, blocking);}
120 unsigned int m_nextChannel;
128 :
RawIDA(attachment), m_pad(
false)
134 void FlushOutputQueues();
135 void OutputMessageEnds();
145 : m_possiblePadding(
false), m_zeroCount(0) {
Detach(attachment);}
148 {CRYPTOPP_UNUSED(parameters); m_possiblePadding =
false;}
149 size_t Put2(
const byte *begin,
size_t length,
int messageEnd,
bool blocking);
152 bool GetPossiblePadding()
const {
return m_possiblePadding;}
155 bool m_possiblePadding;
void IsolatedInitialize(const NameValuePairs ¶meters)
Initialize or reinitialize this object, without signal propagation.
Utility functions for the Crypto++ library.
base class for secret sharing and information dispersal
Abstract base classes that provide a uniform interface to this library.
size_t ChannelPut2(const std::string &channel, const byte *begin, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing on a channel.
Interface for random number generators.
bool Flush(bool hardFlush, int propagation=-1, bool blocking=true)
Flush buffered input and/or output, with signal propagation.
Provides interface for custom flush signals.
Classes for multiple named channels.
Classes and functions for secure memory allocations.
void Detach(BufferedTransformation *newAttachment=NULL)
Replace an attached transformation.
AlgorithmParameters MakeParameters(const char *name, const T &value, bool throwIfNotUsed=true)
Create an object that implements NameValuePairs.
const NameValuePairs & g_nullNameValuePairs
An empty set of name-value pairs.
size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing.
Implementation of BufferedTransformation's attachment interface in cryptlib.h.
Base class for unflushable filters.
Provides auto signaling support.
Implementation of BufferedTransformation's attachment interface.
void IsolatedInitialize(const NameValuePairs ¶meters=g_nullNameValuePairs)
Initialize or reinitialize this object, without signal propagation.
Crypto++ library namespace.
a variant of Shamir's Secret Sharing Algorithm
Provides multiple channels support for custom flush signal processing.
a variant of Shamir's Secret Sharing Algorithm
Interface for retrieving values given their names.