From b19b6626c5f67819d8266ef3c992b0cbad3e7bbd Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Wed, 15 Feb 2017 10:33:19 -0500 Subject: [PATCH] Convert chacha_test to GTest. BUG=129 Change-Id: Ibbd6d0804a75cb17ff33f64d4cdf9ae80b26e9df Reviewed-on: https://boringssl-review.googlesource.com/13867 Reviewed-by: Steven Valdez Reviewed-by: David Benjamin Commit-Queue: David Benjamin CQ-Verified: CQ bot account: commit-bot@chromium.org --- crypto/CMakeLists.txt | 1 + crypto/chacha/CMakeLists.txt | 12 +---------- crypto/chacha/chacha_test.cc | 42 ++++++++++++------------------------ util/all_tests.json | 1 - 4 files changed, 16 insertions(+), 40 deletions(-) diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index bbc68d00..f60a4e3a 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -212,6 +212,7 @@ add_dependencies(all_tests refcount_test) add_executable( crypto_test + chacha/chacha_test.cc dh/dh_test.cc dsa/dsa_test.cc err/err_test.cc diff --git a/crypto/chacha/CMakeLists.txt b/crypto/chacha/CMakeLists.txt index 39d1defb..63de0611 100644 --- a/crypto/chacha/CMakeLists.txt +++ b/crypto/chacha/CMakeLists.txt @@ -42,17 +42,7 @@ add_library( ${CHACHA_ARCH_SOURCES} ) -add_executable( - chacha_test - - chacha_test.cc - $ -) - -target_link_libraries(chacha_test crypto) -add_dependencies(all_tests chacha_test) - perlasm(chacha-armv4.${ASM_EXT} asm/chacha-armv4.pl) perlasm(chacha-armv8.${ASM_EXT} asm/chacha-armv8.pl) perlasm(chacha-x86.${ASM_EXT} asm/chacha-x86.pl) -perlasm(chacha-x86_64.${ASM_EXT} asm/chacha-x86_64.pl) \ No newline at end of file +perlasm(chacha-x86_64.${ASM_EXT} asm/chacha-x86_64.pl) diff --git a/crypto/chacha/chacha_test.cc b/crypto/chacha/chacha_test.cc index 6bfb03eb..a40653fa 100644 --- a/crypto/chacha/chacha_test.cc +++ b/crypto/chacha/chacha_test.cc @@ -18,10 +18,13 @@ #include +#include + #include #include #include "../internal.h" +#include "../test/test_util.h" static const uint8_t kKey[32] = { @@ -216,35 +219,18 @@ static const uint8_t kOutput[] = { static_assert(sizeof(kInput) == sizeof(kOutput), "Input and output lengths don't match."); -static bool TestChaCha20(size_t len) { - std::unique_ptr buf(new uint8_t[len]); - CRYPTO_chacha_20(buf.get(), kInput, len, kKey, kNonce, kCounter); - if (OPENSSL_memcmp(buf.get(), kOutput, len) != 0) { - fprintf(stderr, "Mismatch at length %zu.\n", len); - return false; - } - - // Test in-place. - OPENSSL_memcpy(buf.get(), kInput, len); - CRYPTO_chacha_20(buf.get(), buf.get(), len, kKey, kNonce, kCounter); - if (OPENSSL_memcmp(buf.get(), kOutput, len) != 0) { - fprintf(stderr, "Mismatch at length %zu, in-place.\n", len); - return false; - } - - return true; -} - -int main(int argc, char **argv) { - CRYPTO_library_init(); - +TEST(ChaChaTest, TestVector) { // Run the test with the test vector at all lengths. for (size_t len = 0; len <= sizeof(kInput); len++) { - if (!TestChaCha20(len)) { - return 1; - } - } + SCOPED_TRACE(len); - printf("PASS\n"); - return 0; + std::unique_ptr buf(new uint8_t[len]); + CRYPTO_chacha_20(buf.get(), kInput, len, kKey, kNonce, kCounter); + EXPECT_EQ(Bytes(kOutput, len), Bytes(buf.get(), len)); + + // Test the in-place version. + OPENSSL_memcpy(buf.get(), kInput, len); + CRYPTO_chacha_20(buf.get(), buf.get(), len, kKey, kNonce, kCounter); + EXPECT_EQ(Bytes(kOutput, len), Bytes(buf.get(), len)); + } } diff --git a/util/all_tests.json b/util/all_tests.json index 76637b2c..06fe22e4 100644 --- a/util/all_tests.json +++ b/util/all_tests.json @@ -5,7 +5,6 @@ ["crypto/bio/bio_test"], ["crypto/bn/bn_test", "crypto/bn/bn_tests.txt"], ["crypto/bytestring/bytestring_test"], - ["crypto/chacha/chacha_test"], ["crypto/cipher/aead_test", "aes-128-gcm", "crypto/cipher/test/aes_128_gcm_tests.txt"], ["crypto/cipher/aead_test", "aes-256-gcm", "crypto/cipher/test/aes_256_gcm_tests.txt"], ["crypto/cipher/aead_test", "aes-128-gcm-siv", "crypto/cipher/test/aes_128_gcm_siv_tests.txt"],