summaryrefslogtreecommitdiff
path: root/src/crypto/constant_time_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/crypto/constant_time_test.cc')
-rw-r--r--src/crypto/constant_time_test.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/crypto/constant_time_test.cc b/src/crypto/constant_time_test.cc
index 3cb5866a..59a7bb18 100644
--- a/src/crypto/constant_time_test.cc
+++ b/src/crypto/constant_time_test.cc
@@ -53,6 +53,9 @@
#include <gtest/gtest.h>
+#include <openssl/mem.h>
+#include <openssl/rand.h>
+
static uint8_t FromBool8(bool b) {
return b ? CONSTTIME_TRUE_8 : CONSTTIME_FALSE_8;
@@ -134,3 +137,19 @@ TEST(ConstantTimeTest, Test) {
}
}
}
+
+TEST(ConstantTimeTest, MemCmp) {
+ uint8_t buf[256], copy[256];
+ RAND_bytes(buf, sizeof(buf));
+
+ OPENSSL_memcpy(copy, buf, sizeof(buf));
+ EXPECT_EQ(0, CRYPTO_memcmp(buf, copy, sizeof(buf)));
+
+ for (size_t i = 0; i < sizeof(buf); i++) {
+ for (uint8_t bit = 1; bit != 0; bit <<= 1) {
+ OPENSSL_memcpy(copy, buf, sizeof(buf));
+ copy[i] ^= bit;
+ EXPECT_NE(0, CRYPTO_memcmp(buf, copy, sizeof(buf)));
+ }
+ }
+}