diff options
Diffstat (limited to 'src/libsodium/crypto_verify')
-rw-r--r-- | src/libsodium/crypto_verify/16/checksum | 1 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/16/ref/api.h | 2 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/16/ref/verify_16.c | 24 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/16/verify_16_api.c | 6 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/32/checksum | 1 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/32/ref/api.h | 2 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/32/ref/verify_32.c | 40 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/32/verify_32_api.c | 6 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/64/ref/api.h | 2 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/64/ref/verify_64.c | 72 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/64/verify_64_api.c | 6 | ||||
-rw-r--r-- | src/libsodium/crypto_verify/try.c | 76 |
12 files changed, 238 insertions, 0 deletions
diff --git a/src/libsodium/crypto_verify/16/checksum b/src/libsodium/crypto_verify/16/checksum new file mode 100644 index 0000000..573541a --- /dev/null +++ b/src/libsodium/crypto_verify/16/checksum @@ -0,0 +1 @@ +0 diff --git a/src/libsodium/crypto_verify/16/ref/api.h b/src/libsodium/crypto_verify/16/ref/api.h new file mode 100644 index 0000000..8dcaf87 --- /dev/null +++ b/src/libsodium/crypto_verify/16/ref/api.h @@ -0,0 +1,2 @@ + +#include "crypto_verify_16.h" diff --git a/src/libsodium/crypto_verify/16/ref/verify_16.c b/src/libsodium/crypto_verify/16/ref/verify_16.c new file mode 100644 index 0000000..f7e33f1 --- /dev/null +++ b/src/libsodium/crypto_verify/16/ref/verify_16.c @@ -0,0 +1,24 @@ +#include "api.h" + +int crypto_verify_16(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) + return (1 & ((differentbits - 1) >> 8)) - 1; +} diff --git a/src/libsodium/crypto_verify/16/verify_16_api.c b/src/libsodium/crypto_verify/16/verify_16_api.c new file mode 100644 index 0000000..757f9b6 --- /dev/null +++ b/src/libsodium/crypto_verify/16/verify_16_api.c @@ -0,0 +1,6 @@ +#include "crypto_verify_16.h" + +size_t +crypto_verify_16_bytes(void) { + return crypto_verify_16_BYTES; +} diff --git a/src/libsodium/crypto_verify/32/checksum b/src/libsodium/crypto_verify/32/checksum new file mode 100644 index 0000000..573541a --- /dev/null +++ b/src/libsodium/crypto_verify/32/checksum @@ -0,0 +1 @@ +0 diff --git a/src/libsodium/crypto_verify/32/ref/api.h b/src/libsodium/crypto_verify/32/ref/api.h new file mode 100644 index 0000000..e2e3a1c --- /dev/null +++ b/src/libsodium/crypto_verify/32/ref/api.h @@ -0,0 +1,2 @@ + +#include "crypto_verify_32.h" diff --git a/src/libsodium/crypto_verify/32/ref/verify_32.c b/src/libsodium/crypto_verify/32/ref/verify_32.c new file mode 100644 index 0000000..31c3697 --- /dev/null +++ b/src/libsodium/crypto_verify/32/ref/verify_32.c @@ -0,0 +1,40 @@ +#include "api.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; +} diff --git a/src/libsodium/crypto_verify/32/verify_32_api.c b/src/libsodium/crypto_verify/32/verify_32_api.c new file mode 100644 index 0000000..6241c4d --- /dev/null +++ b/src/libsodium/crypto_verify/32/verify_32_api.c @@ -0,0 +1,6 @@ +#include "crypto_verify_32.h" + +size_t +crypto_verify_32_bytes(void) { + return crypto_verify_32_BYTES; +} diff --git a/src/libsodium/crypto_verify/64/ref/api.h b/src/libsodium/crypto_verify/64/ref/api.h new file mode 100644 index 0000000..1ffd2f8 --- /dev/null +++ b/src/libsodium/crypto_verify/64/ref/api.h @@ -0,0 +1,2 @@ + +#include "crypto_verify_64.h" diff --git a/src/libsodium/crypto_verify/64/ref/verify_64.c b/src/libsodium/crypto_verify/64/ref/verify_64.c new file mode 100644 index 0000000..730f598 --- /dev/null +++ b/src/libsodium/crypto_verify/64/ref/verify_64.c @@ -0,0 +1,72 @@ +#include "api.h" + +int crypto_verify_64(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) + F(32) + F(33) + F(34) + F(35) + F(36) + F(37) + F(38) + F(39) + F(40) + F(41) + F(42) + F(43) + F(44) + F(45) + F(46) + F(47) + F(48) + F(49) + F(50) + F(51) + F(52) + F(53) + F(54) + F(55) + F(56) + F(57) + F(58) + F(59) + F(60) + F(61) + F(62) + F(63) + return (1 & ((differentbits - 1) >> 8)) - 1; +} diff --git a/src/libsodium/crypto_verify/64/verify_64_api.c b/src/libsodium/crypto_verify/64/verify_64_api.c new file mode 100644 index 0000000..ec3e4d4 --- /dev/null +++ b/src/libsodium/crypto_verify/64/verify_64_api.c @@ -0,0 +1,6 @@ +#include "crypto_verify_64.h" + +size_t +crypto_verify_64_bytes(void) { + return crypto_verify_64_BYTES; +} diff --git a/src/libsodium/crypto_verify/try.c b/src/libsodium/crypto_verify/try.c new file mode 100644 index 0000000..06684e7 --- /dev/null +++ b/src/libsodium/crypto_verify/try.c @@ -0,0 +1,76 @@ +/* + * crypto_verify/try.c version 20090118 + * D. J. Bernstein + * Public domain. + */ + +#include <stdlib.h> +#include "crypto_verify.h" +#include "windows/windows-quirks.h" + +extern unsigned char *alignedcalloc(unsigned long long); + +const char *primitiveimplementation = crypto_verify_IMPLEMENTATION; + +static unsigned char *x; +static unsigned char *y; + +void preallocate(void) +{ +} + +void allocate(void) +{ + x = alignedcalloc(crypto_verify_BYTES); + y = alignedcalloc(crypto_verify_BYTES); +} + +void predoit(void) +{ +} + +void doit(void) +{ + crypto_verify(x,y); +} + +static const char *check(void) +{ + int r = crypto_verify(x,y); + if (r == 0) { + if (memcmp(x,y,crypto_verify_BYTES)) return "different strings pass verify"; + } else if (r == -1) { + if (!memcmp(x,y,crypto_verify_BYTES)) return "equal strings fail verify"; + } else { + return "weird return value from verify"; + } + return 0; +} + +char checksum[2]; + +const char *checksum_compute(void) +{ + long long tests; + long long i; + long long j; + const char *c; + + for (tests = 0;tests < 100000;++tests) { + for (i = 0;i < crypto_verify_BYTES;++i) x[i] = rand(); + for (i = 0;i < crypto_verify_BYTES;++i) y[i] = rand(); + c = check(); if (c) return c; + for (i = 0;i < crypto_verify_BYTES;++i) y[i] = x[i]; + c = check(); if (c) return c; + y[rand() % crypto_verify_BYTES] = rand(); + c = check(); if (c) return c; + y[rand() % crypto_verify_BYTES] = rand(); + c = check(); if (c) return c; + y[rand() % crypto_verify_BYTES] = rand(); + c = check(); if (c) return c; + } + + checksum[0] = '0'; + checksum[1] = 0; + return 0; +} |