X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=test%2Fssl_test.c;h=a21a0f773beee3a8fcb552837506fb2a23f11659;hp=c8e71bb8b17b8705dc06b7408519f91caca8edec;hb=fe93b010e78ab60bc222cf4cbbf3cdfcbecffd91;hpb=019e47ce564e9d57ed85c4ebe0672518b6a349f5 diff --git a/test/ssl_test.c b/test/ssl_test.c index c8e71bb8b1..a21a0f773b 100644 --- a/test/ssl_test.c +++ b/test/ssl_test.c @@ -143,6 +143,19 @@ static int check_session_ticket(HANDSHAKE_RESULT *result, SSL_TEST_CTX *test_ctx return 1; } +static int check_session_id(HANDSHAKE_RESULT *result, SSL_TEST_CTX *test_ctx) +{ + if (test_ctx->session_id_expected == SSL_TEST_SESSION_ID_IGNORE) + return 1; + if (!TEST_int_eq(result->session_id, test_ctx->session_id_expected)) { + TEST_info("Client SessionIdExpected mismatch, expected %s, got %s\n.", + ssl_session_id_name(test_ctx->session_id_expected), + ssl_session_id_name(result->session_id)); + return 0; + } + return 1; +} + static int check_compression(HANDSHAKE_RESULT *result, SSL_TEST_CTX *test_ctx) { if (!TEST_int_eq(result->compression, test_ctx->compression_expected)) @@ -305,6 +318,18 @@ static int check_client_ca_names(HANDSHAKE_RESULT *result, result->client_ca_names); } +static int check_cipher(HANDSHAKE_RESULT *result, SSL_TEST_CTX *test_ctx) +{ + if (test_ctx->expected_cipher == NULL) + return 1; + if (!TEST_ptr(result->cipher)) + return 0; + if (!TEST_str_eq(test_ctx->expected_cipher, + result->cipher)) + return 0; + return 1; +} + /* * This could be further simplified by constructing an expected * HANDSHAKE_RESULT, and implementing comparison methods for @@ -320,10 +345,12 @@ static int check_test(HANDSHAKE_RESULT *result, SSL_TEST_CTX *test_ctx) ret &= check_servername(result, test_ctx); ret &= check_session_ticket(result, test_ctx); ret &= check_compression(result, test_ctx); + ret &= check_session_id(result, test_ctx); ret &= (result->session_ticket_do_not_call == 0); #ifndef OPENSSL_NO_NEXTPROTONEG ret &= check_npn(result, test_ctx); #endif + ret &= check_cipher(result, test_ctx); ret &= check_alpn(result, test_ctx); ret &= check_resumption(result, test_ctx); ret &= check_tmp_key(result, test_ctx); @@ -413,7 +440,8 @@ static int test_handshake(int idx) result = do_handshake(server_ctx, server2_ctx, client_ctx, resume_server_ctx, resume_client_ctx, test_ctx); - ret = check_test(result, test_ctx); + if (result != NULL) + ret = check_test(result, test_ctx); err: CONF_modules_unload(0); @@ -427,23 +455,22 @@ err: return ret; } -int test_main(int argc, char **argv) +int setup_tests(void) { - int result = EXIT_FAILURE; long num_tests; - if (!TEST_int_eq(argc, 2) - || !TEST_ptr(conf = NCONF_new(NULL)) + if (!TEST_ptr(conf = NCONF_new(NULL)) /* argv[1] should point to the test conf file */ - || !TEST_int_gt(NCONF_load(conf, argv[1], NULL), 0) + || !TEST_int_gt(NCONF_load(conf, test_get_argument(0), NULL), 0) || !TEST_int_ne(NCONF_get_number_e(conf, NULL, "num_tests", &num_tests), 0)) - goto err; + return 0; - ADD_ALL_TESTS(test_handshake, (int)(num_tests)); - result = run_tests(argv[0]); + ADD_ALL_TESTS(test_handshake, (int)num_tests); + return 1; +} -err: +void cleanup_tests(void) +{ NCONF_free(conf); - return result; }