Fabcoin Core
0.16.2
P2P Digital Currency
|
Filter wrapper for HashTransformation. More...
#include <filters.h>
Classes | |
class | HashVerificationFailed |
Exception thrown when a data integrity check failure is encountered. More... | |
Public Types | |
enum | Flags { HASH_AT_END =0, HASH_AT_BEGIN =1, PUT_MESSAGE =2, PUT_HASH =4, PUT_RESULT =8, THROW_EXCEPTION =16, DEFAULT_FLAGS = HASH_AT_BEGIN | PUT_RESULT } |
Flags controlling filter behavior. More... | |
Public Member Functions | |
virtual | ~HashVerificationFilter () |
HashVerificationFilter (HashTransformation &hm, BufferedTransformation *attachment=NULL, word32 flags=DEFAULT_FLAGS, int truncatedDigestSize=-1) | |
Construct a HashVerificationFilter. More... | |
std::string | AlgorithmName () const |
Provides the name of this algorithm. More... | |
bool | GetLastResult () const |
Public Member Functions inherited from FilterWithBufferedInput | |
virtual | ~FilterWithBufferedInput () |
FilterWithBufferedInput (BufferedTransformation *attachment) | |
Construct a FilterWithBufferedInput with an attached transformation. More... | |
FilterWithBufferedInput (size_t firstSize, size_t blockSize, size_t lastSize, BufferedTransformation *attachment) | |
Construct a FilterWithBufferedInput with an attached transformation. More... | |
void | IsolatedInitialize (const NameValuePairs ¶meters) |
Initialize or reinitialize this object, without signal propagation. More... | |
size_t | Put2 (const byte *inString, size_t length, int messageEnd, bool blocking) |
Input multiple bytes for processing. More... | |
size_t | PutModifiable2 (byte *inString, size_t length, int messageEnd, bool blocking) |
Input multiple bytes that may be modified by callee. More... | |
bool | IsolatedFlush (bool hardFlush, bool blocking) |
Flushes data buffered by this object, without signal propagation. More... | |
void | ForceNextPut () |
Flushes data buffered by this object. More... | |
Public Member Functions inherited from Filter | |
virtual | ~Filter () |
size_t | TransferTo2 (BufferedTransformation &target, lword &transferBytes, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true) |
Transfer bytes from this object to another BufferedTransformation. More... | |
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. More... | |
void | Initialize (const NameValuePairs ¶meters=g_nullNameValuePairs, int propagation=-1) |
Initialize or reinitialize this object, with signal propagation. More... | |
bool | Flush (bool hardFlush, int propagation=-1, bool blocking=true) |
Flush buffered input and/or output, with signal propagation. More... | |
bool | MessageSeriesEnd (int propagation=-1, bool blocking=true) |
Marks the end of a series of messages, with signal propagation. More... | |
Filter (BufferedTransformation *attachment=NULL) | |
Construct a Filter. More... | |
bool | Attachable () |
Determine if attachable. More... | |
BufferedTransformation * | AttachedTransformation () |
Retrieve attached transformation. More... | |
const BufferedTransformation * | AttachedTransformation () const |
Retrieve attached transformation. More... | |
void | Detach (BufferedTransformation *newAttachment=NULL) |
Replace an attached transformation. More... | |
Public Member Functions inherited from BufferedTransformation | |
virtual | ~BufferedTransformation () |
BufferedTransformation () | |
Construct a BufferedTransformation. More... | |
BufferedTransformation & | Ref () |
Provides a reference to this object. More... | |
size_t | Put (byte inByte, bool blocking=true) |
Input a byte for processing. More... | |
size_t | Put (const byte *inString, size_t length, bool blocking=true) |
Input a byte buffer for processing. More... | |
size_t | PutWord16 (word16 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true) |
Input a 16-bit word for processing. More... | |
size_t | PutWord32 (word32 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true) |
Input a 32-bit word for processing. More... | |
virtual byte * | CreatePutSpace (size_t &size) |
Request space which can be written into by the caller. More... | |
virtual bool | CanModifyInput () const |
Determines whether input can be modified by the callee. More... | |
size_t | PutModifiable (byte *inString, size_t length, bool blocking=true) |
Input multiple bytes that may be modified by callee. More... | |
bool | MessageEnd (int propagation=-1, bool blocking=true) |
Signals the end of messages to the object. More... | |
size_t | PutMessageEnd (const byte *inString, size_t length, int propagation=-1, bool blocking=true) |
Input multiple bytes for processing and signal the end of a message. More... | |
unsigned int | GetMaxWaitObjectCount () const |
Retrieves the maximum number of waitable objects. More... | |
void | GetWaitObjects (WaitObjectContainer &container, CallStack const &callStack) |
Retrieves waitable objects. More... | |
virtual bool | IsolatedMessageSeriesEnd (bool blocking) |
Marks the end of a series of messages, without signal propagation. More... | |
virtual void | SetAutoSignalPropagation (int propagation) |
Set propagation of automatically generated and transferred signals. More... | |
virtual int | GetAutoSignalPropagation () const |
Retrieve automatic signal propagation value. More... | |
virtual lword | MaxRetrievable () const |
Provides the number of bytes ready for retrieval. More... | |
virtual bool | AnyRetrievable () const |
Determines whether bytes are ready for retrieval. More... | |
virtual size_t | Get (byte &outByte) |
Retrieve a 8-bit byte. More... | |
virtual size_t | Get (byte *outString, size_t getMax) |
Retrieve a block of bytes. More... | |
virtual size_t | Peek (byte &outByte) const |
Peek a 8-bit byte. More... | |
virtual size_t | Peek (byte *outString, size_t peekMax) const |
Peek a block of bytes. More... | |
size_t | GetWord16 (word16 &value, ByteOrder order=BIG_ENDIAN_ORDER) |
Retrieve a 16-bit word. More... | |
size_t | GetWord32 (word32 &value, ByteOrder order=BIG_ENDIAN_ORDER) |
Retrieve a 32-bit word. More... | |
size_t | PeekWord16 (word16 &value, ByteOrder order=BIG_ENDIAN_ORDER) const |
Peek a 16-bit word. More... | |
size_t | PeekWord32 (word32 &value, ByteOrder order=BIG_ENDIAN_ORDER) const |
Peek a 32-bit word. More... | |
lword | TransferTo (BufferedTransformation &target, lword transferMax=LWORD_MAX, const std::string &channel=DEFAULT_CHANNEL) |
move transferMax bytes of the buffered output to target as input More... | |
virtual lword | Skip (lword skipMax=LWORD_MAX) |
Discard skipMax bytes from the output buffer. More... | |
lword | CopyTo (BufferedTransformation &target, lword copyMax=LWORD_MAX, const std::string &channel=DEFAULT_CHANNEL) const |
copy copyMax bytes of the buffered output to target as input More... | |
lword | CopyRangeTo (BufferedTransformation &target, lword position, lword copyMax=LWORD_MAX, const std::string &channel=DEFAULT_CHANNEL) const |
Copy bytes from this object using an index to another BufferedTransformation. More... | |
virtual lword | TotalBytesRetrievable () const |
Provides the number of bytes ready for retrieval. More... | |
virtual unsigned int | NumberOfMessages () const |
Provides the number of meesages processed by this object. More... | |
virtual bool | AnyMessages () const |
Determines if any messages are available for retrieval. More... | |
virtual bool | GetNextMessage () |
Start retrieving the next message. More... | |
virtual unsigned int | SkipMessages (unsigned int count=UINT_MAX) |
Skip a number of meessages. More... | |
unsigned int | TransferMessagesTo (BufferedTransformation &target, unsigned int count=UINT_MAX, const std::string &channel=DEFAULT_CHANNEL) |
Transfer messages from this object to another BufferedTransformation. More... | |
unsigned int | CopyMessagesTo (BufferedTransformation &target, unsigned int count=UINT_MAX, const std::string &channel=DEFAULT_CHANNEL) const |
Copy messages from this object to another BufferedTransformation. More... | |
virtual void | SkipAll () |
Skip all messages in the series. More... | |
void | TransferAllTo (BufferedTransformation &target, const std::string &channel=DEFAULT_CHANNEL) |
Transfer all bytes from this object to another BufferedTransformation. More... | |
void | CopyAllTo (BufferedTransformation &target, const std::string &channel=DEFAULT_CHANNEL) const |
Copy messages from this object to another BufferedTransformation. More... | |
virtual bool | GetNextMessageSeries () |
Retrieve the next message in a series. More... | |
virtual unsigned int | NumberOfMessagesInThisSeries () const |
Provides the number of messages in a series. More... | |
virtual unsigned int | NumberOfMessageSeries () const |
Provides the number of messages in a series. More... | |
size_t | TransferMessagesTo2 (BufferedTransformation &target, unsigned int &messageCount, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true) |
Transfer messages from this object to another BufferedTransformation. More... | |
size_t | TransferAllTo2 (BufferedTransformation &target, const std::string &channel=DEFAULT_CHANNEL, bool blocking=true) |
Transfer all bytes from this object to another BufferedTransformation. More... | |
size_t | ChannelPut (const std::string &channel, byte inByte, bool blocking=true) |
Input a byte for processing on a channel. More... | |
size_t | ChannelPut (const std::string &channel, const byte *inString, size_t length, bool blocking=true) |
Input a byte buffer for processing on a channel. More... | |
size_t | ChannelPutModifiable (const std::string &channel, byte *inString, size_t length, bool blocking=true) |
Input multiple bytes that may be modified by callee on a channel. More... | |
size_t | ChannelPutWord16 (const std::string &channel, word16 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true) |
Input a 16-bit word for processing on a channel. More... | |
size_t | ChannelPutWord32 (const std::string &channel, word32 value, ByteOrder order=BIG_ENDIAN_ORDER, bool blocking=true) |
Input a 32-bit word for processing on a channel. More... | |
bool | ChannelMessageEnd (const std::string &channel, int propagation=-1, bool blocking=true) |
Signal the end of a message. More... | |
size_t | ChannelPutMessageEnd (const std::string &channel, const byte *inString, size_t length, int propagation=-1, bool blocking=true) |
Input multiple bytes for processing and signal the end of a message. More... | |
virtual byte * | ChannelCreatePutSpace (const std::string &channel, size_t &size) |
Request space which can be written into by the caller. More... | |
virtual size_t | ChannelPut2 (const std::string &channel, const byte *inString, size_t length, int messageEnd, bool blocking) |
Input multiple bytes for processing on a channel. More... | |
virtual size_t | ChannelPutModifiable2 (const std::string &channel, byte *inString, size_t length, int messageEnd, bool blocking) |
Input multiple bytes that may be modified by callee on a channel. More... | |
virtual bool | ChannelFlush (const std::string &channel, bool hardFlush, int propagation=-1, bool blocking=true) |
Flush buffered input and/or output on a channel. More... | |
virtual bool | ChannelMessageSeriesEnd (const std::string &channel, int propagation=-1, bool blocking=true) |
Marks the end of a series of messages on a channel. More... | |
virtual void | SetRetrievalChannel (const std::string &channel) |
Sets the default retrieval channel. More... | |
virtual void | Attach (BufferedTransformation *newAttachment) |
Add newAttachment to the end of attachment chain. More... | |
Public Member Functions inherited from Algorithm | |
virtual | ~Algorithm () |
Algorithm (bool checkSelfTestStatus=true) | |
Interface for all crypto algorithms. More... | |
Public Member Functions inherited from Clonable | |
virtual | ~Clonable () |
virtual Clonable * | Clone () const |
Copies this object. More... | |
Public Member Functions inherited from Waitable | |
virtual | ~Waitable () |
bool | Wait (unsigned long milliseconds, CallStack const &callStack) |
Wait on this object. More... | |
Public Member Functions inherited from NotCopyable | |
NotCopyable () | |
Protected Member Functions | |
void | InitializeDerivedAndReturnNewSizes (const NameValuePairs ¶meters, size_t &firstSize, size_t &blockSize, size_t &lastSize) |
void | FirstPut (const byte *inString) |
void | NextPutMultiple (const byte *inString, size_t length) |
void | LastPut (const byte *inString, size_t length) |
Input the last block of data. More... | |
Protected Member Functions inherited from FilterWithBufferedInput | |
virtual bool | DidFirstPut () const |
virtual size_t | GetFirstPutSize () const |
virtual size_t | GetBlockPutSize () const |
virtual size_t | GetLastPutSize () const |
virtual void | InitializeDerived (const NameValuePairs ¶meters) |
virtual void | NextPutSingle (const byte *inString) |
virtual void | NextPutModifiable (byte *inString, size_t length) |
virtual void | FlushDerived () |
size_t | PutMaybeModifiable (byte *begin, size_t length, int messageEnd, bool blocking, bool modifiable) |
void | NextPutMaybeModifiable (byte *inString, size_t length, bool modifiable) |
virtual int | NextPut (const byte *inString, size_t length) |
Protected Member Functions inherited from Filter | |
virtual BufferedTransformation * | NewDefaultAttachment () const |
void | Insert (Filter *nextFilter) |
virtual bool | ShouldPropagateMessageEnd () const |
virtual bool | ShouldPropagateMessageSeriesEnd () const |
void | PropagateInitialize (const NameValuePairs ¶meters, int propagation) |
size_t | Output (int outputSite, const byte *inString, size_t length, int messageEnd, bool blocking, const std::string &channel=DEFAULT_CHANNEL) |
Forward processed data on to attached transformation. More... | |
size_t | OutputModifiable (int outputSite, byte *inString, size_t length, int messageEnd, bool blocking, const std::string &channel=DEFAULT_CHANNEL) |
Output multiple bytes that may be modified by callee. More... | |
bool | OutputMessageEnd (int outputSite, int propagation, bool blocking, const std::string &channel=DEFAULT_CHANNEL) |
Signals the end of messages to the object. More... | |
bool | OutputFlush (int outputSite, bool hardFlush, int propagation, bool blocking, const std::string &channel=DEFAULT_CHANNEL) |
Flush buffered input and/or output, with signal propagation. More... | |
bool | OutputMessageSeriesEnd (int outputSite, int propagation, bool blocking, const std::string &channel=DEFAULT_CHANNEL) |
Marks the end of a series of messages, with signal propagation. More... | |
Private Attributes | |
HashTransformation & | m_hashModule |
word32 | m_flags |
unsigned int | m_digestSize |
bool | m_verified |
SecByteBlock | m_expectedHash |
Friends | |
class | AuthenticatedDecryptionFilter |
Additional Inherited Members | |
Static Public Attributes inherited from BufferedTransformation | |
static const std::string & | NULL_CHANNEL = DEFAULT_CHANNEL |
Static Protected Member Functions inherited from BufferedTransformation | |
static int | DecrementPropagation (int propagation) |
Decrements the propagation count while clamping at 0. More... | |
Protected Attributes inherited from FilterWithBufferedInput | |
size_t | m_firstSize |
size_t | m_blockSize |
size_t | m_lastSize |
bool | m_firstInputDone |
BlockQueue | m_queue |
Protected Attributes inherited from Filter | |
size_t | m_inputPosition |
int | m_continueAt |
Filter wrapper for HashTransformation.
Flags controlling filter behavior.
The flags are a bitmask and can be OR'd together.
Enumerator | |
---|---|
HASH_AT_END |
Indicates the hash is at the end of the message (i.e., concatenation of message+hash) |
HASH_AT_BEGIN |
Indicates the hash is at the beginning of the message (i.e., concatenation of hash+message) |
PUT_MESSAGE |
Indicates the message should be passed to an attached transformation. |
PUT_HASH |
Indicates the hash should be passed to an attached transformation. |
PUT_RESULT |
Indicates the result of the verification should be passed to an attached transformation. |
THROW_EXCEPTION |
Indicates the filter should throw a HashVerificationFailed if a failure is encountered. |
DEFAULT_FLAGS |
Default flags using |
|
inlinevirtual |
HashVerificationFilter::HashVerificationFilter | ( | HashTransformation & | hm, |
BufferedTransformation * | attachment = NULL , |
||
word32 | flags = DEFAULT_FLAGS , |
||
int | truncatedDigestSize = -1 |
||
) |
Construct a HashVerificationFilter.
hm | reference to a HashTransformation |
attachment | an optional attached transformation |
flags | flags indicating behaviors for the filter |
truncatedDigestSize | the size of the digest |
truncatedDigestSize = -1
indicates DigestSize should be used.
Definition at line 792 of file filters.cpp.
|
inlinevirtual |
Provides the name of this algorithm.
The standard algorithm name can be a name like AES or AES/GCM. Some algorithms do not have standard names yet. For example, there is no standard algorithm name for Shoup's ECIES.
Reimplemented from Algorithm.
|
protectedvirtual |
Implements FilterWithBufferedInput.
Definition at line 810 of file filters.cpp.
|
inline |
|
protectedvirtual |
Reimplemented from FilterWithBufferedInput.
Definition at line 799 of file filters.cpp.
|
protectedvirtual |
Input the last block of data.
inString | the input byte buffer |
length | the size of the input buffer, in bytes |
LastPut() processes the last block of data and signals attached filters to do the same. LastPut() is always called. The pseudo algorithm for the logic is:
if totalLength < firstSize then length == totalLength else if totalLength <= firstSize+lastSize then length == totalLength-firstSize else lastSize <= length < lastSize+blockSize
Implements FilterWithBufferedInput.
Definition at line 828 of file filters.cpp.
|
protectedvirtual |
Reimplemented from FilterWithBufferedInput.
Definition at line 821 of file filters.cpp.
|
friend |
|
private |
|
private |