diff --git a/src/libsodium/crypto_xof/shake128/ref/shake128_ref.c b/src/libsodium/crypto_xof/shake128/ref/shake128_ref.c index 5df0f8d9..94a151a7 100644 --- a/src/libsodium/crypto_xof/shake128/ref/shake128_ref.c +++ b/src/libsodium/crypto_xof/shake128/ref/shake128_ref.c @@ -28,10 +28,13 @@ shake128_ref_update(shake128_state_internal *state, const unsigned char *in, siz { size_t consumed = 0; size_t chunk_size; + int ret = 0; if (state->phase != SHAKE128_PHASE_ABSORBING) { + crypto_core_keccak1600_permute_24(&state->state); state->phase = SHAKE128_PHASE_ABSORBING; state->offset = 0; + ret = -1; } while (consumed < inlen) { @@ -48,7 +51,7 @@ shake128_ref_update(shake128_state_internal *state, const unsigned char *in, siz consumed += chunk_size; } - return 0; + return ret; } static void diff --git a/src/libsodium/crypto_xof/shake256/ref/shake256_ref.c b/src/libsodium/crypto_xof/shake256/ref/shake256_ref.c index 7b4b4909..1ca46206 100644 --- a/src/libsodium/crypto_xof/shake256/ref/shake256_ref.c +++ b/src/libsodium/crypto_xof/shake256/ref/shake256_ref.c @@ -28,10 +28,13 @@ shake256_ref_update(shake256_state_internal *state, const unsigned char *in, siz { size_t consumed = 0; size_t chunk_size; + int ret = 0; if (state->phase != SHAKE256_PHASE_ABSORBING) { + crypto_core_keccak1600_permute_24(&state->state); state->phase = SHAKE256_PHASE_ABSORBING; state->offset = 0; + ret = -1; } while (consumed < inlen) { @@ -48,7 +51,7 @@ shake256_ref_update(shake256_state_internal *state, const unsigned char *in, siz consumed += chunk_size; } - return 0; + return ret; } static void diff --git a/src/libsodium/crypto_xof/turboshake128/ref/turboshake128_ref.c b/src/libsodium/crypto_xof/turboshake128/ref/turboshake128_ref.c index 0adc33c7..6e281891 100644 --- a/src/libsodium/crypto_xof/turboshake128/ref/turboshake128_ref.c +++ b/src/libsodium/crypto_xof/turboshake128/ref/turboshake128_ref.c @@ -28,10 +28,13 @@ turboshake128_ref_update(turboshake128_state_internal *state, const unsigned cha { size_t consumed = 0; size_t chunk_size; + int ret = 0; if (state->phase != TURBOSHAKE128_PHASE_ABSORBING) { + crypto_core_keccak1600_permute_12(&state->state); state->phase = TURBOSHAKE128_PHASE_ABSORBING; state->offset = 0; + ret = -1; } while (consumed < inlen) { @@ -48,7 +51,7 @@ turboshake128_ref_update(turboshake128_state_internal *state, const unsigned cha consumed += chunk_size; } - return 0; + return ret; } static void diff --git a/src/libsodium/crypto_xof/turboshake256/ref/turboshake256_ref.c b/src/libsodium/crypto_xof/turboshake256/ref/turboshake256_ref.c index 4193ae71..3d5e6f06 100644 --- a/src/libsodium/crypto_xof/turboshake256/ref/turboshake256_ref.c +++ b/src/libsodium/crypto_xof/turboshake256/ref/turboshake256_ref.c @@ -28,10 +28,13 @@ turboshake256_ref_update(turboshake256_state_internal *state, const unsigned cha { size_t consumed = 0; size_t chunk_size; + int ret = 0; if (state->phase != TURBOSHAKE256_PHASE_ABSORBING) { + crypto_core_keccak1600_permute_12(&state->state); state->phase = TURBOSHAKE256_PHASE_ABSORBING; state->offset = 0; + ret = -1; } while (consumed < inlen) { @@ -48,7 +51,7 @@ turboshake256_ref_update(turboshake256_state_internal *state, const unsigned cha consumed += chunk_size; } - return 0; + return ret; } static void