Blob Blame History Raw
#include <stddef.h>

int timingsafe_memcmp(const void *s1, const void *s2, size_t n)
{
	unsigned int i, ret = -1;
	const unsigned char *b1 = s1;
	const unsigned char *b2 = s2;

	for(i = 0; i < n; i++)
		ret |= (b1[i] ^ b2[i]);

	return ret;
}