]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Add command line option for setting provider in evp_test
authorVeronika Hanulíková <vhanulik@redhat.com>
Tue, 12 Sep 2023 13:24:21 +0000 (15:24 +0200)
committerDmitry Belyavskiy <beldmit@gmail.com>
Thu, 21 Sep 2023 18:30:01 +0000 (20:30 +0200)
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/22151)

test/evp_test.c

index ff424eac729b40a0472a557394245052cdbd20cb..f998c21426c27bf70a019c41fc2f95d3d7637a65 100644 (file)
@@ -73,10 +73,12 @@ typedef enum OPTION_choice {
     OPT_EOF = 0,
     OPT_CONFIG_FILE,
     OPT_IN_PLACE,
+    OPT_PROVIDER_NAME,
     OPT_TEST_ENUM
 } OPTION_CHOICE;
 
 static OSSL_PROVIDER *prov_null = NULL;
+static OSSL_PROVIDER *libprov = NULL;
 static OSSL_LIB_CTX *libctx = NULL;
 
 /* List of public and private keys */
@@ -4117,6 +4119,8 @@ const OPTIONS *test_get_options(void)
           "The configuration file to use for the libctx" },
         { "process", OPT_IN_PLACE, 's',
           "Mode for data processing by cipher tests [in_place/both], both by default"},
+        { "provider", OPT_PROVIDER_NAME, 's',
+          "The provider to load (when no configuration file, the default value is 'default')" },
         { OPT_HELP_STR, 1, '-', "file\tFile to run tests on.\n" },
         { NULL }
     };
@@ -4127,6 +4131,7 @@ int setup_tests(void)
 {
     size_t n;
     char *config_file = NULL;
+    char *provider_name = NULL;
 
     OPTION_CHOICE o;
 
@@ -4139,6 +4144,9 @@ int setup_tests(void)
             if ((process_mode_in_place = evp_test_process_mode(opt_arg())) == -1)
                 return 0;
             break;
+        case OPT_PROVIDER_NAME:
+            provider_name = opt_arg();
+            break;
         case OPT_TEST_CASES:
             break;
         default:
@@ -4152,7 +4160,9 @@ int setup_tests(void)
      * Load the 'null' provider into the default library context to ensure that
      * the tests do not fallback to using the default provider.
      */
-    if (!test_get_libctx(&libctx, &prov_null, config_file, NULL, NULL))
+    if (config_file == NULL && provider_name == NULL)
+        provider_name = "default";
+    if (!test_get_libctx(&libctx, &prov_null, config_file, &libprov, provider_name))
         return 0;
 
     n = test_get_argument_count();
@@ -4165,6 +4175,7 @@ int setup_tests(void)
 
 void cleanup_tests(void)
 {
+    OSSL_PROVIDER_unload(libprov);
     OSSL_PROVIDER_unload(prov_null);
     OSSL_LIB_CTX_free(libctx);
 }