From e2a29ad6c5f6b42ce71400595cb504cbf8f3646a Mon Sep 17 00:00:00 2001 From: Rich Salz Date: Tue, 11 Apr 2017 16:16:33 -0400 Subject: Convert x509aux, cipherlist, casttest To new test framework Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/3189) --- test/build.info | 8 +-- test/casttest.c | 129 ++++++++++++++++--------------------------------- test/cipherlist_test.c | 10 ++-- test/x509aux.c | 77 +++++------------------------ 4 files changed, 63 insertions(+), 161 deletions(-) diff --git a/test/build.info b/test/build.info index c26dc6d23c..6d0ffa0e31 100644 --- a/test/build.info +++ b/test/build.info @@ -127,8 +127,8 @@ IF[{- !$disabled{tests} -}] INCLUDE[enginetest]=../include DEPEND[enginetest]=../libcrypto - SOURCE[casttest]=casttest.c - INCLUDE[casttest]=../include + SOURCE[casttest]=casttest.c testutil.c test_main.o + INCLUDE[casttest]=.. ../include DEPEND[casttest]=../libcrypto SOURCE[bftest]=bftest.c testutil.c test_main_custom.c @@ -260,8 +260,8 @@ IF[{- !$disabled{tests} -}] INCLUDE[handshake_helper.o]=../include INCLUDE[ssltestlib.o]=.. ../include - SOURCE[x509aux]=x509aux.c - INCLUDE[x509aux]=../include + SOURCE[x509aux]=x509aux.c testutil.c test_main_custom.c + INCLUDE[x509aux]=.. ../include DEPEND[x509aux]=../libcrypto SOURCE[asynciotest]=asynciotest.c ssltestlib.c testutil.c test_main_custom.c diff --git a/test/casttest.c b/test/casttest.c index c2a0ab584c..17faf9273a 100644 --- a/test/casttest.c +++ b/test/casttest.c @@ -10,9 +10,11 @@ #include #include #include -#include /* To see if OPENSSL_NO_CAST is defined */ -#include "../e_os.h" +#include /* To see if OPENSSL_NO_CAST is defined */ +#include "e_os.h" +#include "test_main.h" +#include "testutil.h" #ifdef OPENSSL_NO_CAST int main(int argc, char *argv[]) @@ -23,8 +25,6 @@ int main(int argc, char *argv[]) #else # include -# define FULL_TEST - static unsigned char k[16] = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9A @@ -63,101 +63,54 @@ static unsigned char c_b[16] = { 0x80, 0xAC, 0x05, 0xB8, 0xE8, 0x3D, 0x69, 0x6E }; -int main(int argc, char *argv[]) +static int cast_test(void) { -# ifdef FULL_TEST + static char *hex = "0123456789ABCDEF"; long l; - CAST_KEY key_b; -# endif - int i, z, err = 0; - CAST_KEY key; + int i, z, testresult = 1; + CAST_KEY key, key_b; + unsigned char out_a[16], out_b[16]; for (z = 0; z < 3; z++) { CAST_set_key(&key, k_len[z], k); - CAST_ecb_encrypt(in, out, &key, CAST_ENCRYPT); - if (memcmp(out, &(c[z][0]), 8) != 0) { - printf("ecb cast error encrypting for keysize %d\n", - k_len[z] * 8); - printf("got :"); - for (i = 0; i < 8; i++) - printf("%02X ", out[i]); - printf("\n"); - printf("expected:"); - for (i = 0; i < 8; i++) - printf("%02X ", c[z][i]); - err = 20; - printf("\n"); - } + if (!TEST_mem_eq(out, sizeof(c[z]), c[z], sizeof(c[z]))) + testresult = 0; CAST_ecb_encrypt(out, out, &key, CAST_DECRYPT); - if (memcmp(out, in, 8) != 0) { - printf("ecb cast error decrypting for keysize %d\n", - k_len[z] * 8); - printf("got :"); - for (i = 0; i < 8; i++) - printf("%02X ", out[i]); - printf("\n"); - printf("expected:"); - for (i = 0; i < 8; i++) - printf("%02X ", in[i]); - printf("\n"); - err = 3; - } + if (!TEST_mem_eq(out, sizeof(in), in, sizeof(in))) + testresult = 0; } - if (err == 0) - printf("ecb cast5 ok\n"); - -# ifdef FULL_TEST - { - unsigned char out_a[16], out_b[16]; - static char *hex = "0123456789ABCDEF"; - - printf("This test will take some time...."); - fflush(stdout); - memcpy(out_a, in_a, sizeof(in_a)); - memcpy(out_b, in_b, sizeof(in_b)); - i = 1; - - for (l = 0; l < 1000000L; l++) { - CAST_set_key(&key_b, 16, out_b); - CAST_ecb_encrypt(&(out_a[0]), &(out_a[0]), &key_b, CAST_ENCRYPT); - CAST_ecb_encrypt(&(out_a[8]), &(out_a[8]), &key_b, CAST_ENCRYPT); - CAST_set_key(&key, 16, out_a); - CAST_ecb_encrypt(&(out_b[0]), &(out_b[0]), &key, CAST_ENCRYPT); - CAST_ecb_encrypt(&(out_b[8]), &(out_b[8]), &key, CAST_ENCRYPT); - if ((l & 0xffff) == 0xffff) { - printf("%c", hex[i & 0x0f]); - fflush(stdout); - i++; - } + if (testresult) + TEST_info("ecb cast5 ok"); + + + memcpy(out_a, in_a, sizeof(in_a)); + memcpy(out_b, in_b, sizeof(in_b)); + + i = 1; + for (l = 0; l < 1000000L; l++) { + CAST_set_key(&key_b, 16, out_b); + CAST_ecb_encrypt(&(out_a[0]), &(out_a[0]), &key_b, CAST_ENCRYPT); + CAST_ecb_encrypt(&(out_a[8]), &(out_a[8]), &key_b, CAST_ENCRYPT); + CAST_set_key(&key, 16, out_a); + CAST_ecb_encrypt(&(out_b[0]), &(out_b[0]), &key, CAST_ENCRYPT); + CAST_ecb_encrypt(&(out_b[8]), &(out_b[8]), &key, CAST_ENCRYPT); + if ((l & 0xffff) == 0xffff) { + TEST_info("%c", hex[i & 0x0f]); + i++; } - - if ((memcmp(out_a, c_a, sizeof(c_a)) != 0) || - (memcmp(out_b, c_b, sizeof(c_b)) != 0)) { - printf("\n"); - printf("Error\n"); - - printf("A out ="); - for (i = 0; i < 16; i++) - printf("%02X ", out_a[i]); - printf("\nactual="); - for (i = 0; i < 16; i++) - printf("%02X ", c_a[i]); - printf("\n"); - - printf("B out ="); - for (i = 0; i < 16; i++) - printf("%02X ", out_b[i]); - printf("\nactual="); - for (i = 0; i < 16; i++) - printf("%02X ", c_b[i]); - printf("\n"); - } else - printf(" ok\n"); } -# endif - EXIT(err); + if (!TEST_mem_eq(out_a, sizeof(c_a), c_a, sizeof(c_a)) + || !TEST_mem_eq(out_b, sizeof(c_b), c_b, sizeof(c_b))) + testresult = 0; + + return testresult; } #endif + +void register_tests(void) +{ + ADD_TEST(cast_test); +} diff --git a/test/cipherlist_test.c b/test/cipherlist_test.c index 0013994305..31063e6a44 100644 --- a/test/cipherlist_test.c +++ b/test/cipherlist_test.c @@ -34,7 +34,7 @@ static CIPHERLIST_TEST_FIXTURE set_up(const char *const test_case_name) fixture.test_case_name = test_case_name; fixture.server = SSL_CTX_new(TLS_server_method()); fixture.client = SSL_CTX_new(TLS_client_method()); - OPENSSL_assert(fixture.client != NULL && fixture.server != NULL); + TEST_check(fixture.client != NULL && fixture.server != NULL); return fixture; } @@ -130,10 +130,10 @@ static int test_default_cipherlist(SSL_CTX *ctx) uint32_t expected_cipher_id, cipher_id; ssl = SSL_new(ctx); - OPENSSL_assert(ssl != NULL); + TEST_check(ssl != NULL); ciphers = SSL_get1_supported_ciphers(ssl); - OPENSSL_assert(ciphers != NULL); + TEST_check(ciphers != NULL); num_expected_ciphers = OSSL_NELEM(default_ciphers_in_order); num_ciphers = sk_SSL_CIPHER_num(ciphers); if (!TEST_int_eq(num_ciphers, num_expected_ciphers)) @@ -183,8 +183,8 @@ static int test_default_cipherlist_implicit() static int test_default_cipherlist_explicit() { SETUP_CIPHERLIST_TEST_FIXTURE(); - OPENSSL_assert(SSL_CTX_set_cipher_list(fixture.server, "DEFAULT")); - OPENSSL_assert(SSL_CTX_set_cipher_list(fixture.client, "DEFAULT")); + TEST_check(SSL_CTX_set_cipher_list(fixture.server, "DEFAULT")); + TEST_check(SSL_CTX_set_cipher_list(fixture.client, "DEFAULT")); EXECUTE_CIPHERLIST_TEST(); } diff --git a/test/x509aux.c b/test/x509aux.c index 2c20d6d743..2ad7b6d1cd 100644 --- a/test/x509aux.c +++ b/test/x509aux.c @@ -16,33 +16,10 @@ #include #include #include - -#include "../e_os.h" - -static const char *progname; - -static void test_usage(void) -{ - fprintf(stderr, "usage: %s certfile\n", progname); -} - -static void print_errors(void) -{ - unsigned long err; - char buffer[1024]; - const char *file; - const char *data; - int line; - int flags; - - while ((err = ERR_get_error_line_data(&file, &line, &data, &flags)) != 0) { - ERR_error_string_n(err, buffer, sizeof(buffer)); - if (flags & ERR_TXT_STRING) - fprintf(stderr, "Error: %s:%s:%d:%s\n", buffer, file, line, data); - else - fprintf(stderr, "Error: %s:%s:%d\n", buffer, file, line); - } -} +#include "e_os.h" +#include "test_main.h" +#include "test_main_custom.h" +#include "testutil.h" static int test_certs(BIO *fp) { @@ -173,59 +150,31 @@ static int test_certs(BIO *fp) } /* Some other PEM read error */ - print_errors(); return 0; } -int main(int argc, char *argv[]) +int test_main(int argc, char *argv[]) { BIO *bio_err; - const char *p; int ret = 1; - progname = argv[0]; - if (argc < 2) { - test_usage(); - EXIT(ret); - } + if (argc < 2) + TEST_error("usage: %s certfile...", argv[0]); bio_err = BIO_new_fp(stderr, BIO_NOCLOSE | BIO_FP_TEXT); - p = getenv("OPENSSL_DEBUG_MEMORY"); - if (p != NULL && strcmp(p, "on") == 0) - CRYPTO_set_mem_debug(1); - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); - - argc--; - argv++; - - while (argc >= 1) { + for (argv++; *argv; argv++) { BIO *f = BIO_new_file(*argv, "r"); int ok; - if (f == NULL) { - fprintf(stderr, "%s: Error opening cert file: '%s': %s\n", - progname, *argv, strerror(errno)); - EXIT(ret); - } - ret = !(ok = test_certs(f)); + TEST_check(f != NULL); + ok = test_certs(f); BIO_free(f); - if (!ok) { - printf("%s ERROR\n", *argv); - ret = 1; + if (!TEST_int_eq(ok, 1)) break; - } - printf("%s OK\n", *argv); - - argc--; - argv++; + ret = 0; } - -#ifndef OPENSSL_NO_CRYPTO_MDEBUG - if (CRYPTO_mem_leaks(bio_err) <= 0) - ret = 1; -#endif BIO_free(bio_err); - EXIT(ret); + return ret; } -- cgit v1.2.3