sha3: Make sure state and rate input buffers are 8-byte aligned

Both buffers are accessed directly by casting to `uint64_t`.  On platforms
that don't allow unaligned accesses this could cause a SIGBUS.  The
reorder should avoid extra padding between the two buffers.

Fixes: 5ff88c9622 ("xof: Implemented SHAKE128 and SHAKE256 Extended Output Functions")
Fixes: 83c1883d0b ("Use word-aligned XOR in sha3_absorb()")
This commit is contained in:
Tobias Brunner
2026-07-24 08:47:38 +02:00
parent 50177b4004
commit 4224c3f647
+6 -6
View File
@@ -59,18 +59,18 @@ struct private_sha3_keccak_t {
/**
* Internal state of 1600 bits as defined by FIPS-202
*/
uint8_t state[KECCAK_STATE_SIZE];
uint8_t state[KECCAK_STATE_SIZE] __attribute__((aligned(8)));
/**
* Rate input buffer
*/
uint8_t rate_buffer[KECCAK_MAX_RATE] __attribute__((aligned(8)));
/**
* Rate in bytes
*/
u_int rate;
/**
* Rate input buffer
*/
uint8_t rate_buffer[KECCAK_MAX_RATE];
/**
* Index pointing to the current position in the rate buffer
*/