Latest update.
This commit is contained in:
+49
-12
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
@@ -13,12 +13,17 @@
|
||||
#include <openssl/conf.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/provider.h>
|
||||
|
||||
#include "handshake_helper.h"
|
||||
#include "ssl_test_ctx.h"
|
||||
#include "testutil.h"
|
||||
|
||||
DEFINE_STACK_OF(X509_NAME)
|
||||
|
||||
static CONF *conf = NULL;
|
||||
static OSSL_PROVIDER *defctxnull = NULL, *thisprov = NULL;
|
||||
static OPENSSL_CTX *libctx = NULL;
|
||||
|
||||
/* Currently the section names are of the form test-<number>, e.g. test-15. */
|
||||
#define MAX_TESTCASE_NAME_LENGTH 100
|
||||
@@ -405,22 +410,26 @@ static int test_handshake(int idx)
|
||||
|
||||
#ifndef OPENSSL_NO_DTLS
|
||||
if (test_ctx->method == SSL_TEST_METHOD_DTLS) {
|
||||
server_ctx = SSL_CTX_new(DTLS_server_method());
|
||||
server_ctx = SSL_CTX_new_with_libctx(libctx, NULL, DTLS_server_method());
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(server_ctx, 0)))
|
||||
goto err;
|
||||
if (test_ctx->extra.server.servername_callback !=
|
||||
SSL_TEST_SERVERNAME_CB_NONE) {
|
||||
if (!TEST_ptr(server2_ctx = SSL_CTX_new(DTLS_server_method())))
|
||||
if (!TEST_ptr(server2_ctx =
|
||||
SSL_CTX_new_with_libctx(libctx, NULL,
|
||||
DTLS_server_method())))
|
||||
goto err;
|
||||
}
|
||||
client_ctx = SSL_CTX_new(DTLS_client_method());
|
||||
client_ctx = SSL_CTX_new_with_libctx(libctx, NULL, DTLS_client_method());
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(client_ctx, 0)))
|
||||
goto err;
|
||||
if (test_ctx->handshake_mode == SSL_TEST_HANDSHAKE_RESUME) {
|
||||
resume_server_ctx = SSL_CTX_new(DTLS_server_method());
|
||||
resume_server_ctx = SSL_CTX_new_with_libctx(libctx, NULL,
|
||||
DTLS_server_method());
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(resume_server_ctx, 0)))
|
||||
goto err;
|
||||
resume_client_ctx = SSL_CTX_new(DTLS_client_method());
|
||||
resume_client_ctx = SSL_CTX_new_with_libctx(libctx, NULL,
|
||||
DTLS_client_method());
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(resume_client_ctx, 0)))
|
||||
goto err;
|
||||
if (!TEST_ptr(resume_server_ctx)
|
||||
@@ -430,26 +439,30 @@ static int test_handshake(int idx)
|
||||
}
|
||||
#endif
|
||||
if (test_ctx->method == SSL_TEST_METHOD_TLS) {
|
||||
server_ctx = SSL_CTX_new(TLS_server_method());
|
||||
server_ctx = SSL_CTX_new_with_libctx(libctx, NULL, TLS_server_method());
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(server_ctx, 0)))
|
||||
goto err;
|
||||
/* SNI on resumption isn't supported/tested yet. */
|
||||
if (test_ctx->extra.server.servername_callback !=
|
||||
SSL_TEST_SERVERNAME_CB_NONE) {
|
||||
if (!TEST_ptr(server2_ctx = SSL_CTX_new(TLS_server_method())))
|
||||
if (!TEST_ptr(server2_ctx =
|
||||
SSL_CTX_new_with_libctx(libctx, NULL,
|
||||
TLS_server_method())))
|
||||
goto err;
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(server2_ctx, 0)))
|
||||
goto err;
|
||||
}
|
||||
client_ctx = SSL_CTX_new(TLS_client_method());
|
||||
client_ctx = SSL_CTX_new_with_libctx(libctx, NULL, TLS_client_method());
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(client_ctx, 0)))
|
||||
goto err;
|
||||
|
||||
if (test_ctx->handshake_mode == SSL_TEST_HANDSHAKE_RESUME) {
|
||||
resume_server_ctx = SSL_CTX_new(TLS_server_method());
|
||||
resume_server_ctx = SSL_CTX_new_with_libctx(libctx, NULL,
|
||||
TLS_server_method());
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(resume_server_ctx, 0)))
|
||||
goto err;
|
||||
resume_client_ctx = SSL_CTX_new(TLS_client_method());
|
||||
resume_client_ctx = SSL_CTX_new_with_libctx(libctx, NULL,
|
||||
TLS_client_method());
|
||||
if (!TEST_true(SSL_CTX_set_max_proto_version(resume_client_ctx, 0)))
|
||||
goto err;
|
||||
if (!TEST_ptr(resume_server_ctx)
|
||||
@@ -500,11 +513,12 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
OPT_TEST_DECLARE_USAGE("conf_file\n")
|
||||
OPT_TEST_DECLARE_USAGE("conf_file modulename [fips_conf_file]\n")
|
||||
|
||||
int setup_tests(void)
|
||||
{
|
||||
long num_tests;
|
||||
const char *modulename;
|
||||
|
||||
if (!test_skip_common_options()) {
|
||||
TEST_error("Error parsing test options\n");
|
||||
@@ -518,6 +532,26 @@ int setup_tests(void)
|
||||
&num_tests), 0))
|
||||
return 0;
|
||||
|
||||
if (!TEST_ptr(modulename = test_get_argument(1)))
|
||||
return 0;
|
||||
|
||||
if (strcmp(modulename, "none") != 0) {
|
||||
const char *configfile = test_get_argument(2);
|
||||
|
||||
defctxnull = OSSL_PROVIDER_load(NULL, "null");
|
||||
libctx = OPENSSL_CTX_new();
|
||||
if (!TEST_ptr(libctx))
|
||||
return 0;
|
||||
|
||||
if (configfile != NULL
|
||||
&& !TEST_true(OPENSSL_CTX_load_config(libctx, configfile)))
|
||||
return 0;
|
||||
|
||||
thisprov = OSSL_PROVIDER_load(libctx, modulename);
|
||||
if (!TEST_ptr(thisprov))
|
||||
return 0;
|
||||
}
|
||||
|
||||
ADD_ALL_TESTS(test_handshake, (int)num_tests);
|
||||
return 1;
|
||||
}
|
||||
@@ -525,4 +559,7 @@ int setup_tests(void)
|
||||
void cleanup_tests(void)
|
||||
{
|
||||
NCONF_free(conf);
|
||||
OSSL_PROVIDER_unload(defctxnull);
|
||||
OSSL_PROVIDER_unload(thisprov);
|
||||
OPENSSL_CTX_free(libctx);
|
||||
}
|
||||
Reference in New Issue
Block a user