Convert chacha_test to GTest.

BUG=129

Change-Id: Ibbd6d0804a75cb17ff33f64d4cdf9ae80b26e9df
Reviewed-on: https://boringssl-review.googlesource.com/13867
Reviewed-by: Steven Valdez <svaldez@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
This commit is contained in:
David Benjamin 2017-02-15 10:33:19 -05:00 committed by CQ bot account: commit-bot@chromium.org
parent 1d5a570627
commit b19b6626c5
4 changed files with 16 additions and 40 deletions

View File

@ -212,6 +212,7 @@ add_dependencies(all_tests refcount_test)
add_executable( add_executable(
crypto_test crypto_test
chacha/chacha_test.cc
dh/dh_test.cc dh/dh_test.cc
dsa/dsa_test.cc dsa/dsa_test.cc
err/err_test.cc err/err_test.cc

View File

@ -42,17 +42,7 @@ add_library(
${CHACHA_ARCH_SOURCES} ${CHACHA_ARCH_SOURCES}
) )
add_executable(
chacha_test
chacha_test.cc
$<TARGET_OBJECTS:test_support>
)
target_link_libraries(chacha_test crypto)
add_dependencies(all_tests chacha_test)
perlasm(chacha-armv4.${ASM_EXT} asm/chacha-armv4.pl) perlasm(chacha-armv4.${ASM_EXT} asm/chacha-armv4.pl)
perlasm(chacha-armv8.${ASM_EXT} asm/chacha-armv8.pl) perlasm(chacha-armv8.${ASM_EXT} asm/chacha-armv8.pl)
perlasm(chacha-x86.${ASM_EXT} asm/chacha-x86.pl) perlasm(chacha-x86.${ASM_EXT} asm/chacha-x86.pl)
perlasm(chacha-x86_64.${ASM_EXT} asm/chacha-x86_64.pl) perlasm(chacha-x86_64.${ASM_EXT} asm/chacha-x86_64.pl)

View File

@ -18,10 +18,13 @@
#include <memory> #include <memory>
#include <gtest/gtest.h>
#include <openssl/crypto.h> #include <openssl/crypto.h>
#include <openssl/chacha.h> #include <openssl/chacha.h>
#include "../internal.h" #include "../internal.h"
#include "../test/test_util.h"
static const uint8_t kKey[32] = { static const uint8_t kKey[32] = {
@ -216,35 +219,18 @@ static const uint8_t kOutput[] = {
static_assert(sizeof(kInput) == sizeof(kOutput), static_assert(sizeof(kInput) == sizeof(kOutput),
"Input and output lengths don't match."); "Input and output lengths don't match.");
static bool TestChaCha20(size_t len) { TEST(ChaChaTest, TestVector) {
std::unique_ptr<uint8_t[]> 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();
// Run the test with the test vector at all lengths. // Run the test with the test vector at all lengths.
for (size_t len = 0; len <= sizeof(kInput); len++) { for (size_t len = 0; len <= sizeof(kInput); len++) {
if (!TestChaCha20(len)) { SCOPED_TRACE(len);
return 1;
}
}
printf("PASS\n"); std::unique_ptr<uint8_t[]> buf(new uint8_t[len]);
return 0; 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));
}
} }

View File

@ -5,7 +5,6 @@
["crypto/bio/bio_test"], ["crypto/bio/bio_test"],
["crypto/bn/bn_test", "crypto/bn/bn_tests.txt"], ["crypto/bn/bn_test", "crypto/bn/bn_tests.txt"],
["crypto/bytestring/bytestring_test"], ["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-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-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"], ["crypto/cipher/aead_test", "aes-128-gcm-siv", "crypto/cipher/test/aes_128_gcm_siv_tests.txt"],