summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/utils.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/lasso/utils.h b/lasso/utils.h
index 0a58271c..465f4b6a 100644
--- a/lasso/utils.h
+++ b/lasso/utils.h
@@ -685,4 +685,24 @@ lasso_xmlstrisnotequal(const xmlChar *a, const xmlChar *b) {
return lasso_strisnotequal((char*)a, (char*)b);
}
+/**
+ * lasso_crypto_memequal:
+ * @a: first buffer
+ * @b: second buffer
+ * @l: common length
+ *
+ * Compare two buffers, preventing timing attacks.
+ */
+static inline gboolean
+lasso_crypto_memequal(void *a, void *b, unsigned int l)
+{
+ unsigned char *x = a, *y = b;
+ gboolean result = TRUE;
+
+ for (;l;l--, x++, y++) {
+ result = result && (*x == *y);
+ }
+ return result;
+}
+
#endif /* __LASSO_UTILS_H__ */