summaryrefslogtreecommitdiff
path: root/code/crypto/compat/timingsafe_memcmp.c
diff options
context:
space:
mode:
authorUros Majstorovic <majstor@majstor.org>2017-05-23 14:19:26 +0200
committerUros Majstorovic <majstor@majstor.org>2017-05-23 14:19:26 +0200
commit3ef6719f47b734b12c0b11c725b7f12e3fb3c08a (patch)
treea635ac65bfc72d126d97e48e22c38ac33343b4f4 /code/crypto/compat/timingsafe_memcmp.c
parent922e8313f2b3f6157a61b3c867fdc3832bb92a68 (diff)
fs layout updated
Diffstat (limited to 'code/crypto/compat/timingsafe_memcmp.c')
-rw-r--r--code/crypto/compat/timingsafe_memcmp.c46
1 files changed, 0 insertions, 46 deletions
diff --git a/code/crypto/compat/timingsafe_memcmp.c b/code/crypto/compat/timingsafe_memcmp.c
deleted file mode 100644
index bb210a3..0000000
--- a/code/crypto/compat/timingsafe_memcmp.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* $OpenBSD: timingsafe_memcmp.c,v 1.2 2015/08/31 02:53:57 guenther Exp $ */
-/*
- * Copyright (c) 2014 Google Inc.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <limits.h>
-#include <string.h>
-
-int
-timingsafe_memcmp(const void *b1, const void *b2, size_t len)
-{
- const unsigned char *p1 = b1, *p2 = b2;
- size_t i;
- int res = 0, done = 0;
-
- for (i = 0; i < len; i++) {
- /* lt is -1 if p1[i] < p2[i]; else 0. */
- int lt = (p1[i] - p2[i]) >> CHAR_BIT;
-
- /* gt is -1 if p1[i] > p2[i]; else 0. */
- int gt = (p2[i] - p1[i]) >> CHAR_BIT;
-
- /* cmp is 1 if p1[i] > p2[i]; -1 if p1[i] < p2[i]; else 0. */
- int cmp = lt - gt;
-
- /* set res = cmp if !done. */
- res |= cmp & ~done;
-
- /* set done if p1[i] != p2[i]. */
- done |= lt | gt;
- }
-
- return (res);
-}