26 : m_channelsReady(0), m_channelsFinished(0), m_threshold (0)
29 unsigned int GetThreshold()
const {
return m_threshold;}
30 void AddOutputChannel(word32 channelId);
31 void ChannelData(word32 channelId,
const byte *inString,
size_t length,
bool messageEnd);
32 lword InputBuffered(word32 channelId)
const;
35 size_t ChannelPut2(
const std::string &channel,
const byte *begin,
size_t length,
int messageEnd,
bool blocking)
39 ChannelData(StringToWord<word32>(channel), begin, length, messageEnd != 0);
44 virtual void FlushOutputQueues();
45 virtual void OutputMessageEnds();
47 unsigned int InsertInputChannel(word32 channelId);
48 unsigned int LookupInputChannel(word32 channelId)
const;
49 void ComputeV(
unsigned int);
50 void PrepareInterpolation();
51 void ProcessInputQueues();
53 typedef std::map<word32, unsigned int> InputChannelMap;
54 InputChannelMap m_inputChannelMap;
55 InputChannelMap::iterator m_lastMapPosition;
56 std::vector<MessageQueue> m_inputQueues;
57 std::vector<word32> m_inputChannelIds, m_outputChannelIds, m_outputToInput;
58 std::vector<std::string> m_outputChannelIdStrings;
59 std::vector<ByteQueue> m_outputQueues;
60 std::vector<SecBlock<word32> > m_v;
63 unsigned int m_channelsReady, m_channelsFinished;
83 size_t Put2(
const byte *begin,
size_t length,
int messageEnd,
bool blocking);
84 bool Flush(
bool hardFlush,
int propagation=-1,
bool blocking=
true) {
return m_ida.Flush(hardFlush, propagation, blocking);}
107 void FlushOutputQueues();
108 void OutputMessageEnds();
124 : m_ida(new
OutputProxy(*this, true)), m_pad(false), m_nextChannel(0)
131 size_t Put2(
const byte *begin,
size_t length,
int messageEnd,
bool blocking);
132 bool Flush(
bool hardFlush,
int propagation=-1,
bool blocking=
true) {
return m_ida.Flush(hardFlush, propagation, blocking);}
137 unsigned int m_nextChannel;
149 :
RawIDA(attachment), m_pad(false)
155 void FlushOutputQueues();
156 void OutputMessageEnds();
166 : m_possiblePadding(
false), m_zeroCount(0) {
Detach(attachment);}
169 {CRYPTOPP_UNUSED(parameters); m_possiblePadding =
false;}
170 size_t Put2(
const byte *begin,
size_t length,
int messageEnd,
bool blocking);
173 bool GetPossiblePadding()
const {
return m_possiblePadding;}
176 bool m_possiblePadding;
void IsolatedInitialize(const NameValuePairs ¶meters)
Initialize or reinitialize this object, without signal propagation.
GF(2^32) with polynomial basis.
Utility functions for the Crypto++ library.
Secret sharing and information dispersal base class.
Filter class that is a proxy for a sink.
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.
void IsolatedInitialize(const NameValuePairs ¶meters=g_nullNameValuePairs)
Initialize or reinitialize this object, without signal propagation.
Interface for custom flush signals propagation.
Classes for multiple named channels.
Classes and functions for secure memory allocations.
Classes and functions for schemes over GF(2^32)
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.
SecretSharing(RandomNumberGenerator &rng, int threshold, int nShares, BufferedTransformation *attachment=NULL, bool addPadding=true)
Construct a SecretSharing.
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.
Data structure used to store byte strings.
Implementation of BufferedTransformation's attachment interface.
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.
SecretRecovery(int threshold, BufferedTransformation *attachment=NULL, bool removePadding=true)
Construct a SecretRecovery.
Crypto++ library namespace.
Shamir's Secret Sharing Algorithm.
size_t Put2(const byte *begin, size_t length, int messageEnd, bool blocking)
Input multiple bytes for processing.
Multiple channels support for custom signal processing.
Shamir's Secret Sharing Algorithm.
Interface for retrieving values given their names.