Add public API for gettables and settables for keymanagement, signatures and key...
authorShane Lontis <shane.lontis@oracle.com>
Wed, 12 Aug 2020 01:59:43 +0000 (11:59 +1000)
committerShane Lontis <shane.lontis@oracle.com>
Wed, 12 Aug 2020 01:59:43 +0000 (11:59 +1000)
The openssl provider app will now display these params.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12396)

14 files changed:
apps/lib/app_params.c
apps/provider.c
crypto/evp/exchange.c
crypto/evp/keymgmt_meth.c
crypto/evp/p_lib.c
crypto/evp/pmeth_lib.c
crypto/evp/signature.c
doc/internal/man3/evp_keymgmt_newdata.pod
doc/man3/EVP_KEYEXCH_free.pod
doc/man3/EVP_KEYMGMT.pod
doc/man3/EVP_SIGNATURE_free.pod
include/crypto/evp.h
include/openssl/evp.h
util/libcrypto.num

index ba507079264c4f1148ea13d3a1c570a88602e1d8..3305b1e9226918a3412dd0a14cd2bd4c0d79d4c0 100644 (file)
@@ -75,7 +75,7 @@ static int describe_param_type(char *buf, size_t bufsz, const OSSL_PARAM *param)
 int print_param_types(const char *thing, const OSSL_PARAM *pdefs, int indent)
 {
     if (pdefs == NULL) {
-        BIO_printf(bio_out, "%*sNo declared %s\n", indent, "", thing);
+        return 1;
     } else if (pdefs->key == NULL) {
         /*
          * An empty list?  This shouldn't happen, but let's just make sure to
index 83fb2f3aee2c4540bc0bd7e9518d7fdd6f100311..7d3581153b42c9219564b3b27a05ea330386db8d 100644 (file)
@@ -52,8 +52,10 @@ struct info_st {
     void (*collect_names_fn)(void *method, STACK_OF(OPENSSL_CSTRING) *names);
     void *method;
     const OSSL_PARAM *gettable_params;
+    const OSSL_PARAM *settable_params;
     const OSSL_PARAM *gettable_ctx_params;
     const OSSL_PARAM *settable_ctx_params;
+    const OSSL_PARAM *gen_settable_params;
 };
 
 struct meta_st {
@@ -134,12 +136,16 @@ static void print_caps(META *meta, INFO *info)
         BIO_printf(bio_out, "%*s%s ", meta->indent, "", meta->label);
         print_method_names(bio_out, info);
         BIO_printf(bio_out, "\n");
+        print_param_types("settable keygen parameters",
+                          info->gen_settable_params, meta->subindent);
+        print_param_types("settable algorithm parameters",
+                          info->settable_params, meta->subindent);
         print_param_types("retrievable algorithm parameters",
                           info->gettable_params, meta->subindent);
-        print_param_types("retrievable operation parameters",
-                          info->gettable_ctx_params, meta->subindent);
         print_param_types("settable operation parameters",
                           info->settable_ctx_params, meta->subindent);
+        print_param_types("retrievable operation parameters",
+                          info->gettable_ctx_params, meta->subindent);
         break;
     }
     meta->first = 0;
@@ -155,6 +161,7 @@ static void do_method(void *method,
 {
     INFO info;
 
+    memset(&info, 0, sizeof(info));
     info.collect_names_fn = collect_names_fn;
     info.method = method;
     info.gettable_params = gettable_params;
@@ -164,6 +171,27 @@ static void do_method(void *method,
     meta->total++;
 }
 
+static void do_keymgmt_method(void *method,
+                              void (*collect_names_fn)(void *method,
+                                                       STACK_OF(OPENSSL_CSTRING)
+                                                       *names),
+                              const OSSL_PARAM *gettable_params,
+                              const OSSL_PARAM *settable_params,
+                              const OSSL_PARAM *gen_settable_params,
+                              META *meta)
+{
+    INFO info;
+
+    memset(&info, 0, sizeof(info));
+    info.collect_names_fn = collect_names_fn;
+    info.method = method;
+    info.gettable_params = gettable_params;
+    info.settable_params = settable_params;
+    info.gen_settable_params = gen_settable_params;
+    meta->fn(meta, &info);
+    meta->total++;
+}
+
 static void do_cipher(EVP_CIPHER *cipher, void *meta)
 {
     do_method(cipher, collect_cipher_names,
@@ -193,49 +221,28 @@ static void do_mac(EVP_MAC *mac, void *meta)
 
 static void do_keymgmt(EVP_KEYMGMT *keymgmt, void *meta)
 {
-    do_method(keymgmt, collect_keymgmt_names,
-/*
- * TODO(3.0) Enable when KEYMGMT and KEYEXCH have gettables and settables
- */
-#if 0
-              EVP_KEYMGMT_gettable_params(keymgmt),
-              EVP_KEYMGMT_gettable_ctx_params(keymgmt),
-              EVP_KEYMGMT_settable_ctx_params(keymgmt),
-#else
-              NULL, NULL, NULL,
-#endif
-              meta);
+    do_keymgmt_method(keymgmt, collect_keymgmt_names,
+                      EVP_KEYMGMT_gettable_params(keymgmt),
+                      EVP_KEYMGMT_settable_params(keymgmt),
+                      EVP_KEYMGMT_gen_settable_params(keymgmt),
+                      meta);
 }
 
 static void do_keyexch(EVP_KEYEXCH *keyexch, void *meta)
 {
     do_method(keyexch, collect_keyexch_names,
-/*
- * TODO(3.0) Enable when KEYMGMT and KEYEXCH have gettables and settables
- */
-#if 0
-              EVP_KEYEXCH_gettable_params(keyexch),
+              NULL,
               EVP_KEYEXCH_gettable_ctx_params(keyexch),
               EVP_KEYEXCH_settable_ctx_params(keyexch),
-#else
-              NULL, NULL, NULL,
-#endif
               meta);
 }
 
 static void do_signature(EVP_SIGNATURE *signature, void *meta)
 {
     do_method(signature, collect_signature_names,
-/*
- * TODO(3.0) Enable when KEYMGMT and SIGNATURE have gettables and settables
- */
-#if 0
-              EVP_SIGNATURE_gettable_params(signature),
+              NULL,
               EVP_SIGNATURE_gettable_ctx_params(signature),
               EVP_SIGNATURE_settable_ctx_params(signature),
-#else
-              NULL, NULL, NULL,
-#endif
               meta);
 }
 
index a47a0f0367f6195be3ae058c4d3e98dfb7c2d093..ccd75099ad9925838ef086b7d7bd9e27d7835d64 100644 (file)
@@ -474,3 +474,24 @@ void EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch,
     if (keyexch->prov != NULL)
         evp_names_do_all(keyexch->prov, keyexch->name_id, fn, data);
 }
+
+const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch)
+{
+    void *provctx;
+
+    if (keyexch == NULL || keyexch->gettable_ctx_params == NULL)
+        return NULL;
+
+    provctx = ossl_provider_ctx(EVP_KEYEXCH_provider(keyexch));
+    return keyexch->gettable_ctx_params(provctx);
+}
+
+const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch)
+{
+    void *provctx;
+
+    if (keyexch == NULL || keyexch->settable_ctx_params == NULL)
+        return NULL;
+    provctx = ossl_provider_ctx(EVP_KEYEXCH_provider(keyexch));
+    return keyexch->settable_ctx_params(provctx);
+}
index 99d9504251914e121c76c906367eaea4a22a9350..1459b64f0e4cacc8455a5416da70246044730a93 100644 (file)
@@ -16,7 +16,6 @@
 #include "crypto/evp.h"
 #include "evp_local.h"
 
-
 static void *keymgmt_new(void)
 {
     EVP_KEYMGMT *keymgmt = NULL;
@@ -328,7 +327,7 @@ int evp_keymgmt_gen_set_params(const EVP_KEYMGMT *keymgmt, void *genctx,
     return keymgmt->gen_set_params(genctx, params);
 }
 
-const OSSL_PARAM *evp_keymgmt_gen_settable_params(const EVP_KEYMGMT *keymgmt)
+const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt)
 {
     void *provctx = ossl_provider_ctx(EVP_KEYMGMT_provider(keymgmt));
 
@@ -367,7 +366,7 @@ int evp_keymgmt_get_params(const EVP_KEYMGMT *keymgmt, void *keydata,
     return keymgmt->get_params(keydata, params);
 }
 
-const OSSL_PARAM *evp_keymgmt_gettable_params(const EVP_KEYMGMT *keymgmt)
+const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt)
 {
     void *provctx = ossl_provider_ctx(EVP_KEYMGMT_provider(keymgmt));
 
@@ -384,7 +383,7 @@ int evp_keymgmt_set_params(const EVP_KEYMGMT *keymgmt, void *keydata,
     return keymgmt->set_params(keydata, params);
 }
 
-const OSSL_PARAM *evp_keymgmt_settable_params(const EVP_KEYMGMT *keymgmt)
+const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt)
 {
     void *provctx = ossl_provider_ctx(EVP_KEYMGMT_provider(keymgmt));
 
index b057669a2dade06a6555250466ed9b7a58e2b230..145c5286ce69d9db28e5235242e2aa5d89a322ef 100644 (file)
@@ -1883,7 +1883,7 @@ const OSSL_PARAM *EVP_PKEY_gettable_params(EVP_PKEY *pkey)
         || pkey->keymgmt == NULL
         || pkey->keydata == NULL)
         return 0;
-    return evp_keymgmt_gettable_params(pkey->keymgmt);
+    return EVP_KEYMGMT_gettable_params(pkey->keymgmt);
 }
 
 int EVP_PKEY_get_bn_param(EVP_PKEY *pkey, const char *key_name, BIGNUM **bn)
index ba85a8c1434c1519c8087be2278d3a6121b083f6..fe2cc689f6e093db4c46a0beb161ff4384218344 100644 (file)
@@ -680,7 +680,7 @@ const OSSL_PARAM *EVP_PKEY_CTX_settable_params(EVP_PKEY_CTX *ctx)
     }
     if (EVP_PKEY_CTX_IS_GEN_OP(ctx)
             && ctx->keymgmt != NULL)
-        return evp_keymgmt_gen_settable_params(ctx->keymgmt);
+        return EVP_KEYMGMT_gen_settable_params(ctx->keymgmt);
 
     return NULL;
 }
index 03fd8582f8e3c3c36004c7c3c48386a6b5535526..67242f59be3bee0b493faf7efb5161498aa1398d 100644 (file)
@@ -337,6 +337,28 @@ void EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature,
         evp_names_do_all(signature->prov, signature->name_id, fn, data);
 }
 
+const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig)
+{
+    void *provctx;
+
+    if (sig == NULL || sig->gettable_ctx_params == NULL)
+        return NULL;
+
+    provctx = ossl_provider_ctx(EVP_SIGNATURE_provider(sig));
+    return sig->gettable_ctx_params(provctx);
+}
+
+const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig)
+{
+    void *provctx;
+
+    if (sig == NULL || sig->settable_ctx_params == NULL)
+        return NULL;
+
+    provctx = ossl_provider_ctx(EVP_SIGNATURE_provider(sig));
+    return sig->settable_ctx_params(provctx);
+}
+
 static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation)
 {
     int ret = 0;
index 0f75e7936b13d17f54a41234a90ac1ad864c8ec2..9b3f2c55f160d2a55da43aa890a626ca19475dd1 100644 (file)
@@ -3,7 +3,7 @@
 =head1 NAME
 
 evp_keymgmt_newdata, evp_keymgmt_freedata,
-evp_keymgmt_get_params, evp_keymgmt_gettable_params,
+evp_keymgmt_get_params,
 evp_keymgmt_has, evp_keymgmt_validate,
 evp_keymgmt_import, evp_keymgmt_import_types,
 evp_keymgmt_export, evp_keymgmt_export_types
@@ -17,7 +17,6 @@ evp_keymgmt_export, evp_keymgmt_export_types
  void evp_keymgmt_freedata(const EVP_KEYMGMT *keymgmt, void *keyddata);
  int evp_keymgmt_get_params(const EVP_KEYMGMT *keymgmt,
                             void *keydata, OSSL_PARAM params[]);
- const OSSL_PARAM *evp_keymgmt_gettable_params(const EVP_KEYMGMT *keymgmt);
 
  int evp_keymgmt_has(const EVP_KEYMGMT *keymgmt, void *keyddata, int selection);
  int evp_keymgmt_validate(const EVP_KEYMGMT *keymgmt, void *keydata,
@@ -50,9 +49,6 @@ evp_keymgmt_newdata() was chosen for consistency)
 
 evp_keymgmt_get_params() calls the method's get_params() function.
 
-evp_keymgmt_gettable_params() calls the method's gettable_params()
-function.
-
 evp_keymgmt_has() calls the method's has() function.
 
 evp_keymgmt_validate() calls the method's validate() function.
@@ -70,9 +66,9 @@ evp_keymgmt_export_types() calls the method's export_types() function.
 evp_keymgmt_newdata() returns a pointer to a provider side key object,
 or NULL on error.
 
-evp_keymgmt_gettable_params(), evp_keymgmt_import_types(), and
-evp_keymgmt_export_types() return parameter descriptor for importing
-and exporting key data, or NULL if there are no such descriptors.
+evp_keymgmt_import_types(), and evp_keymgmt_export_types() return a parameter
+descriptor for importing and exporting key data, or NULL if there are no such
+descriptors.
 
 All other functions return 1 on success and 0 on error.
 
index deb9b9999ba8b6414f8535e08e59ecf1f846b53a..1f5356b97ae5d89083948d1e804b2cf27b443060 100644 (file)
@@ -4,7 +4,8 @@
 
 EVP_KEYEXCH_fetch, EVP_KEYEXCH_free, EVP_KEYEXCH_up_ref, EVP_KEYEXCH_provider,
 EVP_KEYEXCH_is_a, EVP_KEYEXCH_do_all_provided,
-EVP_KEYEXCH_number, EVP_KEYEXCH_names_do_all
+EVP_KEYEXCH_number, EVP_KEYEXCH_names_do_all,
+EVP_KEYEXCH_gettable_ctx_params, EVP_KEYEXCH_settable_ctx_params
 - Functions to manage EVP_KEYEXCH algorithm objects
 
 =head1 SYNOPSIS
@@ -24,6 +25,8 @@ EVP_KEYEXCH_number, EVP_KEYEXCH_names_do_all
  void EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *exchange,
                                void (*fn)(const char *name, void *data),
                                void *data);
+ const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch);
+ const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch);
 
 =head1 DESCRIPTION
 
@@ -58,6 +61,11 @@ all activated providers in the library context I<libctx>, and for each
 of the implementations, calls I<fn> with the implementation method and
 I<data> as arguments.
 
+EVP_KEYEXCH_gettable_ctx_params() and EVP_KEYEXCH_settable_ctx_params() return
+a constant B<OSSL_PARAM> array that describes the names and types of key
+parameters that can be retrieved or set by a key exchange algorithm using
+L<EVP_PKEY_CTX_get_params(3)> and L<EVP_PKEY_CTX_set_params(3)>.
+
 =head1 RETURN VALUES
 
 EVP_KEYEXCH_fetch() returns a pointer to a B<EVP_KEYEXCH> for success
@@ -70,6 +78,9 @@ otherwise 0.
 
 EVP_KEYEXCH_number() returns an integer.
 
+EVP_KEYEXCH_gettable_ctx_params() and EVP_KEYEXCH_settable_ctx_params() return
+a constant B<OSSL_PARAM> array or NULL on error.
+
 =head1 SEE ALSO
 
 L<provider(7)/Fetching algorithms>, L<OSSL_PROVIDER(3)>
@@ -80,7 +91,7 @@ The functions described here were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-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
index 853a15f089e1ebfc1f5405d0e5d451875809b655..8e7afc6a22374e4fe9047b056d10922a78086e90 100644 (file)
@@ -10,7 +10,10 @@ EVP_KEYMGMT_provider,
 EVP_KEYMGMT_is_a,
 EVP_KEYMGMT_number,
 EVP_KEYMGMT_do_all_provided,
-EVP_KEYMGMT_names_do_all
+EVP_KEYMGMT_names_do_all,
+EVP_KEYMGMT_gettable_params,
+EVP_KEYMGMT_settable_params,
+EVP_KEYMGMT_gen_settable_params
 - EVP key management routines
 
 =head1 SYNOPSIS
@@ -32,6 +35,9 @@ EVP_KEYMGMT_names_do_all
  void EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt,
                                void (*fn)(const char *name, void *data),
                                void *data);
+ const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt);
+ const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt);
+ const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt);
 
 =head1 DESCRIPTION
 
@@ -71,6 +77,16 @@ all activated providers in the library context I<libctx>, and for each
 of the implementations, calls I<fn> with the implementation method and
 I<data> as arguments.
 
+EVP_KEYMGMT_gettable_params() and EVP_KEYMGMT_settable_params() return a
+constant B<OSSL_PARAM> array that describes the names and types of key
+parameters that can be retrieved or set.
+EVP_KEYMGMT_gettable_params() is used by L<EVP_PKEY_gettable_params(3)>.
+See L<OSSL_PARAM(3)> for the use of B<OSSL_PARAM> as a parameter descriptor.
+
+EVP_KEYMGMT_gen_settable_params() returns a constant B<OSSL_PARAM> array that
+describes the names and types of key generation parameters that can be set via
+L<EVP_PKEY_CTX_set_params(3)>.
+
 =head1 NOTES
 
 EVP_KEYMGMT_fetch() may be called implicitly by other fetching
@@ -95,6 +111,10 @@ otherwise 0.
 
 EVP_KEYMGMT_number() returns an integer.
 
+EVP_KEYMGMT_gettable_params(), EVP_KEYMGMT_settable_params() and
+EVP_KEYMGMT_gen_settable_params() return a constant B<OSSL_PARAM> array or
+NULL on error.
+
 =head1 SEE ALSO
 
 L<EVP_MD_fetch(3)>, L<OPENSSL_CTX(3)>
@@ -105,7 +125,7 @@ The functions described here were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-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
index 70a0ee72dc85ae7e4b17cac62d9c68b3fd762324..6c5724bf5446be160282dfc88831bd6e47c2df20 100644 (file)
@@ -4,7 +4,8 @@
 
 EVP_SIGNATURE_fetch, EVP_SIGNATURE_free, EVP_SIGNATURE_up_ref,
 EVP_SIGNATURE_number, EVP_SIGNATURE_is_a, EVP_SIGNATURE_provider,
-EVP_SIGNATURE_do_all_provided, EVP_SIGNATURE_names_do_all
+EVP_SIGNATURE_do_all_provided, EVP_SIGNATURE_names_do_all,
+EVP_SIGNATURE_gettable_ctx_params, EVP_SIGNATURE_settable_ctx_params
 - Functions to manage EVP_SIGNATURE algorithm objects
 
 =head1 SYNOPSIS
@@ -25,6 +26,8 @@ EVP_SIGNATURE_do_all_provided, EVP_SIGNATURE_names_do_all
  void EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature,
                                  void (*fn)(const char *name, void *data),
                                  void *data);
+ const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig);
+ const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig);
 
 =head1 DESCRIPTION
 
@@ -61,6 +64,11 @@ I<signature>.
 EVP_SIGNATURE_names_do_all() traverses all names for I<signature>, and calls
 I<fn> with each name and I<data>.
 
+EVP_SIGNATURE_gettable_ctx_params() and EVP_SIGNATURE_settable_ctx_params()
+return a constant B<OSSL_PARAM> array that describes the names and types of key
+parameters that can be retrieved or set by a signature algorithm using
+L<EVP_PKEY_CTX_get_params(3)> and L<EVP_PKEY_CTX_set_params(3)>.
+
 =head1 RETURN VALUES
 
 EVP_SIGNATURE_fetch() returns a pointer to an B<EVP_SIGNATURE> for success
@@ -68,6 +76,9 @@ or B<NULL> for failure.
 
 EVP_SIGNATURE_up_ref() returns 1 for success or 0 otherwise.
 
+EVP_SIGNATURE_gettable_ctx_params() and EVP_SIGNATURE_settable_ctx_params()
+return a constant B<OSSL_PARAM> array or NULL on error.
+
 =head1 SEE ALSO
 
 L<provider(7)/Fetching algorithms>, L<OSSL_PROVIDER(3)>
@@ -78,7 +89,7 @@ The functions described here were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-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
index 07f7ee15ea6d4c778b02fdeba8fe2f9a19f42129..f170e59324a7286f09214ffb7d34373ba4e16940 100644 (file)
@@ -694,18 +694,13 @@ void *evp_keymgmt_newdata(const EVP_KEYMGMT *keymgmt);
 void evp_keymgmt_freedata(const EVP_KEYMGMT *keymgmt, void *keyddata);
 int evp_keymgmt_get_params(const EVP_KEYMGMT *keymgmt,
                            void *keydata, OSSL_PARAM params[]);
-const OSSL_PARAM *evp_keymgmt_gettable_params(const EVP_KEYMGMT *keymgmt);
 int evp_keymgmt_set_params(const EVP_KEYMGMT *keymgmt,
                            void *keydata, const OSSL_PARAM params[]);
-const OSSL_PARAM *evp_keymgmt_settable_params(const EVP_KEYMGMT *keymgmt);
-
 void *evp_keymgmt_gen_init(const EVP_KEYMGMT *keymgmt, int selection);
 int evp_keymgmt_gen_set_template(const EVP_KEYMGMT *keymgmt, void *genctx,
                                  void *template);
 int evp_keymgmt_gen_set_params(const EVP_KEYMGMT *keymgmt, void *genctx,
                                const OSSL_PARAM params[]);
-const OSSL_PARAM *
-evp_keymgmt_gen_settable_params(const EVP_KEYMGMT *keymgmt);
 void *evp_keymgmt_gen(const EVP_KEYMGMT *keymgmt, void *genctx,
                       OSSL_CALLBACK *cb, void *cbarg);
 void evp_keymgmt_gen_cleanup(const EVP_KEYMGMT *keymgmt, void *genctx);
index 76e5565f36678f984bd7dc14a3217d502a36e2a5..189112efaa5dddbd1b79bd1e7880f2a9b90c1f22 100644 (file)
@@ -1588,6 +1588,9 @@ void EVP_KEYMGMT_do_all_provided(OPENSSL_CTX *libctx,
 void EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt,
                               void (*fn)(const char *name, void *data),
                               void *data);
+const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt);
+const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt);
+const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt);
 
 EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
 EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
@@ -1667,6 +1670,8 @@ void EVP_SIGNATURE_do_all_provided(OPENSSL_CTX *libctx,
 void EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature,
                                 void (*fn)(const char *name, void *data),
                                 void *data);
+const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig);
+const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig);
 
 void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher);
 int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher);
@@ -1939,6 +1944,8 @@ void EVP_KEYEXCH_do_all_provided(OPENSSL_CTX *libctx,
 void EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch,
                               void (*fn)(const char *name, void *data),
                               void *data);
+const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch);
+const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch);
 
 void EVP_add_alg_module(void);
 
index d5f7d9826c690acca0527167b3480668b70e3b26..2a573cae7aa2d4d786c244c3f8d34d4fb41f933d 100644 (file)
@@ -5252,3 +5252,10 @@ EVP_PKEY_CTX_set0_dh_kdf_ukm            ?        3_0_0   EXIST::FUNCTION:DH
 EVP_PKEY_CTX_get0_dh_kdf_ukm            ?      3_0_0   EXIST::FUNCTION:DH
 EVP_CIPHER_CTX_get_iv_state             ?      3_0_0   EXIST::FUNCTION:
 EVP_CIPHER_CTX_get_iv                   ?      3_0_0   EXIST::FUNCTION:
+EVP_KEYMGMT_gettable_params             ?      3_0_0   EXIST::FUNCTION:
+EVP_KEYMGMT_settable_params             ?      3_0_0   EXIST::FUNCTION:
+EVP_KEYMGMT_gen_settable_params         ?      3_0_0   EXIST::FUNCTION:
+EVP_SIGNATURE_gettable_ctx_params       ?      3_0_0   EXIST::FUNCTION:
+EVP_SIGNATURE_settable_ctx_params       ?      3_0_0   EXIST::FUNCTION:
+EVP_KEYEXCH_gettable_ctx_params         ?      3_0_0   EXIST::FUNCTION:
+EVP_KEYEXCH_settable_ctx_params         ?      3_0_0   EXIST::FUNCTION: