Anklang C++ API 0.0.0
Loading...
Searching...
No Matches
SHAKE_Base< HASHBITS, DOMAINBITS >

Public Member Functions

size_tbyte_rate () const
size_tget_hash (uint8_t hashvalue[HASHBITS/8])
voidreset ()
voidsqueeze_digest (uint8_t *output, size_t n_out)
voidupdate (const uint8_t *data, size_t length)

Protected Member Functions

voidabsorb_padding (size_t offset, uint8_t trail=0x01)
SHAKE_Base (size_t rate)
size_txor_state (size_t offset, const uint8_t *input, size_t n_in)

Constructor & Destructor Documentation

SHAKE_Base()

template<size_t HASHBITS, uint8_t DOMAINBITS>
SHAKE_Base ( size_t rate)
protected

Member Function Documentation

xor_state()

template<size_t HASHBITS, uint8_t DOMAINBITS>
size_t xor_state ( size_t offset,
const uint8_t * input,
size_t n_in
)
protected

Add stream data up to block size into Keccak state via XOR.

absorb_padding()

template<size_t HASHBITS, uint8_t DOMAINBITS>
void absorb_padding ( size_t offset,
uint8_t trail = 0x01
)
protected

Pad stream from offset to block boundary into Keccak state via XOR. The trail argument must contain the termination bit, optionally preceeded by additional (LSB) bits for domain separation. A permutation is carried out if the trailing padding bits do not fit into the remaining block length.

byte_rate()

template<size_t HASHBITS, uint8_t DOMAINBITS>
size_t byte_rate ( ) const

reset()

template<size_t HASHBITS, uint8_t DOMAINBITS>
void reset ( )

update()

template<size_t HASHBITS, uint8_t DOMAINBITS>
void update ( const uint8_t * data,
size_t length
)

get_hash()

template<size_t HASHBITS, uint8_t DOMAINBITS>
size_t get_hash ( uint8_t hashvalue[HASHBITS/8])

Switch from absorbing into squeezing mode and return digest.

squeeze_digest()

template<size_t HASHBITS, uint8_t DOMAINBITS>
void squeeze_digest ( uint8_t * output,
size_t n_out
)

Read out the current Keccak state and permute as needed.