xref: /freebsd/crypto/openssl/doc/man7/migration_guide.pod (revision 6f1af0d7d2af54b339b5212434cd6d4fda628d80)
1b077aed3SPierre Pronchery=pod
2b077aed3SPierre Pronchery
3b077aed3SPierre Pronchery=head1 NAME
4b077aed3SPierre Pronchery
5b077aed3SPierre Proncherymigration_guide - OpenSSL migration guide
6b077aed3SPierre Pronchery
7b077aed3SPierre Pronchery=head1 SYNOPSIS
8b077aed3SPierre Pronchery
9b077aed3SPierre ProncherySee the individual manual pages for details.
10b077aed3SPierre Pronchery
11b077aed3SPierre Pronchery=head1 DESCRIPTION
12b077aed3SPierre Pronchery
13b077aed3SPierre ProncheryThis guide details the changes required to migrate to new versions of OpenSSL.
14b077aed3SPierre ProncheryCurrently this covers OpenSSL 3.0. For earlier versions refer to
15b077aed3SPierre ProncheryL<https://github.com/openssl/openssl/blob/master/CHANGES.md>.
16b077aed3SPierre ProncheryFor an overview of some of the key concepts introduced in OpenSSL 3.0 see
17b077aed3SPierre ProncheryL<crypto(7)>.
18b077aed3SPierre Pronchery
19b077aed3SPierre Pronchery=head1 OPENSSL 3.0
20b077aed3SPierre Pronchery
21b077aed3SPierre Pronchery=head2 Main Changes from OpenSSL 1.1.1
22b077aed3SPierre Pronchery
23b077aed3SPierre Pronchery=head3 Major Release
24b077aed3SPierre Pronchery
25b077aed3SPierre ProncheryOpenSSL 3.0 is a major release and consequently any application that currently
26b077aed3SPierre Proncheryuses an older version of OpenSSL will at the very least need to be recompiled in
27b077aed3SPierre Proncheryorder to work with the new version. It is the intention that the large majority
28b077aed3SPierre Proncheryof applications will work unchanged with OpenSSL 3.0 if those applications
29b077aed3SPierre Proncherypreviously worked with OpenSSL 1.1.1. However this is not guaranteed and some
30b077aed3SPierre Proncherychanges may be required in some cases. Changes may also be required if
31b077aed3SPierre Proncheryapplications need to take advantage of some of the new features available in
32b077aed3SPierre ProncheryOpenSSL 3.0 such as the availability of the FIPS module.
33b077aed3SPierre Pronchery
34b077aed3SPierre Pronchery=head3 License Change
35b077aed3SPierre Pronchery
36b077aed3SPierre ProncheryIn previous versions, OpenSSL was licensed under the L<dual OpenSSL and SSLeay
37b077aed3SPierre Proncherylicenses|https://www.openssl.org/source/license-openssl-ssleay.txt>
38b077aed3SPierre Pronchery(both licenses apply). From OpenSSL 3.0 this is replaced by the
39b077aed3SPierre ProncheryL<Apache License v2|https://www.openssl.org/source/apache-license-2.0.txt>.
40b077aed3SPierre Pronchery
41b077aed3SPierre Pronchery=head3 Providers and FIPS support
42b077aed3SPierre Pronchery
43b077aed3SPierre ProncheryOne of the key changes from OpenSSL 1.1.1 is the introduction of the Provider
44b077aed3SPierre Proncheryconcept. Providers collect together and make available algorithm implementations.
45b077aed3SPierre ProncheryWith OpenSSL 3.0 it is possible to specify, either programmatically or via a
46b077aed3SPierre Proncheryconfig file, which providers you want to use for any given application.
47b077aed3SPierre ProncheryOpenSSL 3.0 comes with 5 different providers as standard. Over time third
48b077aed3SPierre Proncheryparties may distribute additional providers that can be plugged into OpenSSL.
49b077aed3SPierre ProncheryAll algorithm implementations available via providers are accessed through the
50b077aed3SPierre Pronchery"high level" APIs (for example those functions prefixed with C<EVP>). They cannot
51b077aed3SPierre Proncherybe accessed using the L</Low Level APIs>.
52b077aed3SPierre Pronchery
53b077aed3SPierre ProncheryOne of the standard providers available is the FIPS provider. This makes
54b077aed3SPierre Proncheryavailable FIPS validated cryptographic algorithms.
55b077aed3SPierre ProncheryThe FIPS provider is disabled by default and needs to be enabled explicitly
56b077aed3SPierre Proncheryat configuration time using the C<enable-fips> option. If it is enabled,
57b077aed3SPierre Proncherythe FIPS provider gets built and installed in addition to the other standard
58b077aed3SPierre Proncheryproviders. No separate installation procedure is necessary.
59b077aed3SPierre ProncheryThere is however a dedicated C<install_fips> make target, which serves the
60b077aed3SPierre Proncheryspecial purpose of installing only the FIPS provider into an existing
61b077aed3SPierre ProncheryOpenSSL installation.
62b077aed3SPierre Pronchery
63b077aed3SPierre ProncheryNot all algorithms may be available for the application at a particular moment.
64b077aed3SPierre ProncheryIf the application code uses any digest or cipher algorithm via the EVP interface,
65b077aed3SPierre Proncherythe application should verify the result of the L<EVP_EncryptInit(3)>,
66b077aed3SPierre ProncheryL<EVP_EncryptInit_ex(3)>, and L<EVP_DigestInit(3)> functions. In case when
67b077aed3SPierre Proncherythe requested algorithm is not available, these functions will fail.
68b077aed3SPierre Pronchery
69b077aed3SPierre ProncherySee also L</Legacy Algorithms> for information on the legacy provider.
70b077aed3SPierre Pronchery
71b077aed3SPierre ProncherySee also L</Completing the installation of the FIPS Module> and
72b077aed3SPierre ProncheryL</Using the FIPS Module in applications>.
73b077aed3SPierre Pronchery
74b077aed3SPierre Pronchery=head3 Low Level APIs
75b077aed3SPierre Pronchery
76b077aed3SPierre ProncheryOpenSSL has historically provided two sets of APIs for invoking cryptographic
77b077aed3SPierre Proncheryalgorithms: the "high level" APIs (such as the C<EVP> APIs) and the "low level"
78b077aed3SPierre ProncheryAPIs. The high level APIs are typically designed to work across all algorithm
79b077aed3SPierre Proncherytypes. The "low level" APIs are targeted at a specific algorithm implementation.
80b077aed3SPierre ProncheryFor example, the EVP APIs provide the functions L<EVP_EncryptInit_ex(3)>,
81b077aed3SPierre ProncheryL<EVP_EncryptUpdate(3)> and L<EVP_EncryptFinal(3)> to perform symmetric
82b077aed3SPierre Proncheryencryption. Those functions can be used with the algorithms AES, CHACHA, 3DES etc.
83b077aed3SPierre ProncheryOn the other hand, to do AES encryption using the low level APIs you would have
84b077aed3SPierre Proncheryto call AES specific functions such as L<AES_set_encrypt_key(3)>,
85b077aed3SPierre ProncheryL<AES_encrypt(3)>, and so on. The functions for 3DES are different.
86b077aed3SPierre ProncheryUse of the low level APIs has been informally discouraged by the OpenSSL
87b077aed3SPierre Proncherydevelopment team for a long time. However in OpenSSL 3.0 this is made more
88b077aed3SPierre Proncheryformal. All such low level APIs have been deprecated. You may still use them in
89b077aed3SPierre Proncheryyour applications, but you may start to see deprecation warnings during
90b077aed3SPierre Proncherycompilation (dependent on compiler support for this). Deprecated APIs may be
91b077aed3SPierre Proncheryremoved from future versions of OpenSSL so you are strongly encouraged to update
92b077aed3SPierre Proncheryyour code to use the high level APIs instead.
93b077aed3SPierre Pronchery
94b077aed3SPierre ProncheryThis is described in more detail in L</Deprecation of Low Level Functions>
95b077aed3SPierre Pronchery
96b077aed3SPierre Pronchery=head3 Legacy Algorithms
97b077aed3SPierre Pronchery
98b077aed3SPierre ProncherySome cryptographic algorithms such as B<MD2> and B<DES> that were available via
99b077aed3SPierre Proncherythe EVP APIs are now considered legacy and their use is strongly discouraged.
100b077aed3SPierre ProncheryThese legacy EVP algorithms are still available in OpenSSL 3.0 but not by
101b077aed3SPierre Proncherydefault. If you want to use them then you must load the legacy provider.
102b077aed3SPierre ProncheryThis can be as simple as a config file change, or can be done programmatically.
103b077aed3SPierre ProncherySee L<OSSL_PROVIDER-legacy(7)> for a complete list of algorithms.
104b077aed3SPierre ProncheryApplications using the EVP APIs to access these algorithms should instead use
105b077aed3SPierre Proncherymore modern algorithms. If that is not possible then these applications
106b077aed3SPierre Proncheryshould ensure that the legacy provider has been loaded. This can be achieved
107b077aed3SPierre Proncheryeither programmatically or via configuration. See L<crypto(7)> man page for
108b077aed3SPierre Proncherymore information about providers.
109b077aed3SPierre Pronchery
110b077aed3SPierre Pronchery=head3 Engines and "METHOD" APIs
111b077aed3SPierre Pronchery
112b077aed3SPierre ProncheryThe refactoring to support Providers conflicts internally with the APIs used to
113b077aed3SPierre Proncherysupport engines, including the ENGINE API and any function that creates or
114b077aed3SPierre Proncherymodifies custom "METHODS" (for example L<EVP_MD_meth_new(3)>,
115b077aed3SPierre ProncheryL<EVP_CIPHER_meth_new(3)>, L<EVP_PKEY_meth_new(3)>, L<RSA_meth_new(3)>,
116b077aed3SPierre ProncheryL<EC_KEY_METHOD_new(3)>, etc.). These functions are being deprecated in
117b077aed3SPierre ProncheryOpenSSL 3.0, and users of these APIs should know that their use can likely
118b077aed3SPierre Proncherybypass provider selection and configuration, with unintended consequences.
119b077aed3SPierre ProncheryThis is particularly relevant for applications written to use the OpenSSL 3.0
120b077aed3SPierre ProncheryFIPS module, as detailed below. Authors and maintainers of external engines are
121b077aed3SPierre Proncherystrongly encouraged to refactor their code transforming engines into providers
122b077aed3SPierre Proncheryusing the new Provider API and avoiding deprecated methods.
123b077aed3SPierre Pronchery
124b077aed3SPierre Pronchery=head3 Support of legacy engines
125b077aed3SPierre Pronchery
126b077aed3SPierre ProncheryIf openssl is not built without engine support or deprecated API support, engines
127b077aed3SPierre Proncherywill still work. However, their applicability will be limited.
128b077aed3SPierre Pronchery
129b077aed3SPierre ProncheryNew algorithms provided via engines will still work.
130b077aed3SPierre Pronchery
131b077aed3SPierre ProncheryEngine-backed keys can be loaded via custom B<OSSL_STORE> implementation.
132b077aed3SPierre ProncheryIn this case the B<EVP_PKEY> objects created via L<ENGINE_load_private_key(3)>
133aa795734SPierre Proncherywill be considered legacy and will continue to work.
134b077aed3SPierre Pronchery
135b077aed3SPierre ProncheryTo ensure the future compatibility, the engines should be turned to providers.
136b077aed3SPierre ProncheryTo prefer the provider-based hardware offload, you can specify the default
137b077aed3SPierre Proncheryproperties to prefer your provider.
138b077aed3SPierre Pronchery
139b077aed3SPierre Pronchery=head3 Versioning Scheme
140b077aed3SPierre Pronchery
141b077aed3SPierre ProncheryThe OpenSSL versioning scheme has changed with the OpenSSL 3.0 release. The new
142b077aed3SPierre Proncheryversioning scheme has this format:
143b077aed3SPierre Pronchery
144b077aed3SPierre ProncheryMAJOR.MINOR.PATCH
145b077aed3SPierre Pronchery
146b077aed3SPierre ProncheryFor OpenSSL 1.1.1 and below, different patch levels were indicated by a letter
147b077aed3SPierre Proncheryat the end of the release version number. This will no longer be used and
148b077aed3SPierre Proncheryinstead the patch level is indicated by the final number in the version. A
149b077aed3SPierre Proncherychange in the second (MINOR) number indicates that new features may have been
150b077aed3SPierre Proncheryadded. OpenSSL versions with the same major number are API and ABI compatible.
151b077aed3SPierre ProncheryIf the major number changes then API and ABI compatibility is not guaranteed.
152b077aed3SPierre Pronchery
153b077aed3SPierre ProncheryFor more information, see L<OpenSSL_version(3)>.
154b077aed3SPierre Pronchery
155b077aed3SPierre Pronchery=head3 Other major new features
156b077aed3SPierre Pronchery
157b077aed3SPierre Pronchery=head4 Certificate Management Protocol (CMP, RFC 4210)
158b077aed3SPierre Pronchery
159b077aed3SPierre ProncheryThis also covers CRMF (RFC 4211) and HTTP transfer (RFC 6712)
160b077aed3SPierre ProncherySee L<openssl-cmp(1)> and L<OSSL_CMP_exec_certreq(3)> as starting points.
161b077aed3SPierre Pronchery
162b077aed3SPierre Pronchery=head4 HTTP(S) client
163b077aed3SPierre Pronchery
164b077aed3SPierre ProncheryA proper HTTP(S) client that supports GET and POST, redirection, plain and
165b077aed3SPierre ProncheryASN.1-encoded contents, proxies, and timeouts.
166b077aed3SPierre Pronchery
167b077aed3SPierre Pronchery=head4 Key Derivation Function API (EVP_KDF)
168b077aed3SPierre Pronchery
169b077aed3SPierre ProncheryThis simplifies the process of adding new KDF and PRF implementations.
170b077aed3SPierre Pronchery
171b077aed3SPierre ProncheryPreviously KDF algorithms had been shoe-horned into using the EVP_PKEY object
172b077aed3SPierre Proncherywhich was not a logical mapping.
173b077aed3SPierre ProncheryExisting applications that use KDF algorithms using EVP_PKEY
174b077aed3SPierre Pronchery(scrypt, TLS1 PRF and HKDF) may be slower as they use an EVP_KDF bridge
175b077aed3SPierre Proncheryinternally.
176b077aed3SPierre ProncheryAll new applications should use the new L<EVP_KDF(3)> interface.
177b077aed3SPierre ProncherySee also L<OSSL_PROVIDER-default(7)/Key Derivation Function (KDF)> and
178b077aed3SPierre ProncheryL<OSSL_PROVIDER-FIPS(7)/Key Derivation Function (KDF)>.
179b077aed3SPierre Pronchery
180b077aed3SPierre Pronchery=head4 Message Authentication Code API (EVP_MAC)
181b077aed3SPierre Pronchery
182b077aed3SPierre ProncheryThis simplifies the process of adding MAC implementations.
183b077aed3SPierre Pronchery
184b077aed3SPierre ProncheryThis includes a generic EVP_PKEY to EVP_MAC bridge, to facilitate the continued
185b077aed3SPierre Proncheryuse of MACs through raw private keys in functionality such as
186b077aed3SPierre ProncheryL<EVP_DigestSign(3)> and L<EVP_DigestVerify(3)>.
187b077aed3SPierre Pronchery
188b077aed3SPierre ProncheryAll new applications should use the new L<EVP_MAC(3)> interface.
189b077aed3SPierre ProncherySee also L<OSSL_PROVIDER-default(7)/Message Authentication Code (MAC)>
190b077aed3SPierre Proncheryand L<OSSL_PROVIDER-FIPS(7)/Message Authentication Code (MAC)>.
191b077aed3SPierre Pronchery
192b077aed3SPierre Pronchery=head4 Algorithm Fetching
193b077aed3SPierre Pronchery
194b077aed3SPierre ProncheryUsing calls to convenience functions such as EVP_sha256() and EVP_aes_256_gcm() may
195b077aed3SPierre Proncheryincur a performance penalty when using providers.
196b077aed3SPierre ProncheryRetrieving algorithms from providers involves searching for an algorithm by name.
197b077aed3SPierre ProncheryThis is much slower than directly accessing a method table.
198b077aed3SPierre ProncheryIt is recommended to prefetch algorithms if an algorithm is used many times.
199b077aed3SPierre ProncherySee L<crypto(7)/Performance>, L<crypto(7)/Explicit fetching> and L<crypto(7)/Implicit fetching>.
200b077aed3SPierre Pronchery
201b077aed3SPierre Pronchery=head4 Support for Linux Kernel TLS
202b077aed3SPierre Pronchery
203b077aed3SPierre ProncheryIn order to use KTLS, support for it must be compiled in using the
204b077aed3SPierre ProncheryC<enable-ktls> configuration option. It must also be enabled at run time using
205b077aed3SPierre Proncherythe B<SSL_OP_ENABLE_KTLS> option.
206b077aed3SPierre Pronchery
207b077aed3SPierre Pronchery=head4 New Algorithms
208b077aed3SPierre Pronchery
209b077aed3SPierre Pronchery=over 4
210b077aed3SPierre Pronchery
211b077aed3SPierre Pronchery=item *
212b077aed3SPierre Pronchery
213b077aed3SPierre ProncheryKDF algorithms "SINGLE STEP" and "SSH"
214b077aed3SPierre Pronchery
215b077aed3SPierre ProncherySee L<EVP_KDF-SS(7)> and L<EVP_KDF-SSHKDF(7)>
216b077aed3SPierre Pronchery
217b077aed3SPierre Pronchery=item *
218b077aed3SPierre Pronchery
219b077aed3SPierre ProncheryMAC Algorithms "GMAC" and "KMAC"
220b077aed3SPierre Pronchery
221b077aed3SPierre ProncherySee L<EVP_MAC-GMAC(7)> and L<EVP_MAC-KMAC(7)>.
222b077aed3SPierre Pronchery
223b077aed3SPierre Pronchery=item *
224b077aed3SPierre Pronchery
225b077aed3SPierre ProncheryKEM Algorithm "RSASVE"
226b077aed3SPierre Pronchery
227b077aed3SPierre ProncherySee L<EVP_KEM-RSA(7)>.
228b077aed3SPierre Pronchery
229b077aed3SPierre Pronchery=item *
230b077aed3SPierre Pronchery
231b077aed3SPierre ProncheryCipher Algorithm "AES-SIV"
232b077aed3SPierre Pronchery
233b077aed3SPierre ProncherySee L<EVP_EncryptInit(3)/SIV Mode>.
234b077aed3SPierre Pronchery
235b077aed3SPierre Pronchery=item *
236b077aed3SPierre Pronchery
237b077aed3SPierre ProncheryAES Key Wrap inverse ciphers supported by EVP layer.
238b077aed3SPierre Pronchery
239b077aed3SPierre ProncheryThe inverse ciphers use AES decryption for wrapping, and AES encryption for
240b077aed3SPierre Proncheryunwrapping. The algorithms are: "AES-128-WRAP-INV", "AES-192-WRAP-INV",
241b077aed3SPierre Pronchery"AES-256-WRAP-INV", "AES-128-WRAP-PAD-INV", "AES-192-WRAP-PAD-INV" and
242b077aed3SPierre Pronchery"AES-256-WRAP-PAD-INV".
243b077aed3SPierre Pronchery
244b077aed3SPierre Pronchery=item *
245b077aed3SPierre Pronchery
246b077aed3SPierre ProncheryCTS ciphers added to EVP layer.
247b077aed3SPierre Pronchery
248b077aed3SPierre ProncheryThe algorithms are "AES-128-CBC-CTS", "AES-192-CBC-CTS", "AES-256-CBC-CTS",
249b077aed3SPierre Pronchery"CAMELLIA-128-CBC-CTS", "CAMELLIA-192-CBC-CTS" and "CAMELLIA-256-CBC-CTS".
250b077aed3SPierre ProncheryCS1, CS2 and CS3 variants are supported.
251b077aed3SPierre Pronchery
252b077aed3SPierre Pronchery=back
253b077aed3SPierre Pronchery
254b077aed3SPierre Pronchery=head4 CMS and PKCS#7 updates
255b077aed3SPierre Pronchery
256b077aed3SPierre Pronchery=over 4
257b077aed3SPierre Pronchery
258b077aed3SPierre Pronchery=item *
259b077aed3SPierre Pronchery
260b077aed3SPierre ProncheryAdded CAdES-BES signature verification support.
261b077aed3SPierre Pronchery
262b077aed3SPierre Pronchery=item *
263b077aed3SPierre Pronchery
264b077aed3SPierre ProncheryAdded CAdES-BES signature scheme and attributes support (RFC 5126) to CMS API.
265b077aed3SPierre Pronchery
266b077aed3SPierre Pronchery=item *
267b077aed3SPierre Pronchery
268b077aed3SPierre ProncheryAdded AuthEnvelopedData content type structure (RFC 5083) using AES_GCM
269b077aed3SPierre Pronchery
270b077aed3SPierre ProncheryThis uses the AES-GCM parameter (RFC 5084) for the Cryptographic Message Syntax.
271b077aed3SPierre ProncheryIts purpose is to support encryption and decryption of a digital envelope that
272b077aed3SPierre Proncheryis both authenticated and encrypted using AES GCM mode.
273b077aed3SPierre Pronchery
274b077aed3SPierre Pronchery=item *
275b077aed3SPierre Pronchery
276b077aed3SPierre ProncheryL<PKCS7_get_octet_string(3)> and L<PKCS7_type_is_other(3)> were made public.
277b077aed3SPierre Pronchery
278b077aed3SPierre Pronchery=back
279b077aed3SPierre Pronchery
280b077aed3SPierre Pronchery=head4 PKCS#12 API updates
281b077aed3SPierre Pronchery
282b077aed3SPierre ProncheryThe default algorithms for pkcs12 creation with the PKCS12_create() function
283b077aed3SPierre Proncherywere changed to more modern PBKDF2 and AES based algorithms. The default
284b077aed3SPierre ProncheryMAC iteration count was changed to PKCS12_DEFAULT_ITER to make it equal
285b077aed3SPierre Proncherywith the password-based encryption iteration count. The default digest
286b077aed3SPierre Proncheryalgorithm for the MAC computation was changed to SHA-256. The pkcs12
287b077aed3SPierre Proncheryapplication now supports -legacy option that restores the previous
288b077aed3SPierre Proncherydefault algorithms to support interoperability with legacy systems.
289b077aed3SPierre Pronchery
290b077aed3SPierre ProncheryAdded enhanced PKCS#12 APIs which accept a library context B<OSSL_LIB_CTX>
291b077aed3SPierre Proncheryand (where relevant) a property query. Other APIs which handle PKCS#7 and
292b077aed3SPierre ProncheryPKCS#8 objects have also been enhanced where required. This includes:
293b077aed3SPierre Pronchery
294b077aed3SPierre ProncheryL<PKCS12_add_key_ex(3)>, L<PKCS12_add_safe_ex(3)>, L<PKCS12_add_safes_ex(3)>,
295b077aed3SPierre ProncheryL<PKCS12_create_ex(3)>, L<PKCS12_decrypt_skey_ex(3)>, L<PKCS12_init_ex(3)>,
296b077aed3SPierre ProncheryL<PKCS12_item_decrypt_d2i_ex(3)>, L<PKCS12_item_i2d_encrypt_ex(3)>,
297b077aed3SPierre ProncheryL<PKCS12_key_gen_asc_ex(3)>, L<PKCS12_key_gen_uni_ex(3)>, L<PKCS12_key_gen_utf8_ex(3)>,
298b077aed3SPierre ProncheryL<PKCS12_pack_p7encdata_ex(3)>, L<PKCS12_pbe_crypt_ex(3)>, L<PKCS12_PBE_keyivgen_ex(3)>,
299b077aed3SPierre ProncheryL<PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(3)>, L<PKCS5_pbe2_set_iv_ex(3)>,
300b077aed3SPierre ProncheryL<PKCS5_pbe_set0_algor_ex(3)>, L<PKCS5_pbe_set_ex(3)>, L<PKCS5_pbkdf2_set_ex(3)>,
301b077aed3SPierre ProncheryL<PKCS5_v2_PBE_keyivgen_ex(3)>, L<PKCS5_v2_scrypt_keyivgen_ex(3)>,
302b077aed3SPierre ProncheryL<PKCS8_decrypt_ex(3)>, L<PKCS8_encrypt_ex(3)>, L<PKCS8_set0_pbe_ex(3)>.
303b077aed3SPierre Pronchery
304b077aed3SPierre ProncheryAs part of this change the EVP_PBE_xxx APIs can also accept a library
305b077aed3SPierre Proncherycontext and property query and will call an extended version of the key/IV
306b077aed3SPierre Proncheryderivation function which supports these parameters. This includes
307b077aed3SPierre ProncheryL<EVP_PBE_CipherInit_ex(3)>, L<EVP_PBE_find_ex(3)> and L<EVP_PBE_scrypt_ex(3)>.
308b077aed3SPierre Pronchery
309*6f1af0d7SPierre Pronchery=head4 PKCS#12 KDF versus FIPS
310*6f1af0d7SPierre Pronchery
311*6f1af0d7SPierre ProncheryUnlike in 1.x.y, the PKCS12KDF algorithm used when a PKCS#12 structure
312*6f1af0d7SPierre Proncheryis created with a MAC that does not work with the FIPS provider as the PKCS12KDF
313*6f1af0d7SPierre Proncheryis not a FIPS approvable mechanism.
314*6f1af0d7SPierre Pronchery
315*6f1af0d7SPierre ProncherySee L<EVP_KDF-PKCS12KDF(7)>, L<PKCS12_create(3)>, L<openssl-pkcs12(1)>,
316*6f1af0d7SPierre ProncheryL<OSSL_PROVIDER-FIPS(7)>.
317*6f1af0d7SPierre Pronchery
318b077aed3SPierre Pronchery=head4 Windows thread synchronization changes
319b077aed3SPierre Pronchery
320b077aed3SPierre ProncheryWindows thread synchronization uses read/write primitives (SRWLock) when
321b077aed3SPierre Proncherysupported by the OS, otherwise CriticalSection continues to be used.
322b077aed3SPierre Pronchery
323b077aed3SPierre Pronchery=head4 Trace API
324b077aed3SPierre Pronchery
325b077aed3SPierre ProncheryA new generic trace API has been added which provides support for enabling
326b077aed3SPierre Proncheryinstrumentation through trace output. This feature is mainly intended as an aid
327b077aed3SPierre Proncheryfor developers and is disabled by default. To utilize it, OpenSSL needs to be
328b077aed3SPierre Proncheryconfigured with the C<enable-trace> option.
329b077aed3SPierre Pronchery
330b077aed3SPierre ProncheryIf the tracing API is enabled, the application can activate trace output by
331b077aed3SPierre Proncheryregistering BIOs as trace channels for a number of tracing and debugging
332b077aed3SPierre Proncherycategories. See L<OSSL_trace_enabled(3)>.
333b077aed3SPierre Pronchery
334b077aed3SPierre Pronchery=head4 Key validation updates
335b077aed3SPierre Pronchery
336b077aed3SPierre ProncheryL<EVP_PKEY_public_check(3)> and L<EVP_PKEY_param_check(3)> now work for
337b077aed3SPierre Proncherymore key types. This includes RSA, DSA, ED25519, X25519, ED448 and X448.
338b077aed3SPierre ProncheryPreviously (in 1.1.1) they would return -2. For key types that do not have
339b077aed3SPierre Proncheryparameters then L<EVP_PKEY_param_check(3)> will always return 1.
340b077aed3SPierre Pronchery
341b077aed3SPierre Pronchery=head3 Other notable deprecations and changes
342b077aed3SPierre Pronchery
343b077aed3SPierre Pronchery=head4 The function code part of an OpenSSL error code is no longer relevant
344b077aed3SPierre Pronchery
345b077aed3SPierre ProncheryThis code is now always set to zero. Related functions are deprecated.
346b077aed3SPierre Pronchery
347b077aed3SPierre Pronchery=head4 STACK and HASH macros have been cleaned up
348b077aed3SPierre Pronchery
349b077aed3SPierre ProncheryThe type-safe wrappers are declared everywhere and implemented once.
350b077aed3SPierre ProncherySee L<DEFINE_STACK_OF(3)> and L<DECLARE_LHASH_OF(3)>.
351b077aed3SPierre Pronchery
352b077aed3SPierre Pronchery=head4 The RAND_DRBG subsystem has been removed
353b077aed3SPierre Pronchery
354b077aed3SPierre ProncheryThe new L<EVP_RAND(3)> is a partial replacement: the DRBG callback framework is
355b077aed3SPierre Proncheryabsent. The RAND_DRBG API did not fit well into the new provider concept as
356b077aed3SPierre Proncheryimplemented by EVP_RAND and EVP_RAND_CTX.
357b077aed3SPierre Pronchery
358b077aed3SPierre Pronchery=head4 Removed FIPS_mode() and FIPS_mode_set()
359b077aed3SPierre Pronchery
360b077aed3SPierre ProncheryThese functions are legacy APIs that are not applicable to the new provider
361b077aed3SPierre Proncherymodel. Applications should instead use
362b077aed3SPierre ProncheryL<EVP_default_properties_is_fips_enabled(3)> and
363b077aed3SPierre ProncheryL<EVP_default_properties_enable_fips(3)>.
364b077aed3SPierre Pronchery
365b077aed3SPierre Pronchery=head4 Key generation is slower
366b077aed3SPierre Pronchery
367b077aed3SPierre ProncheryThe Miller-Rabin test now uses 64 rounds, which is used for all prime generation,
368b077aed3SPierre Proncheryincluding RSA key generation. This affects the time for larger keys sizes.
369b077aed3SPierre Pronchery
370b077aed3SPierre ProncheryThe default key generation method for the regular 2-prime RSA keys was changed
371b077aed3SPierre Proncheryto the FIPS186-4 B.3.6 method (Generation of Probable Primes with Conditions
372b077aed3SPierre ProncheryBased on Auxiliary Probable Primes). This method is slower than the original
373b077aed3SPierre Proncherymethod.
374b077aed3SPierre Pronchery
375b077aed3SPierre Pronchery=head4 Change PBKDF2 to conform to SP800-132 instead of the older PKCS5 RFC2898
376b077aed3SPierre Pronchery
377b077aed3SPierre ProncheryThis checks that the salt length is at least 128 bits, the derived key length is
378b077aed3SPierre Proncheryat least 112 bits, and that the iteration count is at least 1000.
379b077aed3SPierre ProncheryFor backwards compatibility these checks are disabled by default in the
380b077aed3SPierre Proncherydefault provider, but are enabled by default in the FIPS provider.
381b077aed3SPierre Pronchery
382b077aed3SPierre ProncheryTo enable or disable the checks see B<OSSL_KDF_PARAM_PKCS5> in
383b077aed3SPierre ProncheryL<EVP_KDF-PBKDF2(7)>. The parameter can be set using L<EVP_KDF_derive(3)>.
384b077aed3SPierre Pronchery
385b077aed3SPierre Pronchery=head4 Enforce a minimum DH modulus size of 512 bits
386b077aed3SPierre Pronchery
387b077aed3SPierre ProncherySmaller sizes now result in an error.
388b077aed3SPierre Pronchery
389b077aed3SPierre Pronchery=head4 SM2 key changes
390b077aed3SPierre Pronchery
391b077aed3SPierre ProncheryEC EVP_PKEYs with the SM2 curve have been reworked to automatically become
392b077aed3SPierre ProncheryEVP_PKEY_SM2 rather than EVP_PKEY_EC.
393b077aed3SPierre Pronchery
394b077aed3SPierre ProncheryUnlike in previous OpenSSL versions, this means that applications cannot
395b077aed3SPierre Proncherycall C<EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2)> to get SM2 computations.
396b077aed3SPierre Pronchery
397b077aed3SPierre ProncheryParameter and key generation is also reworked to make it possible
398b077aed3SPierre Proncheryto generate EVP_PKEY_SM2 parameters and keys. Applications must now generate
399b077aed3SPierre ProncherySM2 keys directly and must not create an EVP_PKEY_EC key first. It is no longer
400b077aed3SPierre Proncherypossible to import an SM2 key with domain parameters other than the SM2 elliptic
401b077aed3SPierre Proncherycurve ones.
402b077aed3SPierre Pronchery
403b077aed3SPierre ProncheryValidation of SM2 keys has been separated from the validation of regular EC
404b077aed3SPierre Proncherykeys, allowing to improve the SM2 validation process to reject loaded private
405b077aed3SPierre Proncherykeys that are not conforming to the SM2 ISO standard.
406b077aed3SPierre ProncheryIn particular, a private scalar I<k> outside the range I<< 1 <= k < n-1 >> is
407b077aed3SPierre Proncherynow correctly rejected.
408b077aed3SPierre Pronchery
409b077aed3SPierre Pronchery=head4 EVP_PKEY_set_alias_type() method has been removed
410b077aed3SPierre Pronchery
411b077aed3SPierre ProncheryThis function made a B<EVP_PKEY> object mutable after it had been set up. In
412b077aed3SPierre ProncheryOpenSSL 3.0 it was decided that a provided key should not be able to change its
413b077aed3SPierre Proncherytype, so this function has been removed.
414b077aed3SPierre Pronchery
415b077aed3SPierre Pronchery=head4 Functions that return an internal key should be treated as read only
416b077aed3SPierre Pronchery
417b077aed3SPierre ProncheryFunctions such as L<EVP_PKEY_get0_RSA(3)> behave slightly differently in
418b077aed3SPierre ProncheryOpenSSL 3.0. Previously they returned a pointer to the low-level key used
419b077aed3SPierre Proncheryinternally by libcrypto. From OpenSSL 3.0 this key may now be held in a
420b077aed3SPierre Proncheryprovider. Calling these functions will only return a handle on the internal key
421b077aed3SPierre Proncherywhere the EVP_PKEY was constructed using this key in the first place, for
422b077aed3SPierre Proncheryexample using a function or macro such as L<EVP_PKEY_assign_RSA(3)>,
423b077aed3SPierre ProncheryL<EVP_PKEY_set1_RSA(3)>, etc.
424b077aed3SPierre ProncheryWhere the EVP_PKEY holds a provider managed key, then these functions now return
425b077aed3SPierre Proncherya cached copy of the key. Changes to the internal provider key that take place
426b077aed3SPierre Proncheryafter the first time the cached key is accessed will not be reflected back in
427b077aed3SPierre Proncherythe cached copy. Similarly any changes made to the cached copy by application
428b077aed3SPierre Proncherycode will not be reflected back in the internal provider key.
429b077aed3SPierre Pronchery
430b077aed3SPierre ProncheryFor the above reasons the keys returned from these functions should typically be
431b077aed3SPierre Proncherytreated as read-only. To emphasise this the value returned from
432b077aed3SPierre ProncheryL<EVP_PKEY_get0_RSA(3)>, L<EVP_PKEY_get0_DSA(3)>, L<EVP_PKEY_get0_EC_KEY(3)> and
433b077aed3SPierre ProncheryL<EVP_PKEY_get0_DH(3)> have been made const. This may break some existing code.
434b077aed3SPierre ProncheryApplications broken by this change should be modified. The preferred solution is
435b077aed3SPierre Proncheryto refactor the code to avoid the use of these deprecated functions. Failing
436b077aed3SPierre Proncherythis the code should be modified to use a const pointer instead.
437b077aed3SPierre ProncheryThe L<EVP_PKEY_get1_RSA(3)>, L<EVP_PKEY_get1_DSA(3)>, L<EVP_PKEY_get1_EC_KEY(3)>
438b077aed3SPierre Proncheryand L<EVP_PKEY_get1_DH(3)> functions continue to return a non-const pointer to
439b077aed3SPierre Proncheryenable them to be "freed". However they should also be treated as read-only.
440b077aed3SPierre Pronchery
441b077aed3SPierre Pronchery=head4 The public key check has moved from EVP_PKEY_derive() to EVP_PKEY_derive_set_peer()
442b077aed3SPierre Pronchery
443b077aed3SPierre ProncheryThis may mean result in an error in L<EVP_PKEY_derive_set_peer(3)> rather than
444b077aed3SPierre Proncheryduring L<EVP_PKEY_derive(3)>.
445b077aed3SPierre ProncheryTo disable this check use EVP_PKEY_derive_set_peer_ex(dh, peer, 0).
446b077aed3SPierre Pronchery
447b077aed3SPierre Pronchery=head4 The print format has cosmetic changes for some functions
448b077aed3SPierre Pronchery
449b077aed3SPierre ProncheryThe output from numerous "printing" functions such as L<X509_signature_print(3)>,
450b077aed3SPierre ProncheryL<X509_print_ex(3)>, L<X509_CRL_print_ex(3)>, and other similar functions has been
451b077aed3SPierre Proncheryamended such that there may be cosmetic differences between the output
452b077aed3SPierre Proncheryobserved in 1.1.1 and 3.0. This also applies to the B<-text> output from the
453b077aed3SPierre ProncheryB<openssl x509> and B<openssl crl> applications.
454b077aed3SPierre Pronchery
455b077aed3SPierre Pronchery=head4 Interactive mode from the B<openssl> program has been removed
456b077aed3SPierre Pronchery
457b077aed3SPierre ProncheryFrom now on, running it without arguments is equivalent to B<openssl help>.
458b077aed3SPierre Pronchery
459b077aed3SPierre Pronchery=head4 The error return values from some control calls (ctrl) have changed
460b077aed3SPierre Pronchery
461b077aed3SPierre ProncheryOne significant change is that controls which used to return -2 for
462b077aed3SPierre Proncheryinvalid inputs, now return -1 indicating a generic error condition instead.
463b077aed3SPierre Pronchery
464b077aed3SPierre Pronchery=head4 DH and DHX key types have different settable parameters
465b077aed3SPierre Pronchery
466b077aed3SPierre ProncheryPreviously (in 1.1.1) these conflicting parameters were allowed, but will now
467b077aed3SPierre Proncheryresult in errors. See L<EVP_PKEY-DH(7)> for further details. This affects the
468b077aed3SPierre Proncherybehaviour of L<openssl-genpkey(1)> for DH parameter generation.
469b077aed3SPierre Pronchery
470b077aed3SPierre Pronchery=head4 EVP_CIPHER_CTX_set_flags() ordering change
471b077aed3SPierre Pronchery
472b077aed3SPierre ProncheryIf using a cipher from a provider the B<EVP_CIPH_FLAG_LENGTH_BITS> flag can only
473b077aed3SPierre Proncherybe set B<after> the cipher has been assigned to the cipher context.
474b077aed3SPierre ProncherySee L<EVP_EncryptInit(3)/FLAGS> for more information.
475b077aed3SPierre Pronchery
476b077aed3SPierre Pronchery=head4 Validation of operation context parameters
477b077aed3SPierre Pronchery
478b077aed3SPierre ProncheryDue to move of the implementation of cryptographic operations to the
479b077aed3SPierre Proncheryproviders, validation of various operation parameters can be postponed until
480b077aed3SPierre Proncherythe actual operation is executed where previously it happened immediately
481b077aed3SPierre Proncherywhen an operation parameter was set.
482b077aed3SPierre Pronchery
483b077aed3SPierre ProncheryFor example when setting an unsupported curve with
484b077aed3SPierre ProncheryEVP_PKEY_CTX_set_ec_paramgen_curve_nid() this function call will not fail
485b077aed3SPierre Proncherybut later keygen operations with the EVP_PKEY_CTX will fail.
486b077aed3SPierre Pronchery
487b077aed3SPierre Pronchery=head4 Removal of function code from the error codes
488b077aed3SPierre Pronchery
489b077aed3SPierre ProncheryThe function code part of the error code is now always set to 0. For that
490b077aed3SPierre Proncheryreason the ERR_GET_FUNC() macro was removed. Applications must resolve
491b077aed3SPierre Proncherythe error codes only using the library number and the reason code.
492b077aed3SPierre Pronchery
493b077aed3SPierre Pronchery=head4 ChaCha20-Poly1305 cipher does not allow a truncated IV length to be used
494b077aed3SPierre Pronchery
495b077aed3SPierre ProncheryIn OpenSSL 3.0 setting the IV length to any value other than 12 will result in an
496b077aed3SPierre Proncheryerror.
497b077aed3SPierre ProncheryPrior to OpenSSL 3.0 the ivlen could be smaller that the required 12 byte length,
498b077aed3SPierre Proncheryusing EVP_CIPHER_CTX_ctrl(ctx, EVP_CRTL_AEAD_SET_IVLEN, ivlen, NULL). This resulted
499b077aed3SPierre Proncheryin an IV that had leading zero padding.
500b077aed3SPierre Pronchery
501b077aed3SPierre Pronchery=head2 Installation and Compilation
502b077aed3SPierre Pronchery
503b077aed3SPierre ProncheryPlease refer to the INSTALL.md file in the top of the distribution for
504b077aed3SPierre Proncheryinstructions on how to build and install OpenSSL 3.0. Please also refer to the
505b077aed3SPierre Proncheryvarious platform specific NOTES files for your specific platform.
506b077aed3SPierre Pronchery
507b077aed3SPierre Pronchery=head2 Upgrading from OpenSSL 1.1.1
508b077aed3SPierre Pronchery
509b077aed3SPierre ProncheryUpgrading to OpenSSL 3.0 from OpenSSL 1.1.1 should be relatively straight
510b077aed3SPierre Proncheryforward in most cases. The most likely area where you will encounter problems
511b077aed3SPierre Proncheryis if you have used low level APIs in your code (as discussed above). In that
512b077aed3SPierre Proncherycase you are likely to start seeing deprecation warnings when compiling your
513b077aed3SPierre Proncheryapplication. If this happens you have 3 options:
514b077aed3SPierre Pronchery
515b077aed3SPierre Pronchery=over 4
516b077aed3SPierre Pronchery
517b077aed3SPierre Pronchery=item 1.
518b077aed3SPierre Pronchery
519b077aed3SPierre ProncheryIgnore the warnings. They are just warnings. The deprecated functions are still present and you may still use them. However be aware that they may be removed from a future version of OpenSSL.
520b077aed3SPierre Pronchery
521b077aed3SPierre Pronchery=item 2.
522b077aed3SPierre Pronchery
523b077aed3SPierre ProncherySuppress the warnings. Refer to your compiler documentation on how to do this.
524b077aed3SPierre Pronchery
525b077aed3SPierre Pronchery=item 3.
526b077aed3SPierre Pronchery
527b077aed3SPierre ProncheryRemove your usage of the low level APIs. In this case you will need to rewrite your code to use the high level APIs instead
528b077aed3SPierre Pronchery
529b077aed3SPierre Pronchery=back
530b077aed3SPierre Pronchery
531b077aed3SPierre Pronchery=head3 Error code changes
532b077aed3SPierre Pronchery
533b077aed3SPierre ProncheryAs OpenSSL 3.0 provides a brand new Encoder/Decoder mechanism for working with
534b077aed3SPierre Proncherywidely used file formats, application code that checks for particular error
535b077aed3SPierre Proncheryreason codes on key loading failures might need an update.
536b077aed3SPierre Pronchery
537b077aed3SPierre ProncheryPassword-protected keys may deserve special attention. If only some errors
538b077aed3SPierre Proncheryare treated as an indicator that the user should be asked about the password again,
539b077aed3SPierre Proncheryit's worth testing these scenarios and processing the newly relevant codes.
540b077aed3SPierre Pronchery
541b077aed3SPierre ProncheryThere may be more cases to treat specially, depending on the calling application code.
542b077aed3SPierre Pronchery
543b077aed3SPierre Pronchery=head2 Upgrading from OpenSSL 1.0.2
544b077aed3SPierre Pronchery
545b077aed3SPierre ProncheryUpgrading to OpenSSL 3.0 from OpenSSL 1.0.2 is likely to be significantly more
546b077aed3SPierre Proncherydifficult. In addition to the issues discussed above in the section about
547b077aed3SPierre ProncheryL</Upgrading from OpenSSL 1.1.1>, the main things to be aware of are:
548b077aed3SPierre Pronchery
549b077aed3SPierre Pronchery=over 4
550b077aed3SPierre Pronchery
551b077aed3SPierre Pronchery=item 1.
552b077aed3SPierre Pronchery
553b077aed3SPierre ProncheryThe build and installation procedure has changed significantly.
554b077aed3SPierre Pronchery
555b077aed3SPierre ProncheryCheck the file INSTALL.md in the top of the installation for instructions on how
556b077aed3SPierre Proncheryto build and install OpenSSL for your platform. Also read the various NOTES
557b077aed3SPierre Proncheryfiles in the same directory, as applicable for your platform.
558b077aed3SPierre Pronchery
559b077aed3SPierre Pronchery=item 2.
560b077aed3SPierre Pronchery
561b077aed3SPierre ProncheryMany structures have been made opaque in OpenSSL 3.0.
562b077aed3SPierre Pronchery
563b077aed3SPierre ProncheryThe structure definitions have been removed from the public header files and
564b077aed3SPierre Proncherymoved to internal header files. In practice this means that you can no longer
565b077aed3SPierre Proncherystack allocate some structures. Instead they must be heap allocated through some
566b077aed3SPierre Proncheryfunction call (typically those function names have a C<_new> suffix to them).
567b077aed3SPierre ProncheryAdditionally you must use "setter" or "getter" functions to access the fields
568b077aed3SPierre Proncherywithin those structures.
569b077aed3SPierre Pronchery
570b077aed3SPierre ProncheryFor example code that previously looked like this:
571b077aed3SPierre Pronchery
572b077aed3SPierre Pronchery EVP_MD_CTX md_ctx;
573b077aed3SPierre Pronchery
574b077aed3SPierre Pronchery /* This line will now generate compiler errors */
575b077aed3SPierre Pronchery EVP_MD_CTX_init(&md_ctx);
576b077aed3SPierre Pronchery
577b077aed3SPierre ProncheryThe code needs to be amended to look like this:
578b077aed3SPierre Pronchery
579b077aed3SPierre Pronchery EVP_MD_CTX *md_ctx;
580b077aed3SPierre Pronchery
581b077aed3SPierre Pronchery md_ctx = EVP_MD_CTX_new();
582b077aed3SPierre Pronchery ...
583b077aed3SPierre Pronchery ...
584b077aed3SPierre Pronchery EVP_MD_CTX_free(md_ctx);
585b077aed3SPierre Pronchery
586b077aed3SPierre Pronchery=item 3.
587b077aed3SPierre Pronchery
588b077aed3SPierre ProncherySupport for TLSv1.3 has been added.
589b077aed3SPierre Pronchery
590b077aed3SPierre ProncheryThis has a number of implications for SSL/TLS applications. See the
591b077aed3SPierre ProncheryL<TLS1.3 page|https://wiki.openssl.org/index.php/TLS1.3> for further details.
592b077aed3SPierre Pronchery
593b077aed3SPierre Pronchery=back
594b077aed3SPierre Pronchery
595b077aed3SPierre ProncheryMore details about the breaking changes between OpenSSL versions 1.0.2 and 1.1.0
596b077aed3SPierre Proncherycan be found on the
597b077aed3SPierre ProncheryL<OpenSSL 1.1.0 Changes page|https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes>.
598b077aed3SPierre Pronchery
599b077aed3SPierre Pronchery=head3 Upgrading from the OpenSSL 2.0 FIPS Object Module
600b077aed3SPierre Pronchery
601b077aed3SPierre ProncheryThe OpenSSL 2.0 FIPS Object Module was a separate download that had to be built
602b077aed3SPierre Proncheryseparately and then integrated into your main OpenSSL 1.0.2 build.
603b077aed3SPierre ProncheryIn OpenSSL 3.0 the FIPS support is fully integrated into the mainline version of
604b077aed3SPierre ProncheryOpenSSL and is no longer a separate download. For further information see
605b077aed3SPierre ProncheryL</Completing the installation of the FIPS Module>.
606b077aed3SPierre Pronchery
607b077aed3SPierre ProncheryThe function calls FIPS_mode() and FIPS_mode_set() have been removed
608b077aed3SPierre Proncheryfrom OpenSSL 3.0. You should rewrite your application to not use them.
609b077aed3SPierre ProncherySee L<fips_module(7)> and L<OSSL_PROVIDER-FIPS(7)> for details.
610b077aed3SPierre Pronchery
611b077aed3SPierre Pronchery=head2 Completing the installation of the FIPS Module
612b077aed3SPierre Pronchery
613b077aed3SPierre ProncheryThe FIPS Module will be built and installed automatically if FIPS support has
614b077aed3SPierre Proncherybeen configured. The current documentation can be found in the
615b077aed3SPierre ProncheryL<README-FIPS|https://github.com/openssl/openssl/blob/master/README-FIPS.md> file.
616b077aed3SPierre Pronchery
617b077aed3SPierre Pronchery=head2 Programming
618b077aed3SPierre Pronchery
619b077aed3SPierre ProncheryApplications written to work with OpenSSL 1.1.1 will mostly just work with
620b077aed3SPierre ProncheryOpenSSL 3.0. However changes will be required if you want to take advantage of
621b077aed3SPierre Proncherysome of the new features that OpenSSL 3.0 makes available. In order to do that
622b077aed3SPierre Proncheryyou need to understand some new concepts introduced in OpenSSL 3.0.
623b077aed3SPierre ProncheryRead L<crypto(7)/Library contexts> for further information.
624b077aed3SPierre Pronchery
625b077aed3SPierre Pronchery=head3 Library Context
626b077aed3SPierre Pronchery
627b077aed3SPierre ProncheryA library context allows different components of a complex application to each
628b077aed3SPierre Proncheryuse a different library context and have different providers loaded with
629b077aed3SPierre Proncherydifferent configuration settings.
630b077aed3SPierre ProncherySee L<crypto(7)/Library contexts> for further info.
631b077aed3SPierre Pronchery
632b077aed3SPierre ProncheryIf the user creates an B<OSSL_LIB_CTX> via L<OSSL_LIB_CTX_new(3)> then many
633b077aed3SPierre Proncheryfunctions may need to be changed to pass additional parameters to handle the
634b077aed3SPierre Proncherylibrary context.
635b077aed3SPierre Pronchery
636b077aed3SPierre Pronchery=head4 Using a Library Context - Old functions that should be changed
637b077aed3SPierre Pronchery
638b077aed3SPierre ProncheryIf a library context is needed then all EVP_* digest functions that return a
639b077aed3SPierre ProncheryB<const EVP_MD *> such as EVP_sha256() should be replaced with a call to
640b077aed3SPierre ProncheryL<EVP_MD_fetch(3)>. See L<crypto(7)/ALGORITHM FETCHING>.
641b077aed3SPierre Pronchery
642b077aed3SPierre ProncheryIf a library context is needed then all EVP_* cipher functions that return a
643b077aed3SPierre ProncheryB<const EVP_CIPHER *> such as EVP_aes_128_cbc() should be replaced vith a call to
644b077aed3SPierre ProncheryL<EVP_CIPHER_fetch(3)>. See L<crypto(7)/ALGORITHM FETCHING>.
645b077aed3SPierre Pronchery
646b077aed3SPierre ProncherySome functions can be passed an object that has already been set up with a library
647b077aed3SPierre Proncherycontext such as L<d2i_X509(3)>, L<d2i_X509_CRL(3)>, L<d2i_X509_REQ(3)> and
648b077aed3SPierre ProncheryL<d2i_X509_PUBKEY(3)>. If NULL is passed instead then the created object will be
649b077aed3SPierre Proncheryset up with the default library context. Use L<X509_new_ex(3)>,
650b077aed3SPierre ProncheryL<X509_CRL_new_ex(3)>, L<X509_REQ_new_ex(3)> and L<X509_PUBKEY_new_ex(3)> if a
651b077aed3SPierre Proncherylibrary context is required.
652b077aed3SPierre Pronchery
653aa795734SPierre ProncheryAll functions listed below with a I<NAME> have a replacement function I<NAME_ex>
654b077aed3SPierre Proncherythat takes B<OSSL_LIB_CTX> as an additional argument. Functions that have other
655b077aed3SPierre Proncherymappings are listed along with the respective name.
656b077aed3SPierre Pronchery
657b077aed3SPierre Pronchery=over 4
658b077aed3SPierre Pronchery
659b077aed3SPierre Pronchery=item *
660b077aed3SPierre Pronchery
661b077aed3SPierre ProncheryL<ASN1_item_new(3)>, L<ASN1_item_d2i(3)>, L<ASN1_item_d2i_fp(3)>,
662b077aed3SPierre ProncheryL<ASN1_item_d2i_bio(3)>, L<ASN1_item_sign(3)> and L<ASN1_item_verify(3)>
663b077aed3SPierre Pronchery
664b077aed3SPierre Pronchery=item *
665b077aed3SPierre Pronchery
666b077aed3SPierre ProncheryL<BIO_new(3)>
667b077aed3SPierre Pronchery
668b077aed3SPierre Pronchery=item *
669b077aed3SPierre Pronchery
670b077aed3SPierre Proncheryb2i_RSA_PVK_bio() and i2b_PVK_bio()
671b077aed3SPierre Pronchery
672b077aed3SPierre Pronchery=item *
673b077aed3SPierre Pronchery
674b077aed3SPierre ProncheryL<BN_CTX_new(3)> and L<BN_CTX_secure_new(3)>
675b077aed3SPierre Pronchery
676b077aed3SPierre Pronchery=item *
677b077aed3SPierre Pronchery
678b077aed3SPierre ProncheryL<CMS_AuthEnvelopedData_create(3)>, L<CMS_ContentInfo_new(3)>, L<CMS_data_create(3)>,
679b077aed3SPierre ProncheryL<CMS_digest_create(3)>, L<CMS_EncryptedData_encrypt(3)>, L<CMS_encrypt(3)>,
680b077aed3SPierre ProncheryL<CMS_EnvelopedData_create(3)>, L<CMS_ReceiptRequest_create0(3)> and L<CMS_sign(3)>
681b077aed3SPierre Pronchery
682b077aed3SPierre Pronchery=item *
683b077aed3SPierre Pronchery
684b077aed3SPierre ProncheryL<CONF_modules_load_file(3)>
685b077aed3SPierre Pronchery
686b077aed3SPierre Pronchery=item *
687b077aed3SPierre Pronchery
688b077aed3SPierre ProncheryL<CTLOG_new(3)>, L<CTLOG_new_from_base64(3)> and L<CTLOG_STORE_new(3)>
689b077aed3SPierre Pronchery
690b077aed3SPierre Pronchery=item *
691b077aed3SPierre Pronchery
692b077aed3SPierre ProncheryL<CT_POLICY_EVAL_CTX_new(3)>
693b077aed3SPierre Pronchery
694b077aed3SPierre Pronchery=item *
695b077aed3SPierre Pronchery
696b077aed3SPierre ProncheryL<d2i_AutoPrivateKey(3)>, L<d2i_PrivateKey(3)> and L<d2i_PUBKEY(3)>
697b077aed3SPierre Pronchery
698b077aed3SPierre Pronchery=item *
699b077aed3SPierre Pronchery
700b077aed3SPierre ProncheryL<d2i_PrivateKey_bio(3)> and L<d2i_PrivateKey_fp(3)>
701b077aed3SPierre Pronchery
702b077aed3SPierre ProncheryUse L<d2i_PrivateKey_ex_bio(3)> and L<d2i_PrivateKey_ex_fp(3)>
703b077aed3SPierre Pronchery
704b077aed3SPierre Pronchery=item *
705b077aed3SPierre Pronchery
706b077aed3SPierre ProncheryL<EC_GROUP_new(3)>
707b077aed3SPierre Pronchery
708b077aed3SPierre ProncheryUse L<EC_GROUP_new_by_curve_name_ex(3)> or L<EC_GROUP_new_from_params(3)>.
709b077aed3SPierre Pronchery
710b077aed3SPierre Pronchery=item *
711b077aed3SPierre Pronchery
712b077aed3SPierre ProncheryL<EVP_DigestSignInit(3)> and L<EVP_DigestVerifyInit(3)>
713b077aed3SPierre Pronchery
714b077aed3SPierre Pronchery=item *
715b077aed3SPierre Pronchery
716b077aed3SPierre ProncheryL<EVP_PBE_CipherInit(3)>, L<EVP_PBE_find(3)> and L<EVP_PBE_scrypt(3)>
717b077aed3SPierre Pronchery
718b077aed3SPierre Pronchery=item *
719b077aed3SPierre Pronchery
720b077aed3SPierre ProncheryL<PKCS5_PBE_keyivgen(3)>
721b077aed3SPierre Pronchery
722b077aed3SPierre Pronchery=item *
723b077aed3SPierre Pronchery
724b077aed3SPierre ProncheryL<EVP_PKCS82PKEY(3)>
725b077aed3SPierre Pronchery
726b077aed3SPierre Pronchery=item *
727b077aed3SPierre Pronchery
728b077aed3SPierre ProncheryL<EVP_PKEY_CTX_new_id(3)>
729b077aed3SPierre Pronchery
730b077aed3SPierre ProncheryUse L<EVP_PKEY_CTX_new_from_name(3)>
731b077aed3SPierre Pronchery
732b077aed3SPierre Pronchery=item *
733b077aed3SPierre Pronchery
734b077aed3SPierre ProncheryL<EVP_PKEY_derive_set_peer(3)>, L<EVP_PKEY_new_raw_private_key(3)>
735b077aed3SPierre Proncheryand L<EVP_PKEY_new_raw_public_key(3)>
736b077aed3SPierre Pronchery
737b077aed3SPierre Pronchery=item *
738b077aed3SPierre Pronchery
739b077aed3SPierre ProncheryL<EVP_SignFinal(3)> and L<EVP_VerifyFinal(3)>
740b077aed3SPierre Pronchery
741b077aed3SPierre Pronchery=item *
742b077aed3SPierre Pronchery
743b077aed3SPierre ProncheryL<NCONF_new(3)>
744b077aed3SPierre Pronchery
745b077aed3SPierre Pronchery=item *
746b077aed3SPierre Pronchery
747b077aed3SPierre ProncheryL<OCSP_RESPID_match(3)> and L<OCSP_RESPID_set_by_key(3)>
748b077aed3SPierre Pronchery
749b077aed3SPierre Pronchery=item *
750b077aed3SPierre Pronchery
751b077aed3SPierre ProncheryL<OPENSSL_thread_stop(3)>
752b077aed3SPierre Pronchery
753b077aed3SPierre Pronchery=item *
754b077aed3SPierre Pronchery
755b077aed3SPierre ProncheryL<OSSL_STORE_open(3)>
756b077aed3SPierre Pronchery
757b077aed3SPierre Pronchery=item *
758b077aed3SPierre Pronchery
759b077aed3SPierre ProncheryL<PEM_read_bio_Parameters(3)>, L<PEM_read_bio_PrivateKey(3)>, L<PEM_read_bio_PUBKEY(3)>,
760b077aed3SPierre ProncheryL<PEM_read_PrivateKey(3)> and L<PEM_read_PUBKEY(3)>
761b077aed3SPierre Pronchery
762b077aed3SPierre Pronchery=item *
763b077aed3SPierre Pronchery
764b077aed3SPierre ProncheryL<PEM_write_bio_PrivateKey(3)>, L<PEM_write_bio_PUBKEY(3)>, L<PEM_write_PrivateKey(3)>
765b077aed3SPierre Proncheryand L<PEM_write_PUBKEY(3)>
766b077aed3SPierre Pronchery
767b077aed3SPierre Pronchery=item *
768b077aed3SPierre Pronchery
769b077aed3SPierre ProncheryL<PEM_X509_INFO_read_bio(3)> and L<PEM_X509_INFO_read(3)>
770b077aed3SPierre Pronchery
771b077aed3SPierre Pronchery=item *
772b077aed3SPierre Pronchery
773b077aed3SPierre ProncheryL<PKCS12_add_key(3)>, L<PKCS12_add_safe(3)>, L<PKCS12_add_safes(3)>,
774b077aed3SPierre ProncheryL<PKCS12_create(3)>, L<PKCS12_decrypt_skey(3)>, L<PKCS12_init(3)>, L<PKCS12_item_decrypt_d2i(3)>,
775b077aed3SPierre ProncheryL<PKCS12_item_i2d_encrypt(3)>, L<PKCS12_key_gen_asc(3)>, L<PKCS12_key_gen_uni(3)>,
776b077aed3SPierre ProncheryL<PKCS12_key_gen_utf8(3)>, L<PKCS12_pack_p7encdata(3)>, L<PKCS12_pbe_crypt(3)>,
777b077aed3SPierre ProncheryL<PKCS12_PBE_keyivgen(3)>, L<PKCS12_SAFEBAG_create_pkcs8_encrypt(3)>
778b077aed3SPierre Pronchery
779b077aed3SPierre Pronchery=item *
780b077aed3SPierre Pronchery
781b077aed3SPierre ProncheryL<PKCS5_pbe_set0_algor(3)>, L<PKCS5_pbe_set(3)>, L<PKCS5_pbe2_set_iv(3)>,
782b077aed3SPierre ProncheryL<PKCS5_pbkdf2_set(3)> and L<PKCS5_v2_scrypt_keyivgen(3)>
783b077aed3SPierre Pronchery
784b077aed3SPierre Pronchery=item *
785b077aed3SPierre Pronchery
786b077aed3SPierre ProncheryL<PKCS7_encrypt(3)>, L<PKCS7_new(3)> and L<PKCS7_sign(3)>
787b077aed3SPierre Pronchery
788b077aed3SPierre Pronchery=item *
789b077aed3SPierre Pronchery
790b077aed3SPierre ProncheryL<PKCS8_decrypt(3)>, L<PKCS8_encrypt(3)> and L<PKCS8_set0_pbe(3)>
791b077aed3SPierre Pronchery
792b077aed3SPierre Pronchery=item *
793b077aed3SPierre Pronchery
794b077aed3SPierre ProncheryL<RAND_bytes(3)> and L<RAND_priv_bytes(3)>
795b077aed3SPierre Pronchery
796b077aed3SPierre Pronchery=item *
797b077aed3SPierre Pronchery
798b077aed3SPierre ProncheryL<SMIME_write_ASN1(3)>
799b077aed3SPierre Pronchery
800b077aed3SPierre Pronchery=item *
801b077aed3SPierre Pronchery
802b077aed3SPierre ProncheryL<SSL_load_client_CA_file(3)>
803b077aed3SPierre Pronchery
804b077aed3SPierre Pronchery=item *
805b077aed3SPierre Pronchery
806b077aed3SPierre ProncheryL<SSL_CTX_new(3)>
807b077aed3SPierre Pronchery
808b077aed3SPierre Pronchery=item *
809b077aed3SPierre Pronchery
810b077aed3SPierre ProncheryL<TS_RESP_CTX_new(3)>
811b077aed3SPierre Pronchery
812b077aed3SPierre Pronchery=item *
813b077aed3SPierre Pronchery
814b077aed3SPierre ProncheryL<X509_CRL_new(3)>
815b077aed3SPierre Pronchery
816b077aed3SPierre Pronchery=item *
817b077aed3SPierre Pronchery
818b077aed3SPierre ProncheryL<X509_load_cert_crl_file(3)> and L<X509_load_cert_file(3)>
819b077aed3SPierre Pronchery
820b077aed3SPierre Pronchery=item *
821b077aed3SPierre Pronchery
822b077aed3SPierre ProncheryL<X509_LOOKUP_by_subject(3)> and L<X509_LOOKUP_ctrl(3)>
823b077aed3SPierre Pronchery
824b077aed3SPierre Pronchery=item *
825b077aed3SPierre Pronchery
826b077aed3SPierre ProncheryL<X509_NAME_hash(3)>
827b077aed3SPierre Pronchery
828b077aed3SPierre Pronchery=item *
829b077aed3SPierre Pronchery
830b077aed3SPierre ProncheryL<X509_new(3)>
831b077aed3SPierre Pronchery
832b077aed3SPierre Pronchery=item *
833b077aed3SPierre Pronchery
834b077aed3SPierre ProncheryL<X509_REQ_new(3)> and L<X509_REQ_verify(3)>
835b077aed3SPierre Pronchery
836b077aed3SPierre Pronchery=item *
837b077aed3SPierre Pronchery
838b077aed3SPierre ProncheryL<X509_STORE_CTX_new(3)>, L<X509_STORE_set_default_paths(3)>, L<X509_STORE_load_file(3)>,
839b077aed3SPierre ProncheryL<X509_STORE_load_locations(3)> and L<X509_STORE_load_store(3)>
840b077aed3SPierre Pronchery
841b077aed3SPierre Pronchery=back
842b077aed3SPierre Pronchery
843b077aed3SPierre Pronchery=head4 New functions that use a Library context
844b077aed3SPierre Pronchery
845b077aed3SPierre ProncheryThe following functions can be passed a library context if required.
846b077aed3SPierre ProncheryPassing NULL will use the default library context.
847b077aed3SPierre Pronchery
848b077aed3SPierre Pronchery=over 4
849b077aed3SPierre Pronchery
850b077aed3SPierre Pronchery=item *
851b077aed3SPierre Pronchery
852b077aed3SPierre ProncheryL<BIO_new_from_core_bio(3)>
853b077aed3SPierre Pronchery
854b077aed3SPierre Pronchery=item *
855b077aed3SPierre Pronchery
856b077aed3SPierre ProncheryL<EVP_ASYM_CIPHER_fetch(3)> and L<EVP_ASYM_CIPHER_do_all_provided(3)>
857b077aed3SPierre Pronchery
858b077aed3SPierre Pronchery=item *
859b077aed3SPierre Pronchery
860b077aed3SPierre ProncheryL<EVP_CIPHER_fetch(3)> and L<EVP_CIPHER_do_all_provided(3)>
861b077aed3SPierre Pronchery
862b077aed3SPierre Pronchery=item *
863b077aed3SPierre Pronchery
864b077aed3SPierre ProncheryL<EVP_default_properties_enable_fips(3)> and
865b077aed3SPierre ProncheryL<EVP_default_properties_is_fips_enabled(3)>
866b077aed3SPierre Pronchery
867b077aed3SPierre Pronchery=item *
868b077aed3SPierre Pronchery
869b077aed3SPierre ProncheryL<EVP_KDF_fetch(3)> and L<EVP_KDF_do_all_provided(3)>
870b077aed3SPierre Pronchery
871b077aed3SPierre Pronchery=item *
872b077aed3SPierre Pronchery
873b077aed3SPierre ProncheryL<EVP_KEM_fetch(3)> and L<EVP_KEM_do_all_provided(3)>
874b077aed3SPierre Pronchery
875b077aed3SPierre Pronchery=item *
876b077aed3SPierre Pronchery
877b077aed3SPierre ProncheryL<EVP_KEYEXCH_fetch(3)> and L<EVP_KEYEXCH_do_all_provided(3)>
878b077aed3SPierre Pronchery
879b077aed3SPierre Pronchery=item *
880b077aed3SPierre Pronchery
881b077aed3SPierre ProncheryL<EVP_KEYMGMT_fetch(3)> and L<EVP_KEYMGMT_do_all_provided(3)>
882b077aed3SPierre Pronchery
883b077aed3SPierre Pronchery=item *
884b077aed3SPierre Pronchery
885b077aed3SPierre ProncheryL<EVP_MAC_fetch(3)> and L<EVP_MAC_do_all_provided(3)>
886b077aed3SPierre Pronchery
887b077aed3SPierre Pronchery=item *
888b077aed3SPierre Pronchery
889b077aed3SPierre ProncheryL<EVP_MD_fetch(3)> and L<EVP_MD_do_all_provided(3)>
890b077aed3SPierre Pronchery
891b077aed3SPierre Pronchery=item *
892b077aed3SPierre Pronchery
893b077aed3SPierre ProncheryL<EVP_PKEY_CTX_new_from_pkey(3)>
894b077aed3SPierre Pronchery
895b077aed3SPierre Pronchery=item *
896b077aed3SPierre Pronchery
897b077aed3SPierre ProncheryL<EVP_PKEY_Q_keygen(3)>
898b077aed3SPierre Pronchery
899b077aed3SPierre Pronchery=item *
900b077aed3SPierre Pronchery
901b077aed3SPierre ProncheryL<EVP_Q_mac(3)> and L<EVP_Q_digest(3)>
902b077aed3SPierre Pronchery
903b077aed3SPierre Pronchery=item *
904b077aed3SPierre Pronchery
905b077aed3SPierre ProncheryL<EVP_RAND(3)> and L<EVP_RAND_do_all_provided(3)>
906b077aed3SPierre Pronchery
907b077aed3SPierre Pronchery=item *
908b077aed3SPierre Pronchery
909b077aed3SPierre ProncheryL<EVP_set_default_properties(3)>
910b077aed3SPierre Pronchery
911b077aed3SPierre Pronchery=item *
912b077aed3SPierre Pronchery
913b077aed3SPierre ProncheryL<EVP_SIGNATURE_fetch(3)> and L<EVP_SIGNATURE_do_all_provided(3)>
914b077aed3SPierre Pronchery
915b077aed3SPierre Pronchery=item *
916b077aed3SPierre Pronchery
917b077aed3SPierre ProncheryL<OSSL_CMP_CTX_new(3)> and L<OSSL_CMP_SRV_CTX_new(3)>
918b077aed3SPierre Pronchery
919b077aed3SPierre Pronchery=item *
920b077aed3SPierre Pronchery
921b077aed3SPierre ProncheryL<OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(3)>
922b077aed3SPierre Pronchery
923b077aed3SPierre Pronchery=item *
924b077aed3SPierre Pronchery
925b077aed3SPierre ProncheryL<OSSL_CRMF_MSG_create_popo(3)> and L<OSSL_CRMF_MSGS_verify_popo(3)>
926b077aed3SPierre Pronchery
927b077aed3SPierre Pronchery=item *
928b077aed3SPierre Pronchery
929b077aed3SPierre ProncheryL<OSSL_CRMF_pbm_new(3)> and L<OSSL_CRMF_pbmp_new(3)>
930b077aed3SPierre Pronchery
931b077aed3SPierre Pronchery=item *
932b077aed3SPierre Pronchery
933b077aed3SPierre ProncheryL<OSSL_DECODER_CTX_add_extra(3)> and L<OSSL_DECODER_CTX_new_for_pkey(3)>
934b077aed3SPierre Pronchery
935b077aed3SPierre Pronchery=item *
936b077aed3SPierre Pronchery
937b077aed3SPierre ProncheryL<OSSL_DECODER_fetch(3)> and L<OSSL_DECODER_do_all_provided(3)>
938b077aed3SPierre Pronchery
939b077aed3SPierre Pronchery=item *
940b077aed3SPierre Pronchery
941b077aed3SPierre ProncheryL<OSSL_ENCODER_CTX_add_extra(3)>
942b077aed3SPierre Pronchery
943b077aed3SPierre Pronchery=item *
944b077aed3SPierre Pronchery
945b077aed3SPierre ProncheryL<OSSL_ENCODER_fetch(3)> and L<OSSL_ENCODER_do_all_provided(3)>
946b077aed3SPierre Pronchery
947b077aed3SPierre Pronchery=item *
948b077aed3SPierre Pronchery
949b077aed3SPierre ProncheryL<OSSL_LIB_CTX_free(3)>, L<OSSL_LIB_CTX_load_config(3)> and L<OSSL_LIB_CTX_set0_default(3)>
950b077aed3SPierre Pronchery
951b077aed3SPierre Pronchery=item *
952b077aed3SPierre Pronchery
953b077aed3SPierre ProncheryL<OSSL_PROVIDER_add_builtin(3)>, L<OSSL_PROVIDER_available(3)>,
954b077aed3SPierre ProncheryL<OSSL_PROVIDER_do_all(3)>, L<OSSL_PROVIDER_load(3)>,
955b077aed3SPierre ProncheryL<OSSL_PROVIDER_set_default_search_path(3)> and L<OSSL_PROVIDER_try_load(3)>
956b077aed3SPierre Pronchery
957b077aed3SPierre Pronchery=item *
958b077aed3SPierre Pronchery
959b077aed3SPierre ProncheryL<OSSL_SELF_TEST_get_callback(3)> and L<OSSL_SELF_TEST_set_callback(3)>
960b077aed3SPierre Pronchery
961b077aed3SPierre Pronchery=item *
962b077aed3SPierre Pronchery
963b077aed3SPierre ProncheryL<OSSL_STORE_attach(3)>
964b077aed3SPierre Pronchery
965b077aed3SPierre Pronchery=item *
966b077aed3SPierre Pronchery
967b077aed3SPierre ProncheryL<OSSL_STORE_LOADER_fetch(3)> and L<OSSL_STORE_LOADER_do_all_provided(3)>
968b077aed3SPierre Pronchery
969b077aed3SPierre Pronchery=item *
970b077aed3SPierre Pronchery
971b077aed3SPierre ProncheryL<RAND_get0_primary(3)>, L<RAND_get0_private(3)>, L<RAND_get0_public(3)>,
972b077aed3SPierre ProncheryL<RAND_set_DRBG_type(3)> and L<RAND_set_seed_source_type(3)>
973b077aed3SPierre Pronchery
974b077aed3SPierre Pronchery=back
975b077aed3SPierre Pronchery
976b077aed3SPierre Pronchery=head3 Providers
977b077aed3SPierre Pronchery
978b077aed3SPierre ProncheryProviders are described in detail here L<crypto(7)/Providers>.
979b077aed3SPierre ProncherySee also L<crypto(7)/OPENSSL PROVIDERS>.
980b077aed3SPierre Pronchery
981b077aed3SPierre Pronchery=head3 Fetching algorithms and property queries
982b077aed3SPierre Pronchery
983b077aed3SPierre ProncheryImplicit and Explicit Fetching is described in detail here
984b077aed3SPierre ProncheryL<crypto(7)/ALGORITHM FETCHING>.
985b077aed3SPierre Pronchery
986b077aed3SPierre Pronchery=head3 Mapping EVP controls and flags to provider L<OSSL_PARAM(3)> parameters
987b077aed3SPierre Pronchery
988b077aed3SPierre ProncheryThe existing functions for controls (such as L<EVP_CIPHER_CTX_ctrl(3)>) and
989b077aed3SPierre Proncherymanipulating flags (such as L<EVP_MD_CTX_set_flags(3)>)internally use
990b077aed3SPierre ProncheryB<OSSL_PARAMS> to pass information to/from provider objects.
991b077aed3SPierre ProncherySee L<OSSL_PARAM(3)> for additional information related to parameters.
992b077aed3SPierre Pronchery
993b077aed3SPierre ProncheryFor ciphers see L<EVP_EncryptInit(3)/CONTROLS>, L<EVP_EncryptInit(3)/FLAGS> and
994b077aed3SPierre ProncheryL<EVP_EncryptInit(3)/PARAMETERS>.
995b077aed3SPierre Pronchery
996b077aed3SPierre ProncheryFor digests see L<EVP_DigestInit(3)/CONTROLS>, L<EVP_DigestInit(3)/FLAGS> and
997b077aed3SPierre ProncheryL<EVP_DigestInit(3)/PARAMETERS>.
998b077aed3SPierre Pronchery
999b077aed3SPierre Pronchery=head3 Deprecation of Low Level Functions
1000b077aed3SPierre Pronchery
1001b077aed3SPierre ProncheryA significant number of APIs have been deprecated in OpenSSL 3.0.
1002b077aed3SPierre ProncheryThis section describes some common categories of deprecations.
1003b077aed3SPierre ProncherySee L</Deprecated function mappings> for the list of deprecated functions
1004b077aed3SPierre Proncherythat refer to these categories.
1005b077aed3SPierre Pronchery
1006b077aed3SPierre Pronchery=head4 Providers are a replacement for engines and low-level method overrides
1007b077aed3SPierre Pronchery
1008b077aed3SPierre ProncheryAny accessor that uses an ENGINE is deprecated (such as EVP_PKEY_set1_engine()).
1009b077aed3SPierre ProncheryApplications using engines should instead use providers.
1010b077aed3SPierre Pronchery
1011aa795734SPierre ProncheryBefore providers were added algorithms were overridden by changing the methods
1012b077aed3SPierre Proncheryused by algorithms. All these methods such as RSA_new_method() and RSA_meth_new()
1013b077aed3SPierre Proncheryare now deprecated and can be replaced by using providers instead.
1014b077aed3SPierre Pronchery
1015b077aed3SPierre Pronchery=head4 Deprecated i2d and d2i functions for low-level key types
1016b077aed3SPierre Pronchery
1017b077aed3SPierre ProncheryAny i2d and d2i functions such as d2i_DHparams() that take a low-level key type
1018b077aed3SPierre Proncheryhave been deprecated. Applications should instead use the L<OSSL_DECODER(3)> and
1019b077aed3SPierre ProncheryL<OSSL_ENCODER(3)> APIs to read and write files.
1020b077aed3SPierre ProncherySee L<d2i_RSAPrivateKey(3)/Migration> for further details.
1021b077aed3SPierre Pronchery
1022b077aed3SPierre Pronchery=head4 Deprecated low-level key object getters and setters
1023b077aed3SPierre Pronchery
1024b077aed3SPierre ProncheryApplications that set or get low-level key objects (such as EVP_PKEY_set1_DH()
1025b077aed3SPierre Proncheryor EVP_PKEY_get0()) should instead use the OSSL_ENCODER
1026b077aed3SPierre Pronchery(See L<OSSL_ENCODER_to_bio(3)>) or OSSL_DECODER (See L<OSSL_DECODER_from_bio(3)>)
1027b077aed3SPierre ProncheryAPIs, or alternatively use L<EVP_PKEY_fromdata(3)> or L<EVP_PKEY_todata(3)>.
1028b077aed3SPierre Pronchery
1029b077aed3SPierre Pronchery=head4 Deprecated low-level key parameter getters
1030b077aed3SPierre Pronchery
1031b077aed3SPierre ProncheryFunctions that access low-level objects directly such as L<RSA_get0_n(3)> are now
1032b077aed3SPierre Proncherydeprecated. Applications should use one of L<EVP_PKEY_get_bn_param(3)>,
1033b077aed3SPierre ProncheryL<EVP_PKEY_get_int_param(3)>, l<EVP_PKEY_get_size_t_param(3)>,
1034b077aed3SPierre ProncheryL<EVP_PKEY_get_utf8_string_param(3)>, L<EVP_PKEY_get_octet_string_param(3)> or
1035b077aed3SPierre ProncheryL<EVP_PKEY_get_params(3)> to access fields from an EVP_PKEY.
1036b077aed3SPierre ProncheryGettable parameters are listed in L<EVP_PKEY-RSA(7)/Common RSA parameters>,
1037b077aed3SPierre ProncheryL<EVP_PKEY-DH(7)/DH parameters>, L<EVP_PKEY-DSA(7)/DSA parameters>,
1038b077aed3SPierre ProncheryL<EVP_PKEY-FFC(7)/FFC parameters>, L<EVP_PKEY-EC(7)/Common EC parameters> and
1039b077aed3SPierre ProncheryL<EVP_PKEY-X25519(7)/Common X25519, X448, ED25519 and ED448 parameters>.
1040b077aed3SPierre ProncheryApplications may also use L<EVP_PKEY_todata(3)> to return all fields.
1041b077aed3SPierre Pronchery
1042b077aed3SPierre Pronchery=head4 Deprecated low-level key parameter setters
1043b077aed3SPierre Pronchery
1044b077aed3SPierre ProncheryFunctions that access low-level objects directly such as L<RSA_set0_crt_params(3)>
1045b077aed3SPierre Proncheryare now deprecated. Applications should use L<EVP_PKEY_fromdata(3)> to create
1046b077aed3SPierre Proncherynew keys from user provided key data. Keys should be immutable once they are
1047b077aed3SPierre Proncherycreated, so if required the user may use L<EVP_PKEY_todata(3)>, L<OSSL_PARAM_merge(3)>,
1048b077aed3SPierre Proncheryand L<EVP_PKEY_fromdata(3)> to create a modified key.
1049b077aed3SPierre ProncherySee L<EVP_PKEY-DH(7)/Examples> for more information.
1050b077aed3SPierre ProncherySee L</Deprecated low-level key generation functions> for information on
1051b077aed3SPierre Proncherygenerating a key using parameters.
1052b077aed3SPierre Pronchery
1053b077aed3SPierre Pronchery=head4 Deprecated low-level object creation
1054b077aed3SPierre Pronchery
1055b077aed3SPierre ProncheryLow-level objects were created using methods such as L<RSA_new(3)>,
1056b077aed3SPierre ProncheryL<RSA_up_ref(3)> and L<RSA_free(3)>. Applications should instead use the
1057b077aed3SPierre Proncheryhigh-level EVP_PKEY APIs, e.g. L<EVP_PKEY_new(3)>, L<EVP_PKEY_up_ref(3)> and
1058b077aed3SPierre ProncheryL<EVP_PKEY_free(3)>.
1059b077aed3SPierre ProncherySee also L<EVP_PKEY_CTX_new_from_name(3)> and L<EVP_PKEY_CTX_new_from_pkey(3)>.
1060b077aed3SPierre Pronchery
1061b077aed3SPierre ProncheryEVP_PKEYs may be created in a variety of ways:
1062b077aed3SPierre ProncherySee also L</Deprecated low-level key generation functions>,
1063b077aed3SPierre ProncheryL</Deprecated low-level key reading and writing functions> and
1064b077aed3SPierre ProncheryL</Deprecated low-level key parameter setters>.
1065b077aed3SPierre Pronchery
1066b077aed3SPierre Pronchery=head4 Deprecated low-level encryption functions
1067b077aed3SPierre Pronchery
1068b077aed3SPierre ProncheryLow-level encryption functions such as L<AES_encrypt(3)> and L<AES_decrypt(3)>
1069b077aed3SPierre Proncheryhave been informally discouraged from use for a long time. Applications should
1070b077aed3SPierre Proncheryinstead use the high level EVP APIs L<EVP_EncryptInit_ex(3)>,
1071b077aed3SPierre ProncheryL<EVP_EncryptUpdate(3)>, and L<EVP_EncryptFinal_ex(3)> or
1072b077aed3SPierre ProncheryL<EVP_DecryptInit_ex(3)>, L<EVP_DecryptUpdate(3)> and L<EVP_DecryptFinal_ex(3)>.
1073b077aed3SPierre Pronchery
1074b077aed3SPierre Pronchery=head4 Deprecated low-level digest functions
1075b077aed3SPierre Pronchery
1076b077aed3SPierre ProncheryUse of low-level digest functions such as L<SHA1_Init(3)> have been
1077b077aed3SPierre Proncheryinformally discouraged from use for a long time.  Applications should instead
1078b077aed3SPierre Proncheryuse the the high level EVP APIs L<EVP_DigestInit_ex(3)>, L<EVP_DigestUpdate(3)>
1079b077aed3SPierre Proncheryand L<EVP_DigestFinal_ex(3)>, or the quick one-shot L<EVP_Q_digest(3)>.
1080b077aed3SPierre Pronchery
1081b077aed3SPierre ProncheryNote that the functions L<SHA1(3)>, L<SHA224(3)>, L<SHA256(3)>, L<SHA384(3)>
1082b077aed3SPierre Proncheryand L<SHA512(3)> have changed to macros that use L<EVP_Q_digest(3)>.
1083b077aed3SPierre Pronchery
1084b077aed3SPierre Pronchery=head4 Deprecated low-level signing functions
1085b077aed3SPierre Pronchery
1086b077aed3SPierre ProncheryUse of low-level signing functions such as L<DSA_sign(3)> have been
1087b077aed3SPierre Proncheryinformally discouraged for a long time. Instead applications should use
1088b077aed3SPierre ProncheryL<EVP_DigestSign(3)> and L<EVP_DigestVerify(3)>.
1089b077aed3SPierre ProncherySee also L<EVP_SIGNATURE-RSA(7)>, L<EVP_SIGNATURE-DSA(7)>,
1090b077aed3SPierre ProncheryL<EVP_SIGNATURE-ECDSA(7)> and L<EVP_SIGNATURE-ED25519(7)>.
1091b077aed3SPierre Pronchery
1092b077aed3SPierre Pronchery=head4 Deprecated low-level MAC functions
1093b077aed3SPierre Pronchery
1094b077aed3SPierre ProncheryLow-level mac functions such as L<CMAC_Init(3)> are deprecated.
1095b077aed3SPierre ProncheryApplications should instead use the new L<EVP_MAC(3)> interface, using
1096b077aed3SPierre ProncheryL<EVP_MAC_CTX_new(3)>, L<EVP_MAC_CTX_free(3)>, L<EVP_MAC_init(3)>,
1097b077aed3SPierre ProncheryL<EVP_MAC_update(3)> and L<EVP_MAC_final(3)> or the single-shot MAC function
1098b077aed3SPierre ProncheryL<EVP_Q_mac(3)>.
1099b077aed3SPierre ProncherySee L<EVP_MAC(3)>, L<EVP_MAC-HMAC(7)>, L<EVP_MAC-CMAC(7)>, L<EVP_MAC-GMAC(7)>,
1100b077aed3SPierre ProncheryL<EVP_MAC-KMAC(7)>, L<EVP_MAC-BLAKE2(7)>, L<EVP_MAC-Poly1305(7)> and
1101b077aed3SPierre ProncheryL<EVP_MAC-Siphash(7)> for additional information.
1102b077aed3SPierre Pronchery
1103b077aed3SPierre ProncheryNote that the one-shot method HMAC() is still available for compatibility purposes,
1104b077aed3SPierre Proncherybut this can also be replaced by using EVP_Q_MAC if a library context is required.
1105b077aed3SPierre Pronchery
1106b077aed3SPierre Pronchery=head4 Deprecated low-level validation functions
1107b077aed3SPierre Pronchery
1108b077aed3SPierre ProncheryLow-level validation functions such as L<DH_check(3)> have been informally
1109b077aed3SPierre Proncherydiscouraged from use for a long time. Applications should instead use the high-level
1110b077aed3SPierre ProncheryEVP_PKEY APIs such as L<EVP_PKEY_check(3)>, L<EVP_PKEY_param_check(3)>,
1111b077aed3SPierre ProncheryL<EVP_PKEY_param_check_quick(3)>, L<EVP_PKEY_public_check(3)>,
1112b077aed3SPierre ProncheryL<EVP_PKEY_public_check_quick(3)>, L<EVP_PKEY_private_check(3)>,
1113b077aed3SPierre Proncheryand L<EVP_PKEY_pairwise_check(3)>.
1114b077aed3SPierre Pronchery
1115b077aed3SPierre Pronchery=head4 Deprecated low-level key exchange functions
1116b077aed3SPierre Pronchery
1117b077aed3SPierre ProncheryMany low-level functions have been informally discouraged from use for a long
1118b077aed3SPierre Proncherytime. Applications should instead use L<EVP_PKEY_derive(3)>.
1119b077aed3SPierre ProncherySee L<EVP_KEYEXCH-DH(7)>, L<EVP_KEYEXCH-ECDH(7)> and L<EVP_KEYEXCH-X25519(7)>.
1120b077aed3SPierre Pronchery
1121b077aed3SPierre Pronchery=head4 Deprecated low-level key generation functions
1122b077aed3SPierre Pronchery
1123b077aed3SPierre ProncheryMany low-level functions have been informally discouraged from use for a long
1124b077aed3SPierre Proncherytime. Applications should instead use L<EVP_PKEY_keygen_init(3)> and
1125b077aed3SPierre ProncheryL<EVP_PKEY_generate(3)> as described in L<EVP_PKEY-DSA(7)>, L<EVP_PKEY-DH(7)>,
1126b077aed3SPierre ProncheryL<EVP_PKEY-RSA(7)>, L<EVP_PKEY-EC(7)> and L<EVP_PKEY-X25519(7)>.
1127b077aed3SPierre ProncheryThe 'quick' one-shot function L<EVP_PKEY_Q_keygen(3)> and macros for the most
1128b077aed3SPierre Proncherycommon cases: <EVP_RSA_gen(3)> and L<EVP_EC_gen(3)> may also be used.
1129b077aed3SPierre Pronchery
1130b077aed3SPierre Pronchery=head4 Deprecated low-level key reading and writing functions
1131b077aed3SPierre Pronchery
1132b077aed3SPierre ProncheryUse of low-level objects (such as DSA) has been informally discouraged from use
1133b077aed3SPierre Proncheryfor a long time. Functions to read and write these low-level objects (such as
1134b077aed3SPierre ProncheryPEM_read_DSA_PUBKEY()) should be replaced. Applications should instead use
1135b077aed3SPierre ProncheryL<OSSL_ENCODER_to_bio(3)> and L<OSSL_DECODER_from_bio(3)>.
1136b077aed3SPierre Pronchery
1137b077aed3SPierre Pronchery=head4 Deprecated low-level key printing functions
1138b077aed3SPierre Pronchery
1139b077aed3SPierre ProncheryUse of low-level objects (such as DSA) has been informally discouraged from use
1140b077aed3SPierre Proncheryfor a long time. Functions to print these low-level objects such as
1141b077aed3SPierre ProncheryDSA_print() should be replaced with the equivalent EVP_PKEY functions.
1142b077aed3SPierre ProncheryApplication should use one of L<EVP_PKEY_print_public(3)>,
1143b077aed3SPierre ProncheryL<EVP_PKEY_print_private(3)>, L<EVP_PKEY_print_params(3)>,
1144b077aed3SPierre ProncheryL<EVP_PKEY_print_public_fp(3)>, L<EVP_PKEY_print_private_fp(3)> or
1145b077aed3SPierre ProncheryL<EVP_PKEY_print_params_fp(3)>. Note that internally these use
1146b077aed3SPierre ProncheryL<OSSL_ENCODER_to_bio(3)> and L<OSSL_DECODER_from_bio(3)>.
1147b077aed3SPierre Pronchery
1148b077aed3SPierre Pronchery=head3 Deprecated function mappings
1149b077aed3SPierre Pronchery
1150b077aed3SPierre ProncheryThe following functions have been deprecated in 3.0.
1151b077aed3SPierre Pronchery
1152b077aed3SPierre Pronchery=over 4
1153b077aed3SPierre Pronchery
1154b077aed3SPierre Pronchery=item *
1155b077aed3SPierre Pronchery
1156b077aed3SPierre ProncheryAES_bi_ige_encrypt() and AES_ige_encrypt()
1157b077aed3SPierre Pronchery
1158b077aed3SPierre ProncheryThere is no replacement for the IGE functions. New code should not use these modes.
1159b077aed3SPierre ProncheryThese undocumented functions were never integrated into the EVP layer.
1160b077aed3SPierre ProncheryThey implemented the AES Infinite Garble Extension (IGE) mode and AES
1161b077aed3SPierre ProncheryBi-directional IGE mode. These modes were never formally standardised and
1162b077aed3SPierre Proncheryusage of these functions is believed to be very small. In particular
1163b077aed3SPierre ProncheryAES_bi_ige_encrypt() has a known bug. It accepts 2 AES keys, but only one
1164b077aed3SPierre Proncheryis ever used. The security implications are believed to be minimal, but
1165b077aed3SPierre Proncherythis issue was never fixed for backwards compatibility reasons.
1166b077aed3SPierre Pronchery
1167b077aed3SPierre Pronchery=item *
1168b077aed3SPierre Pronchery
1169b077aed3SPierre ProncheryAES_encrypt(), AES_decrypt(), AES_set_encrypt_key(), AES_set_decrypt_key(),
1170b077aed3SPierre ProncheryAES_cbc_encrypt(), AES_cfb128_encrypt(), AES_cfb1_encrypt(), AES_cfb8_encrypt(),
1171b077aed3SPierre ProncheryAES_ecb_encrypt(), AES_ofb128_encrypt()
1172b077aed3SPierre Pronchery
1173b077aed3SPierre Pronchery=item *
1174b077aed3SPierre Pronchery
1175b077aed3SPierre ProncheryAES_unwrap_key(), AES_wrap_key()
1176b077aed3SPierre Pronchery
1177b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>
1178b077aed3SPierre Pronchery
1179b077aed3SPierre Pronchery=item *
1180b077aed3SPierre Pronchery
1181b077aed3SPierre ProncheryAES_options()
1182b077aed3SPierre Pronchery
1183b077aed3SPierre ProncheryThere is no replacement. It returned a string indicating if the AES code was unrolled.
1184b077aed3SPierre Pronchery
1185b077aed3SPierre Pronchery=item *
1186b077aed3SPierre Pronchery
1187b077aed3SPierre ProncheryASN1_digest(), ASN1_sign(), ASN1_verify()
1188b077aed3SPierre Pronchery
1189b077aed3SPierre ProncheryThere are no replacements. These old functions are not used, and could be
1190b077aed3SPierre Proncherydisabled with the macro NO_ASN1_OLD since OpenSSL 0.9.7.
1191b077aed3SPierre Pronchery
1192b077aed3SPierre Pronchery=item *
1193b077aed3SPierre Pronchery
1194b077aed3SPierre ProncheryASN1_STRING_length_set()
1195b077aed3SPierre Pronchery
1196b077aed3SPierre ProncheryUse L<ASN1_STRING_set(3)> or L<ASN1_STRING_set0(3)> instead.
1197b077aed3SPierre ProncheryThis was a potentially unsafe function that could change the bounds of a
1198b077aed3SPierre Proncherypreviously passed in pointer.
1199b077aed3SPierre Pronchery
1200b077aed3SPierre Pronchery=item *
1201b077aed3SPierre Pronchery
1202b077aed3SPierre ProncheryBF_encrypt(), BF_decrypt(), BF_set_key(), BF_cbc_encrypt(), BF_cfb64_encrypt(),
1203b077aed3SPierre ProncheryBF_ecb_encrypt(), BF_ofb64_encrypt()
1204b077aed3SPierre Pronchery
1205b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1206b077aed3SPierre ProncheryThe Blowfish algorithm has been moved to the L<Legacy Provider|/Legacy Algorithms>.
1207b077aed3SPierre Pronchery
1208b077aed3SPierre Pronchery=item *
1209b077aed3SPierre Pronchery
1210b077aed3SPierre ProncheryBF_options()
1211b077aed3SPierre Pronchery
1212b077aed3SPierre ProncheryThere is no replacement. This option returned a constant string.
1213b077aed3SPierre Pronchery
1214b077aed3SPierre Pronchery=item *
1215b077aed3SPierre Pronchery
1216b077aed3SPierre ProncheryBIO_get_callback(), BIO_set_callback(), BIO_debug_callback()
1217b077aed3SPierre Pronchery
1218b077aed3SPierre ProncheryUse the respective non-deprecated _ex() functions.
1219b077aed3SPierre Pronchery
1220b077aed3SPierre Pronchery=item *
1221b077aed3SPierre Pronchery
1222b077aed3SPierre ProncheryBN_is_prime_ex(), BN_is_prime_fasttest_ex()
1223b077aed3SPierre Pronchery
1224b077aed3SPierre ProncheryUse L<BN_check_prime(3)> which avoids possible misuse and always uses at least
1225b077aed3SPierre Pronchery64 rounds of the Miller-Rabin primality test.
1226b077aed3SPierre Pronchery
1227b077aed3SPierre Pronchery=item *
1228b077aed3SPierre Pronchery
1229b077aed3SPierre ProncheryBN_pseudo_rand(), BN_pseudo_rand_range()
1230b077aed3SPierre Pronchery
1231b077aed3SPierre ProncheryUse L<BN_rand(3)> and L<BN_rand_range(3)>.
1232b077aed3SPierre Pronchery
1233b077aed3SPierre Pronchery=item *
1234b077aed3SPierre Pronchery
1235b077aed3SPierre ProncheryBN_X931_derive_prime_ex(), BN_X931_generate_prime_ex(), BN_X931_generate_Xpq()
1236b077aed3SPierre Pronchery
1237b077aed3SPierre ProncheryThere are no replacements for these low-level functions. They were used internally
1238b077aed3SPierre Proncheryby RSA_X931_derive_ex() and RSA_X931_generate_key_ex() which are also deprecated.
1239b077aed3SPierre ProncheryUse L<EVP_PKEY_keygen(3)> instead.
1240b077aed3SPierre Pronchery
1241b077aed3SPierre Pronchery=item *
1242b077aed3SPierre Pronchery
1243b077aed3SPierre ProncheryCamellia_encrypt(), Camellia_decrypt(), Camellia_set_key(),
1244b077aed3SPierre ProncheryCamellia_cbc_encrypt(), Camellia_cfb128_encrypt(), Camellia_cfb1_encrypt(),
1245b077aed3SPierre ProncheryCamellia_cfb8_encrypt(), Camellia_ctr128_encrypt(), Camellia_ecb_encrypt(),
1246b077aed3SPierre ProncheryCamellia_ofb128_encrypt()
1247b077aed3SPierre Pronchery
1248b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1249b077aed3SPierre Pronchery
1250b077aed3SPierre Pronchery=item *
1251b077aed3SPierre Pronchery
1252b077aed3SPierre ProncheryCAST_encrypt(), CAST_decrypt(), CAST_set_key(), CAST_cbc_encrypt(),
1253b077aed3SPierre ProncheryCAST_cfb64_encrypt(), CAST_ecb_encrypt(), CAST_ofb64_encrypt()
1254b077aed3SPierre Pronchery
1255b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1256b077aed3SPierre ProncheryThe CAST algorithm has been moved to the L<Legacy Provider|/Legacy Algorithms>.
1257b077aed3SPierre Pronchery
1258b077aed3SPierre Pronchery=item *
1259b077aed3SPierre Pronchery
1260b077aed3SPierre ProncheryCMAC_CTX_new(), CMAC_CTX_cleanup(), CMAC_CTX_copy(), CMAC_CTX_free(),
1261b077aed3SPierre ProncheryCMAC_CTX_get0_cipher_ctx()
1262b077aed3SPierre Pronchery
1263b077aed3SPierre ProncherySee L</Deprecated low-level MAC functions>.
1264b077aed3SPierre Pronchery
1265b077aed3SPierre Pronchery=item *
1266b077aed3SPierre Pronchery
1267b077aed3SPierre ProncheryCMAC_Init(), CMAC_Update(), CMAC_Final(), CMAC_resume()
1268b077aed3SPierre Pronchery
1269b077aed3SPierre ProncherySee L</Deprecated low-level MAC functions>.
1270b077aed3SPierre Pronchery
1271b077aed3SPierre Pronchery=item *
1272b077aed3SPierre Pronchery
1273b077aed3SPierre ProncheryCRYPTO_mem_ctrl(), CRYPTO_mem_debug_free(), CRYPTO_mem_debug_malloc(),
1274b077aed3SPierre ProncheryCRYPTO_mem_debug_pop(), CRYPTO_mem_debug_push(), CRYPTO_mem_debug_realloc(),
1275b077aed3SPierre ProncheryCRYPTO_mem_leaks(), CRYPTO_mem_leaks_cb(), CRYPTO_mem_leaks_fp(),
1276b077aed3SPierre ProncheryCRYPTO_set_mem_debug()
1277b077aed3SPierre Pronchery
1278b077aed3SPierre ProncheryMemory-leak checking has been deprecated in favor of more modern development
1279b077aed3SPierre Proncherytools, such as compiler memory and leak sanitizers or Valgrind.
1280b077aed3SPierre Pronchery
1281b077aed3SPierre Pronchery=item *
1282b077aed3SPierre Pronchery
1283b077aed3SPierre ProncheryCRYPTO_cts128_encrypt_block(), CRYPTO_cts128_encrypt(),
1284b077aed3SPierre ProncheryCRYPTO_cts128_decrypt_block(), CRYPTO_cts128_decrypt(),
1285b077aed3SPierre ProncheryCRYPTO_nistcts128_encrypt_block(), CRYPTO_nistcts128_encrypt(),
1286b077aed3SPierre ProncheryCRYPTO_nistcts128_decrypt_block(), CRYPTO_nistcts128_decrypt()
1287b077aed3SPierre Pronchery
1288b077aed3SPierre ProncheryUse the higher level functions EVP_CipherInit_ex2(), EVP_CipherUpdate() and
1289b077aed3SPierre ProncheryEVP_CipherFinal_ex() instead.
1290b077aed3SPierre ProncherySee the "cts_mode" parameter in
1291b077aed3SPierre ProncheryL<EVP_EncryptInit(3)/Gettable and Settable EVP_CIPHER_CTX parameters>.
1292b077aed3SPierre ProncherySee L<EVP_EncryptInit(3)/EXAMPLES> for a AES-256-CBC-CTS example.
1293b077aed3SPierre Pronchery
1294b077aed3SPierre Pronchery=item *
1295b077aed3SPierre Pronchery
1296b077aed3SPierre Proncheryd2i_DHparams(), d2i_DHxparams(), d2i_DSAparams(), d2i_DSAPrivateKey(),
1297b077aed3SPierre Proncheryd2i_DSAPrivateKey_bio(), d2i_DSAPrivateKey_fp(), d2i_DSA_PUBKEY(),
1298b077aed3SPierre Proncheryd2i_DSA_PUBKEY_bio(), d2i_DSA_PUBKEY_fp(), d2i_DSAPublicKey(),
1299b077aed3SPierre Proncheryd2i_ECParameters(), d2i_ECPrivateKey(), d2i_ECPrivateKey_bio(),
1300b077aed3SPierre Proncheryd2i_ECPrivateKey_fp(), d2i_EC_PUBKEY(), d2i_EC_PUBKEY_bio(),
1301b077aed3SPierre Proncheryd2i_EC_PUBKEY_fp(), o2i_ECPublicKey(), d2i_RSAPrivateKey(),
1302b077aed3SPierre Proncheryd2i_RSAPrivateKey_bio(), d2i_RSAPrivateKey_fp(), d2i_RSA_PUBKEY(),
1303b077aed3SPierre Proncheryd2i_RSA_PUBKEY_bio(), d2i_RSA_PUBKEY_fp(), d2i_RSAPublicKey(),
1304b077aed3SPierre Proncheryd2i_RSAPublicKey_bio(), d2i_RSAPublicKey_fp()
1305b077aed3SPierre Pronchery
1306b077aed3SPierre ProncherySee L</Deprecated i2d and d2i functions for low-level key types>
1307b077aed3SPierre Pronchery
1308b077aed3SPierre Pronchery=item *
1309b077aed3SPierre Pronchery
1310b077aed3SPierre ProncheryDES_crypt(), DES_fcrypt(), DES_encrypt1(), DES_encrypt2(), DES_encrypt3(),
1311b077aed3SPierre ProncheryDES_decrypt3(), DES_ede3_cbc_encrypt(), DES_ede3_cfb64_encrypt(),
1312b077aed3SPierre ProncheryDES_ede3_cfb_encrypt(),DES_ede3_ofb64_encrypt(),
1313b077aed3SPierre ProncheryDES_ecb_encrypt(), DES_ecb3_encrypt(), DES_ofb64_encrypt(), DES_ofb_encrypt(),
1314b077aed3SPierre ProncheryDES_cfb64_encrypt DES_cfb_encrypt(), DES_cbc_encrypt(), DES_ncbc_encrypt(),
1315b077aed3SPierre ProncheryDES_pcbc_encrypt(), DES_xcbc_encrypt(), DES_cbc_cksum(), DES_quad_cksum(),
1316b077aed3SPierre ProncheryDES_check_key_parity(), DES_is_weak_key(), DES_key_sched(), DES_options(),
1317b077aed3SPierre ProncheryDES_random_key(), DES_set_key(), DES_set_key_checked(), DES_set_key_unchecked(),
1318b077aed3SPierre ProncheryDES_set_odd_parity(), DES_string_to_2keys(), DES_string_to_key()
1319b077aed3SPierre Pronchery
1320b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1321b077aed3SPierre ProncheryAlgorithms for "DESX-CBC", "DES-ECB", "DES-CBC", "DES-OFB", "DES-CFB",
1322b077aed3SPierre Pronchery"DES-CFB1" and "DES-CFB8" have been moved to the L<Legacy Provider|/Legacy Algorithms>.
1323b077aed3SPierre Pronchery
1324b077aed3SPierre Pronchery=item *
1325b077aed3SPierre Pronchery
1326b077aed3SPierre ProncheryDH_bits(), DH_security_bits(), DH_size()
1327b077aed3SPierre Pronchery
1328b077aed3SPierre ProncheryUse L<EVP_PKEY_get_bits(3)>, L<EVP_PKEY_get_security_bits(3)> and
1329b077aed3SPierre ProncheryL<EVP_PKEY_get_size(3)>.
1330b077aed3SPierre Pronchery
1331b077aed3SPierre Pronchery=item *
1332b077aed3SPierre Pronchery
1333b077aed3SPierre ProncheryDH_check(), DH_check_ex(), DH_check_params(), DH_check_params_ex(),
1334b077aed3SPierre ProncheryDH_check_pub_key(), DH_check_pub_key_ex()
1335b077aed3SPierre Pronchery
1336b077aed3SPierre ProncherySee L</Deprecated low-level validation functions>
1337b077aed3SPierre Pronchery
1338b077aed3SPierre Pronchery=item *
1339b077aed3SPierre Pronchery
1340b077aed3SPierre ProncheryDH_clear_flags(), DH_test_flags(), DH_set_flags()
1341b077aed3SPierre Pronchery
1342b077aed3SPierre ProncheryThe B<DH_FLAG_CACHE_MONT_P> flag has been deprecated without replacement.
1343b077aed3SPierre ProncheryThe B<DH_FLAG_TYPE_DH> and B<DH_FLAG_TYPE_DHX> have been deprecated.
1344b077aed3SPierre ProncheryUse EVP_PKEY_is_a() to determine the type of a key.
1345b077aed3SPierre ProncheryThere is no replacement for setting these flags.
1346b077aed3SPierre Pronchery
1347b077aed3SPierre Pronchery=item *
1348b077aed3SPierre Pronchery
1349b077aed3SPierre ProncheryDH_compute_key() DH_compute_key_padded()
1350b077aed3SPierre Pronchery
1351b077aed3SPierre ProncherySee L</Deprecated low-level key exchange functions>.
1352b077aed3SPierre Pronchery
1353b077aed3SPierre Pronchery=item *
1354b077aed3SPierre Pronchery
1355b077aed3SPierre ProncheryDH_new(), DH_new_by_nid(), DH_free(), DH_up_ref()
1356b077aed3SPierre Pronchery
1357b077aed3SPierre ProncherySee L</Deprecated low-level object creation>
1358b077aed3SPierre Pronchery
1359b077aed3SPierre Pronchery=item *
1360b077aed3SPierre Pronchery
1361b077aed3SPierre ProncheryDH_generate_key(), DH_generate_parameters_ex()
1362b077aed3SPierre Pronchery
1363b077aed3SPierre ProncherySee L</Deprecated low-level key generation functions>.
1364b077aed3SPierre Pronchery
1365b077aed3SPierre Pronchery=item *
1366b077aed3SPierre Pronchery
1367b077aed3SPierre ProncheryDH_get0_pqg(), DH_get0_p(), DH_get0_q(), DH_get0_g(), DH_get0_key(),
1368b077aed3SPierre ProncheryDH_get0_priv_key(), DH_get0_pub_key(), DH_get_length(), DH_get_nid()
1369b077aed3SPierre Pronchery
1370b077aed3SPierre ProncherySee L</Deprecated low-level key parameter getters>
1371b077aed3SPierre Pronchery
1372b077aed3SPierre Pronchery=item *
1373b077aed3SPierre Pronchery
1374b077aed3SPierre ProncheryDH_get_1024_160(), DH_get_2048_224(), DH_get_2048_256()
1375b077aed3SPierre Pronchery
1376b077aed3SPierre ProncheryApplications should instead set the B<OSSL_PKEY_PARAM_GROUP_NAME> as specified in
1377b077aed3SPierre ProncheryL<EVP_PKEY-DH(7)/DH parameters>) to one of "dh_1024_160", "dh_2048_224" or
1378b077aed3SPierre Pronchery"dh_2048_256" when generating a DH key.
1379b077aed3SPierre Pronchery
1380b077aed3SPierre Pronchery=item *
1381b077aed3SPierre Pronchery
1382b077aed3SPierre ProncheryDH_KDF_X9_42()
1383b077aed3SPierre Pronchery
1384b077aed3SPierre ProncheryApplications should use L<EVP_PKEY_CTX_set_dh_kdf_type(3)> instead.
1385b077aed3SPierre Pronchery
1386b077aed3SPierre Pronchery=item *
1387b077aed3SPierre Pronchery
1388b077aed3SPierre ProncheryDH_get_default_method(), DH_get0_engine(), DH_meth_*(), DH_new_method(),
1389b077aed3SPierre ProncheryDH_OpenSSL(), DH_get_ex_data(), DH_set_default_method(), DH_set_method(),
1390b077aed3SPierre ProncheryDH_set_ex_data()
1391b077aed3SPierre Pronchery
1392b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>
1393b077aed3SPierre Pronchery
1394b077aed3SPierre Pronchery=item *
1395b077aed3SPierre Pronchery
1396b077aed3SPierre ProncheryDHparams_print(), DHparams_print_fp()
1397b077aed3SPierre Pronchery
1398b077aed3SPierre ProncherySee L</Deprecated low-level key printing functions>
1399b077aed3SPierre Pronchery
1400b077aed3SPierre Pronchery=item *
1401b077aed3SPierre Pronchery
1402b077aed3SPierre ProncheryDH_set0_key(), DH_set0_pqg(), DH_set_length()
1403b077aed3SPierre Pronchery
1404b077aed3SPierre ProncherySee L</Deprecated low-level key parameter setters>
1405b077aed3SPierre Pronchery
1406b077aed3SPierre Pronchery=item *
1407b077aed3SPierre Pronchery
1408b077aed3SPierre ProncheryDSA_bits(), DSA_security_bits(), DSA_size()
1409b077aed3SPierre Pronchery
1410b077aed3SPierre ProncheryUse L<EVP_PKEY_get_bits(3)>, L<EVP_PKEY_get_security_bits(3)> and
1411b077aed3SPierre ProncheryL<EVP_PKEY_get_size(3)>.
1412b077aed3SPierre Pronchery
1413b077aed3SPierre Pronchery=item *
1414b077aed3SPierre Pronchery
1415b077aed3SPierre ProncheryDHparams_dup(), DSA_dup_DH()
1416b077aed3SPierre Pronchery
1417b077aed3SPierre ProncheryThere is no direct replacement. Applications may use L<EVP_PKEY_copy_parameters(3)>
1418b077aed3SPierre Proncheryand L<EVP_PKEY_dup(3)> instead.
1419b077aed3SPierre Pronchery
1420b077aed3SPierre Pronchery=item *
1421b077aed3SPierre Pronchery
1422b077aed3SPierre ProncheryDSA_generate_key(), DSA_generate_parameters_ex()
1423b077aed3SPierre Pronchery
1424b077aed3SPierre ProncherySee L</Deprecated low-level key generation functions>.
1425b077aed3SPierre Pronchery
1426b077aed3SPierre Pronchery=item *
1427b077aed3SPierre Pronchery
1428b077aed3SPierre ProncheryDSA_get0_engine(), DSA_get_default_method(), DSA_get_ex_data(),
1429b077aed3SPierre ProncheryDSA_get_method(), DSA_meth_*(), DSA_new_method(), DSA_OpenSSL(),
1430b077aed3SPierre ProncheryDSA_set_default_method(), DSA_set_ex_data(), DSA_set_method()
1431b077aed3SPierre Pronchery
1432b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>.
1433b077aed3SPierre Pronchery
1434b077aed3SPierre Pronchery=item *
1435b077aed3SPierre Pronchery
1436b077aed3SPierre ProncheryDSA_get0_p(), DSA_get0_q(), DSA_get0_g(), DSA_get0_pqg(), DSA_get0_key(),
1437b077aed3SPierre ProncheryDSA_get0_priv_key(), DSA_get0_pub_key()
1438b077aed3SPierre Pronchery
1439b077aed3SPierre ProncherySee L</Deprecated low-level key parameter getters>.
1440b077aed3SPierre Pronchery
1441b077aed3SPierre Pronchery=item *
1442b077aed3SPierre Pronchery
1443b077aed3SPierre ProncheryDSA_new(), DSA_free(), DSA_up_ref()
1444b077aed3SPierre Pronchery
1445b077aed3SPierre ProncherySee L</Deprecated low-level object creation>
1446b077aed3SPierre Pronchery
1447b077aed3SPierre Pronchery=item *
1448b077aed3SPierre Pronchery
1449b077aed3SPierre ProncheryDSAparams_dup()
1450b077aed3SPierre Pronchery
1451b077aed3SPierre ProncheryThere is no direct replacement. Applications may use L<EVP_PKEY_copy_parameters(3)>
1452b077aed3SPierre Proncheryand L<EVP_PKEY_dup(3)> instead.
1453b077aed3SPierre Pronchery
1454b077aed3SPierre Pronchery=item *
1455b077aed3SPierre Pronchery
1456b077aed3SPierre ProncheryDSAparams_print(), DSAparams_print_fp(), DSA_print(), DSA_print_fp()
1457b077aed3SPierre Pronchery
1458b077aed3SPierre ProncherySee L</Deprecated low-level key printing functions>
1459b077aed3SPierre Pronchery
1460b077aed3SPierre Pronchery=item *
1461b077aed3SPierre Pronchery
1462b077aed3SPierre ProncheryDSA_set0_key(), DSA_set0_pqg()
1463b077aed3SPierre Pronchery
1464b077aed3SPierre ProncherySee L</Deprecated low-level key parameter setters>
1465b077aed3SPierre Pronchery
1466b077aed3SPierre Pronchery=item *
1467b077aed3SPierre Pronchery
1468b077aed3SPierre ProncheryDSA_set_flags(), DSA_clear_flags(), DSA_test_flags()
1469b077aed3SPierre Pronchery
1470b077aed3SPierre ProncheryThe B<DSA_FLAG_CACHE_MONT_P> flag has been deprecated without replacement.
1471b077aed3SPierre Pronchery
1472b077aed3SPierre Pronchery=item *
1473b077aed3SPierre Pronchery
1474b077aed3SPierre ProncheryDSA_sign(), DSA_do_sign(), DSA_sign_setup(), DSA_verify(), DSA_do_verify()
1475b077aed3SPierre Pronchery
1476b077aed3SPierre ProncherySee L</Deprecated low-level signing functions>.
1477b077aed3SPierre Pronchery
1478b077aed3SPierre Pronchery=item *
1479b077aed3SPierre Pronchery
1480b077aed3SPierre ProncheryECDH_compute_key()
1481b077aed3SPierre Pronchery
1482b077aed3SPierre ProncherySee L</Deprecated low-level key exchange functions>.
1483b077aed3SPierre Pronchery
1484b077aed3SPierre Pronchery=item *
1485b077aed3SPierre Pronchery
1486b077aed3SPierre ProncheryECDH_KDF_X9_62()
1487b077aed3SPierre Pronchery
1488b077aed3SPierre ProncheryApplications may either set this using the helper function
1489b077aed3SPierre ProncheryL<EVP_PKEY_CTX_set_ecdh_kdf_type(3)> or by setting an L<OSSL_PARAM(3)> using the
1490b077aed3SPierre Pronchery"kdf-type" as shown in L<EVP_KEYEXCH-ECDH(7)/EXAMPLES>
1491b077aed3SPierre Pronchery
1492b077aed3SPierre Pronchery=item *
1493b077aed3SPierre Pronchery
1494b077aed3SPierre ProncheryECDSA_sign(), ECDSA_sign_ex(), ECDSA_sign_setup(), ECDSA_do_sign(),
1495b077aed3SPierre ProncheryECDSA_do_sign_ex(), ECDSA_verify(), ECDSA_do_verify()
1496b077aed3SPierre Pronchery
1497b077aed3SPierre ProncherySee L</Deprecated low-level signing functions>.
1498b077aed3SPierre Pronchery
1499b077aed3SPierre Pronchery=item *
1500b077aed3SPierre Pronchery
1501b077aed3SPierre ProncheryECDSA_size()
1502b077aed3SPierre Pronchery
1503b077aed3SPierre ProncheryApplications should use L<EVP_PKEY_get_size(3)>.
1504b077aed3SPierre Pronchery
1505b077aed3SPierre Pronchery=item *
1506b077aed3SPierre Pronchery
1507b077aed3SPierre ProncheryEC_GF2m_simple_method(), EC_GFp_mont_method(), EC_GFp_nist_method(),
1508b077aed3SPierre ProncheryEC_GFp_nistp224_method(), EC_GFp_nistp256_method(), EC_GFp_nistp521_method(),
1509b077aed3SPierre ProncheryEC_GFp_simple_method()
1510b077aed3SPierre Pronchery
1511b077aed3SPierre ProncheryThere are no replacements for these functions. Applications should rely on the
1512b077aed3SPierre Proncherylibrary automatically assigning a suitable method internally when an EC_GROUP
1513b077aed3SPierre Proncheryis constructed.
1514b077aed3SPierre Pronchery
1515b077aed3SPierre Pronchery=item *
1516b077aed3SPierre Pronchery
1517b077aed3SPierre ProncheryEC_GROUP_clear_free()
1518b077aed3SPierre Pronchery
1519b077aed3SPierre ProncheryUse L<EC_GROUP_free(3)> instead.
1520b077aed3SPierre Pronchery
1521b077aed3SPierre Pronchery=item *
1522b077aed3SPierre Pronchery
1523b077aed3SPierre ProncheryEC_GROUP_get_curve_GF2m(), EC_GROUP_get_curve_GFp(), EC_GROUP_set_curve_GF2m(),
1524b077aed3SPierre ProncheryEC_GROUP_set_curve_GFp()
1525b077aed3SPierre Pronchery
1526b077aed3SPierre ProncheryApplications should use L<EC_GROUP_get_curve(3)> and L<EC_GROUP_set_curve(3)>.
1527b077aed3SPierre Pronchery
1528b077aed3SPierre Pronchery=item *
1529b077aed3SPierre Pronchery
1530b077aed3SPierre ProncheryEC_GROUP_have_precompute_mult(), EC_GROUP_precompute_mult(),
1531b077aed3SPierre ProncheryEC_KEY_precompute_mult()
1532b077aed3SPierre Pronchery
1533b077aed3SPierre ProncheryThese functions are not widely used. Applications should instead switch to
1534b077aed3SPierre Proncherynamed curves which OpenSSL has hardcoded lookup tables for.
1535b077aed3SPierre Pronchery
1536b077aed3SPierre Pronchery=item *
1537b077aed3SPierre Pronchery
1538b077aed3SPierre ProncheryEC_GROUP_new(), EC_GROUP_method_of(), EC_POINT_method_of()
1539b077aed3SPierre Pronchery
1540b077aed3SPierre ProncheryEC_METHOD is now an internal-only concept and a suitable EC_METHOD is assigned
1541b077aed3SPierre Proncheryinternally without application intervention.
1542b077aed3SPierre ProncheryUsers of EC_GROUP_new() should switch to a different suitable constructor.
1543b077aed3SPierre Pronchery
1544b077aed3SPierre Pronchery=item *
1545b077aed3SPierre Pronchery
1546b077aed3SPierre ProncheryEC_KEY_can_sign()
1547b077aed3SPierre Pronchery
1548b077aed3SPierre ProncheryApplications should use L<EVP_PKEY_can_sign(3)> instead.
1549b077aed3SPierre Pronchery
1550b077aed3SPierre Pronchery=item *
1551b077aed3SPierre Pronchery
1552b077aed3SPierre ProncheryEC_KEY_check_key()
1553b077aed3SPierre Pronchery
1554b077aed3SPierre ProncherySee L</Deprecated low-level validation functions>
1555b077aed3SPierre Pronchery
1556b077aed3SPierre Pronchery=item *
1557b077aed3SPierre Pronchery
1558b077aed3SPierre ProncheryEC_KEY_set_flags(), EC_KEY_get_flags(), EC_KEY_clear_flags()
1559b077aed3SPierre Pronchery
1560aa795734SPierre ProncherySee L<EVP_PKEY-EC(7)/Common EC parameters> which handles flags as separate
1561b077aed3SPierre Proncheryparameters for B<OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT>,
1562b077aed3SPierre ProncheryB<OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE>, B<OSSL_PKEY_PARAM_EC_ENCODING>,
1563b077aed3SPierre ProncheryB<OSSL_PKEY_PARAM_USE_COFACTOR_ECDH> and
1564b077aed3SPierre ProncheryB<OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC>.
1565b077aed3SPierre ProncherySee also L<EVP_PKEY-EC(7)/EXAMPLES>
1566b077aed3SPierre Pronchery
1567b077aed3SPierre Pronchery=item *
1568b077aed3SPierre Pronchery
1569b077aed3SPierre ProncheryEC_KEY_dup(), EC_KEY_copy()
1570b077aed3SPierre Pronchery
1571b077aed3SPierre ProncheryThere is no direct replacement. Applications may use L<EVP_PKEY_copy_parameters(3)>
1572b077aed3SPierre Proncheryand L<EVP_PKEY_dup(3)> instead.
1573b077aed3SPierre Pronchery
1574b077aed3SPierre Pronchery=item *
1575b077aed3SPierre Pronchery
1576b077aed3SPierre ProncheryEC_KEY_decoded_from_explicit_params()
1577b077aed3SPierre Pronchery
1578b077aed3SPierre ProncheryThere is no replacement.
1579b077aed3SPierre Pronchery
1580b077aed3SPierre Pronchery=item *
1581b077aed3SPierre Pronchery
1582b077aed3SPierre ProncheryEC_KEY_generate_key()
1583b077aed3SPierre Pronchery
1584b077aed3SPierre ProncherySee L</Deprecated low-level key generation functions>.
1585b077aed3SPierre Pronchery
1586b077aed3SPierre Pronchery=item *
1587b077aed3SPierre Pronchery
1588b077aed3SPierre ProncheryEC_KEY_get0_group(), EC_KEY_get0_private_key(), EC_KEY_get0_public_key(),
1589b077aed3SPierre ProncheryEC_KEY_get_conv_form(), EC_KEY_get_enc_flags()
1590b077aed3SPierre Pronchery
1591b077aed3SPierre ProncherySee L</Deprecated low-level key parameter getters>.
1592b077aed3SPierre Pronchery
1593b077aed3SPierre Pronchery=item *
1594b077aed3SPierre Pronchery
1595b077aed3SPierre ProncheryEC_KEY_get0_engine(), EC_KEY_get_default_method(), EC_KEY_get_method(),
1596b077aed3SPierre ProncheryEC_KEY_new_method(), EC_KEY_get_ex_data(), EC_KEY_OpenSSL(),
1597b077aed3SPierre ProncheryEC_KEY_set_ex_data(), EC_KEY_set_default_method(), EC_KEY_METHOD_*(),
1598b077aed3SPierre ProncheryEC_KEY_set_method()
1599b077aed3SPierre Pronchery
1600b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>
1601b077aed3SPierre Pronchery
1602b077aed3SPierre Pronchery=item *
1603b077aed3SPierre Pronchery
1604b077aed3SPierre ProncheryEC_METHOD_get_field_type()
1605b077aed3SPierre Pronchery
1606b077aed3SPierre ProncheryUse L<EC_GROUP_get_field_type(3)> instead.
1607b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>
1608b077aed3SPierre Pronchery
1609b077aed3SPierre Pronchery=item *
1610b077aed3SPierre Pronchery
1611b077aed3SPierre ProncheryEC_KEY_key2buf(), EC_KEY_oct2key(), EC_KEY_oct2priv(), EC_KEY_priv2buf(),
1612b077aed3SPierre ProncheryEC_KEY_priv2oct()
1613b077aed3SPierre Pronchery
1614b077aed3SPierre ProncheryThere are no replacements for these.
1615b077aed3SPierre Pronchery
1616b077aed3SPierre Pronchery=item *
1617b077aed3SPierre Pronchery
1618b077aed3SPierre ProncheryEC_KEY_new(), EC_KEY_new_by_curve_name(), EC_KEY_free(), EC_KEY_up_ref()
1619b077aed3SPierre Pronchery
1620b077aed3SPierre ProncherySee L</Deprecated low-level object creation>
1621b077aed3SPierre Pronchery
1622b077aed3SPierre Pronchery=item *
1623b077aed3SPierre Pronchery
1624b077aed3SPierre ProncheryEC_KEY_print(), EC_KEY_print_fp()
1625b077aed3SPierre Pronchery
1626b077aed3SPierre ProncherySee L</Deprecated low-level key printing functions>
1627b077aed3SPierre Pronchery
1628b077aed3SPierre Pronchery=item *
1629b077aed3SPierre Pronchery
1630b077aed3SPierre ProncheryEC_KEY_set_asn1_flag(), EC_KEY_set_conv_form(), EC_KEY_set_enc_flags()
1631b077aed3SPierre Pronchery
1632b077aed3SPierre ProncherySee L</Deprecated low-level key parameter setters>.
1633b077aed3SPierre Pronchery
1634b077aed3SPierre Pronchery=item *
1635b077aed3SPierre Pronchery
1636b077aed3SPierre ProncheryEC_KEY_set_group(), EC_KEY_set_private_key(), EC_KEY_set_public_key(),
1637b077aed3SPierre ProncheryEC_KEY_set_public_key_affine_coordinates()
1638b077aed3SPierre Pronchery
1639b077aed3SPierre ProncherySee L</Deprecated low-level key parameter setters>.
1640b077aed3SPierre Pronchery
1641b077aed3SPierre Pronchery=item *
1642b077aed3SPierre Pronchery
1643b077aed3SPierre ProncheryECParameters_print(), ECParameters_print_fp(), ECPKParameters_print(),
1644b077aed3SPierre ProncheryECPKParameters_print_fp()
1645b077aed3SPierre Pronchery
1646b077aed3SPierre ProncherySee L</Deprecated low-level key printing functions>
1647b077aed3SPierre Pronchery
1648b077aed3SPierre Pronchery=item *
1649b077aed3SPierre Pronchery
1650b077aed3SPierre ProncheryEC_POINT_bn2point(), EC_POINT_point2bn()
1651b077aed3SPierre Pronchery
1652b077aed3SPierre ProncheryThese functions were not particularly useful, since EC point serialization
1653b077aed3SPierre Proncheryformats are not individual big-endian integers.
1654b077aed3SPierre Pronchery
1655b077aed3SPierre Pronchery=item *
1656b077aed3SPierre Pronchery
1657b077aed3SPierre ProncheryEC_POINT_get_affine_coordinates_GF2m(), EC_POINT_get_affine_coordinates_GFp(),
1658b077aed3SPierre ProncheryEC_POINT_set_affine_coordinates_GF2m(), EC_POINT_set_affine_coordinates_GFp()
1659b077aed3SPierre Pronchery
1660b077aed3SPierre ProncheryApplications should use L<EC_POINT_get_affine_coordinates(3)> and
1661b077aed3SPierre ProncheryL<EC_POINT_set_affine_coordinates(3)> instead.
1662b077aed3SPierre Pronchery
1663b077aed3SPierre Pronchery=item *
1664b077aed3SPierre Pronchery
1665b077aed3SPierre ProncheryEC_POINT_get_Jprojective_coordinates_GFp(), EC_POINT_set_Jprojective_coordinates_GFp()
1666b077aed3SPierre Pronchery
1667b077aed3SPierre ProncheryThese functions are not widely used. Applications should instead use the
1668b077aed3SPierre ProncheryL<EC_POINT_set_affine_coordinates(3)> and L<EC_POINT_get_affine_coordinates(3)>
1669b077aed3SPierre Proncheryfunctions.
1670b077aed3SPierre Pronchery
1671b077aed3SPierre Pronchery=item *
1672b077aed3SPierre Pronchery
1673b077aed3SPierre ProncheryEC_POINT_make_affine(), EC_POINTs_make_affine()
1674b077aed3SPierre Pronchery
1675b077aed3SPierre ProncheryThere is no replacement. These functions were not widely used, and OpenSSL
1676b077aed3SPierre Proncheryautomatically performs this conversion when needed.
1677b077aed3SPierre Pronchery
1678b077aed3SPierre Pronchery=item *
1679b077aed3SPierre Pronchery
1680b077aed3SPierre ProncheryEC_POINT_set_compressed_coordinates_GF2m(), EC_POINT_set_compressed_coordinates_GFp()
1681b077aed3SPierre Pronchery
1682b077aed3SPierre ProncheryApplications should use L<EC_POINT_set_compressed_coordinates(3)> instead.
1683b077aed3SPierre Pronchery
1684b077aed3SPierre Pronchery=item *
1685b077aed3SPierre Pronchery
1686b077aed3SPierre ProncheryEC_POINTs_mul()
1687b077aed3SPierre Pronchery
1688b077aed3SPierre ProncheryThis function is not widely used. Applications should instead use the
1689b077aed3SPierre ProncheryL<EC_POINT_mul(3)> function.
1690b077aed3SPierre Pronchery
1691b077aed3SPierre Pronchery=item *
1692b077aed3SPierre Pronchery
1693b077aed3SPierre ProncheryB<ENGINE_*()>
1694b077aed3SPierre Pronchery
1695b077aed3SPierre ProncheryAll engine functions are deprecated. An engine should be rewritten as a provider.
1696b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>.
1697b077aed3SPierre Pronchery
1698b077aed3SPierre Pronchery=item *
1699b077aed3SPierre Pronchery
1700b077aed3SPierre ProncheryB<ERR_load_*()>, ERR_func_error_string(), ERR_get_error_line(),
1701b077aed3SPierre ProncheryERR_get_error_line_data(), ERR_get_state()
1702b077aed3SPierre Pronchery
1703b077aed3SPierre ProncheryOpenSSL now loads error strings automatically so these functions are not needed.
1704b077aed3SPierre Pronchery
1705b077aed3SPierre Pronchery=item *
1706b077aed3SPierre Pronchery
1707b077aed3SPierre ProncheryERR_peek_error_line_data(), ERR_peek_last_error_line_data()
1708b077aed3SPierre Pronchery
1709b077aed3SPierre ProncheryThe new functions are L<ERR_peek_error_func(3)>, L<ERR_peek_last_error_func(3)>,
1710b077aed3SPierre ProncheryL<ERR_peek_error_data(3)>, L<ERR_peek_last_error_data(3)>, L<ERR_get_error_all(3)>,
1711b077aed3SPierre ProncheryL<ERR_peek_error_all(3)> and L<ERR_peek_last_error_all(3)>.
1712b077aed3SPierre ProncheryApplications should use L<ERR_get_error_all(3)>, or pick information
1713b077aed3SPierre Proncherywith ERR_peek functions and finish off with getting the error code by using
1714b077aed3SPierre ProncheryL<ERR_get_error(3)>.
1715b077aed3SPierre Pronchery
1716b077aed3SPierre Pronchery=item *
1717b077aed3SPierre Pronchery
1718b077aed3SPierre ProncheryEVP_CIPHER_CTX_iv(), EVP_CIPHER_CTX_iv_noconst(), EVP_CIPHER_CTX_original_iv()
1719b077aed3SPierre Pronchery
1720b077aed3SPierre ProncheryApplications should instead use L<EVP_CIPHER_CTX_get_updated_iv(3)>,
1721b077aed3SPierre ProncheryL<EVP_CIPHER_CTX_get_updated_iv(3)> and L<EVP_CIPHER_CTX_get_original_iv(3)>
1722b077aed3SPierre Proncheryrespectively.
1723b077aed3SPierre ProncherySee L<EVP_CIPHER_CTX_get_original_iv(3)> for further information.
1724b077aed3SPierre Pronchery
1725b077aed3SPierre Pronchery=item *
1726b077aed3SPierre Pronchery
1727b077aed3SPierre ProncheryB<EVP_CIPHER_meth_*()>, EVP_MD_CTX_set_update_fn(), EVP_MD_CTX_update_fn(),
1728b077aed3SPierre ProncheryB<EVP_MD_meth_*()>
1729b077aed3SPierre Pronchery
1730b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>.
1731b077aed3SPierre Pronchery
1732b077aed3SPierre Pronchery=item *
1733b077aed3SPierre Pronchery
1734b077aed3SPierre ProncheryEVP_PKEY_CTRL_PKCS7_ENCRYPT(), EVP_PKEY_CTRL_PKCS7_DECRYPT(),
1735b077aed3SPierre ProncheryEVP_PKEY_CTRL_PKCS7_SIGN(), EVP_PKEY_CTRL_CMS_ENCRYPT(),
1736b077aed3SPierre ProncheryEVP_PKEY_CTRL_CMS_DECRYPT(), and EVP_PKEY_CTRL_CMS_SIGN()
1737b077aed3SPierre Pronchery
1738b077aed3SPierre ProncheryThese control operations are not invoked by the OpenSSL library anymore and
1739b077aed3SPierre Proncheryare replaced by direct checks of the key operation against the key type
1740b077aed3SPierre Proncherywhen the operation is initialized.
1741b077aed3SPierre Pronchery
1742b077aed3SPierre Pronchery=item *
1743b077aed3SPierre Pronchery
1744b077aed3SPierre ProncheryEVP_PKEY_CTX_get0_dh_kdf_ukm(), EVP_PKEY_CTX_get0_ecdh_kdf_ukm()
1745b077aed3SPierre Pronchery
1746b077aed3SPierre ProncherySee the "kdf-ukm" item in L<EVP_KEYEXCH-DH(7)/DH key exchange parameters> and
1747b077aed3SPierre ProncheryL<EVP_KEYEXCH-ECDH(7)/ECDH Key Exchange parameters>.
1748b077aed3SPierre ProncheryThese functions are obsolete and should not be required.
1749b077aed3SPierre Pronchery
1750b077aed3SPierre Pronchery=item *
1751b077aed3SPierre Pronchery
1752b077aed3SPierre ProncheryEVP_PKEY_CTX_set_rsa_keygen_pubexp()
1753b077aed3SPierre Pronchery
1754b077aed3SPierre ProncheryApplications should use L<EVP_PKEY_CTX_set1_rsa_keygen_pubexp(3)> instead.
1755b077aed3SPierre Pronchery
1756b077aed3SPierre Pronchery=item *
1757b077aed3SPierre Pronchery
1758b077aed3SPierre ProncheryEVP_PKEY_cmp(), EVP_PKEY_cmp_parameters()
1759b077aed3SPierre Pronchery
1760b077aed3SPierre ProncheryApplications should use L<EVP_PKEY_eq(3)> and L<EVP_PKEY_parameters_eq(3)> instead.
1761b077aed3SPierre ProncherySee L<EVP_PKEY_copy_parameters(3)> for further details.
1762b077aed3SPierre Pronchery
1763b077aed3SPierre Pronchery=item *
1764b077aed3SPierre Pronchery
1765b077aed3SPierre ProncheryEVP_PKEY_encrypt_old(), EVP_PKEY_decrypt_old(),
1766b077aed3SPierre Pronchery
1767b077aed3SPierre ProncheryApplications should use L<EVP_PKEY_encrypt_init(3)> and L<EVP_PKEY_encrypt(3)> or
1768b077aed3SPierre ProncheryL<EVP_PKEY_decrypt_init(3)> and L<EVP_PKEY_decrypt(3)> instead.
1769b077aed3SPierre Pronchery
1770b077aed3SPierre Pronchery=item *
1771b077aed3SPierre Pronchery
1772b077aed3SPierre ProncheryEVP_PKEY_get0()
1773b077aed3SPierre Pronchery
1774b077aed3SPierre ProncheryThis function returns NULL if the key comes from a provider.
1775b077aed3SPierre Pronchery
1776b077aed3SPierre Pronchery=item *
1777b077aed3SPierre Pronchery
1778b077aed3SPierre ProncheryEVP_PKEY_get0_DH(), EVP_PKEY_get0_DSA(), EVP_PKEY_get0_EC_KEY(), EVP_PKEY_get0_RSA(),
1779b077aed3SPierre ProncheryEVP_PKEY_get1_DH(), EVP_PKEY_get1_DSA(), EVP_PKEY_get1_EC_KEY and EVP_PKEY_get1_RSA(),
1780b077aed3SPierre ProncheryEVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305(), EVP_PKEY_get0_siphash()
1781b077aed3SPierre Pronchery
1782b077aed3SPierre ProncherySee L</Functions that return an internal key should be treated as read only>.
1783b077aed3SPierre Pronchery
1784b077aed3SPierre Pronchery=item *
1785b077aed3SPierre Pronchery
1786b077aed3SPierre ProncheryB<EVP_PKEY_meth_*()>
1787b077aed3SPierre Pronchery
1788b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>.
1789b077aed3SPierre Pronchery
1790b077aed3SPierre Pronchery=item *
1791b077aed3SPierre Pronchery
1792b077aed3SPierre ProncheryEVP_PKEY_new_CMAC_key()
1793b077aed3SPierre Pronchery
1794b077aed3SPierre ProncherySee L</Deprecated low-level MAC functions>.
1795b077aed3SPierre Pronchery
1796b077aed3SPierre Pronchery=item *
1797b077aed3SPierre Pronchery
1798b077aed3SPierre ProncheryEVP_PKEY_assign(), EVP_PKEY_set1_DH(), EVP_PKEY_set1_DSA(),
1799b077aed3SPierre ProncheryEVP_PKEY_set1_EC_KEY(), EVP_PKEY_set1_RSA()
1800b077aed3SPierre Pronchery
1801b077aed3SPierre ProncherySee L</Deprecated low-level key object getters and setters>
1802b077aed3SPierre Pronchery
1803b077aed3SPierre Pronchery=item *
1804b077aed3SPierre Pronchery
1805b077aed3SPierre ProncheryEVP_PKEY_set1_tls_encodedpoint() EVP_PKEY_get1_tls_encodedpoint()
1806b077aed3SPierre Pronchery
1807b077aed3SPierre ProncheryThese functions were previously used by libssl to set or get an encoded public
1808b077aed3SPierre Proncherykey into/from an EVP_PKEY object. With OpenSSL 3.0 these are replaced by the more
1809b077aed3SPierre Proncherygeneric functions L<EVP_PKEY_set1_encoded_public_key(3)> and
1810b077aed3SPierre ProncheryL<EVP_PKEY_get1_encoded_public_key(3)>.
1811b077aed3SPierre ProncheryThe old versions have been converted to deprecated macros that just call the
1812b077aed3SPierre Proncherynew functions.
1813b077aed3SPierre Pronchery
1814b077aed3SPierre Pronchery=item *
1815b077aed3SPierre Pronchery
1816b077aed3SPierre ProncheryEVP_PKEY_set1_engine(), EVP_PKEY_get0_engine()
1817b077aed3SPierre Pronchery
1818b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>.
1819b077aed3SPierre Pronchery
1820b077aed3SPierre Pronchery=item *
1821b077aed3SPierre Pronchery
1822b077aed3SPierre ProncheryEVP_PKEY_set_alias_type()
1823b077aed3SPierre Pronchery
1824b077aed3SPierre ProncheryThis function has been removed. There is no replacement.
1825b077aed3SPierre ProncherySee L</EVP_PKEY_set_alias_type() method has been removed>
1826b077aed3SPierre Pronchery
1827b077aed3SPierre Pronchery=item *
1828b077aed3SPierre Pronchery
1829b077aed3SPierre ProncheryHMAC_Init_ex(), HMAC_Update(), HMAC_Final(), HMAC_size()
1830b077aed3SPierre Pronchery
1831b077aed3SPierre ProncherySee L</Deprecated low-level MAC functions>.
1832b077aed3SPierre Pronchery
1833b077aed3SPierre Pronchery=item *
1834b077aed3SPierre Pronchery
1835b077aed3SPierre ProncheryHMAC_CTX_new(), HMAC_CTX_free(), HMAC_CTX_copy(), HMAC_CTX_reset(),
1836b077aed3SPierre ProncheryHMAC_CTX_set_flags(), HMAC_CTX_get_md()
1837b077aed3SPierre Pronchery
1838b077aed3SPierre ProncherySee L</Deprecated low-level MAC functions>.
1839b077aed3SPierre Pronchery
1840b077aed3SPierre Pronchery=item *
1841b077aed3SPierre Pronchery
1842b077aed3SPierre Proncheryi2d_DHparams(), i2d_DHxparams()
1843b077aed3SPierre Pronchery
1844b077aed3SPierre ProncherySee L</Deprecated low-level key reading and writing functions>
1845b077aed3SPierre Proncheryand L<d2i_RSAPrivateKey(3)/Migration>
1846b077aed3SPierre Pronchery
1847b077aed3SPierre Pronchery=item *
1848b077aed3SPierre Pronchery
1849b077aed3SPierre Proncheryi2d_DSAparams(), i2d_DSAPrivateKey(), i2d_DSAPrivateKey_bio(),
1850b077aed3SPierre Proncheryi2d_DSAPrivateKey_fp(), i2d_DSA_PUBKEY(), i2d_DSA_PUBKEY_bio(),
1851b077aed3SPierre Proncheryi2d_DSA_PUBKEY_fp(), i2d_DSAPublicKey()
1852b077aed3SPierre Pronchery
1853b077aed3SPierre ProncherySee L</Deprecated low-level key reading and writing functions>
1854b077aed3SPierre Proncheryand L<d2i_RSAPrivateKey(3)/Migration>
1855b077aed3SPierre Pronchery
1856b077aed3SPierre Pronchery=item *
1857b077aed3SPierre Pronchery
1858b077aed3SPierre Proncheryi2d_ECParameters(), i2d_ECPrivateKey(), i2d_ECPrivateKey_bio(),
1859b077aed3SPierre Proncheryi2d_ECPrivateKey_fp(), i2d_EC_PUBKEY(), i2d_EC_PUBKEY_bio(),
1860b077aed3SPierre Proncheryi2d_EC_PUBKEY_fp(), i2o_ECPublicKey()
1861b077aed3SPierre Pronchery
1862b077aed3SPierre ProncherySee L</Deprecated low-level key reading and writing functions>
1863b077aed3SPierre Proncheryand L<d2i_RSAPrivateKey(3)/Migration>
1864b077aed3SPierre Pronchery
1865b077aed3SPierre Pronchery=item *
1866b077aed3SPierre Pronchery
1867b077aed3SPierre Proncheryi2d_RSAPrivateKey(), i2d_RSAPrivateKey_bio(), i2d_RSAPrivateKey_fp(),
1868b077aed3SPierre Proncheryi2d_RSA_PUBKEY(), i2d_RSA_PUBKEY_bio(), i2d_RSA_PUBKEY_fp(),
1869b077aed3SPierre Proncheryi2d_RSAPublicKey(), i2d_RSAPublicKey_bio(), i2d_RSAPublicKey_fp()
1870b077aed3SPierre Pronchery
1871b077aed3SPierre ProncherySee L</Deprecated low-level key reading and writing functions>
1872b077aed3SPierre Proncheryand L<d2i_RSAPrivateKey(3)/Migration>
1873b077aed3SPierre Pronchery
1874b077aed3SPierre Pronchery=item *
1875b077aed3SPierre Pronchery
1876b077aed3SPierre ProncheryIDEA_encrypt(), IDEA_set_decrypt_key(), IDEA_set_encrypt_key(),
1877b077aed3SPierre ProncheryIDEA_cbc_encrypt(), IDEA_cfb64_encrypt(), IDEA_ecb_encrypt(),
1878b077aed3SPierre ProncheryIDEA_ofb64_encrypt()
1879b077aed3SPierre Pronchery
1880b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1881b077aed3SPierre ProncheryIDEA has been moved to the L<Legacy Provider|/Legacy Algorithms>.
1882b077aed3SPierre Pronchery
1883b077aed3SPierre Pronchery=item *
1884b077aed3SPierre Pronchery
1885b077aed3SPierre ProncheryIDEA_options()
1886b077aed3SPierre Pronchery
1887b077aed3SPierre ProncheryThere is no replacement. This function returned a constant string.
1888b077aed3SPierre Pronchery
1889b077aed3SPierre Pronchery=item *
1890b077aed3SPierre Pronchery
1891b077aed3SPierre ProncheryMD2(), MD2_Init(), MD2_Update(), MD2_Final()
1892b077aed3SPierre Pronchery
1893b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1894b077aed3SPierre ProncheryMD2 has been moved to the L<Legacy Provider|/Legacy Algorithms>.
1895b077aed3SPierre Pronchery
1896b077aed3SPierre Pronchery=item *
1897b077aed3SPierre Pronchery
1898b077aed3SPierre ProncheryMD2_options()
1899b077aed3SPierre Pronchery
1900b077aed3SPierre ProncheryThere is no replacement. This function returned a constant string.
1901b077aed3SPierre Pronchery
1902b077aed3SPierre Pronchery=item *
1903b077aed3SPierre Pronchery
1904b077aed3SPierre ProncheryMD4(), MD4_Init(), MD4_Update(), MD4_Final(), MD4_Transform()
1905b077aed3SPierre Pronchery
1906b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1907b077aed3SPierre ProncheryMD4 has been moved to the L<Legacy Provider|/Legacy Algorithms>.
1908b077aed3SPierre Pronchery
1909b077aed3SPierre Pronchery=item *
1910b077aed3SPierre Pronchery
1911b077aed3SPierre ProncheryMDC2(), MDC2_Init(), MDC2_Update(), MDC2_Final()
1912b077aed3SPierre Pronchery
1913b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1914b077aed3SPierre ProncheryMDC2 has been moved to the L<Legacy Provider|/Legacy Algorithms>.
1915b077aed3SPierre Pronchery
1916b077aed3SPierre Pronchery=item *
1917b077aed3SPierre Pronchery
1918b077aed3SPierre ProncheryMD5(), MD5_Init(), MD5_Update(), MD5_Final(), MD5_Transform()
1919b077aed3SPierre Pronchery
1920b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1921b077aed3SPierre Pronchery
1922b077aed3SPierre Pronchery=item *
1923b077aed3SPierre Pronchery
1924b077aed3SPierre ProncheryNCONF_WIN32()
1925b077aed3SPierre Pronchery
1926b077aed3SPierre ProncheryThis undocumented function has no replacement.
1927b077aed3SPierre ProncherySee L<config(5)/HISTORY> for more details.
1928b077aed3SPierre Pronchery
1929b077aed3SPierre Pronchery=item *
1930b077aed3SPierre Pronchery
1931b077aed3SPierre ProncheryOCSP_parse_url()
1932b077aed3SPierre Pronchery
1933b077aed3SPierre ProncheryUse L<OSSL_HTTP_parse_url(3)> instead.
1934b077aed3SPierre Pronchery
1935b077aed3SPierre Pronchery=item *
1936b077aed3SPierre Pronchery
1937b077aed3SPierre ProncheryB<OCSP_REQ_CTX> type and B<OCSP_REQ_CTX_*()> functions
1938b077aed3SPierre Pronchery
1939b077aed3SPierre ProncheryThese methods were used to collect all necessary data to form a HTTP request,
1940b077aed3SPierre Proncheryand to perform the HTTP transfer with that request.  With OpenSSL 3.0, the
1941b077aed3SPierre Proncherytype is B<OSSL_HTTP_REQ_CTX>, and the deprecated functions are replaced
1942b077aed3SPierre Proncherywith B<OSSL_HTTP_REQ_CTX_*()>. See L<OSSL_HTTP_REQ_CTX(3)> for additional
1943b077aed3SPierre Proncherydetails.
1944b077aed3SPierre Pronchery
1945b077aed3SPierre Pronchery=item *
1946b077aed3SPierre Pronchery
1947b077aed3SPierre ProncheryOPENSSL_fork_child(), OPENSSL_fork_parent(), OPENSSL_fork_prepare()
1948b077aed3SPierre Pronchery
1949b077aed3SPierre ProncheryThere is no replacement for these functions. These pthread fork support methods
1950b077aed3SPierre Proncherywere unused by OpenSSL.
1951b077aed3SPierre Pronchery
1952b077aed3SPierre Pronchery=item *
1953b077aed3SPierre Pronchery
1954b077aed3SPierre ProncheryOSSL_STORE_ctrl(), OSSL_STORE_do_all_loaders(), OSSL_STORE_LOADER_get0_engine(),
1955b077aed3SPierre ProncheryOSSL_STORE_LOADER_get0_scheme(), OSSL_STORE_LOADER_new(),
1956b077aed3SPierre ProncheryOSSL_STORE_LOADER_set_attach(), OSSL_STORE_LOADER_set_close(),
1957b077aed3SPierre ProncheryOSSL_STORE_LOADER_set_ctrl(), OSSL_STORE_LOADER_set_eof(),
1958b077aed3SPierre ProncheryOSSL_STORE_LOADER_set_error(), OSSL_STORE_LOADER_set_expect(),
1959b077aed3SPierre ProncheryOSSL_STORE_LOADER_set_find(), OSSL_STORE_LOADER_set_load(),
1960b077aed3SPierre ProncheryOSSL_STORE_LOADER_set_open(), OSSL_STORE_LOADER_set_open_ex(),
1961b077aed3SPierre ProncheryOSSL_STORE_register_loader(), OSSL_STORE_unregister_loader(),
1962b077aed3SPierre ProncheryOSSL_STORE_vctrl()
1963b077aed3SPierre Pronchery
1964b077aed3SPierre ProncheryThese functions helped applications and engines create loaders for
1965b077aed3SPierre Proncheryschemes they supported.  These are all deprecated and discouraged in favour of
1966b077aed3SPierre Proncheryprovider implementations, see L<provider-storemgmt(7)>.
1967b077aed3SPierre Pronchery
1968b077aed3SPierre Pronchery=item *
1969b077aed3SPierre Pronchery
1970b077aed3SPierre ProncheryPEM_read_DHparams(), PEM_read_bio_DHparams(),
1971b077aed3SPierre ProncheryPEM_read_DSAparams(), PEM_read_bio_DSAparams(),
1972b077aed3SPierre ProncheryPEM_read_DSAPrivateKey(), PEM_read_DSA_PUBKEY(),
1973b077aed3SPierre ProncheryPEM_read_bio_DSAPrivateKey and PEM_read_bio_DSA_PUBKEY(),
1974b077aed3SPierre ProncheryPEM_read_ECPKParameters(), PEM_read_ECPrivateKey(), PEM_read_EC_PUBKEY(),
1975b077aed3SPierre ProncheryPEM_read_bio_ECPKParameters(), PEM_read_bio_ECPrivateKey(), PEM_read_bio_EC_PUBKEY(),
1976b077aed3SPierre ProncheryPEM_read_RSAPrivateKey(), PEM_read_RSA_PUBKEY(), PEM_read_RSAPublicKey(),
1977b077aed3SPierre ProncheryPEM_read_bio_RSAPrivateKey(), PEM_read_bio_RSA_PUBKEY(), PEM_read_bio_RSAPublicKey(),
1978b077aed3SPierre ProncheryPEM_write_bio_DHparams(), PEM_write_bio_DHxparams(), PEM_write_DHparams(), PEM_write_DHxparams(),
1979b077aed3SPierre ProncheryPEM_write_DSAparams(), PEM_write_DSAPrivateKey(), PEM_write_DSA_PUBKEY(),
1980b077aed3SPierre ProncheryPEM_write_bio_DSAparams(), PEM_write_bio_DSAPrivateKey(), PEM_write_bio_DSA_PUBKEY(),
1981b077aed3SPierre ProncheryPEM_write_ECPKParameters(), PEM_write_ECPrivateKey(), PEM_write_EC_PUBKEY(),
1982b077aed3SPierre ProncheryPEM_write_bio_ECPKParameters(), PEM_write_bio_ECPrivateKey(), PEM_write_bio_EC_PUBKEY(),
1983b077aed3SPierre ProncheryPEM_write_RSAPrivateKey(), PEM_write_RSA_PUBKEY(), PEM_write_RSAPublicKey(),
1984b077aed3SPierre ProncheryPEM_write_bio_RSAPrivateKey(), PEM_write_bio_RSA_PUBKEY(),
1985b077aed3SPierre ProncheryPEM_write_bio_RSAPublicKey(),
1986b077aed3SPierre Pronchery
1987b077aed3SPierre ProncherySee L</Deprecated low-level key reading and writing functions>
1988b077aed3SPierre Pronchery
1989b077aed3SPierre Pronchery=item *
1990b077aed3SPierre Pronchery
1991b077aed3SPierre ProncheryPKCS1_MGF1()
1992b077aed3SPierre Pronchery
1993b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
1994b077aed3SPierre Pronchery
1995b077aed3SPierre Pronchery=item *
1996b077aed3SPierre Pronchery
1997b077aed3SPierre ProncheryRAND_get_rand_method(), RAND_set_rand_method(), RAND_OpenSSL(),
1998b077aed3SPierre ProncheryRAND_set_rand_engine()
1999b077aed3SPierre Pronchery
2000b077aed3SPierre ProncheryApplications should instead use L<RAND_set_DRBG_type(3)>,
2001b077aed3SPierre ProncheryL<EVP_RAND(3)> and L<EVP_RAND(7)>.
2002b077aed3SPierre ProncherySee L<RAND_set_rand_method(3)> for more details.
2003b077aed3SPierre Pronchery
2004b077aed3SPierre Pronchery=item *
2005b077aed3SPierre Pronchery
2006b077aed3SPierre ProncheryRC2_encrypt(), RC2_decrypt(), RC2_set_key(), RC2_cbc_encrypt(), RC2_cfb64_encrypt(),
2007b077aed3SPierre ProncheryRC2_ecb_encrypt(), RC2_ofb64_encrypt(),
2008b077aed3SPierre ProncheryRC4(), RC4_set_key(), RC4_options(),
2009b077aed3SPierre ProncheryRC5_32_encrypt(), RC5_32_set_key(), RC5_32_decrypt(), RC5_32_cbc_encrypt(),
2010b077aed3SPierre ProncheryRC5_32_cfb64_encrypt(), RC5_32_ecb_encrypt(), RC5_32_ofb64_encrypt()
2011b077aed3SPierre Pronchery
2012b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
2013b077aed3SPierre ProncheryThe Algorithms "RC2", "RC4" and "RC5" have been moved to the L<Legacy Provider|/Legacy Algorithms>.
2014b077aed3SPierre Pronchery
2015b077aed3SPierre Pronchery=item *
2016b077aed3SPierre Pronchery
2017b077aed3SPierre ProncheryRIPEMD160(), RIPEMD160_Init(), RIPEMD160_Update(), RIPEMD160_Final(),
2018b077aed3SPierre ProncheryRIPEMD160_Transform()
2019b077aed3SPierre Pronchery
2020b077aed3SPierre ProncherySee L</Deprecated low-level digest functions>.
2021b077aed3SPierre ProncheryThe RIPE algorithm has been moved to the L<Legacy Provider|/Legacy Algorithms>.
2022b077aed3SPierre Pronchery
2023b077aed3SPierre Pronchery=item *
2024b077aed3SPierre Pronchery
2025b077aed3SPierre ProncheryRSA_bits(), RSA_security_bits(), RSA_size()
2026b077aed3SPierre Pronchery
2027b077aed3SPierre ProncheryUse L<EVP_PKEY_get_bits(3)>, L<EVP_PKEY_get_security_bits(3)> and
2028b077aed3SPierre ProncheryL<EVP_PKEY_get_size(3)>.
2029b077aed3SPierre Pronchery
2030b077aed3SPierre Pronchery=item *
2031b077aed3SPierre Pronchery
2032b077aed3SPierre ProncheryRSA_check_key(), RSA_check_key_ex()
2033b077aed3SPierre Pronchery
2034b077aed3SPierre ProncherySee L</Deprecated low-level validation functions>
2035b077aed3SPierre Pronchery
2036b077aed3SPierre Pronchery=item *
2037b077aed3SPierre Pronchery
2038b077aed3SPierre ProncheryRSA_clear_flags(), RSA_flags(), RSA_set_flags(), RSA_test_flags(),
2039b077aed3SPierre ProncheryRSA_setup_blinding(), RSA_blinding_off(), RSA_blinding_on()
2040b077aed3SPierre Pronchery
2041b077aed3SPierre ProncheryAll of these RSA flags have been deprecated without replacement:
2042b077aed3SPierre Pronchery
2043b077aed3SPierre ProncheryB<RSA_FLAG_BLINDING>, B<RSA_FLAG_CACHE_PRIVATE>, B<RSA_FLAG_CACHE_PUBLIC>,
2044b077aed3SPierre ProncheryB<RSA_FLAG_EXT_PKEY>, B<RSA_FLAG_NO_BLINDING>, B<RSA_FLAG_THREAD_SAFE>
2045b077aed3SPierre ProncheryB<RSA_METHOD_FLAG_NO_CHECK>
2046b077aed3SPierre Pronchery
2047b077aed3SPierre Pronchery=item *
2048b077aed3SPierre Pronchery
2049b077aed3SPierre ProncheryRSA_generate_key_ex(), RSA_generate_multi_prime_key()
2050b077aed3SPierre Pronchery
2051b077aed3SPierre ProncherySee L</Deprecated low-level key generation functions>.
2052b077aed3SPierre Pronchery
2053b077aed3SPierre Pronchery=item *
2054b077aed3SPierre Pronchery
2055b077aed3SPierre ProncheryRSA_get0_engine()
2056b077aed3SPierre Pronchery
2057b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>
2058b077aed3SPierre Pronchery
2059b077aed3SPierre Pronchery=item *
2060b077aed3SPierre Pronchery
2061b077aed3SPierre ProncheryRSA_get0_crt_params(), RSA_get0_d(), RSA_get0_dmp1(), RSA_get0_dmq1(),
2062b077aed3SPierre ProncheryRSA_get0_e(), RSA_get0_factors(), RSA_get0_iqmp(), RSA_get0_key(),
2063b077aed3SPierre ProncheryRSA_get0_multi_prime_crt_params(), RSA_get0_multi_prime_factors(), RSA_get0_n(),
2064b077aed3SPierre ProncheryRSA_get0_p(), RSA_get0_pss_params(), RSA_get0_q(),
2065b077aed3SPierre ProncheryRSA_get_multi_prime_extra_count()
2066b077aed3SPierre Pronchery
2067b077aed3SPierre ProncherySee L</Deprecated low-level key parameter getters>
2068b077aed3SPierre Pronchery
2069b077aed3SPierre Pronchery=item *
2070b077aed3SPierre Pronchery
2071b077aed3SPierre ProncheryRSA_new(), RSA_free(), RSA_up_ref()
2072b077aed3SPierre Pronchery
2073b077aed3SPierre ProncherySee L</Deprecated low-level object creation>.
2074b077aed3SPierre Pronchery
2075b077aed3SPierre Pronchery=item *
2076b077aed3SPierre Pronchery
2077b077aed3SPierre ProncheryRSA_get_default_method(), RSA_get_ex_data and RSA_get_method()
2078b077aed3SPierre Pronchery
2079b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>.
2080b077aed3SPierre Pronchery
2081b077aed3SPierre Pronchery=item *
2082b077aed3SPierre Pronchery
2083b077aed3SPierre ProncheryRSA_get_version()
2084b077aed3SPierre Pronchery
2085b077aed3SPierre ProncheryThere is no replacement.
2086b077aed3SPierre Pronchery
2087b077aed3SPierre Pronchery=item *
2088b077aed3SPierre Pronchery
2089b077aed3SPierre ProncheryB<RSA_meth_*()>, RSA_new_method(), RSA_null_method and RSA_PKCS1_OpenSSL()
2090b077aed3SPierre Pronchery
2091b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>.
2092b077aed3SPierre Pronchery
2093b077aed3SPierre Pronchery=item *
2094b077aed3SPierre Pronchery
2095b077aed3SPierre ProncheryB<RSA_padding_add_*()>, B<RSA_padding_check_*()>
2096b077aed3SPierre Pronchery
2097b077aed3SPierre ProncherySee L</Deprecated low-level signing functions> and
2098b077aed3SPierre ProncheryL</Deprecated low-level encryption functions>.
2099b077aed3SPierre Pronchery
2100b077aed3SPierre Pronchery=item *
2101b077aed3SPierre Pronchery
2102b077aed3SPierre ProncheryRSA_print(), RSA_print_fp()
2103b077aed3SPierre Pronchery
2104b077aed3SPierre ProncherySee L</Deprecated low-level key printing functions>
2105b077aed3SPierre Pronchery
2106b077aed3SPierre Pronchery=item *
2107b077aed3SPierre Pronchery
2108b077aed3SPierre ProncheryRSA_public_encrypt(), RSA_private_decrypt()
2109b077aed3SPierre Pronchery
2110b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>
2111b077aed3SPierre Pronchery
2112b077aed3SPierre Pronchery=item *
2113b077aed3SPierre Pronchery
2114b077aed3SPierre ProncheryRSA_private_encrypt(), RSA_public_decrypt()
2115b077aed3SPierre Pronchery
2116b077aed3SPierre ProncheryThis is equivalent to doing sign and verify recover operations (with a padding
2117b077aed3SPierre Proncherymode of none). See L</Deprecated low-level signing functions>.
2118b077aed3SPierre Pronchery
2119b077aed3SPierre Pronchery=item *
2120b077aed3SPierre Pronchery
2121b077aed3SPierre ProncheryRSAPrivateKey_dup(), RSAPublicKey_dup()
2122b077aed3SPierre Pronchery
2123b077aed3SPierre ProncheryThere is no direct replacement. Applications may use L<EVP_PKEY_dup(3)>.
2124b077aed3SPierre Pronchery
2125b077aed3SPierre Pronchery=item *
2126b077aed3SPierre Pronchery
2127b077aed3SPierre ProncheryRSAPublicKey_it(), RSAPrivateKey_it()
2128b077aed3SPierre Pronchery
2129b077aed3SPierre ProncherySee L</Deprecated low-level key reading and writing functions>
2130b077aed3SPierre Pronchery
2131b077aed3SPierre Pronchery=item *
2132b077aed3SPierre Pronchery
2133b077aed3SPierre ProncheryRSA_set0_crt_params(), RSA_set0_factors(), RSA_set0_key(),
2134b077aed3SPierre ProncheryRSA_set0_multi_prime_params()
2135b077aed3SPierre Pronchery
2136b077aed3SPierre ProncherySee L</Deprecated low-level key parameter setters>.
2137b077aed3SPierre Pronchery
2138b077aed3SPierre Pronchery=item *
2139b077aed3SPierre Pronchery
2140b077aed3SPierre ProncheryRSA_set_default_method(), RSA_set_method(), RSA_set_ex_data()
2141b077aed3SPierre Pronchery
2142b077aed3SPierre ProncherySee L</Providers are a replacement for engines and low-level method overrides>
2143b077aed3SPierre Pronchery
2144b077aed3SPierre Pronchery=item *
2145b077aed3SPierre Pronchery
2146b077aed3SPierre ProncheryRSA_sign(), RSA_sign_ASN1_OCTET_STRING(), RSA_verify(),
2147b077aed3SPierre ProncheryRSA_verify_ASN1_OCTET_STRING(), RSA_verify_PKCS1_PSS(),
2148b077aed3SPierre ProncheryRSA_verify_PKCS1_PSS_mgf1()
2149b077aed3SPierre Pronchery
2150b077aed3SPierre ProncherySee L</Deprecated low-level signing functions>.
2151b077aed3SPierre Pronchery
2152b077aed3SPierre Pronchery=item *
2153b077aed3SPierre Pronchery
2154b077aed3SPierre ProncheryRSA_X931_derive_ex(), RSA_X931_generate_key_ex(), RSA_X931_hash_id()
2155b077aed3SPierre Pronchery
2156b077aed3SPierre ProncheryThere are no replacements for these functions.
2157b077aed3SPierre ProncheryX931 padding can be set using L<EVP_SIGNATURE-RSA(7)/Signature Parameters>.
2158b077aed3SPierre ProncherySee B<OSSL_SIGNATURE_PARAM_PAD_MODE>.
2159b077aed3SPierre Pronchery
2160b077aed3SPierre Pronchery=item *
2161b077aed3SPierre Pronchery
2162b077aed3SPierre ProncherySEED_encrypt(), SEED_decrypt(), SEED_set_key(), SEED_cbc_encrypt(),
2163b077aed3SPierre ProncherySEED_cfb128_encrypt(), SEED_ecb_encrypt(), SEED_ofb128_encrypt()
2164b077aed3SPierre Pronchery
2165b077aed3SPierre ProncherySee L</Deprecated low-level encryption functions>.
2166b077aed3SPierre ProncheryThe SEED algorithm has been moved to the L<Legacy Provider|/Legacy Algorithms>.
2167b077aed3SPierre Pronchery
2168b077aed3SPierre Pronchery=item *
2169b077aed3SPierre Pronchery
2170b077aed3SPierre ProncherySHA1_Init(), SHA1_Update(), SHA1_Final(), SHA1_Transform(),
2171b077aed3SPierre ProncherySHA224_Init(), SHA224_Update(), SHA224_Final(),
2172b077aed3SPierre ProncherySHA256_Init(), SHA256_Update(), SHA256_Final(), SHA256_Transform(),
2173b077aed3SPierre ProncherySHA384_Init(), SHA384_Update(), SHA384_Final(),
2174b077aed3SPierre ProncherySHA512_Init(), SHA512_Update(), SHA512_Final(), SHA512_Transform()
2175b077aed3SPierre Pronchery
2176b077aed3SPierre ProncherySee L</Deprecated low-level digest functions>.
2177b077aed3SPierre Pronchery
2178b077aed3SPierre Pronchery=item *
2179b077aed3SPierre Pronchery
2180b077aed3SPierre ProncherySRP_Calc_A(), SRP_Calc_B(), SRP_Calc_client_key(), SRP_Calc_server_key(),
2181b077aed3SPierre ProncherySRP_Calc_u(), SRP_Calc_x(), SRP_check_known_gN_param(), SRP_create_verifier(),
2182b077aed3SPierre ProncherySRP_create_verifier_BN(), SRP_get_default_gN(), SRP_user_pwd_free(), SRP_user_pwd_new(),
2183b077aed3SPierre ProncherySRP_user_pwd_set0_sv(), SRP_user_pwd_set1_ids(), SRP_user_pwd_set_gN(),
2184b077aed3SPierre ProncherySRP_VBASE_add0_user(), SRP_VBASE_free(), SRP_VBASE_get1_by_user(), SRP_VBASE_init(),
2185b077aed3SPierre ProncherySRP_VBASE_new(), SRP_Verify_A_mod_N(), SRP_Verify_B_mod_N()
2186b077aed3SPierre Pronchery
2187b077aed3SPierre ProncheryThere are no replacements for the SRP functions.
2188b077aed3SPierre Pronchery
2189b077aed3SPierre Pronchery=item *
2190b077aed3SPierre Pronchery
2191b077aed3SPierre ProncherySSL_CTX_set_tmp_dh_callback(), SSL_set_tmp_dh_callback(),
2192b077aed3SPierre ProncherySSL_CTX_set_tmp_dh(), SSL_set_tmp_dh()
2193b077aed3SPierre Pronchery
2194b077aed3SPierre ProncheryThese are used to set the Diffie-Hellman (DH) parameters that are to be used by
2195b077aed3SPierre Proncheryservers requiring ephemeral DH keys. Instead applications should consider using
2196b077aed3SPierre Proncherythe built-in DH parameters that are available by calling L<SSL_CTX_set_dh_auto(3)>
2197b077aed3SPierre Proncheryor L<SSL_set_dh_auto(3)>. If custom parameters are necessary then applications can
2198b077aed3SPierre Proncheryuse the alternative functions L<SSL_CTX_set0_tmp_dh_pkey(3)> and
2199b077aed3SPierre ProncheryL<SSL_set0_tmp_dh_pkey(3)>. There is no direct replacement for the "callback"
2200b077aed3SPierre Proncheryfunctions. The callback was originally useful in order to have different
2201b077aed3SPierre Proncheryparameters for export and non-export ciphersuites. Export ciphersuites are no
2202b077aed3SPierre Proncherylonger supported by OpenSSL. Use of the callback functions should be replaced
2203b077aed3SPierre Proncheryby one of the other methods described above.
2204b077aed3SPierre Pronchery
2205b077aed3SPierre Pronchery=item *
2206b077aed3SPierre Pronchery
2207b077aed3SPierre ProncherySSL_CTX_set_tlsext_ticket_key_cb()
2208b077aed3SPierre Pronchery
2209b077aed3SPierre ProncheryUse the new L<SSL_CTX_set_tlsext_ticket_key_evp_cb(3)> function instead.
2210b077aed3SPierre Pronchery
2211b077aed3SPierre Pronchery=item *
2212b077aed3SPierre Pronchery
2213b077aed3SPierre ProncheryWHIRLPOOL(), WHIRLPOOL_Init(), WHIRLPOOL_Update(), WHIRLPOOL_Final(),
2214b077aed3SPierre ProncheryWHIRLPOOL_BitUpdate()
2215b077aed3SPierre Pronchery
2216b077aed3SPierre ProncherySee L</Deprecated low-level digest functions>.
2217b077aed3SPierre ProncheryThe Whirlpool algorithm has been moved to the L<Legacy Provider|/Legacy Algorithms>.
2218b077aed3SPierre Pronchery
2219b077aed3SPierre Pronchery=item *
2220b077aed3SPierre Pronchery
2221b077aed3SPierre ProncheryX509_certificate_type()
2222b077aed3SPierre Pronchery
2223b077aed3SPierre ProncheryThis was an undocumented function. Applications can use L<X509_get0_pubkey(3)>
2224b077aed3SPierre Proncheryand L<X509_get0_signature(3)> instead.
2225b077aed3SPierre Pronchery
2226b077aed3SPierre Pronchery=item *
2227b077aed3SPierre Pronchery
2228b077aed3SPierre ProncheryX509_http_nbio(), X509_CRL_http_nbio()
2229b077aed3SPierre Pronchery
2230b077aed3SPierre ProncheryUse L<X509_load_http(3)> and L<X509_CRL_load_http(3)> instead.
2231b077aed3SPierre Pronchery
2232b077aed3SPierre Pronchery=back
2233b077aed3SPierre Pronchery
2234b077aed3SPierre Pronchery=head3 NID handling for provided keys and algorithms
2235b077aed3SPierre Pronchery
2236b077aed3SPierre ProncheryThe following functions for NID (numeric id) handling have changed semantics.
2237b077aed3SPierre Pronchery
2238b077aed3SPierre Pronchery=over 4
2239b077aed3SPierre Pronchery
2240b077aed3SPierre Pronchery=item *
2241b077aed3SPierre Pronchery
2242b077aed3SPierre ProncheryEVP_PKEY_id(), EVP_PKEY_get_id()
2243b077aed3SPierre Pronchery
2244b077aed3SPierre ProncheryThis function was previously used to reliably return the NID of
2245b077aed3SPierre Proncheryan EVP_PKEY object, e.g., to look up the name of the algorithm of
2246b077aed3SPierre Proncherysuch EVP_PKEY by calling L<OBJ_nid2sn(3)>. With the introduction
2247b077aed3SPierre Proncheryof L<provider(7)>s EVP_PKEY_id() or its new equivalent
2248b077aed3SPierre ProncheryL<EVP_PKEY_get_id(3)> might now also return the value -1
2249b077aed3SPierre Pronchery(B<EVP_PKEY_KEYMGMT>) indicating the use of a provider to
2250b077aed3SPierre Proncheryimplement the EVP_PKEY object. Therefore, the use of
2251b077aed3SPierre ProncheryL<EVP_PKEY_get0_type_name(3)> is recommended for retrieving
2252b077aed3SPierre Proncherythe name of the EVP_PKEY algorithm.
2253b077aed3SPierre Pronchery
2254b077aed3SPierre Pronchery=back
2255b077aed3SPierre Pronchery
2256b077aed3SPierre Pronchery=head2 Using the FIPS Module in applications
2257b077aed3SPierre Pronchery
2258b077aed3SPierre ProncherySee L<fips_module(7)> and L<OSSL_PROVIDER-FIPS(7)> for details.
2259b077aed3SPierre Pronchery
2260b077aed3SPierre Pronchery=head2 OpenSSL command line application changes
2261b077aed3SPierre Pronchery
2262b077aed3SPierre Pronchery=head3 New applications
2263b077aed3SPierre Pronchery
2264b077aed3SPierre ProncheryL<B<openssl kdf>|openssl-kdf(1)> uses the new L<EVP_KDF(3)> API.
2265b077aed3SPierre ProncheryL<B<openssl kdf>|openssl-mac(1)> uses the new L<EVP_MAC(3)> API.
2266b077aed3SPierre Pronchery
2267b077aed3SPierre Pronchery=head3 Added options
2268b077aed3SPierre Pronchery
2269b077aed3SPierre ProncheryB<-provider_path> and B<-provider> are available to all apps and can be used
2270b077aed3SPierre Proncherymultiple times to load any providers, such as the 'legacy' provider or third
2271b077aed3SPierre Proncheryparty providers. If used then the 'default' provider would also need to be
2272b077aed3SPierre Proncheryspecified if required. The B<-provider_path> must be specified before the
2273b077aed3SPierre ProncheryB<-provider> option.
2274b077aed3SPierre Pronchery
2275b077aed3SPierre ProncheryThe B<list> app has many new options. See L<openssl-list(1)> for more
2276b077aed3SPierre Proncheryinformation.
2277b077aed3SPierre Pronchery
2278b077aed3SPierre ProncheryB<-crl_lastupdate> and B<-crl_nextupdate> used by B<openssl ca> allows
2279b077aed3SPierre Proncheryexplicit setting of fields in the generated CRL.
2280b077aed3SPierre Pronchery
2281b077aed3SPierre Pronchery=head3 Removed options
2282b077aed3SPierre Pronchery
2283b077aed3SPierre ProncheryInteractive mode is not longer available.
2284b077aed3SPierre Pronchery
2285b077aed3SPierre ProncheryThe B<-crypt> option used by B<openssl passwd>.
2286b077aed3SPierre ProncheryThe B<-c> option used by B<openssl x509>, B<openssl dhparam>,
2287b077aed3SPierre ProncheryB<openssl dsaparam>, and B<openssl ecparam>.
2288b077aed3SPierre Pronchery
2289b077aed3SPierre Pronchery=head3 Other Changes
2290b077aed3SPierre Pronchery
2291b077aed3SPierre ProncheryThe output of Command line applications may have minor changes.
2292b077aed3SPierre ProncheryThese are primarily changes in capitalisation and white space.  However, in some
2293b077aed3SPierre Proncherycases, there are additional differences.
2294b077aed3SPierre ProncheryFor example, the DH parameters output from B<openssl dhparam> now lists 'P',
2295b077aed3SPierre Pronchery'Q', 'G' and 'pcounter' instead of 'prime', 'generator', 'subgroup order' and
2296b077aed3SPierre Pronchery'counter' respectively.
2297b077aed3SPierre Pronchery
2298b077aed3SPierre ProncheryThe B<openssl> commands that read keys, certificates, and CRLs now
2299b077aed3SPierre Proncheryautomatically detect the PEM or DER format of the input files so it is not
2300b077aed3SPierre Proncherynecessary to explicitly specify the input format anymore. However if the
2301b077aed3SPierre Proncheryinput format option is used the specified format will be required.
2302b077aed3SPierre Pronchery
2303b077aed3SPierre ProncheryB<openssl speed> no longer uses low-level API calls.
2304b077aed3SPierre ProncheryThis implies some of the performance numbers might not be comparable with the
2305b077aed3SPierre Proncheryprevious releases due to higher overhead. This applies particularly to
2306b077aed3SPierre Proncherymeasuring performance on smaller data chunks.
2307b077aed3SPierre Pronchery
2308b077aed3SPierre Proncheryb<openssl dhparam>, B<openssl dsa>, B<openssl gendsa>, B<openssl dsaparam>,
2309b077aed3SPierre ProncheryB<openssl genrsa> and B<openssl rsa> have been modified to use PKEY APIs.
2310b077aed3SPierre ProncheryB<openssl genrsa> and B<openssl rsa> now write PKCS #8 keys by default.
2311b077aed3SPierre Pronchery
2312b077aed3SPierre Pronchery=head3 Default settings
2313b077aed3SPierre Pronchery
2314b077aed3SPierre Pronchery"SHA256" is now the default digest for TS query used by B<openssl ts>.
2315b077aed3SPierre Pronchery
2316b077aed3SPierre Pronchery=head3 Deprecated apps
2317b077aed3SPierre Pronchery
2318b077aed3SPierre ProncheryB<openssl rsautl> is deprecated, use B<openssl pkeyutl> instead.
2319b077aed3SPierre ProncheryB<openssl dhparam>, B<openssl dsa>, B<openssl gendsa>, B<openssl dsaparam>,
2320b077aed3SPierre ProncheryB<openssl genrsa>, B<openssl rsa>, B<openssl genrsa> and B<openssl rsa> are
2321b077aed3SPierre Proncherynow in maintenance mode and no new features will be added to them.
2322b077aed3SPierre Pronchery
2323b077aed3SPierre Pronchery=head2 TLS Changes
2324b077aed3SPierre Pronchery
2325b077aed3SPierre Pronchery=over 4
2326b077aed3SPierre Pronchery
2327b077aed3SPierre Pronchery=item *
2328b077aed3SPierre Pronchery
2329b077aed3SPierre ProncheryTLS 1.3 FFDHE key exchange support added
2330b077aed3SPierre Pronchery
2331b077aed3SPierre ProncheryThis uses DH safe prime named groups.
2332b077aed3SPierre Pronchery
2333b077aed3SPierre Pronchery=item *
2334b077aed3SPierre Pronchery
2335b077aed3SPierre ProncherySupport for fully "pluggable" TLSv1.3 groups.
2336b077aed3SPierre Pronchery
2337b077aed3SPierre ProncheryThis means that providers may supply their own group implementations (using
2338b077aed3SPierre Proncheryeither the "key exchange" or the "key encapsulation" methods) which will
2339b077aed3SPierre Proncheryautomatically be detected and used by libssl.
2340b077aed3SPierre Pronchery
2341b077aed3SPierre Pronchery=item *
2342b077aed3SPierre Pronchery
2343b077aed3SPierre ProncherySSL and SSL_CTX options are now 64 bit instead of 32 bit.
2344b077aed3SPierre Pronchery
2345b077aed3SPierre ProncheryThe signatures of the functions to get and set options on SSL and
2346b077aed3SPierre ProncherySSL_CTX objects changed from "unsigned long" to "uint64_t" type.
2347b077aed3SPierre Pronchery
2348b077aed3SPierre ProncheryThis may require source code changes. For example it is no longer possible
2349b077aed3SPierre Proncheryto use the B<SSL_OP_> macro values in preprocessor C<#if> conditions.
2350b077aed3SPierre ProncheryHowever it is still possible to test whether these macros are defined or not.
2351b077aed3SPierre Pronchery
2352b077aed3SPierre ProncherySee L<SSL_CTX_get_options(3)>, L<SSL_CTX_set_options(3)>,
2353b077aed3SPierre ProncheryL<SSL_get_options(3)> and L<SSL_set_options(3)>.
2354b077aed3SPierre Pronchery
2355b077aed3SPierre Pronchery=item *
2356b077aed3SPierre Pronchery
2357b077aed3SPierre ProncherySSL_set1_host() and SSL_add1_host() Changes
2358b077aed3SPierre Pronchery
2359b077aed3SPierre ProncheryThese functions now take IP literal addresses as well as actual hostnames.
2360b077aed3SPierre Pronchery
2361b077aed3SPierre Pronchery=item *
2362b077aed3SPierre Pronchery
2363b077aed3SPierre ProncheryAdded SSL option SSL_OP_CLEANSE_PLAINTEXT
2364b077aed3SPierre Pronchery
2365b077aed3SPierre ProncheryIf the option is set, openssl cleanses (zeroizes) plaintext bytes from
2366b077aed3SPierre Proncheryinternal buffers after delivering them to the application. Note,
2367b077aed3SPierre Proncherythe application is still responsible for cleansing other copies
2368b077aed3SPierre Pronchery(e.g.: data received by L<SSL_read(3)>).
2369b077aed3SPierre Pronchery
2370b077aed3SPierre Pronchery=item *
2371b077aed3SPierre Pronchery
2372b077aed3SPierre ProncheryClient-initiated renegotiation is disabled by default.
2373b077aed3SPierre Pronchery
2374b077aed3SPierre ProncheryTo allow it, use the B<-client_renegotiation> option,
2375b077aed3SPierre Proncherythe B<SSL_OP_ALLOW_CLIENT_RENEGOTIATION> flag, or the C<ClientRenegotiation>
2376b077aed3SPierre Proncheryconfig parameter as appropriate.
2377b077aed3SPierre Pronchery
2378b077aed3SPierre Pronchery=item *
2379b077aed3SPierre Pronchery
2380b077aed3SPierre ProncherySecure renegotiation is now required by default for TLS connections
2381b077aed3SPierre Pronchery
2382b077aed3SPierre ProncherySupport for RFC 5746 secure renegotiation is now required by default for
2383b077aed3SPierre ProncherySSL or TLS connections to succeed.  Applications that require the ability
2384b077aed3SPierre Proncheryto connect to legacy peers will need to explicitly set
2385b077aed3SPierre ProncherySSL_OP_LEGACY_SERVER_CONNECT.  Accordingly, SSL_OP_LEGACY_SERVER_CONNECT
2386b077aed3SPierre Proncheryis no longer set as part of SSL_OP_ALL.
2387b077aed3SPierre Pronchery
2388b077aed3SPierre Pronchery=item *
2389b077aed3SPierre Pronchery
2390b077aed3SPierre ProncheryCombining the Configure options no-ec and no-dh no longer disables TLSv1.3
2391b077aed3SPierre Pronchery
2392b077aed3SPierre ProncheryTypically if OpenSSL has no EC or DH algorithms then it cannot support
2393b077aed3SPierre Proncheryconnections with TLSv1.3. However OpenSSL now supports "pluggable" groups
2394b077aed3SPierre Proncherythrough providers. Therefore third party providers may supply group
2395b077aed3SPierre Proncheryimplementations even where there are no built-in ones. Attempting to create
2396b077aed3SPierre ProncheryTLS connections in such a build without also disabling TLSv1.3 at run time or
2397b077aed3SPierre Proncheryusing third party provider groups may result in handshake failures. TLSv1.3
2398b077aed3SPierre Proncherycan be disabled at compile time using the "no-tls1_3" Configure option.
2399b077aed3SPierre Pronchery
2400b077aed3SPierre Pronchery=item *
2401b077aed3SPierre Pronchery
2402b077aed3SPierre ProncherySSL_CTX_set_ciphersuites() and SSL_set_ciphersuites() changes.
2403b077aed3SPierre Pronchery
2404b077aed3SPierre ProncheryThe methods now ignore unknown ciphers.
2405b077aed3SPierre Pronchery
2406b077aed3SPierre Pronchery=item *
2407b077aed3SPierre Pronchery
2408b077aed3SPierre ProncherySecurity callback change.
2409b077aed3SPierre Pronchery
2410b077aed3SPierre ProncheryThe security callback, which can be customised by application code, supports
2411b077aed3SPierre Proncherythe security operation SSL_SECOP_TMP_DH. This is defined to take an EVP_PKEY
2412b077aed3SPierre Proncheryin the "other" parameter. In most places this is what is passed. All these
2413b077aed3SPierre Proncheryplaces occur server side. However there was one client side call of this
2414b077aed3SPierre Proncherysecurity operation and it passed a DH object instead. This is incorrect
2415b077aed3SPierre Proncheryaccording to the definition of SSL_SECOP_TMP_DH, and is inconsistent with all
2416b077aed3SPierre Proncheryof the other locations. Therefore this client side call has been changed to
2417b077aed3SPierre Proncherypass an EVP_PKEY instead.
2418b077aed3SPierre Pronchery
2419b077aed3SPierre Pronchery=item *
2420b077aed3SPierre Pronchery
2421b077aed3SPierre ProncheryNew SSL option SSL_OP_IGNORE_UNEXPECTED_EOF
2422b077aed3SPierre Pronchery
2423b077aed3SPierre ProncheryThe SSL option SSL_OP_IGNORE_UNEXPECTED_EOF is introduced. If that option
2424b077aed3SPierre Proncheryis set, an unexpected EOF is ignored, it pretends a close notify was received
2425b077aed3SPierre Proncheryinstead and so the returned error becomes SSL_ERROR_ZERO_RETURN.
2426b077aed3SPierre Pronchery
2427b077aed3SPierre Pronchery=item *
2428b077aed3SPierre Pronchery
2429b077aed3SPierre ProncheryThe security strength of SHA1 and MD5 based signatures in TLS has been reduced.
2430b077aed3SPierre Pronchery
2431b077aed3SPierre ProncheryThis results in SSL 3, TLS 1.0, TLS 1.1 and DTLS 1.0 no longer
2432b077aed3SPierre Proncheryworking at the default security level of 1 and instead requires security
2433b077aed3SPierre Proncherylevel 0. The security level can be changed either using the cipher string
2434b077aed3SPierre Proncherywith C<@SECLEVEL>, or calling L<SSL_CTX_set_security_level(3)>. This also means
2435b077aed3SPierre Proncherythat where the signature algorithms extension is missing from a ClientHello
2436b077aed3SPierre Proncherythen the handshake will fail in TLS 1.2 at security level 1. This is because,
2437b077aed3SPierre Proncheryalthough this extension is optional, failing to provide one means that
2438b077aed3SPierre ProncheryOpenSSL will fallback to a default set of signature algorithms. This default
2439b077aed3SPierre Proncheryset requires the availability of SHA1.
2440b077aed3SPierre Pronchery
2441b077aed3SPierre Pronchery=item *
2442b077aed3SPierre Pronchery
2443b077aed3SPierre ProncheryX509 certificates signed using SHA1 are no longer allowed at security level 1 and above.
2444b077aed3SPierre Pronchery
2445b077aed3SPierre ProncheryIn TLS/SSL the default security level is 1. It can be set either using the cipher
2446b077aed3SPierre Proncherystring with C<@SECLEVEL>, or calling L<SSL_CTX_set_security_level(3)>. If the
2447b077aed3SPierre Proncheryleaf certificate is signed with SHA-1, a call to L<SSL_CTX_use_certificate(3)>
2448b077aed3SPierre Proncherywill fail if the security level is not lowered first.
2449b077aed3SPierre ProncheryOutside TLS/SSL, the default security level is -1 (effectively 0). It can
2450b077aed3SPierre Proncherybe set using L<X509_VERIFY_PARAM_set_auth_level(3)> or using the B<-auth_level>
2451b077aed3SPierre Proncheryoptions of the commands.
2452b077aed3SPierre Pronchery
2453b077aed3SPierre Pronchery=back
2454b077aed3SPierre Pronchery
2455b077aed3SPierre Pronchery=head1 SEE ALSO
2456b077aed3SPierre Pronchery
2457b077aed3SPierre ProncheryL<fips_module(7)>
2458b077aed3SPierre Pronchery
2459b077aed3SPierre Pronchery=head1 HISTORY
2460b077aed3SPierre Pronchery
2461b077aed3SPierre ProncheryThe migration guide was created for OpenSSL 3.0.
2462b077aed3SPierre Pronchery
2463b077aed3SPierre Pronchery=head1 COPYRIGHT
2464b077aed3SPierre Pronchery
2465b077aed3SPierre ProncheryCopyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved.
2466b077aed3SPierre Pronchery
2467b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License").  You may not use
2468b077aed3SPierre Proncherythis file except in compliance with the License.  You can obtain a copy
2469b077aed3SPierre Proncheryin the file LICENSE in the source distribution or at
2470b077aed3SPierre ProncheryL<https://www.openssl.org/source/license.html>.
2471b077aed3SPierre Pronchery
2472b077aed3SPierre Pronchery=cut
2473