vendor/libsodium/src/libsodium/crypto_verify/32/ref/verify_32.c in rbnacl-libsodium-1.0.6 vs vendor/libsodium/src/libsodium/crypto_verify/32/ref/verify_32.c in rbnacl-libsodium-1.0.7

- old
+ new

@@ -1,40 +1,17 @@ -#include "api.h" -int crypto_verify_32(const unsigned char *x,const unsigned char *y) +#include <stddef.h> +#include <stdint.h> + +#include "crypto_verify_32.h" + +int +crypto_verify_32(const unsigned char *x, const unsigned char *y) { - unsigned int differentbits = 0; -#define F(i) differentbits |= x[i] ^ y[i]; - F(0) - F(1) - F(2) - F(3) - F(4) - F(5) - F(6) - F(7) - F(8) - F(9) - F(10) - F(11) - F(12) - F(13) - F(14) - F(15) - F(16) - F(17) - F(18) - F(19) - F(20) - F(21) - F(22) - F(23) - F(24) - F(25) - F(26) - F(27) - F(28) - F(29) - F(30) - F(31) - return (1 & ((differentbits - 1) >> 8)) - 1; + uint_fast16_t d = 0U; + int i; + + for (i = 0; i < 32; i++) { + d |= x[i] ^ y[i]; + } + return (1 & ((d - 1) >> 8)) - 1; }