Kicking it Olde Sküül! Burgerlib on Github Follow Olde Sküül on Twitter Burgerbecky on LinkedIn Burgerbecky on LinkedIn
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
Burger::MD5Hasher_t Struct Reference

Multi-pass MD5 hash generator. More...

Collaboration diagram for Burger::MD5Hasher_t:
Collaboration graph
[legend]

Public Member Functions

void init (void) noexcept
 Initialize the MD5 hasher.
 
void process (const uint8_t pBlock[64]) noexcept
 Process a single 64 byte block of data.
 
void process (const void *pInput, uintptr_t uLength) noexcept
 Process an arbitrary number of input bytes.
 
void finalize (void) noexcept
 Finalize the hashing.
 

Public Attributes

MD5_t m_Hash
 Current 128 bit value.
 
uint64_t m_uByteCount
 Number of bytes processed (64 bit value)
 
uint8_t m_CacheBuffer [64]
 Input buffer for processing.
 

Detailed Description

Multi-pass MD5 hash generator.


This structure is needed to perform a multi-pass MD5 hash and contains cached data and a running checksum.

// Initialize
Context.init();
// Process data in passes
Context.process(Buffer1,sizeof(Buffer1));
Context.process(Buffer2,sizeof(Buffer2));
Context.process(Buffer3,sizeof(Buffer3));
// Wrap up the processing
Context.finalize();
// Return the resulting hash
void MemoryCopy(void *pOutput, const void *pInput, uintptr_t uCount) noexcept
Copy raw memory from one buffer to another.
Definition brmemoryfunctions.cpp:186
Multi-pass MD5 hash generator.
Definition burger.h:7238
Select a type based if the conditional is true or false.
Definition burger.h:3178
See also
MD5_t or hash(MD5_t *,const void *,uintptr_t)

Member Function Documentation

◆ finalize()

void BURGER_API Burger::MD5Hasher_t::finalize ( void )
noexcept

Finalize the hashing.


When multi-pass hashing is performed, this call is necessary to finalize the hash so that the generated checksum can be applied into the hash

See also
init(void), process(const void *,uintptr_t)

◆ init()

void BURGER_API Burger::MD5Hasher_t::init ( void )
noexcept

Initialize the MD5 hasher.


Call this function before any hashing is performed

See also
process(const void *,uintptr_t) or finalize(void)

◆ process() [1/2]

void BURGER_API Burger::MD5Hasher_t::process ( const uint8_t pBlock[64])
noexcept

Process a single 64 byte block of data.


MD5 data is processed in 64 byte chunks. This function will process 64 bytes on input and update the hash and checksum

Parameters
pBlockPointer to a buffer of 64 bytes of data to hash
See also
process(const void *,uintptr_t), finalize(void) or init(void)

◆ process() [2/2]

void BURGER_API Burger::MD5Hasher_t::process ( const void * pInput,
uintptr_t uLength )
noexcept

Process an arbitrary number of input bytes.


Process input data into the hash. If data chunks are not a multiple of 64 bytes, the excess will be cached and a future call will continue the hashing where it left off.

Parameters
pInputPointer to a buffer of data to hash
uLengthNumber of bytes to hash
See also
process(const uint8_t[64]), finalize(void)

Member Data Documentation

◆ m_CacheBuffer

uint8_t Burger::MD5Hasher_t::m_CacheBuffer[64]

Input buffer for processing.

◆ m_Hash

MD5_t Burger::MD5Hasher_t::m_Hash

Current 128 bit value.

◆ m_uByteCount

uint64_t Burger::MD5Hasher_t::m_uByteCount

Number of bytes processed (64 bit value)