67 lines
1.1 KiB
C
67 lines
1.1 KiB
C
#include "crypto_verify.h"
|
|
|
|
#define VERIFY_F(i) differentbits |= x[i] ^ y[i];
|
|
|
|
static inline
|
|
int crypto_verify_16(const unsigned char *x,const unsigned char *y)
|
|
{
|
|
unsigned int differentbits = 0;
|
|
VERIFY_F(0)
|
|
VERIFY_F(1)
|
|
VERIFY_F(2)
|
|
VERIFY_F(3)
|
|
VERIFY_F(4)
|
|
VERIFY_F(5)
|
|
VERIFY_F(6)
|
|
VERIFY_F(7)
|
|
VERIFY_F(8)
|
|
VERIFY_F(9)
|
|
VERIFY_F(10)
|
|
VERIFY_F(11)
|
|
VERIFY_F(12)
|
|
VERIFY_F(13)
|
|
VERIFY_F(14)
|
|
VERIFY_F(15)
|
|
return (1 & ((differentbits - 1) >> 8)) - 1;
|
|
}
|
|
|
|
static inline
|
|
int crypto_verify_32(const unsigned char *x,const unsigned char *y)
|
|
{
|
|
unsigned int differentbits = 0;
|
|
VERIFY_F(0)
|
|
VERIFY_F(1)
|
|
VERIFY_F(2)
|
|
VERIFY_F(3)
|
|
VERIFY_F(4)
|
|
VERIFY_F(5)
|
|
VERIFY_F(6)
|
|
VERIFY_F(7)
|
|
VERIFY_F(8)
|
|
VERIFY_F(9)
|
|
VERIFY_F(10)
|
|
VERIFY_F(11)
|
|
VERIFY_F(12)
|
|
VERIFY_F(13)
|
|
VERIFY_F(14)
|
|
VERIFY_F(15)
|
|
VERIFY_F(16)
|
|
VERIFY_F(17)
|
|
VERIFY_F(18)
|
|
VERIFY_F(19)
|
|
VERIFY_F(20)
|
|
VERIFY_F(21)
|
|
VERIFY_F(22)
|
|
VERIFY_F(23)
|
|
VERIFY_F(24)
|
|
VERIFY_F(25)
|
|
VERIFY_F(26)
|
|
VERIFY_F(27)
|
|
VERIFY_F(28)
|
|
VERIFY_F(29)
|
|
VERIFY_F(30)
|
|
VERIFY_F(31)
|
|
return (1 & ((differentbits - 1) >> 8)) - 1;
|
|
}
|
|
|
|
#undef VERIFY_F
|