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