mirror of
https://github.com/openssl/openssl.git
synced 2024-12-15 06:01:37 +08:00
Teach ssl_test_old how to run tests in a non-default library context
Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/11534)
This commit is contained in:
parent
73d391ad13
commit
63215d0449
@ -65,6 +65,7 @@
|
|||||||
#ifndef OPENSSL_NO_CT
|
#ifndef OPENSSL_NO_CT
|
||||||
# include <openssl/ct.h>
|
# include <openssl/ct.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <openssl/provider.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Or gethostname won't be declared properly
|
* Or gethostname won't be declared properly
|
||||||
@ -725,6 +726,7 @@ static void sv_usage(void)
|
|||||||
fprintf(stderr, " -client_sess_in <file> - Read the client session from a file\n");
|
fprintf(stderr, " -client_sess_in <file> - Read the client session from a file\n");
|
||||||
fprintf(stderr, " -should_reuse <number> - The expected state of reusing the session\n");
|
fprintf(stderr, " -should_reuse <number> - The expected state of reusing the session\n");
|
||||||
fprintf(stderr, " -no_ticket - do not issue TLS session ticket\n");
|
fprintf(stderr, " -no_ticket - do not issue TLS session ticket\n");
|
||||||
|
fprintf(stderr, " -provider <name> - Load the given provider into the library context\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_key_details(BIO *out, EVP_PKEY *key)
|
static void print_key_details(BIO *out, EVP_PKEY *key)
|
||||||
@ -922,6 +924,9 @@ int main(int argc, char *argv[])
|
|||||||
SSL_CONF_CTX *s_cctx = NULL, *c_cctx = NULL, *s_cctx2 = NULL;
|
SSL_CONF_CTX *s_cctx = NULL, *c_cctx = NULL, *s_cctx2 = NULL;
|
||||||
STACK_OF(OPENSSL_STRING) *conf_args = NULL;
|
STACK_OF(OPENSSL_STRING) *conf_args = NULL;
|
||||||
char *arg = NULL, *argn = NULL;
|
char *arg = NULL, *argn = NULL;
|
||||||
|
const char *provider = NULL, *config = NULL;
|
||||||
|
OSSL_PROVIDER *thisprov = NULL, *defctxnull = NULL;
|
||||||
|
OPENSSL_CTX *libctx = NULL;
|
||||||
|
|
||||||
verbose = 0;
|
verbose = 0;
|
||||||
debug = 0;
|
debug = 0;
|
||||||
@ -1183,6 +1188,10 @@ int main(int argc, char *argv[])
|
|||||||
should_reuse = !!atoi(*(++argv));
|
should_reuse = !!atoi(*(++argv));
|
||||||
} else if (strcmp(*argv, "-no_ticket") == 0) {
|
} else if (strcmp(*argv, "-no_ticket") == 0) {
|
||||||
no_ticket = 1;
|
no_ticket = 1;
|
||||||
|
} else if (strcmp(*argv, "-provider") == 0) {
|
||||||
|
if (--argc < 1)
|
||||||
|
goto bad;
|
||||||
|
provider = *(++argv);
|
||||||
} else {
|
} else {
|
||||||
int rv;
|
int rv;
|
||||||
arg = argv[0];
|
arg = argv[0];
|
||||||
@ -1350,9 +1359,22 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
c_ctx = SSL_CTX_new(meth);
|
if (provider != NULL) {
|
||||||
s_ctx = SSL_CTX_new(meth);
|
defctxnull = OSSL_PROVIDER_load(NULL, "null");
|
||||||
s_ctx2 = SSL_CTX_new(meth); /* no SSL_CTX_dup! */
|
if (defctxnull == NULL)
|
||||||
|
goto end;
|
||||||
|
libctx = OPENSSL_CTX_new();
|
||||||
|
if (libctx == NULL)
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
thisprov = OSSL_PROVIDER_load(libctx, provider);
|
||||||
|
if (thisprov == NULL)
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
c_ctx = SSL_CTX_new_with_libctx(libctx, NULL, meth);
|
||||||
|
s_ctx = SSL_CTX_new_with_libctx(libctx, NULL, meth);
|
||||||
|
s_ctx2 = SSL_CTX_new_with_libctx(libctx, NULL, meth); /* no SSL_CTX_dup! */
|
||||||
if ((c_ctx == NULL) || (s_ctx == NULL) || (s_ctx2 == NULL)) {
|
if ((c_ctx == NULL) || (s_ctx == NULL) || (s_ctx2 == NULL)) {
|
||||||
ERR_print_errors(bio_err);
|
ERR_print_errors(bio_err);
|
||||||
goto end;
|
goto end;
|
||||||
@ -1859,6 +1881,10 @@ int main(int argc, char *argv[])
|
|||||||
SSL_SESSION_free(server_sess);
|
SSL_SESSION_free(server_sess);
|
||||||
SSL_SESSION_free(client_sess);
|
SSL_SESSION_free(client_sess);
|
||||||
|
|
||||||
|
OSSL_PROVIDER_unload(defctxnull);
|
||||||
|
OSSL_PROVIDER_unload(thisprov);
|
||||||
|
OPENSSL_CTX_free(libctx);
|
||||||
|
|
||||||
BIO_free(bio_err);
|
BIO_free(bio_err);
|
||||||
EXIT(ret);
|
EXIT(ret);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user