X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=test%2Fevp_fetch_prov_test.c;h=367493b5e7dae2ea4330f6b4719418c17faba585;hb=852c2ed260860b6b85c84f9fe96fb4d23d49c9f2;hp=ca39236cd68d62ec41c045386c6f96b5ff66585f;hpb=745fc918e7eeb86b2ac541325a8ae5c6e374ee56;p=oweals%2Fopenssl.git diff --git a/test/evp_fetch_prov_test.c b/test/evp_fetch_prov_test.c index ca39236cd6..367493b5e7 100644 --- a/test/evp_fetch_prov_test.c +++ b/test/evp_fetch_prov_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-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 @@ -20,6 +20,7 @@ #include #include "testutil.h" +static char *config_file = NULL; static char *alg = "digest"; static int use_default_ctx = 0; static char *fetch_property = NULL; @@ -32,6 +33,7 @@ typedef enum OPTION_choice { OPT_FETCH_PROPERTY, OPT_FETCH_FAILURE, OPT_USE_DEFAULTCTX, + OPT_CONFIG_FILE, OPT_TEST_ENUM } OPTION_CHOICE; @@ -39,6 +41,7 @@ const OPTIONS *test_get_options(void) { static const OPTIONS test_options[] = { OPT_TEST_OPTIONS_WITH_EXTRA_USAGE("[provname...]\n"), + { "config", OPT_CONFIG_FILE, '<', "The configuration file to use for the libctx" }, { "type", OPT_ALG_FETCH_TYPE, 's', "The fetch type to test" }, { "property", OPT_FETCH_PROPERTY, 's', "The fetch property e.g. provider=fips" }, { "fetchfail", OPT_FETCH_FAILURE, '-', "fetch is expected to fail" }, @@ -75,7 +78,7 @@ static int calculate_digest(const EVP_MD *md, const char *msg, size_t len, static int load_providers(OPENSSL_CTX **libctx, OSSL_PROVIDER *prov[]) { - OPENSSL_CTX *ctx; + OPENSSL_CTX *ctx = NULL; int ret = 0; size_t i; @@ -83,6 +86,8 @@ static int load_providers(OPENSSL_CTX **libctx, OSSL_PROVIDER *prov[]) if (!TEST_ptr(ctx)) goto err; + if (!TEST_true(OPENSSL_CTX_load_config(ctx, config_file))) + goto err; if (test_get_argument_count() > 2) goto err; @@ -92,9 +97,12 @@ static int load_providers(OPENSSL_CTX **libctx, OSSL_PROVIDER *prov[]) if (!TEST_ptr(prov[i])) goto err; } + ret = 1; *libctx = ctx; err: + if (ret == 0) + OPENSSL_CTX_free(ctx); return ret; } @@ -231,6 +239,9 @@ int setup_tests(void) while ((o = opt_next()) != OPT_EOF) { switch (o) { + case OPT_CONFIG_FILE: + config_file = opt_arg(); + break; case OPT_ALG_FETCH_TYPE: alg = opt_arg(); break;