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