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