Branch data Line data Source code
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 : :
12 : 28 : int crypto_verify_32(const unsigned char *x,const unsigned char *y)
13 : : {
14 : 28 : unsigned int differentbits = 0;
15 : : #define F(i) differentbits |= x[i] ^ y[i];
16 : 28 : F(0)
17 : 28 : F(1)
18 : 28 : F(2)
19 : 28 : F(3)
20 : 28 : F(4)
21 : 28 : F(5)
22 : 28 : F(6)
23 : 28 : F(7)
24 : 28 : F(8)
25 : 28 : F(9)
26 : 28 : F(10)
27 : 28 : F(11)
28 : 28 : F(12)
29 : 28 : F(13)
30 : 28 : F(14)
31 : 28 : F(15)
32 : 28 : F(16)
33 : 28 : F(17)
34 : 28 : F(18)
35 : 28 : F(19)
36 : 28 : F(20)
37 : 28 : F(21)
38 : 28 : F(22)
39 : 28 : F(23)
40 : 28 : F(24)
41 : 28 : F(25)
42 : 28 : F(26)
43 : 28 : F(27)
44 : 28 : F(28)
45 : 28 : F(29)
46 : 28 : F(30)
47 : 28 : F(31)
48 : 28 : return (1 & ((differentbits - 1) >> 8)) - 1;
49 : : }
|