summaryrefslogtreecommitdiff
path: root/src/libsodium/crypto_verify
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsodium/crypto_verify')
-rw-r--r--src/libsodium/crypto_verify/16/checksum1
-rw-r--r--src/libsodium/crypto_verify/16/ref/api.h2
-rw-r--r--src/libsodium/crypto_verify/16/ref/verify_16.c24
-rw-r--r--src/libsodium/crypto_verify/16/verify_16_api.c6
-rw-r--r--src/libsodium/crypto_verify/32/checksum1
-rw-r--r--src/libsodium/crypto_verify/32/ref/api.h2
-rw-r--r--src/libsodium/crypto_verify/32/ref/verify_32.c40
-rw-r--r--src/libsodium/crypto_verify/32/verify_32_api.c6
-rw-r--r--src/libsodium/crypto_verify/64/ref/api.h2
-rw-r--r--src/libsodium/crypto_verify/64/ref/verify_64.c72
-rw-r--r--src/libsodium/crypto_verify/64/verify_64_api.c6
-rw-r--r--src/libsodium/crypto_verify/try.c76
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;
+}