From b833963270fbffe3186f5c71c7584c2347a44038 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Sat, 11 Apr 2015 16:44:18 +0200 Subject: utils: Add a constant time memeq() variant for cryptographic purposes --- src/libstrongswan/utils/utils.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/libstrongswan/utils/utils.c') diff --git a/src/libstrongswan/utils/utils.c b/src/libstrongswan/utils/utils.c index 02a720945..3d5e3dfc9 100644 --- a/src/libstrongswan/utils/utils.c +++ b/src/libstrongswan/utils/utils.c @@ -109,6 +109,25 @@ void memwipe_noinline(void *ptr, size_t n) memwipe_inline(ptr, n); } +/** + * Described in header. + */ +bool memeq_const(const void *x, const void *y, size_t len) +{ + const u_char *a, *b; + u_int bad = 0; + size_t i; + + a = (const u_char*)x; + b = (const u_char*)y; + + for (i = 0; i < len; i++) + { + bad |= a[i] != b[i]; + } + return !bad; +} + /** * Described in header. */ -- cgit v1.2.3