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