The Wayback Machine - https://web.archive.org/web/20170901091734/https://man.openbsd.org/OpenBSD-current/man3/timingsafe_memcmp.3
timingsafe_bcmp,
timingsafe_memcmp —
timing-safe byte sequence comparisons
#include
<string.h>
int
timingsafe_bcmp(
const
void *b1,
const
void *b2,
size_t
len);
int
timingsafe_memcmp(
const
void *b1,
const
void *b2,
size_t
len);
The
timingsafe_bcmp() and
timingsafe_memcmp() functions lexicographically
compare the first
len bytes (each interpreted
as an
unsigned char) pointed to by
b1 and
b2.
Additionally, their running times are independent of the byte sequences
compared, making them safe to use for comparing secret values such as
cryptographic MACs. In contrast,
bcmp(3) and
memcmp(3) may short-circuit
after finding the first differing byte.
The
timingsafe_bcmp() function returns 0 or not
zero if the byte sequence pointed to by
b1
compares equal to or not equal to (respectively) the byte sequence pointed to
by
b2.
The
timingsafe_memcmp() function returns a negative
value, 0, or positive value if the byte sequence pointed to by
b1 compares less than, equal to, or greater
than (respectively) the byte sequence pointed to by
b2.
bcmp(3),
memcmp(3)
The
timingsafe_bcmp() and
timingsafe_memcmp() functions are
OpenBSD extensions.
The
timingsafe_bcmp() function first appeared in
OpenBSD 4.9.
The
timingsafe_memcmp() function first appeared in
OpenBSD 5.6.