mirror of
https://github.com/jedisct1/libsodium.git
synced 2026-08-25 08:37:13 +09:00
SHAKE: a custom domain byte may have its MSB set, so xor the padding
This commit is contained in:
@@ -65,7 +65,7 @@ shake128_finalize(shake128_state_internal *state)
|
||||
/* Apply padding: domain byte at current position, 0x80 at last byte */
|
||||
if (state->offset == SHAKE128_RATE - 1) {
|
||||
/* Special case: padding fits in one byte */
|
||||
pad = state->domain | 0x80;
|
||||
pad = (unsigned char) (state->domain ^ 0x80);
|
||||
crypto_core_keccak1600_xor_bytes(state->state, &pad, state->offset, 1);
|
||||
} else {
|
||||
/* Normal case: domain and 0x80 at different positions */
|
||||
|
||||
@@ -65,7 +65,7 @@ shake256_finalize(shake256_state_internal *state)
|
||||
/* Apply padding: domain byte at current position, 0x80 at last byte */
|
||||
if (state->offset == SHAKE256_RATE - 1) {
|
||||
/* Special case: padding fits in one byte */
|
||||
pad = state->domain | 0x80;
|
||||
pad = (unsigned char) (state->domain ^ 0x80);
|
||||
crypto_core_keccak1600_xor_bytes(state->state, &pad, state->offset, 1);
|
||||
} else {
|
||||
/* Normal case: domain and 0x80 at different positions */
|
||||
|
||||
@@ -65,7 +65,7 @@ turboshake128_finalize(turboshake128_state_internal *state)
|
||||
/* Apply padding: domain byte at current position, 0x80 at last byte */
|
||||
if (state->offset == TURBOSHAKE128_RATE - 1) {
|
||||
/* Special case: padding fits in one byte */
|
||||
pad = state->domain | 0x80;
|
||||
pad = (unsigned char) (state->domain ^ 0x80);
|
||||
crypto_core_keccak1600_xor_bytes(state->state, &pad, state->offset, 1);
|
||||
} else {
|
||||
/* Normal case: domain and 0x80 at different positions */
|
||||
|
||||
@@ -65,7 +65,7 @@ turboshake256_finalize(turboshake256_state_internal *state)
|
||||
/* Apply padding: domain byte at current position, 0x80 at last byte */
|
||||
if (state->offset == TURBOSHAKE256_RATE - 1) {
|
||||
/* Special case: padding fits in one byte */
|
||||
pad = state->domain | 0x80;
|
||||
pad = (unsigned char) (state->domain ^ 0x80);
|
||||
crypto_core_keccak1600_xor_bytes(state->state, &pad, state->offset, 1);
|
||||
} else {
|
||||
/* Normal case: domain and 0x80 at different positions */
|
||||
|
||||
Reference in New Issue
Block a user