|
|
@@ -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))); |
|
|
|
} |
|
|
|
} |
|
|
|
} |