hash: fix hash_permutation on big endian

This commit is contained in:
moneromooo-monero 2018-10-25 21:15:19 +00:00
parent 4cbb476cd1
commit db24a2e509
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3

View file

@ -36,7 +36,14 @@
#include "keccak.h" #include "keccak.h"
void hash_permutation(union hash_state *state) { void hash_permutation(union hash_state *state) {
#if BYTE_ORDER == LITTLE_ENDIAN
keccakf((uint64_t*)state, 24); keccakf((uint64_t*)state, 24);
#else
uint64_t le_state[25];
memcpy_swap64le(le_state, state, 25);
keccakf(le_state, 24);
memcpy_swap64le(state, le_state, 25);
#endif
} }
void hash_process(union hash_state *state, const uint8_t *buf, size_t count) { void hash_process(union hash_state *state, const uint8_t *buf, size_t count) {