xref: /openssh-portable/verify.c (revision f45f78ae)
1 /* $OpenBSD: verify.c,v 1.3 2013/12/09 11:03:45 markus Exp $ */
2 
3 /*
4  * Public Domain, Author: Daniel J. Bernstein
5  * Copied from nacl-20110221/crypto_verify/32/ref/verify.c
6  */
7 
8 #include "includes.h"
9 
10 #include "crypto_api.h"
11 
crypto_verify_32(const unsigned char * x,const unsigned char * y)12 int crypto_verify_32(const unsigned char *x,const unsigned char *y)
13 {
14   unsigned int differentbits = 0;
15 #define F(i) differentbits |= x[i] ^ y[i];
16   F(0)
17   F(1)
18   F(2)
19   F(3)
20   F(4)
21   F(5)
22   F(6)
23   F(7)
24   F(8)
25   F(9)
26   F(10)
27   F(11)
28   F(12)
29   F(13)
30   F(14)
31   F(15)
32   F(16)
33   F(17)
34   F(18)
35   F(19)
36   F(20)
37   F(21)
38   F(22)
39   F(23)
40   F(24)
41   F(25)
42   F(26)
43   F(27)
44   F(28)
45   F(29)
46   F(30)
47   F(31)
48   return (1 & ((differentbits - 1) >> 8)) - 1;
49 }
50