xref: /freebsd/crypto/openssl/doc/man3/EVP_PKEY_CTX_set_params.pod (revision e7be843b4a162e68651d3911f0357ed464915629)
1b077aed3SPierre Pronchery=pod
2b077aed3SPierre Pronchery
3b077aed3SPierre Pronchery=head1 NAME
4b077aed3SPierre Pronchery
5b077aed3SPierre ProncheryEVP_PKEY_CTX_set_params,
6b077aed3SPierre ProncheryEVP_PKEY_CTX_settable_params,
7b077aed3SPierre ProncheryEVP_PKEY_CTX_get_params,
8b077aed3SPierre ProncheryEVP_PKEY_CTX_gettable_params
9b077aed3SPierre Pronchery- provider parameter passing operations
10b077aed3SPierre Pronchery
11b077aed3SPierre Pronchery=head1 SYNOPSIS
12b077aed3SPierre Pronchery
13b077aed3SPierre Pronchery #include <openssl/evp.h>
14b077aed3SPierre Pronchery
15b077aed3SPierre Pronchery int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params);
16b077aed3SPierre Pronchery const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx);
17b077aed3SPierre Pronchery int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params);
18b077aed3SPierre Pronchery const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx);
19b077aed3SPierre Pronchery
20b077aed3SPierre Pronchery=head1 DESCRIPTION
21b077aed3SPierre Pronchery
22b077aed3SPierre ProncheryThe EVP_PKEY_CTX_get_params() and EVP_PKEY_CTX_set_params() functions allow
23b077aed3SPierre Proncherytransfer of arbitrary key parameters to and from providers.
24b077aed3SPierre ProncheryNot all parameters may be supported by all providers.
25b077aed3SPierre ProncherySee L<OSSL_PROVIDER(3)> for more information on providers.
2644096ebdSEnji CooperThe I<params> field is a pointer to a list of B<OSSL_PARAM> structures,
2744096ebdSEnji Cooperterminated with a L<OSSL_PARAM_END(3)> struct.
2844096ebdSEnji CooperSee L<OSSL_PARAM(3)> for information about passing parameters.
29b077aed3SPierre ProncheryThese functions must only be called after the EVP_PKEY_CTX has been initialised
30b077aed3SPierre Proncheryfor use in an operation.
31b077aed3SPierre ProncheryThese methods replace the EVP_PKEY_CTX_ctrl() mechanism. (EVP_PKEY_CTX_ctrl now
32b077aed3SPierre Proncherycalls these methods internally to interact with providers).
33b077aed3SPierre Pronchery
34b077aed3SPierre ProncheryEVP_PKEY_CTX_gettable_params() and EVP_PKEY_CTX_settable_params() get a
35b077aed3SPierre Proncheryconstant L<OSSL_PARAM(3)> array that describes the gettable and
36b077aed3SPierre Proncherysettable parameters for the current algorithm implementation, i.e. parameters
37b077aed3SPierre Proncherythat can be used with EVP_PKEY_CTX_get_params() and EVP_PKEY_CTX_set_params()
38b077aed3SPierre Proncheryrespectively.
39b077aed3SPierre ProncheryThese functions must only be called after the EVP_PKEY_CTX has been initialised
40b077aed3SPierre Proncheryfor use in an operation.
41b077aed3SPierre Pronchery
42b077aed3SPierre Pronchery=head2 Parameters
43b077aed3SPierre Pronchery
44b077aed3SPierre ProncheryExamples of EVP_PKEY parameters include the following:
45b077aed3SPierre Pronchery
46b077aed3SPierre ProncheryL<provider-keymgmt(7)/Common parameters>
47b077aed3SPierre ProncheryL<provider-keyexch(7)/Key Exchange parameters>
48b077aed3SPierre ProncheryL<provider-signature(7)/Signature parameters>
49b077aed3SPierre Pronchery
50b077aed3SPierre ProncheryL<EVP_PKEY-RSA(7)/Common RSA parameters>
51b077aed3SPierre ProncheryL<EVP_PKEY-RSA(7)/RSA key generation parameters>
52b077aed3SPierre ProncheryL<EVP_PKEY-FFC(7)/FFC parameters>
53b077aed3SPierre ProncheryL<EVP_PKEY-FFC(7)/FFC key generation parameters>
54b077aed3SPierre ProncheryL<EVP_PKEY-DSA(7)/DSA parameters>
55b077aed3SPierre ProncheryL<EVP_PKEY-DSA(7)/DSA key generation parameters>
56b077aed3SPierre ProncheryL<EVP_PKEY-DH(7)/DH parameters>
57b077aed3SPierre ProncheryL<EVP_PKEY-DH(7)/DH key generation parameters>
58b077aed3SPierre ProncheryL<EVP_PKEY-EC(7)/Common EC parameters>
59b077aed3SPierre ProncheryL<EVP_PKEY-X25519(7)/Common X25519, X448, ED25519 and ED448 parameters>
60*e7be843bSPierre ProncheryL<EVP_PKEY-ML-DSA(7)/Common parameters>
61*e7be843bSPierre ProncheryL<EVP_PKEY-ML-KEM(7)/Common parameters>
62b077aed3SPierre Pronchery
63b077aed3SPierre Pronchery=head1 RETURN VALUES
64b077aed3SPierre Pronchery
65b077aed3SPierre ProncheryEVP_PKEY_CTX_set_params() returns 1 for success or 0 otherwise.
66b077aed3SPierre ProncheryEVP_PKEY_CTX_settable_params() returns an OSSL_PARAM array on success or NULL on
67b077aed3SPierre Proncheryerror.
68b077aed3SPierre ProncheryIt may also return NULL if there are no settable parameters available.
69b077aed3SPierre Pronchery
70b077aed3SPierre ProncheryAll other functions and macros described on this page return a positive value
71b077aed3SPierre Proncheryfor success and 0 or a negative value for failure. In particular a return value
72b077aed3SPierre Proncheryof -2 indicates the operation is not supported by the public key algorithm.
73b077aed3SPierre Pronchery
74b077aed3SPierre Pronchery=head1 SEE ALSO
75b077aed3SPierre Pronchery
76b077aed3SPierre ProncheryL<EVP_PKEY_CTX_new(3)>,
77b077aed3SPierre ProncheryL<EVP_PKEY_encrypt(3)>,
78b077aed3SPierre ProncheryL<EVP_PKEY_decrypt(3)>,
79b077aed3SPierre ProncheryL<EVP_PKEY_sign(3)>,
80b077aed3SPierre ProncheryL<EVP_PKEY_verify(3)>,
81b077aed3SPierre ProncheryL<EVP_PKEY_verify_recover(3)>,
82b077aed3SPierre ProncheryL<EVP_PKEY_derive(3)>,
83b077aed3SPierre ProncheryL<EVP_PKEY_keygen(3)>
84b077aed3SPierre Pronchery
85b077aed3SPierre Pronchery=head1 HISTORY
86b077aed3SPierre Pronchery
87b077aed3SPierre ProncheryAll functions were added in OpenSSL 3.0.
88b077aed3SPierre Pronchery
89*e7be843bSPierre ProncherySupport for B<ML-DSA>> and B<ML-KEM> was added in OpenSSL 3.5.
90*e7be843bSPierre Pronchery
91b077aed3SPierre Pronchery=head1 COPYRIGHT
92b077aed3SPierre Pronchery
93*e7be843bSPierre ProncheryCopyright 2020-2025 The OpenSSL Project Authors. All Rights Reserved.
94b077aed3SPierre Pronchery
95b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License").  You may not use
96b077aed3SPierre Proncherythis file except in compliance with the License.  You can obtain a copy
97b077aed3SPierre Proncheryin the file LICENSE in the source distribution or at
98b077aed3SPierre ProncheryL<https://www.openssl.org/source/license.html>.
99b077aed3SPierre Pronchery
100b077aed3SPierre Pronchery=cut
101