Changes to update Tomato RAF.
[tomato.git] / release / src / router / dnscrypt / src / libnacl / crypto_verify / try.c
blob93cfe7a77432c2d18888df72c1c7d2f92b90c7eb
1 /*
2 * crypto_verify/try.c version 20090118
3 * D. J. Bernstein
4 * Public domain.
5 */
7 #include <stdlib.h>
8 #include "crypto_verify.h"
9 #include "windows/windows-quirks.h"
11 extern unsigned char *alignedcalloc(unsigned long long);
13 const char *primitiveimplementation = crypto_verify_IMPLEMENTATION;
15 static unsigned char *x;
16 static unsigned char *y;
18 void preallocate(void)
22 void allocate(void)
24 x = alignedcalloc(crypto_verify_BYTES);
25 y = alignedcalloc(crypto_verify_BYTES);
28 void predoit(void)
32 void doit(void)
34 crypto_verify(x,y);
37 static const char *check(void)
39 int r = crypto_verify(x,y);
40 if (r == 0) {
41 if (memcmp(x,y,crypto_verify_BYTES)) return "different strings pass verify";
42 } else if (r == -1) {
43 if (!memcmp(x,y,crypto_verify_BYTES)) return "equal strings fail verify";
44 } else {
45 return "weird return value from verify";
47 return 0;
50 char checksum[2];
52 const char *checksum_compute(void)
54 long long tests;
55 long long i;
56 long long j;
57 const char *c;
59 for (tests = 0;tests < 100000;++tests) {
60 for (i = 0;i < crypto_verify_BYTES;++i) x[i] = random();
61 for (i = 0;i < crypto_verify_BYTES;++i) y[i] = random();
62 c = check(); if (c) return c;
63 for (i = 0;i < crypto_verify_BYTES;++i) y[i] = x[i];
64 c = check(); if (c) return c;
65 y[random() % crypto_verify_BYTES] = random();
66 c = check(); if (c) return c;
67 y[random() % crypto_verify_BYTES] = random();
68 c = check(); if (c) return c;
69 y[random() % crypto_verify_BYTES] = random();
70 c = check(); if (c) return c;
73 checksum[0] = '0';
74 checksum[1] = 0;
75 return 0;