consttime_memequal.c revision 1.2
11.2Sriastrad/* $NetBSD: consttime_memequal.c,v 1.2 2013/08/28 15:24:41 riastradh Exp $ */
21.1Sriastrad
31.1Sriastrad#if !defined(_KERNEL) && !defined(_STANDALONE)
41.1Sriastrad#include <string.h>
51.1Sriastrad#define consttime_memequal __consttime_memequal
61.1Sriastrad#else
71.1Sriastrad#include <lib/libkern/libkern.h>
81.1Sriastrad#endif
91.1Sriastrad
101.1Sriastradint
111.1Sriastradconsttime_memequal(const void *b1, const void *b2, size_t len)
121.1Sriastrad{
131.1Sriastrad	const char *c1 = b1, *c2 = b2;
141.1Sriastrad	int res = 0;
151.1Sriastrad
161.1Sriastrad	while (len --)
171.1Sriastrad		res |= *c1++ ^ *c2++;
181.2Sriastrad	return !res;
191.1Sriastrad}
20