summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorPatrick Mills <patrick.mills@cerberusftp.com>2022-11-23 15:08:51 -0500
committerTomas Mraz <tomas@openssl.org>2022-12-06 18:24:06 +0100
commitd3db25f568087bc9dc89b6720f0b4213cd5585c3 (patch)
tree349de5088200bde94a4b4fd450fad4f922398f96 /test
parentf2e4629608c3a2f5d93a91ef95abc25726eec44c (diff)
Implement OSSL_PROVIDER_get0_default_search_path, add docs and tests.
Reviewed-by: Todd Short <todd.short@me.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/19752)
Diffstat (limited to 'test')
-rw-r--r--test/build.info5
-rw-r--r--test/provider_default_search_path_test.c59
-rw-r--r--test/recipes/04-test_provider_default_search_path.t18
3 files changed, 82 insertions, 0 deletions
diff --git a/test/build.info b/test/build.info
index fb6a4551db..0722eff32d 100644
--- a/test/build.info
+++ b/test/build.info
@@ -979,6 +979,11 @@ IF[{- !$disabled{tests} -}]
INCLUDE[provider_pkey_test]=../include ../apps/include
DEPEND[provider_pkey_test]=../libcrypto libtestutil.a
+ PROGRAMS{noinst}=provider_default_search_path_test
+ SOURCE[provider_default_search_path_test]=provider_default_search_path_test.c
+ INCLUDE[provider_default_search_path_test]=../include ../apps/include
+ DEPEND[provider_default_search_path_test]=../libcrypto libtestutil.a
+
PROGRAMS{noinst}=params_test
SOURCE[params_test]=params_test.c
INCLUDE[params_test]=.. ../include ../apps/include
diff --git a/test/provider_default_search_path_test.c b/test/provider_default_search_path_test.c
new file mode 100644
index 0000000000..684a508765
--- /dev/null
+++ b/test/provider_default_search_path_test.c
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2020-2022 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
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#include <stddef.h>
+#include <openssl/provider.h>
+#include "testutil.h"
+
+static int test_default_libctx(void)
+{
+ OSSL_LIB_CTX *ctx = NULL;
+ char *path = "./some/path";
+ const char *retrieved_path = NULL;
+ int ok;
+
+ ok = TEST_true(OSSL_PROVIDER_set_default_search_path(ctx, path))
+ && TEST_ptr(retrieved_path = OSSL_PROVIDER_get0_default_search_path(ctx))
+ && TEST_str_eq(path, retrieved_path);
+
+ return ok;
+}
+
+static int test_explicit_libctx(void)
+{
+ OSSL_LIB_CTX *ctx = NULL;
+ char *def_libctx_path = "./some/path";
+ char *path = "./another/location";
+ const char *retrieved_defctx_path = NULL;
+ const char *retrieved_path = NULL;
+ int ok;
+
+ /* Set search path for default context, then create a new context and set
+ another path for it. Finally, get both paths and make sure they are
+ still what we set and are separate. */
+ ok = TEST_true(OSSL_PROVIDER_set_default_search_path(NULL, def_libctx_path))
+ && TEST_ptr(ctx = OSSL_LIB_CTX_new())
+ && TEST_true(OSSL_PROVIDER_set_default_search_path(ctx, path))
+ && TEST_ptr(retrieved_defctx_path = OSSL_PROVIDER_get0_default_search_path(NULL))
+ && TEST_str_eq(def_libctx_path, retrieved_defctx_path)
+ && TEST_ptr(retrieved_path = OSSL_PROVIDER_get0_default_search_path(ctx))
+ && TEST_str_eq(path, retrieved_path)
+ && TEST_str_ne(retrieved_path, retrieved_defctx_path);
+
+ OSSL_LIB_CTX_free(ctx);
+ return ok;
+}
+
+int setup_tests(void)
+{
+ ADD_TEST(test_default_libctx);
+ ADD_TEST(test_explicit_libctx);
+ return 1;
+}
+
diff --git a/test/recipes/04-test_provider_default_search_path.t b/test/recipes/04-test_provider_default_search_path.t
new file mode 100644
index 0000000000..29797e62a0
--- /dev/null
+++ b/test/recipes/04-test_provider_default_search_path.t
@@ -0,0 +1,18 @@
+#! /usr/bin/env perl
+# Copyright 2019-2022 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
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+use strict;
+use File::Spec;
+use OpenSSL::Test::Simple;
+
+# We must ensure that OPENSSL_CONF points at an empty file. Otherwise, we
+# risk that the configuration file contains statements that load providers,
+# which defeats the purpose of this test. The NUL device is good enough.
+$ENV{OPENSSL_CONF} = File::Spec->devnull();
+
+simple_test("test_provider_default_search_path", "provider_default_search_path_test");