Add a minimal test provider
authorRichard Levitte <levitte@openssl.org>
Wed, 29 Nov 2023 13:24:18 +0000 (14:24 +0100)
committerRichard Levitte <levitte@openssl.org>
Mon, 4 Dec 2023 14:16:46 +0000 (15:16 +0100)
We test its validity by trying to load it.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Todd Short <todd.short@me.com>
(Merged from https://github.com/openssl/openssl/pull/22866)

(cherry picked from commit 31c2c12f2dada75c334f6a9aa60c8424cf4fd040)

test/build.info
test/p_minimal.c [new file with mode: 0644]
test/recipes/04-test_provider.t

index f2f911323cc8a1466ba848524efd7f89df765119..9bed40eeb1dc0e93362ae78368cf26c2c3a073dd 100644 (file)
@@ -852,6 +852,13 @@ IF[{- !$disabled{tests} -}]
       SOURCE[p_test]=p_test.ld
       GENERATE[p_test.ld]=../util/providers.num
     ENDIF
+    MODULES{noinst}=p_minimal
+    SOURCE[p_minimal]=p_minimal.c
+    INCLUDE[p_minimal]=../include ..
+    IF[{- defined $target{shared_defflag} -}]
+      SOURCE[p_minimal]=p_minimal.ld
+      GENERATE[p_minimal.ld]=../util/providers.num
+    ENDIF
   ENDIF
   IF[{- $disabled{module} || !$target{dso_scheme} -}]
     DEFINE[provider_test]=NO_PROVIDER_MODULE
diff --git a/test/p_minimal.c b/test/p_minimal.c
new file mode 100644 (file)
index 0000000..0bff982
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2019-2023 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
+ */
+
+/*
+ * This is the most minimal provider imaginable.  It can be loaded, and does
+ * absolutely nothing else.
+ */
+
+#include <openssl/core.h>
+
+OSSL_provider_init_fn OSSL_provider_init; /* Check the function signature */
+int OSSL_provider_init(const OSSL_CORE_HANDLE *handle,
+                       const OSSL_DISPATCH *oin,
+                       const OSSL_DISPATCH **out,
+                       void **provctx)
+{
+    return 1;
+}
index 312def775784029aab0dc40555823883ddfc14a5..1233cc4f93a1376adb6c008e688688b21e54ba96 100644 (file)
@@ -12,10 +12,17 @@ use OpenSSL::Test::Utils;
 
 setup("test_provider");
 
-plan tests => 2;
+plan tests => 3;
 
 ok(run(test(['provider_test'])), "provider_test");
 
 $ENV{"OPENSSL_MODULES"} = bldtop_dir("test");
 
 ok(run(test(['provider_test', '-loaded'])), "provider_test -loaded");
+
+ SKIP: {
+     skip "no module support", 1 if disabled("module");
+
+     ok(run(app(['openssl', 'list', '-provider', 'p_minimal',
+                 '-providers', '-verbose'])));
+}