Add and use a constant-time memcmp.
[openssl.git] / crypto / cryptlib.c
index 07b0a66217645feedeeab008c95b5b8c428db0c1..56d82adfcd2c2884389f70b200ac14343c458faf 100644 (file)
@@ -397,3 +397,16 @@ void OpenSSLDie(const char *file,int line,const char *assertion)
 #ifndef OPENSSL_FIPSCANISTER
 void *OPENSSL_stderr(void)     { return stderr; }
 #endif
+
+int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len)
+       {
+       size_t i;
+       const unsigned char *a = in_a;
+       const unsigned char *b = in_b;
+       unsigned char x = 0;
+
+       for (i = 0; i < len; i++)
+               x |= a[i] ^ b[i];
+
+       return x;
+       }