67 const void *
data,
size_t len ) {
83 mask = ( blocksize - 1 );
86 context->dd.data[
offset] = *(
byte++);
87 if ( ( context->len & mask ) == 0 ) {
88 DBGC2 ( digest,
"MDHASH %s compressing:\n",
90 DBGC2_HDA ( digest, 0, &context->dd.digest,
91 sizeof ( context->dd.digest ) );
93 sizeof ( context->dd.data ) );
95 mdhash->
compress ( &context->dd, copy );
96 DBGC2 ( digest,
"MDHASH %s compressed:\n",
98 DBGC2_HDA ( digest, 0, &context->dd.digest,
99 sizeof ( context->dd.digest ) );
125 len.qword.bits = ( ( (
uint64_t ) context->len ) * 8 );
129 mask = ( blocksize - 1 );
130 stop = ( blocksize - mdhash->
len_len );
135 }
while ( ( context->len & mask ) != stop );
139 for ( i = 0 ; i < mdhash->
len_len ; i++ ) {
141 sizeof (
len.byte[ i ^ toggle ] ) );
143 assert ( ( context->len & mask ) == 0 );
148 byte[i] = context->dd.digest[ i ^ toggle ];
149 DBGC ( digest,
"MDHASH %s digested:\n", digest->
name );
struct golan_eq_context ctx
unsigned long long uint64_t
#define assert(condition)
Assert a condition at run-time.
uint16_t offset
Offset to command line.
uint8_t data[48]
Additional event data.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
void mdhash_update(struct digest_algorithm *digest, void *ctx, const void *data, size_t len)
Accumulate data.
void mdhash_final(struct digest_algorithm *digest, void *ctx, void *out)
Generate digest.
void mdhash_init(struct digest_algorithm *digest, void *ctx)
Initialise algorithm.
Merkle-Damgård hash algorithms.
#define mdhash_context_t(digestsize, blocksize)
Merkle-Damgård hash algorithm context.
uint32_t digestsize
Digest size (i.e.
A message digest algorithm.
size_t digestsize
Digest size.
size_t blocksize
Block size.
void * priv
Algorithm private data.
const char * name
Algorithm name.
Merkle-Damgård hash algorithm.
const void * init
Initial digest value (as host-endian words).
uint8_t len_len
Length field length.
uint8_t digestsize
Digest size (before any final truncation).
uint8_t toggle
Data toggle (for endianness swapping).
uint8_t len_toggle
Length field toggle (for endianness swapping).
void(* compress)(void *dd, const void *digest)
Compression function.
Merkle-Damgård trailing bit-length count.