diff options
author | Shane Lontis <shane.lontis@oracle.com> | 2020-09-22 10:38:13 +1000 |
---|---|---|
committer | Shane Lontis <shane.lontis@oracle.com> | 2020-09-26 07:13:21 +1000 |
commit | 1c52bf3c046d3456ef044279afe082f0c428f479 (patch) | |
tree | 29e34b446135395964bd64c9556027c957c9ef4a | |
parent | 5a9500488d2e96a917c12b8041584129810bf62c (diff) | |
download | openssl-1c52bf3c046d3456ef044279afe082f0c428f479.tar.gz |
Add EVP_ASYM_CIPHER_gettable_ctx_params() and EVP_ASYM_CIPHER_settable_ctx_params()
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/12943)
-rw-r--r-- | crypto/evp/asymcipher.c | 21 | ||||
-rw-r--r-- | doc/man3/EVP_ASYM_CIPHER_free.pod | 13 | ||||
-rw-r--r-- | include/openssl/evp.h | 2 |
3 files changed, 35 insertions, 1 deletions
diff --git a/crypto/evp/asymcipher.c b/crypto/evp/asymcipher.c index 2ecad8b77c..a80398782c 100644 --- a/crypto/evp/asymcipher.c +++ b/crypto/evp/asymcipher.c @@ -444,3 +444,24 @@ void EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, evp_names_do_all(cipher->prov, cipher->name_id, fn, data); } +const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *cip) +{ + void *provctx; + + if (cip == NULL || cip->gettable_ctx_params == NULL) + return NULL; + + provctx = ossl_provider_ctx(EVP_ASYM_CIPHER_provider(cip)); + return cip->gettable_ctx_params(provctx); +} + +const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *cip) +{ + void *provctx; + + if (cip == NULL || cip->settable_ctx_params == NULL) + return NULL; + + provctx = ossl_provider_ctx(EVP_ASYM_CIPHER_provider(cip)); + return cip->settable_ctx_params(provctx); +} diff --git a/doc/man3/EVP_ASYM_CIPHER_free.pod b/doc/man3/EVP_ASYM_CIPHER_free.pod index d7f9991c26..5aef5aad0d 100644 --- a/doc/man3/EVP_ASYM_CIPHER_free.pod +++ b/doc/man3/EVP_ASYM_CIPHER_free.pod @@ -4,7 +4,8 @@ EVP_ASYM_CIPHER_fetch, EVP_ASYM_CIPHER_free, EVP_ASYM_CIPHER_up_ref, EVP_ASYM_CIPHER_number, EVP_ASYM_CIPHER_is_a, EVP_ASYM_CIPHER_provider, -EVP_ASYM_CIPHER_do_all_provided, EVP_ASYM_CIPHER_names_do_all +EVP_ASYM_CIPHER_do_all_provided, EVP_ASYM_CIPHER_names_do_all, +EVP_ASYM_CIPHER_gettable_ctx_params, EVP_ASYM_CIPHER_settable_ctx_params - Functions to manage EVP_ASYM_CIPHER algorithm objects =head1 SYNOPSIS @@ -25,6 +26,8 @@ EVP_ASYM_CIPHER_do_all_provided, EVP_ASYM_CIPHER_names_do_all void EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, void (*fn)(const char *name, void *data), void *data); + const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *cip); + const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *cip); =head1 DESCRIPTION @@ -61,6 +64,11 @@ I<cipher>. EVP_ASYM_CIPHER_names_do_all() traverses all names for I<cipher>, and calls I<fn> with each name and I<data>. +EVP_ASYM_CIPHER_gettable_ctx_params() and EVP_ASYM_CIPHER_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 encryption algorithm using +L<EVP_PKEY_CTX_get_params(3)> and L<EVP_PKEY_CTX_set_params(3)>. + =head1 RETURN VALUES EVP_ASYM_CIPHER_fetch() returns a pointer to an B<EVP_ASYM_CIPHER> for success @@ -68,6 +76,9 @@ or B<NULL> for failure. EVP_ASYM_CIPHER_up_ref() returns 1 for success or 0 otherwise. +EVP_ASYM_CIPHER_gettable_ctx_params() and EVP_ASYM_CIPHER_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)> diff --git a/include/openssl/evp.h b/include/openssl/evp.h index 8c9996b948..f3936cd527 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -1675,6 +1675,8 @@ void EVP_ASYM_CIPHER_do_all_provided(OPENSSL_CTX *libctx, void EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher, void (*fn)(const char *name, void *data), void *data); +const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph); +const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph); void EVP_KEM_free(EVP_KEM *wrap); int EVP_KEM_up_ref(EVP_KEM *wrap); |