TSDuck v3.46-4930
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::Hash Class Reference

#include <tsHash.h>

Inheritance diagram for ts::Hash:

Public Member Functions

virtual ~Hash ()
virtual bool add (const void *data, size_t size)
virtual bool getHash (void *hash, size_t bufsize, size_t *retsize=nullptr)
bool hash (const void *data, size_t data_size, ByteBlock &hash)
bool hash (const void *data, size_t data_size, void *hash, size_t hash_maxsize, size_t *hash_retsize=nullptr)
size_t hashSize () const
virtual bool init ()
UString name () const

Protected Member Functions

 Hash (const UChar *name, size_t hash_size)
virtual void getAlgorithm (::BCRYPT_ALG_HANDLE &algo, size_t &length) const
virtual const EVP_MD_CTX * referenceContext () const

Detailed Description

Base class for all hash functions.

Constructor & Destructor Documentation

◆ ~Hash()

virtual ts::Hash::~Hash ( )
virtual

Virtual destructor.

◆ Hash()

ts::Hash::Hash ( const UChar * name,
size_t hash_size )
protected

Constructor for subclasses.

Parameters
[in]nameAlgorithm name.
[in]hash_sizeSize in bytes of the hash value.

Member Function Documentation

◆ name()

UString ts::Hash::name ( ) const
inline

Algorithm name (informational only).

Returns
The algorithm name.

◆ hashSize()

size_t ts::Hash::hashSize ( ) const
inline

Size in bytes of the resulting hash.

Returns
The size in bytes of the resulting hash.

◆ init()

virtual bool ts::Hash::init ( )
virtual

Reinitialize the computation of the hash.

Returns
True on success, false on error.

◆ add()

virtual bool ts::Hash::add ( const void * data,
size_t size )
virtual

Add some part of the message to hash. Can be called several times.

Parameters
[in]dataAddress of message part.
[in]sizeSize in bytes of message part.
Returns
True on success, false on error.

◆ getHash()

virtual bool ts::Hash::getHash ( void * hash,
size_t bufsize,
size_t * retsize = nullptr )
virtual

Get the resulting hash value.

Parameters
[out]hashAddress of returned hash buffer.
[in]bufsizeSize in bytes of hash buffer.
[out]retsizeAddress of an integer receiving the actual returned hash size. Can be a null pointer (ignored).
Returns
True on success, false on error.

◆ hash() [1/2]

bool ts::Hash::hash ( const void * data,
size_t data_size,
void * hash,
size_t hash_maxsize,
size_t * hash_retsize = nullptr )

Compute a hash in one operation. Same in init() + add() + getHash().

Parameters
[in]dataAddress of message to hash.
[in]data_sizeSize in bytes of message to hash.
[out]hashAddress of returned hash buffer.
[in]hash_maxsizeSize in bytes of hash buffer.
[out]hash_retsizeAddress of an integer receiving the actual returned hash size. Can be a null pointer (ignored).
Returns
True on success, false on error.

◆ hash() [2/2]

bool ts::Hash::hash ( const void * data,
size_t data_size,
ByteBlock & hash )

Compute a hash in one operation. Same in init() + add() + getHash().

Parameters
[in]dataAddress of message to hash.
[in]data_sizeSize in bytes of message to hash.
[out]hashReturned hash buffer.
Returns
True on success, false on error.

◆ getAlgorithm()

virtual void ts::Hash::getAlgorithm ( ::BCRYPT_ALG_HANDLE & algo,
size_t & length ) const
protectedvirtual

Get the algorithm handle and subobject size, when the subclass uses Microsoft BCrypt library.

Parameters
[out]algoHandle to hash algorithm.
[out]lengthLength in bytes of the subobject to allocate.

Reimplemented in ts::SHA1, ts::SHA256, and ts::SHA512.

◆ referenceContext()

virtual const EVP_MD_CTX * ts::Hash::referenceContext ( ) const
protectedvirtual

Get reference hash context, when the subclass uses OpenSSL.

Returns
Reference EVP hash context. To be copied into each new hash object.

The documentation for this class was generated from the following file: