diff options
| -rw-r--r-- | libkeccak/keccak.h | 8 | 
1 files changed, 2 insertions, 6 deletions
| diff --git a/libkeccak/keccak.h b/libkeccak/keccak.h index 0d3cce0..62b2af8 100644 --- a/libkeccak/keccak.h +++ b/libkeccak/keccak.h @@ -166,8 +166,8 @@ LIBKECCAK_GCC_ONLY(__attribute__((__nonnull__, __nothrow__, __warn_unused_result  inline int  libkeccak_spec_check(const struct libkeccak_spec *spec)  { -	long int state_size = spec->capacity + spec->bitrate; -	int32_t word_size = (int32_t)(state_size / 25); +	unsigned long int state_size = (unsigned long int)(spec->capacity + spec->bitrate); +	uint32_t word_size = (uint32_t)(state_size / 25U);  	if (spec->bitrate <= 0)  return LIBKECCAK_SPEC_ERROR_BITRATE_NONPOSITIVE;  	if (spec->bitrate % 8)   return LIBKECCAK_SPEC_ERROR_BITRATE_MOD_8; @@ -178,10 +178,6 @@ libkeccak_spec_check(const struct libkeccak_spec *spec)  	if (state_size % 25)     return LIBKECCAK_SPEC_ERROR_STATE_MOD_25;  	if (word_size % 8)       return LIBKECCAK_SPEC_ERROR_WORD_MOD_8; -	/* `(x & -x) != x` assumes two's complement, which of course is always -	 * satisfied by GCC, however C99 guarantees that `int32_t` exists, -	 * and it is basically the same thing as `long int`; with one important -	 * difference: it is guaranteed to use two's complement. */  	if ((word_size & -word_size) != word_size)  		return LIBKECCAK_SPEC_ERROR_WORD_NON_2_POTENT; | 
