|
@@ -0,0 +1,55 @@
|
|
|
|
+/* LibTomCrypt, modular cryptographic library -- Tom St Denis
|
|
|
|
+ *
|
|
|
|
+ * LibTomCrypt is a library that provides various cryptographic
|
|
|
|
+ * algorithms in a highly modular and flexible manner.
|
|
|
|
+ *
|
|
|
|
+ * The library is free for all purposes without any express
|
|
|
|
+ * guarantee it works.
|
|
|
|
+ *
|
|
|
|
+ * Tom St Denis, [email protected], http://libtom.org
|
|
|
|
+ */
|
|
|
|
+#include "tomcrypt.h"
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ @file mem_neq.c
|
|
|
|
+ Compare two blocks of memory for inequality.
|
|
|
|
+ Steffen Jaeckel
|
|
|
|
+*/
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ Compare two blocks of memory for inequality.
|
|
|
|
+
|
|
|
|
+ The usage is similar to that of standard memcmp(), but you can only test
|
|
|
|
+ if the memory is equal or not - you can not determine by how much the
|
|
|
|
+ first different byte differs.
|
|
|
|
+
|
|
|
|
+ @param a The first memory region
|
|
|
|
+ @param b The second memory region
|
|
|
|
+ @param len The length of the area to compare (octets)
|
|
|
|
+
|
|
|
|
+ @return 0 when a and b are equal for len bytes, else they are not equal.
|
|
|
|
+*/
|
|
|
|
+int mem_neq(const void *a, const void *b, size_t len)
|
|
|
|
+{
|
|
|
|
+ unsigned char ret = 0;
|
|
|
|
+ const unsigned char* pa;
|
|
|
|
+ const unsigned char* pb;
|
|
|
|
+
|
|
|
|
+ LTC_ARGCHK(a != NULL);
|
|
|
|
+ LTC_ARGCHK(b != NULL);
|
|
|
|
+
|
|
|
|
+ pa = a;
|
|
|
|
+ pb = b;
|
|
|
|
+
|
|
|
|
+ while (len-- > 0) {
|
|
|
|
+ ret |= *pa ^ *pb;
|
|
|
|
+ ++pa;
|
|
|
|
+ ++pb;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* $Source$ */
|
|
|
|
+/* $Revision$ */
|
|
|
|
+/* $Date$ */
|